class_docstr: Test case of end to end
code: def test_verify_milvus_resource_group(self):
      self._connect()
  
      # verify collection exist
      all_collections, _ = self.utility_wrap.list_collections()
      assert all(
          coll_name in all_collections
          for coll_name in [coll_name_1, coll_name_2]
      )
  
      # verify resource groups
      for rg_info in resource_group_info:
          rg_info = {
              "name": rg_info["name"],
              "capacity": rg_info["capacity"],
              "num_available_node": rg_info["available_node"],
              "num_loaded_replica": rg_info["loaded_replica"],
              "num_outgoing_node": {},
              "num_incoming_node": {},
          }
          desc_rg_info, _ = self.utility_wrap.describe_resource_group(
              name=rg_info["name"],
              check_task=ct.CheckTasks.check_rg_property,
              check_items=rg_info,
          )
          log.info(
              f'[ResourceGroup] Rg of {rg_info["name"]} info is: {desc_rg_info}'
          )
  
      # search
      for coll_name in coll_name_2, coll_name_1:
          # get query segment info
          segment, _ = self.utility_wrap.get_query_segment_info(
              coll_name
          )
          log.info(f"{coll_name} query segment info: {segment}")
  
          # get replicas
          collection_w = self.init_collection_wrap(
              name=coll_name, active_trace=True
          )
          replicas, _ = collection_w.get_replicas(
              check_task=ct.CheckTasks.check_nothing
          )
          log.info(f"{coll_name} replicas: {replicas}")
  
          # search
          for i in range(100):
              search_vectors = cf.gen_vectors(
                  ct.default_nq, ct.default_dim
              )
              search_params = {
                  "metric_type": "L2",
                  "params": {"ef": 64},
              }
              search_res, _ = collection_w.search(
                  data=search_vectors,
                  anns_field=ct.default_float_vec_field_name,
                  param=search_params,
                  limit=ct.default_limit,
                  expr="int64 >= 0",
              )
              assert len(search_res) == ct.default_nq
              assert len(search_res[0]) == ct.default_limit
  
          # show query segment info finally
          segment_2, _ = self.utility_wrap.get_query_segment_info(
              coll_name
          )
          log.info(f"{coll_name} query segment info: {segment_2}")
  
          # show replicas finally
          replicas_2, _ = collection_w.get_replicas()
          log.info(f"{coll_name} replicas: {replicas_2}")
  
file_path: milvus/tests/python_client/chaos/testcases/test_chaos_resource_group.py
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
  from utils.util_log import test_log
label_desc: Use image node_id 3 for calling the TestChaosRG obj's underlying member method code with example usage: obj.test_verify_milvus_resource_group() without return types