docstr: Method:
  1. prepare a collection
  2. prepare rgA and rgB and rgC, both with 2 node
  3. load 3 replicas into rgA, rgB and rgC
  verify search succ, replica info, rg state
  4. transfer 1 node from rgA to rgB
  verify fail with error
docstr_tok: ["Method",":","1.","prepare","a","collection","2.","prepare","rgA","and","rgB","and","rgC",",","both","with","2","node","3.","load","3","replicas","into","rgA",",","rgB","and","rgC","verify","search","succ",",","replica","info",",","rg","state","4.","transfer","1","node","from","rgA","to","rgB","verify","fail","with","error"]
code: def test_transfer_node_when_there_same_collection(self, with_growing):
      """
      Method:
      1. prepare a collection
      2. prepare rgA and rgB and rgC, both with 2 node
      3. load 3 replicas into rgA, rgB and rgC
      verify search succ, replica info, rg state
      4. transfer 1 node from rgA to rgB
      verify fail with error
      """
      dim = 128
      collection_w = self.init_collection_wrap(shards_num=4)
      insert_ids = []
      nb = 500
      for i in range(5):
          res, _ = collection_w.insert(
              cf.gen_default_list_data(nb=nb, dim=dim, start=i * nb)
          )
          collection_w.flush()
          insert_ids.extend(res.primary_keys)
      collection_w.create_index(
          ct.default_float_vec_field_name, ct.default_index
      )
  
      num_node = 2
      rgA_name = cf.gen_unique_str("rgA")
      self.init_resource_group(rgA_name)
      self.utility_wrap.transfer_node(
          source=ct.default_resource_group_name,
          target=rgA_name,
          num_node=num_node,
      )
      rgB_name = cf.gen_unique_str("rgB")
      self.init_resource_group(rgB_name)
      self.utility_wrap.transfer_node(
          source=ct.default_resource_group_name,
          target=rgB_name,
          num_node=num_node,
      )
      rgC_name = cf.gen_unique_str("rgC")
      self.init_resource_group(rgC_name)
      self.utility_wrap.transfer_node(
          source=ct.default_resource_group_name,
          target=rgC_name,
          num_node=num_node,
      )
      # make growing
      if with_growing:
          res, _ = collection_w.insert(
              cf.gen_default_list_data(nb, dim=dim, start=6 * nb)
          )
          insert_ids.extend(res.primary_keys)
  
      # load 2 replicas into rgA and rgB
      replica_num = 3
      collection_w.load(
          replica_number=replica_num,
          _resource_groups=[rgA_name, rgB_name, rgC_name],
      )
  
      replicas = collection_w.get_replicas()
      assert len(replicas[0].groups) == replica_num
      for rep in replicas[0].groups:
          assert rep.resource_group in [rgA_name, rgB_name, rgC_name]
          assert rep.num_outbound_node == {}
          assert (
              len(rep.group_nodes) == num_node
          )  # 2 node for each replica
  
      nq = 5
      vectors = [
          [random.random() for _ in range(dim)] for _ in range(nq)
      ]
      # verify search succ
      collection_w.search(
          vectors[:nq],
          ct.default_float_vec_field_name,
          ct.default_search_params,
          ct.default_limit,
          check_task=CheckTasks.check_search_results,
          check_items={
              "nq": nq,
              "ids": insert_ids.copy(),
              "limit": ct.default_limit,
          },
      )
  
      # transfer node from rgA to rgB
      error = {
          ct.err_code: 999,
          ct.err_msg: f"can't transfer node, cause the resource group[{rgA_name}] and the resource group[{rgB_name}] loaded same collection, err=resource group doesn't exist",
      }
      self.utility_wrap.transfer_node(
          source=rgA_name,
          target=rgB_name,
          num_node=1,
          check_task=CheckTasks.err_res,
          check_items=error,
      )
  
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 10 for calling the TestResourceGroupMultiNodes obj's underlying member method code with example usage: obj.test_transfer_node_when_there_same_collection(with_growing) without return types