未验证 提交 17610906 编写于 作者: 紫晴 提交者: GitHub

[skip ci] Update codes of connection (#5542)

* Update codes of connection
Signed-off-by: Nwangting0128 <ting.wang@zilliz.com>

* [skip ci] Update log for test
Signed-off-by: Nwangting0128 <ting.wang@zilliz.com>
上级 dcb4161c
......@@ -18,7 +18,9 @@ def request_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
res = func(*args, **kwargs)
log.debug("(func_res) Response : %s " % str(res))
return res, True
except Exception as e:
log.error("[ClientRequest API Exception]%s: %s" % (str(func), str(e)))
return e, False
......@@ -35,6 +37,7 @@ def func_req(_list, **kwargs):
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
log.debug("(func_req)[%s] Parameters ars arg: %s, kwargs: %s" % (str(func), str(arg), str(kwargs)))
return func(*arg, **kwargs)
return False, False
......@@ -69,7 +72,7 @@ class Base:
pass
def setup(self):
log.error("*" * 80)
log.info(("*" * 35) + " setup " + ("*" * 35))
self.connection = ApiConnections()
self.collection = ApiCollection()
self.partition = ApiPartition()
......@@ -79,18 +82,17 @@ class Base:
def teardown(self):
try:
""" Delete connection and reset configuration"""
res, cr = self.connection.list_connections()
for i in res:
if self.connection.get_connection(alias=i)[1]:
self.connection.remove_connection(i, check_res='')
self.connection.configure()
log.info(("*" * 35) + " teardown " + ("*" * 35))
res = self.connection.list_connections()
for i in res[0]:
self.connection.remove_connection(i[0])
except Exception as e:
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])
cf.modify_file([test_info.log_debug, test_info.log_info, test_info.log_err])
log.info("[initialize_milvus] Log cleaned up, start testing...")
host = request.config.getoption("--host")
......@@ -115,8 +117,8 @@ class ApiReq(Base):
def _connect(self):
""" Testing func """
self.connection.configure(check_res='', default={"host": param_info.param_host, "port": param_info.param_port})
res = self.connection.create_connection(alias='default')
self.connection.add_connection(default={"host": param_info.param_host, "port": param_info.param_port})
res = self.connection.connect(alias='default')
return res
def _collection(self, name=None, data=None, schema=None, check_res=None, **kwargs):
......
......@@ -14,7 +14,9 @@ def collection_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
res = func(*args, **kwargs)
log.debug("(func_res) Response : %s " % str(res))
return res, True
except Exception as e:
log.error("[Collection API Exception]%s: %s" % (str(func), str(e)))
return e, False
......@@ -31,6 +33,7 @@ def func_req(_list, **kwargs):
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
log.debug("(func_req)[%s] Parameters ars arg: %s, kwargs: %s" % (str(func), str(arg), str(kwargs)))
return func(*arg, **kwargs)
return False, False
......
from pymilvus_orm import connections
from pymilvus_orm import Connections
from pymilvus_orm.types import DataType
from pymilvus_orm.default_config import DefaultConfig
import sys
......@@ -14,7 +14,9 @@ def connections_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
res = func(*args, **kwargs)
log.debug("(func_res) Response : %s " % str(res))
return res, True
except Exception as e:
log.error("[Connections API Exception]%s: %s" % (str(func), str(e)))
return e, False
......@@ -31,29 +33,36 @@ def func_req(_list, **kwargs):
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
log.debug("(func_req)[%s] Parameters ars arg: %s, kwargs: %s" % (str(func), str(arg), str(kwargs)))
return func(*arg, **kwargs)
return False, False
class ApiConnections:
def __init__(self):
self.connection = connections
self.connection = Connections()
def configure(self, check_res=None, check_params=None, **kwargs):
def add_connection(self, check_res=None, check_params=None, **kwargs):
func_name = sys._getframe().f_code.co_name
res, check = func_req([self.connection.configure], **kwargs)
res, check = func_req([self.connection.add_connection], **kwargs)
check_result = CheckFunc(res, func_name, check_res, check_params, check, **kwargs).run()
return res, check_result
def disconnect(self, alias, check_res=None, check_params=None):
func_name = sys._getframe().f_code.co_name
res, check = func_req([self.connection.disconnect, alias])
check_result = CheckFunc(res, func_name, check_res, check_params, check, alias=alias).run()
return res, check_result
def remove_connection(self, alias, check_res=None, check_params=None):
func_name = sys._getframe().f_code.co_name
res, check = func_req([self.connection.remove_connection, alias])
check_result = CheckFunc(res, func_name, check_res, check_params, check, alias=alias).run()
return res, check_result
def create_connection(self, alias=DefaultConfig.DEFAULT_USING, check_res=None, check_params=None, **kwargs):
def connect(self, alias=DefaultConfig.DEFAULT_USING, check_res=None, check_params=None, **kwargs):
func_name = sys._getframe().f_code.co_name
res, check = func_req([self.connection.create_connection, alias], **kwargs)
res, check = func_req([self.connection.connect, alias], **kwargs)
check_result = CheckFunc(res, func_name, check_res, check_params, check, alias=alias, **kwargs).run()
return res, check_result
......
......@@ -14,7 +14,9 @@ def index_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
res = func(*args, **kwargs)
log.debug("(func_res) Response : %s " % str(res))
return res, True
except Exception as e:
log.error("[Index API Exception]%s: %s" % (str(func), str(e)))
return e, False
......@@ -31,6 +33,7 @@ def func_req(_list, **kwargs):
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
log.debug("(func_req)[%s] Parameters ars arg: %s, kwargs: %s" % (str(func), str(arg), str(kwargs)))
return func(*arg, **kwargs)
return False, False
......
......@@ -20,10 +20,12 @@ def partition_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
res = func(*args, **kwargs)
log.debug("(func_res) Response : %s " % str(res))
return res, True
except Exception as e:
log.info("exception: %s", e)
# log.error("[Partition API Exception]%s: %s" % (str(func), str(e)))
# log.info("exception: %s", e)
log.error("[Partition API Exception]%s: %s" % (str(func), str(e)))
return Error(e), False
return inner_wrapper
return wrapper
......@@ -38,6 +40,7 @@ def func_req(_list, **kwargs):
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
log.debug("(func_req)[%s] Parameters ars arg: %s, kwargs: %s" % (str(func), str(arg), str(kwargs)))
return func(*arg, **kwargs)
return False, False
......
......@@ -14,7 +14,9 @@ def utility_catch():
def wrapper(func):
def inner_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs), True
res = func(*args, **kwargs)
log.debug("(func_res) Response : %s " % str(res))
return res, True
except Exception as e:
log.error("[Utility API Exception]%s: %s" % (str(func), str(e)))
return e, False
......@@ -31,6 +33,7 @@ def func_req(_list, **kwargs):
if len(_list) > 1:
for a in _list[1:]:
arg.append(a)
log.debug("(func_req)[%s] Parameters ars arg: %s, kwargs: %s" % (str(func), str(arg), str(kwargs)))
return func(*arg, **kwargs)
return False, False
......
......@@ -18,6 +18,7 @@ class CheckFunc:
self.keys = self.params.keys()
def run(self):
# log.debug("[Run CheckFunc] Start checking res...")
check_result = True
if self.check_res is None:
......
......@@ -9,6 +9,7 @@ class TestInfo:
""" Make sure the path exists """
self.home_dir = "/tmp/"
self.log_dir = self.home_dir + "log/"
self.log_debug = "%s/refactor_test.debug" % self.log_dir
self.log_info = "%s/refactor_test.log" % self.log_dir
self.log_err = "%s/refactor_test.err" % self.log_dir
......
......@@ -22,16 +22,16 @@ class TestConnectionParams(ApiReq):
"""
# No check for **kwargs
res, check_result = self.connection.configure(_kwargs=[1, 2])
log.info(res)
res = self.connection.add_connection(_kwargs=[1, 2])
log.info(res[0])
res, cr = self.connection.get_connection_addr(alias='default')
assert res == {}
res = self.connection.get_connection_addr(alias='default')
assert res[0] == {}
# No check for **kwargs
res, check_result = self.connection.create_connection(alias=DefaultConfig.DEFAULT_USING, _kwargs=[1, 2])
log.info(res.args[0])
assert res.args[0] == "Fail connecting to server on localhost:19530. Timeout"
res = self.connection.connect(alias=DefaultConfig.DEFAULT_USING, _kwargs=[1, 2])
log.info(res[0].args[0])
assert res[0].args[0] == "Fail connecting to server on localhost:19530. Timeout"
@pytest.mark.skip("No check for alias")
@pytest.mark.tags(CaseLabel.L1)
......@@ -43,8 +43,8 @@ class TestConnectionParams(ApiReq):
expected: assert response is error
"""
# No check for alias
res, cr = self.connection.create_connection(alias=alias)
log.info(res)
res = self.connection.connect(alias=alias)
log.info(res[0])
@pytest.mark.skip("No check for alias")
@pytest.mark.parametrize("alias", get_invalid_strs)
......@@ -56,8 +56,8 @@ class TestConnectionParams(ApiReq):
expected: assert response is error
"""
# not check for alias
res, cr = self.connection.get_connection(alias=alias)
log.info(res)
res = self.connection.get_connection(alias=alias)
log.info(res[0])
@pytest.mark.skip("No check for alias")
@pytest.mark.parametrize("alias", get_invalid_strs)
......@@ -69,8 +69,8 @@ class TestConnectionParams(ApiReq):
expected: assert response is error
"""
# not check for alias
res, cr = self.connection.get_connection_addr(alias=alias)
log.info(res)
res = self.connection.get_connection_addr(alias=alias)
log.info(res[0])
@pytest.mark.skip("No check for alias")
@pytest.mark.parametrize("alias", get_invalid_strs)
......@@ -83,8 +83,8 @@ class TestConnectionParams(ApiReq):
"""
# not check for alias
self._connect()
res, cr = self.connection.remove_connection(alias=alias)
log.info(res)
res = self.connection.remove_connection(alias=alias)
log.info(res[0])
class TestConnectionOperation(ApiReq):
......@@ -100,18 +100,18 @@ class TestConnectionOperation(ApiReq):
method: connection configure twice with the same params
expected: assert the configuration is successful
"""
self.connection.configure(default={"host": host, "port": port}, dev={"host": host, "port": port})
assert self.connection.list_connections()[0] == ['default', 'dev']
assert self.connection.get_connection_addr(alias='default')[0] == {}
self.connection.add_connection(default={"host": host, "port": port}, dev={"host": host, "port": port})
assert self.connection.list_connections()[0] == [('default', None), ('dev', None)]
assert self.connection.get_connection_addr(alias='default')[0] == {"host": host, "port": port}
self.connection.configure(default={"host": host, "port": port}, dev={"host": host, "port": port})
assert self.connection.list_connections()[0] == ['default', 'dev']
self.connection.add_connection(default={"host": host, "port": port}, dev={"host": host, "port": port})
assert self.connection.list_connections()[0] == [('default', None), ('dev', None)]
self.connection.configure(default1={"host": host, "port": port})
assert self.connection.list_connections()[0] == ['default1']
self.connection.add_connection(default1={"host": host, "port": port})
assert self.connection.list_connections()[0] == [('default', None), ('dev', None), ('default1', None)]
self.connection.configure()
assert self.connection.list_connections()[0] == []
self.connection.add_connection()
assert self.connection.list_connections()[0] == [('default', None), ('dev', None), ('default1', None)]
@pytest.mark.tags(CaseLabel.L1)
def test_connection_remove_connection_not_exist(self):
......@@ -122,13 +122,13 @@ class TestConnectionOperation(ApiReq):
3、remove connection that is not exist
expected: assert alias of Not_exist is not exist
"""
res, cr = self.connection.remove_connection(alias=Not_Exist, check_res="")
assert res.args[0] == "There is no connection with alias '%s'." % Not_Exist
res = self.connection.remove_connection(alias=Not_Exist, check_res="")
assert res[0].args[0] == "There is no connection with alias '%s'." % Not_Exist
self._connect()
res, cr = self.connection.remove_connection(alias=Not_Exist, check_res="")
assert res.args[0] == "There is no connection with alias '%s'." % Not_Exist
res = self.connection.remove_connection(alias=Not_Exist, check_res="")
assert res[0].args[0] == "There is no connection with alias '%s'." % Not_Exist
@pytest.mark.tags(CaseLabel.L1)
def test_connection_remove_connection_repeat(self):
......@@ -141,8 +141,8 @@ class TestConnectionOperation(ApiReq):
self.connection.remove_connection(alias='default')
res, cr = self.connection.remove_connection(alias='default', check_res='')
assert res.args[0] == "There is no connection with alias 'default'."
res = self.connection.remove_connection(alias='default', check_res='')
assert res[0].args[0] == "There is no connection with alias 'default'."
@pytest.mark.tags(CaseLabel.L1)
def test_connection_normal_remove_connection_repeat(self, host, port):
......@@ -151,13 +151,13 @@ class TestConnectionOperation(ApiReq):
method: remove connection twice
expected: assert the responses are True
"""
self.connection.configure(default={"host": host, "port": port}, dev={"host": host, "port": port})
self.connection.add_connection(default={"host": host, "port": port}, dev={"host": host, "port": port})
self.connection.create_connection(alias='default')
res, cr = self.connection.get_connection_addr(alias='default')
assert res["host"] == host
assert res["port"] == port
self.connection.create_connection(alias='dev')
self.connection.connect(alias='default')
res = self.connection.get_connection_addr(alias='default')
assert res[0]["host"] == host
assert res[0]["port"] == port
self.connection.connect(alias='dev')
self.connection.remove_connection(alias='default')
self.connection.remove_connection(alias='dev')
......@@ -173,8 +173,8 @@ class TestConnectionOperation(ApiReq):
self.connection.remove_connection(alias='default')
for i in range(100):
res, cr = self.connection.remove_connection(alias='default', check_res='')
assert res.args[0] == "There is no connection with alias 'default'."
res = self.connection.remove_connection(alias='default', check_res='')
assert res[0].args[0] == "There is no connection with alias 'default'."
@pytest.mark.tags(CaseLabel.L1)
def test_connection_configure_remove_connection(self, host, port):
......@@ -183,11 +183,11 @@ class TestConnectionOperation(ApiReq):
method: remove configure alias
expected: assert res is err
"""
self.connection.configure(default={"host": host, "port": port})
self.connection.add_connection(default={"host": host, "port": port})
alias_name = 'default'
res, cr = self.connection.remove_connection(alias=alias_name, check_res='')
assert res.args[0] == "There is no connection with alias '%s'." % alias_name
res = self.connection.remove_connection(alias=alias_name, check_res='')
assert res[0].args[0] == "There is no connection with alias '%s'." % alias_name
@pytest.mark.skip("error res")
@pytest.mark.tags(CaseLabel.L1)
......@@ -198,8 +198,8 @@ class TestConnectionOperation(ApiReq):
expected: assert res
"""
alias_name = "default"
self.connection.create_connection(alias=alias_name, host=host, port=port)
self.connection.configure()
self.connection.connect(alias=alias_name, host=host, port=port)
self.connection.add_connection()
self.connection.get_connection(alias=alias_name)
@pytest.mark.skip("error res")
......@@ -211,8 +211,8 @@ class TestConnectionOperation(ApiReq):
expected: assert res
"""
alias_name = "default"
self.connection.create_connection(alias=alias_name, host=host, port=port)
self.connection.configure(default={'host': host, 'port': port})
self.connection.connect(alias=alias_name, host=host, port=port)
self.connection.add_connection(default={'host': host, 'port': port})
self.connection.get_connection(alias=alias_name)
@pytest.mark.skip("res needs to be confirmed")
......@@ -224,11 +224,11 @@ class TestConnectionOperation(ApiReq):
expected: assert res
"""
# error
self.connection.configure(default={"host": 'host', "port": port})
res, cr = self.connection.create_connection(alias="default", host=host, port=port, check_res='')
log.info(res)
res, cr = self.connection.create_connection(alias="default", host=host, port=port, check_res='')
log.info(res)
self.connection.add_connection(default={"host": 'host', "port": port})
res = self.connection.connect(alias="default", host=host, port=port, check_res='')
log.info(res[0])
res = self.connection.connect(alias="default", host=host, port=port, check_res='')
log.info(res[0])
@pytest.mark.tags(CaseLabel.L1)
def test_connection_create_connection_repeat(self, host, port):
......@@ -240,7 +240,7 @@ class TestConnectionOperation(ApiReq):
self._connect()
self.connection.get_connection(alias='default')
self.connection.create_connection(alias='default', host=host, port=port)
self.connection.connect(alias='default', host=host, port=port)
self.connection.get_connection(alias='default')
@pytest.mark.tags(CaseLabel.L1)
......@@ -251,8 +251,8 @@ class TestConnectionOperation(ApiReq):
expected: assert res is wrong
"""
self.connection.get_connection(alias='default', check_res=CheckParams.false)
res, cr = self.connection.create_connection(alias="default", host='host', port=port, check_res='')
assert res.args[0] == "Fail connecting to server on host:19530. Timeout"
res = self.connection.connect(alias="default", host='host', port=port, check_res='')
assert res[0].args[0] == "Fail connecting to server on host:19530. Timeout"
@pytest.mark.tags(CaseLabel.L1)
def test_connection_create_remove(self, host, port):
......@@ -262,11 +262,11 @@ class TestConnectionOperation(ApiReq):
expected: assert res is correct
"""
alias_name = "default"
self.connection.create_connection(alias=alias_name, host=host, port=port)
self.connection.connect(alias=alias_name, host=host, port=port)
self.connection.get_connection(alias=alias_name)
self.connection.remove_connection(alias=alias_name)
self.connection.get_connection(alias=alias_name, check_res=CheckParams.false)
self.connection.create_connection(alias=alias_name, host=host, port=port)
self.connection.connect(alias=alias_name, host=host, port=port)
self.connection.get_connection(alias=alias_name)
@pytest.mark.tags(CaseLabel.L1)
......@@ -276,8 +276,8 @@ class TestConnectionOperation(ApiReq):
method: list connection of configure
expected: assert res is correct
"""
self.connection.configure(default={"host": host, "port": port}, dev={"host": host, "port": port})
self.connection.create_connection(alias="default")
self.connection.add_connection(default={"host": host, "port": port}, dev={"host": host, "port": port})
self.connection.connect(alias="default")
assert self.connection.list_connections()[0] == ['default', 'dev']
@pytest.mark.skip("Behavior to be determined")
......@@ -288,8 +288,8 @@ class TestConnectionOperation(ApiReq):
method: list connection of configure
expected: assert res is correct
"""
self.connection.create_connection(alias="default1", host=host, port=port)
self.connection.configure(default={"host": host, "port": port}, dev={"host": host, "port": port})
self.connection.connect(alias="default1", host=host, port=port)
self.connection.add_connection(default={"host": host, "port": port}, dev={"host": host, "port": port})
log.info(self.connection.list_connections()[0])
assert self.connection.list_connections()[0] == ['default', 'dev']
......
......@@ -5,8 +5,9 @@ from config.test_info import test_info
class TestLog:
def __init__(self, logger, log_file, log_err):
def __init__(self, logger, log_debug, log_file, log_err):
self.logger = logger
self.log_debug = log_debug
self.log_file = log_file
self.log_err = log_err
......@@ -15,28 +16,27 @@ class TestLog:
try:
formatter = logging.Formatter("[%(asctime)s - %(levelname)s - %(name)s]: %(message)s (%(filename)s:%(lineno)s)")
fh = logging.FileHandler(log_file)
fh.setLevel(logging.DEBUG)
# formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
dh = logging.FileHandler(self.log_debug)
dh.setLevel(logging.DEBUG)
dh.setFormatter(formatter)
self.log.addHandler(dh)
fh = logging.FileHandler(self.log_file)
fh.setLevel(logging.INFO)
fh.setFormatter(formatter)
self.log.addHandler(fh)
eh = logging.FileHandler(log_err)
eh = logging.FileHandler(self.log_err)
eh.setLevel(logging.ERROR)
# formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
eh.setFormatter(formatter)
self.log.addHandler(eh)
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
self.log.addHandler(ch)
except Exception as e:
print("Can not use %s or %s to log." % (log_file, log_err))
"""All modules share this unified log"""
log_debug = test_info.log_debug
log_info = test_info.log_info
log_err = test_info.log_err
test_log = TestLog('refactor_test', log_info, log_err).log
test_log = TestLog('refactor_test', log_debug, log_info, log_err).log
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册