code: def test_operations(self, collection_name, request_duration):
      # start the monitor threads to check the milvus ops
      log.info("*********************Test Start**********************")
      log.info(connections.get_connection_addr("default"))
      c_name = collection_name
      self.init_health_checkers(collection_name=c_name)
      cc.start_monitor_threads(self.health_checkers)
      log.info(
          "*********************Request Load Start**********************"
      )
      # wait request_duration for the load request to be finished
      request_duration = (
          request_duration.replace("h", "*3600+")
          .replace("m", "*60+")
          .replace("s", "")
      )
      if request_duration[-1] == "+":
          request_duration = request_duration[:-1]
      request_duration = eval(request_duration)
      for i in range(10):
          sleep(request_duration // 10)
          for k, v in self.health_checkers.items():
              v.check_result()
      log.info("******assert after chaos deleted: ")
      assert_statistic(self.health_checkers)
      assert_expectations()
      log.info(
          "*********************Test Completed**********************"
      )
  
imports: import pytest
  from time import sleep
  from collections import defaultdict
  from pymilvus import connections
  from chaos.checker import InsertChecker, UpsertChecker, FlushChecker, SearchChecker, QueryChecker, IndexCreateChecker, DeleteChecker, Op
  from utils.util_log import test_log
  from chaos import chaos_commons
  from chaos.chaos_commons import assert_statistic
  from common.common_type import CaseLabel
  from chaos import constants
  from utils.util_common import get_collections
  from delayed_assert import assert_expectations
label_desc: Use image node_id 4 for calling the TestOperations obj's underlying member method code with example usage: obj.test_operations(collection_name, request_duration) without return types