code: def test_eviction(ray_start_cluster):
      @ray.remote
      def large_object():
          return np.zeros(10 * 1024 * 1024)
  
      obj = large_object.remote()
      assert isinstance(ray.get(obj), np.ndarray)
      # Evict the object.
      ray._private.internal_api.free([obj])
      # ray.get throws an exception.
      with pytest.raises(ray.exceptions.ObjectFreedError):
          ray.get(obj)
  
      @ray.remote
      def dependent_task(x):
          return
  
      # If the object is passed by reference, the task throws an
      # exception.
      with pytest.raises(ray.exceptions.RayTaskError):
          ray.get(dependent_task.remote(obj))
  
imports: import os
  import signal
  import sys
  import threading
  import time
  import numpy
  import pytest
  import ray
  import ray._private.ray_constants
  import ray._private.utils
  from ray._private.ray_constants import DEBUG_AUTOSCALING_ERROR
  from ray._private.test_utils import Semaphore, get_error_message, get_log_batch, init_error_pubsub, run_string_as_driver_nonblocking, wait_for_condition
  from ray.cluster_utils import cluster_not_supported
  from ray.experimental.internal_kv import _internal_kv_get
label_desc: Use image node_id 6 for calling a global function with example usage: test_eviction(ray_start_cluster) and returns: np