docstr: collection: customized partitions
  collection schema: [pk, float_vectors, int_scalar]
  1. create collection and a partition
  2. build index and load partition
  3. import data into the partition
  4. verify num entities
  5. verify index status
  6. verify search and query
code: def test_partition_float_vector_int_scalar(
      self, is_row_based, auto_id, dim, entities
  ):
      """
      collection: customized partitions
      collection schema: [pk, float_vectors, int_scalar]
      1. create collection and a partition
      2. build index and load partition
      3. import data into the partition
      4. verify num entities
      5. verify index status
      6. verify search and query
      """
      files = prepare_bulk_insert_json_files(
          minio_endpoint=self.minio_endpoint,
          bucket_name=self.bucket_name,
          is_row_based=is_row_based,
          rows=entities,
          dim=dim,
          auto_id=auto_id,
          data_fields=default_vec_n_int_fields,
          file_nums=1,
      )
      self._connect()
      c_name = cf.gen_unique_str("bulk_insert")
      fields = [
          cf.gen_int64_field(name=df.pk_field, is_primary=True),
          cf.gen_float_vec_field(name=df.vec_field, dim=dim),
          cf.gen_int32_field(name=df.int_field),
      ]
      schema = cf.gen_collection_schema(fields=fields, auto_id=auto_id)
      self.collection_wrap.init_collection(c_name, schema=schema)
      # create a partition
      p_name = cf.gen_unique_str("bulk_insert")
      m_partition, _ = self.collection_wrap.create_partition(
          partition_name=p_name
      )
      # build index before bulk insert
      index_params = ct.default_index
      self.collection_wrap.create_index(
          field_name=df.vec_field, index_params=index_params
      )
      # load before bulk insert
      self.collection_wrap.load(partition_names=[p_name])
  
      # import data into the partition
      t0 = time.time()
      task_id, _ = self.utility_wrap.do_bulk_insert(
          collection_name=c_name,
          partition_name=p_name,
          files=files,
      )
      logging.info(f"bulk insert task ids:{task_id}")
      (
          success,
          state,
      ) = self.utility_wrap.wait_for_bulk_insert_tasks_completed(
          task_ids=[task_id], timeout=120
      )
      tt = time.time() - t0
      log.info(f"bulk insert state:{success} in {tt}")
      assert success
  
      assert m_partition.num_entities == entities
      assert self.collection_wrap.num_entities == entities
      log.debug(state)
      success = self.utility_wrap.wait_index_build_completed(c_name)
      assert success
      log.info(f"wait for load finished and be ready for search")
      self.collection_wrap.load(partition_names=[p_name], _refresh=True)
      time.sleep(10)
      log.info(
          f"query seg info: {self.utility_wrap.get_query_segment_info(c_name)[0]}"
      )
  
      nq = 10
      topk = 5
      search_data = cf.gen_vectors(nq, dim)
      search_params = ct.default_search_params
      res, _ = self.collection_wrap.search(
          search_data,
          df.vec_field,
          param=search_params,
          limit=topk,
          check_task=CheckTasks.check_search_results,
          check_items={"nq": nq, "limit": topk},
      )
      for hits in res:
          ids = hits.ids
          results, _ = self.collection_wrap.query(
              expr=f"{df.pk_field} in {ids}"
          )
          assert len(results) == len(ids)
  
imports: import logging
  import time
  import pytest
  import random
  import numpy
  from pathlib import Path
  from base.client_base import TestcaseBase
  from common import common_func
  from common import common_type
  from common.milvus_sys import MilvusSys
  from common.common_type import CaseLabel, CheckTasks
  from utils.util_k8s import get_pod_ip_name_pairs, get_milvus_instance_name, get_milvus_deploy_tool
  from utils.util_log import test_log
  from common.bulk_insert_data import prepare_bulk_insert_json_files, prepare_bulk_insert_numpy_files, DataField, DataErrorType
label_desc: Use image node_id 3 for calling the TestBulkInsert obj's underlying member method code with example usage: obj.test_partition_float_vector_int_scalar(is_row_based, auto_id, dim, entities) without return types