docstr: collection schema: [pk, int64, string, float_vector]
  Step:
  1. create collection and 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
docstr_tok: ["collection","schema",":","[","pk",",","int64",",","string",",","float_vector","]","Step",":","1.","create","collection","and","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_csv(self, auto_id, dim, entities):
      """
      collection schema: [pk, int64, string, float_vector]
      Step:
      1. create collection and 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
      """
      data_fields = [df.int_field, df.string_field, df.vec_field]
      files = prepare_bulk_insert_csv_files(
          minio_endpoint=self.minio_endpoint,
          bucket_name=self.bucket_name,
          rows=entities,
          dim=dim,
          auto_id=auto_id,
          data_fields=data_fields,
          force=True,
      )
  
      self._connect()
      c_name = cf.gen_unique_str("bulk_insert_partition")
      fields = [
          cf.gen_int64_field(name=df.pk_field, is_primary=True),
          cf.gen_int64_field(name=df.int_field),
          cf.gen_string_field(name=df.string_field),
          cf.gen_float_vec_field(name=df.vec_field, dim=dim),
      ]
      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_partition")
      m_partition, _ = self.collection_wrap.create_partition(
          partition_name=p_name
      )
      # build index
      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])
  
      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=300
      )
      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)
      time.sleep(2)
      self.utility_wrap.wait_for_index_building_complete(
          c_name, timeout=300
      )
      res, _ = self.utility_wrap.index_building_progress(c_name)
      log.info(f"index building progress: {res}")
      log.info(f"wait for load finished and be ready for search")
      self.collection_wrap.load(_refresh=True)
      time.sleep(2)
      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
  from pymilvus import DataType
  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_log import test_log
  from common.bulk_insert_data import prepare_bulk_insert_json_files, prepare_bulk_insert_new_json_files, prepare_bulk_insert_numpy_files, prepare_bulk_insert_parquet_files, prepare_bulk_insert_csv_files, DataField
label_desc: Use image node_id 18 for calling the TestBulkInsert obj's underlying member method code with example usage: obj.test_partition_csv(auto_id, dim, entities) without return types