code: def test_placement_group_equal_hash(ray_start_regular):
      from copy import copy
  
      pg1 = ray.util.placement_group([{"CPU": 1}])
      pg2 = copy(pg1)
  
      # __eq__
      assert pg1 == pg2
  
      # __hash__
      s = set()
      s.add(pg1)
      assert pg2 in s
  
      # Compare in remote task
      @ray.remote(num_cpus=0)
      def same(a, b):
          return a == b and b in {a}
  
      assert ray.get(same.remote(pg1, pg2))
  
      # Compare before/after object store
      assert ray.get(ray.put(pg1)) == pg1
  
imports: import sys
  import warnings
  import os
  import pytest
  import ray
  from ray._private.utils import get_ray_doc_version
  import ray.cluster_utils
  from ray._private.test_utils import placement_group_assert_no_leak
  from ray._private.test_utils import skip_flaky_core_test_premerge
  from ray.util.client.ray_client_helpers import connect_to_client_or_not
  from ray.util.scheduling_strategies import PlacementGroupSchedulingStrategy
label_desc: Use image node_id 12 for calling a global function with example usage: test_placement_group_equal_hash(ray_start_regular) and returns: unknown