code: def test_plasma_allocate(shutdown_only):
      address = ray.init(
          object_store_memory=300 * 1024**2,
          _system_config={
              "max_io_workers": 4,
              "automatic_object_spilling_enabled": True,
          },
          _temp_dir="/tmp/for_test_plasma_allocate",
      )
      res = []
      data = np.random.randint(
          low=0, high=256, size=(90 * 1024**2,), dtype=np.uint8
      )
      for _ in range(3):
          res.append(ray.put(data))
      # keep reference for second and third object, force evict first object
      _ = ray.get(res[1:])  # noqa
      # keep reference for fourth object, avoid released by plasma GC.
      __ = ray.put(data)  # noqa
  
      # Check fourth object allocate in memory.
      check_spilled_mb(address, spilled=[90, 180])
  
imports: import numpy
  import json
  import random
  import os
  import shutil
  import platform
  import pytest
  import psutil
  import ray
  from ray._private.test_utils import check_spilled_mb, fetch_prometheus, wait_for_condition
label_desc: Use image node_id 12 for calling a global function with example usage: test_plasma_allocate(shutdown_only) without return types