class_docstr: Method of encapsulating utility files 
class_docstr_tok: ["Method","of","encapsulating","utility","files"]
code: def wait_index_build_completed(self, collection_name, timeout=None):
      start = time.time()
      if timeout is not None:
          task_timeout = timeout
      else:
          task_timeout = TIMEOUT
      end = time.time()
      while end - start <= task_timeout:
          time.sleep(0.5)
          index_states, _ = self.index_building_progress(
              collection_name
          )
          log.debug(f"index states: {index_states}")
          if index_states["total_rows"] == index_states["indexed_rows"]:
              log.info(f"index build completed")
              return True
          end = time.time()
      log.info(f"index build timeout")
      return False
  
imports: from datetime import datetime
  import time
  from pymilvus import utility
  import sys
  from check.func_check import ResponseChecker
  from utils.api_request import api_request
  from pymilvus import BulkInsertState
  from pymilvus.orm.role import Role
  from utils.util_log import test_log
label_desc: Use image node_id 9 for calling the ApiUtilityWrapper obj's underlying member method code with example usage: obj.wait_index_build_completed(collection_name, timeout) and returns: False, True