code: def test_storage_isolation(
      external_redis, call_ray_start, call_ray_start_2
  ):
      script = """
  import ray
  ray.init("{address}", namespace="a")
  @ray.remote
  class A:
      def ready(self):
          return {val}
      pass
  
  a = A.options(lifetime="detached", name="A").remote()
  assert ray.get(a.ready.remote()) == {val}
  assert ray.get_runtime_context().get_job_id() == '01000000'
      """
      run_string_as_driver(script.format(address=call_ray_start, val=1))
      run_string_as_driver(
          script.format(address=call_ray_start_2, val=2)
      )
  
      script = """
  import ray
  ray.init("{address}", namespace="a")
  a = ray.get_actor(name="A")
  assert ray.get(a.ready.remote()) == {val}
  assert ray.get_runtime_context().get_job_id() == '02000000'
  """
      run_string_as_driver(script.format(address=call_ray_start, val=1))
      run_string_as_driver(
          script.format(address=call_ray_start_2, val=2)
      )
  
imports: import os
  import sys
  import time
  import pytest
  import ray
  import ray._private.ray_constants
  from ray._private.test_utils import Semaphore, enable_external_redis, client_test_enabled, run_string_as_driver, wait_for_condition, get_gcs_memory_used, run_string_as_driver_nonblocking
  from ray.experimental.internal_kv import _internal_kv_list
  from ray.tests.conftest import call_ray_start
  import subprocess
  import psutil
label_desc: Use image node_id 9 for calling a global function with example usage: test_storage_isolation(external_redis, call_ray_start, call_ray_start_2) without return types