milvus/tests20/python_client/base/client_request.py
yanliang567 74ea346e7c
Add New Partition Tests (#5412)
add new testcases for partition.

Signed-off-by: yanliang567 <yanliang.qiao@zilliz.com>
2021-05-27 02:26:35 +00:00

135 lines
4.1 KiB
Python

import pytest
import sys
sys.path.append("..")
from base.connections import ApiConnections
from base.collection import ApiCollection
from base.partition import ApiPartition
from base.index import ApiIndex
from base.utility import ApiUtility
from config.test_info import test_info
from utils.util_log import test_log as log
from common import common_func as cf
from common import common_type as ct
def request_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
except Exception as e:
log.error("[ClientRequest API Exception]%s: %s" % (str(func), str(e)))
return e, False
return inner_wrapper
return wrapper
@request_catch()
def func_req(_list, **kwargs):
if isinstance(_list, list):
func = _list[0]
if callable(func):
arg = []
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
return func(*arg, **kwargs)
return False, False
class ParamInfo:
def __init__(self):
self.param_host = ""
self.param_port = ""
self.param_handler = ""
def prepare_param_info(self, host, port, handler):
self.param_host = host
self.param_port = port
self.param_handler = handler
param_info = ParamInfo()
class Base:
""" Initialize class object """
connection = None
collection = None
partition = None
index = None
utility = None
def setup_class(self):
log.info("[setup_class] Start setup class...")
def teardown_class(self):
pass
def setup(self):
log.error("*" * 80)
self.connection = ApiConnections()
self.collection = ApiCollection()
self.partition = ApiPartition()
self.index = ApiIndex()
self.utility = ApiUtility()
def teardown(self):
pass
@pytest.fixture(scope="module", autouse=True)
def initialize_env(self, request):
""" clean log before testing """
cf.modify_file([test_info.log_info, test_info.log_err])
log.info("[initialize_milvus] Log cleaned up, start testing...")
host = request.config.getoption("--host")
port = request.config.getoption("--port")
handler = request.config.getoption("--handler")
param_info.prepare_param_info(host, port, handler)
class ApiReq(Base):
"""
Additional methods;
Public methods that can be used to add cases.
"""
@pytest.fixture(scope="module",params=ct.get_invalid_strs)
def get_invalid_string(self, request):
yield request.param
@pytest.fixture(scope="module",params=cf.gen_simple_index())
def get_index_param(self, request):
yield request.param
def _connect(self):
""" Testing func """
self.connection.configure(check_res='', default={"host": "192.168.1.239", "port": 19530})
res = self.connection.create_connection(alias='default')
return res
def _collection(self, name=None, data=None, schema=None, check_res=None, **kwargs):
""" Testing func """
self._connect()
name = cf.gen_unique_str("ApiReq") if name is None else name
schema = cf.gen_default_collection_schema() if schema is None else schema
collection, _ = self.collection.collection_init(name=name, data=data,
schema=schema, check_res=check_res, **kwargs)
assert name == collection.name
return collection
def _partition(self, name=None, descriptions=None, **kwargs):
""" inti a partition in a collection """
# self._connect()
m_collection = self._collection()
name = cf.gen_unique_str("partition_") if name is None else name
descriptions = cf.gen_unique_str("partition_des_") if descriptions is None else descriptions
m_partition, _ = self.partition.partition_init(m_collection, name,
description=descriptions,
**kwargs)
return m_partition