mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-12-04 12:59:23 +08:00
7cad494101
* Update framework * remove files * Remove files * Remove ann-acc cases && Update java-sdk cases
162 lines
5.1 KiB
Python
162 lines
5.1 KiB
Python
import os
|
|
import sys
|
|
import time
|
|
import pdb
|
|
import argparse
|
|
import logging
|
|
import traceback
|
|
from logging import handlers
|
|
|
|
from yaml import full_load, dump
|
|
from parser import operations_parser
|
|
from local_runner import LocalRunner
|
|
from docker_runner import DockerRunner
|
|
from k8s_runner import K8sRunner
|
|
|
|
DEFAULT_IMAGE = "milvusdb/milvus:latest"
|
|
LOG_FOLDER = "logs"
|
|
|
|
# formatter = logging.Formatter('[%(asctime)s] [%(levelname)-4s] [%(pathname)s:%(lineno)d] %(message)s')
|
|
# if not os.path.exists(LOG_FOLDER):
|
|
# os.system('mkdir -p %s' % LOG_FOLDER)
|
|
# fileTimeHandler = handlers.TimedRotatingFileHandler(os.path.join(LOG_FOLDER, 'milvus_benchmark'), "D", 1, 10)
|
|
# fileTimeHandler.suffix = "%Y%m%d.log"
|
|
# fileTimeHandler.setFormatter(formatter)
|
|
# logging.basicConfig(level=logging.DEBUG)
|
|
# fileTimeHandler.setFormatter(formatter)
|
|
# logger.addHandler(fileTimeHandler)
|
|
logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
|
|
datefmt='%Y-%m-%d:%H:%M:%S',
|
|
level=logging.DEBUG)
|
|
logger = logging.getLogger("milvus_benchmark")
|
|
|
|
|
|
def positive_int(s):
|
|
i = None
|
|
try:
|
|
i = int(s)
|
|
except ValueError:
|
|
pass
|
|
if not i or i < 1:
|
|
raise argparse.ArgumentTypeError("%r is not a positive integer" % s)
|
|
return i
|
|
|
|
|
|
# # link random_data if not exists
|
|
# def init_env():
|
|
# if not os.path.islink(BINARY_DATA_FOLDER):
|
|
# try:
|
|
# os.symlink(SRC_BINARY_DATA_FOLDER, BINARY_DATA_FOLDER)
|
|
# except Exception as e:
|
|
# logger.error("Create link failed: %s" % str(e))
|
|
# sys.exit()
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
parser.add_argument(
|
|
"--hostname",
|
|
default="eros",
|
|
help="server host name")
|
|
parser.add_argument(
|
|
"--image-tag",
|
|
default="",
|
|
help="image tag")
|
|
parser.add_argument(
|
|
"--image-type",
|
|
default="",
|
|
help="image type")
|
|
# parser.add_argument(
|
|
# "--run-count",
|
|
# default=1,
|
|
# type=positive_int,
|
|
# help="run times for each test")
|
|
# # performance / stability / accuracy test
|
|
# parser.add_argument(
|
|
# "--run-type",
|
|
# default="search_performance",
|
|
# help="run type, default performance")
|
|
parser.add_argument(
|
|
'--suite',
|
|
metavar='FILE',
|
|
help='load test suite from FILE',
|
|
default='suites/suite.yaml')
|
|
parser.add_argument(
|
|
'--local',
|
|
action='store_true',
|
|
help='use local milvus server')
|
|
parser.add_argument(
|
|
'--host',
|
|
help='server host ip param for local mode',
|
|
default='127.0.0.1')
|
|
parser.add_argument(
|
|
'--port',
|
|
help='server port param for local mode',
|
|
default='19530')
|
|
|
|
args = parser.parse_args()
|
|
|
|
# Get all benchmark test suites
|
|
if args.suite:
|
|
with open(args.suite) as f:
|
|
suite_dict = full_load(f)
|
|
f.close()
|
|
# With definition order
|
|
run_type, run_params = operations_parser(suite_dict)
|
|
|
|
# init_env()
|
|
# run_params = {"run_count": args.run_count}
|
|
|
|
if args.image_tag:
|
|
namespace = "milvus"
|
|
logger.debug(args)
|
|
# for docker mode
|
|
if args.local:
|
|
logger.error("Local mode and docker mode are incompatible")
|
|
sys.exit(-1)
|
|
# Docker pull image
|
|
# if not utils.pull_image(args.image):
|
|
# raise Exception('Image %s pull failed' % image)
|
|
# TODO: Check milvus server port is available
|
|
# logger.info("Init: remove all containers created with image: %s" % args.image)
|
|
# utils.remove_all_containers(args.image)
|
|
# runner = DockerRunner(args)
|
|
tables = run_params["tables"]
|
|
for table in tables:
|
|
# run tests
|
|
server_config = table["server"]
|
|
logger.debug(server_config)
|
|
runner = K8sRunner()
|
|
if runner.init_env(server_config, args):
|
|
logger.debug("Start run tests")
|
|
try:
|
|
runner.run(run_type, table)
|
|
except Exception as e:
|
|
logger.error(str(e))
|
|
logger.error(traceback.format_exc())
|
|
finally:
|
|
runner.clean_up()
|
|
else:
|
|
logger.error("Runner init failed")
|
|
# for operation_type in operations:
|
|
# logger.info("Start run test, test type: %s" % operation_type)
|
|
# run_params["params"] = operations[operation_type]
|
|
# runner.run({operation_type: run_params}, run_type=args.run_type)
|
|
# logger.info("Run params: %s" % str(run_params))
|
|
|
|
if args.local:
|
|
# for local mode
|
|
host = args.host
|
|
port = args.port
|
|
|
|
runner = LocalRunner(host, port)
|
|
for operation_type in operations:
|
|
logger.info("Start run local mode test, test type: %s" % operation_type)
|
|
run_params["params"] = operations[operation_type]
|
|
runner.run({operation_type: run_params}, run_type=args.run_type)
|
|
logger.info("Run params: %s" % str(run_params))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |