docstr: Method：
  1. prepare collectionA and collectionB
  2. prepare one rg with 4 nodes
  3. load collectionA with 1 replica into the rg
  4. load collectionB with 3 replica into the rg
  verify the rg state
  verify the replicas state for both collections
docstr_tok: ["Method\uff1a","1.","prepare","collectionA","and","collectionB","2.","prepare","one","rg","with","4","nodes","3.","load","collectionA","with","1","replica","into","the","rg","4.","load","collectionB","with","3","replica","into","the","rg","verify","the","rg","state","verify","the","replicas","state","for","both","collections"]
code: def test_load_with_multi_collections_one_rg(self):
      """
      Method：
      1. prepare collectionA and collectionB
      2. prepare one rg with 4 nodes
      3. load collectionA with 1 replica into the rg
      4. load collectionB with 3 replica into the rg
      verify the rg state
      verify the replicas state for both collections
      """
      self._connect()
      dim = ct.default_dim
      # create a collectionA and collectionB
      collection_w_a = self.init_collection_wrap(shards_num=2)
      collection_w_b = self.init_collection_wrap(shards_num=2)
      nb = 400
      for i in range(5):
          collection_w_a.insert(
              cf.gen_default_list_data(nb=nb, dim=dim)
          )
          collection_w_b.insert(
              cf.gen_default_list_data(nb=nb, dim=dim)
          )
          collection_w_a.flush()
          collection_w_b.flush()
      collection_w_a.create_index(
          ct.default_float_vec_field_name, ct.default_index
      )
      collection_w_b.create_index(
          ct.default_float_vec_field_name, ct.default_index
      )
  
      # create a rgA
      rg_name = cf.gen_unique_str("rg")
      self.init_resource_group(rg_name)
      # transfer 4 nodes to rgA
      num_nodes_to_rg = 4
      self.utility_wrap.transfer_node(
          source=ct.default_resource_group_name,
          target=rg_name,
          num_node=num_nodes_to_rg,
      )
  
      # load 1 replica of collectionA to rgA
      collection_w_a.load(replica_number=1, _resource_groups=[rg_name])
      # load 3 replica of collectionB to rgA
      collection_w_b.load(replica_number=3, _resource_groups=[rg_name])
  
      # verify rg state
      rg_info = {
          "name": rg_name,
          "capacity": num_nodes_to_rg,
          "num_available_node": num_nodes_to_rg,
          "num_loaded_replica": {
              collection_w_a.name: 1,
              collection_w_b.name: 3,
          },
          "num_outgoing_node": {},
          "num_incoming_node": {},
      }
      self.utility_wrap.describe_resource_group(
          name=rg_name,
          check_task=CheckTasks.check_rg_property,
          check_items=rg_info,
      )
  
      # verify replica state
      replicas = collection_w_a.get_replicas()
      num_nodes_for_replicas = 0
      assert len(replicas[0].groups) == 1
      for rep in replicas[0].groups:
          assert rep.resource_group == rg_name
          assert rep.num_outbound_node == {}
          num_nodes_for_replicas += len(rep.group_nodes)
      assert num_nodes_for_replicas == num_nodes_to_rg
  
      replicas = collection_w_b.get_replicas()
      num_nodes_for_replicas = 0
      assert len(replicas[0].groups) == 3
      for rep in replicas[0].groups:
          assert rep.resource_group == rg_name
          assert rep.num_outbound_node == {}
          num_nodes_for_replicas += len(rep.group_nodes)
      assert num_nodes_for_replicas == num_nodes_to_rg
  
      # verify search succ on both collections
      nq = 5
      vectors = [
          [random.random() for _ in range(dim)] for _ in range(nq)
      ]
      collection_w_a.search(
          vectors[:nq],
          ct.default_float_vec_field_name,
          ct.default_search_params,
          ct.default_limit,
      )
      collection_w_b.search(
          vectors[:nq],
          ct.default_float_vec_field_name,
          ct.default_search_params,
          ct.default_limit,
      )
  
imports: import pytest
  from base.client_base import TestcaseBase
  from common import common_func
  from common import common_type
  from common.common_type import CaseLabel, CheckTasks
  from utils.util_pymilvus import *
label_desc: Use image node_id 1 for calling the TestResourceGroupMultiNodes obj's underlying member method code with example usage: obj.test_load_with_multi_collections_one_rg() without return types