code: def test_put_pins_object(ray_start_object_store_memory):
      obj = np.ones(200 * 1024, dtype=np.uint8)
      x_id = ray.put(obj)
      x_binary = x_id.binary()
      assert (ray.get(ray.ObjectRef(x_binary)) == obj).all()
  
      # x cannot be evicted since x_id pins it
      for _ in range(10):
          ray.put(np.zeros(10 * 1024 * 1024))
      assert (ray.get(x_id) == obj).all()
      assert (ray.get(ray.ObjectRef(x_binary)) == obj).all()
  
      # now it can be evicted since x_id pins it but x_binary does not
      del x_id
      for _ in range(10):
          ray.put(np.zeros(10 * 1024 * 1024))
      assert not ray._private.worker.global_worker.core_worker.object_exists(
          ray.ObjectRef(x_binary)
      )
  
imports: import logging
  import os
  import pickle
  import socket
  import sys
  import time
  import numpy
  import pytest
  import ray
  import ray._private.utils
  import ray.cluster_utils
  import ray.util.accelerators
  from ray._private.test_utils import check_call_ray, wait_for_num_actors
  import setproctitle
label_desc: Use image node_id 13 for calling a global function with example usage: test_put_pins_object(ray_start_object_store_memory) without return types