diff options
-rw-r--r-- | func/args_handler.py | 16 | ||||
-rw-r--r-- | func/cli.py | 22 | ||||
-rw-r--r-- | restful_server/db.py | 6 | ||||
-rw-r--r-- | restful_server/qtip_server.py | 18 | ||||
-rw-r--r-- | tests/qtip_server_test.py | 6 |
5 files changed, 43 insertions, 25 deletions
diff --git a/func/args_handler.py b/func/args_handler.py index 50d803eb..59712800 100644 --- a/func/args_handler.py +++ b/func/args_handler.py @@ -14,14 +14,14 @@ from func.spawn_vm import SpawnVM from func.driver import Driver -def get_files_in_test_list(suit_name, case_type='all'): - benchmark_list = json.load(file('test_list/{0}'.format(suit_name))) +def get_files_in_test_list(suite_name, case_type='all'): + benchmark_list = json.load(file('test_list/{0}'.format(suite_name))) return reduce(add, benchmark_list.values()) \ if case_type == 'all' else benchmark_list[case_type] -def get_files_in_test_case(lab, suit_name, case_type='all'): - test_case_all = os.listdir('./test_cases/{0}/{1}'.format(lab, suit_name)) +def get_files_in_test_case(lab, suite_name, case_type='all'): + test_case_all = os.listdir('./test_cases/{0}/{1}'.format(lab, suite_name)) return test_case_all if case_type == 'all' else \ filter(lambda x: case_type in x, test_case_all) @@ -30,14 +30,18 @@ def get_benchmark_path(lab, suit, benchmark): return './test_cases/{0}/{1}/{2}'.format(lab, suit, benchmark) -def check_suit_in_test_list(suit_name): - return True if os.path.isfile('test_list/' + suit_name) else False +def check_suite_in_test_list(suite_name): + return True if os.path.isfile('test_list/' + suite_name) else False def check_lab_name(lab_name): return True if os.path.isdir('test_cases/' + lab_name) else False +def check_benchmark_name(lab, file, benchmark): + return os.path.isfile('test_cases/' + lab + '/' + file + '/' + benchmark) + + def _get_f_name(test_case_path): return test_case_path.split('/')[-1] diff --git a/func/cli.py b/func/cli.py index f91615e2..9222da51 100644 --- a/func/cli.py +++ b/func/cli.py @@ -32,12 +32,15 @@ class cli: '\n network ' 'They contain all the tests that will be run. They are listed by suite.' 'Please ensure there are no empty lines') + parser.add_argument('-b', '--benchmark', help='Name of the benchmark.' + 'Can be found in test_lists/file_name') + return parser.parse_args(args) def __init__(self, args=sys.argv[1:]): args = self._parse_args(args) - if not args_handler.check_suit_in_test_list(args.file): + if not args_handler.check_suite_in_test_list(args.file): print('\n\n ERROR: Test File Does not exist in test_list/ please enter correct file \n\n') sys.exit(1) @@ -50,9 +53,20 @@ class cli: test_cases = args_handler.get_files_in_test_case(args.lab, suite) benchmarks_list = filter(lambda x: x in test_cases, benchmarks) - map(lambda x: args_handler.prepare_and_run_benchmark( - os.environ['INSTALLER_TYPE'], os.environ['PWD'], - args_handler.get_benchmark_path(args.lab.lower(), suite, x)), benchmarks_list) + if args.benchmark: + if not args_handler.check_benchmark_name(args.lab, args.file, args.benchmark): + print('\n\n You have specified an incorrect benchmark. Please' + 'enter the correct one.\n\n') + sys.exit(1) + else: + print("Starting with " + args.benchmark) + args_handler.prepare_and_run_benchmark( + os.environ['INSTALLER_TYPE'], os.environ['PWD'], + args_handler.get_benchmark_path(args.lab.lower(), args.file, args.benchmark)) + else: + map(lambda x: args_handler.prepare_and_run_benchmark( + os.environ['INSTALLER_TYPE'], os.environ['PWD'], + args_handler.get_benchmark_path(args.lab.lower(), suite, x)), benchmarks_list) print('{0} is not a Template in the Directory Enter a Valid file name.' 'or use qtip.py -h for list'.format(filter(lambda x: x not in test_cases, benchmarks))) diff --git a/restful_server/db.py b/restful_server/db.py index cf6ebfbb..8da64187 100644 --- a/restful_server/db.py +++ b/restful_server/db.py @@ -23,7 +23,7 @@ def create_job(args): 'installer_ip': args["installer_ip"], 'pod_name': args["pod_name"], 'suite_name': args["suite_name"], - 'max-minutes': args["max-minutes"], + 'max_minutes': args["max_minutes"], 'type': args["type"], 'start_time': str(datetime.now()), 'end_time': None, @@ -73,7 +73,7 @@ def update_job_result_detail(job_id, benchmark, result): def is_job_timeout(job_id): period = datetime.now() - datetime.strptime(jobs[job_id]['start_time'], "%Y-%m-%d %H:%M:%S.%f") - return True if jobs[job_id]['max-minutes'] * 60 < period.total_seconds()\ + return True if jobs[job_id]['max_minutes'] * 60 < period.total_seconds()\ else False @@ -91,6 +91,6 @@ def stop_thread(job_id): del threads[job_id] -def update_benmark_state_in_state_detail(job_id, benchmark, benchmark_state): +def update_benchmark_state(job_id, benchmark, benchmark_state): filter(lambda x: x["benchmark"] == benchmark, get_job_info(job_id)["state_detail"])[0]['state'] = benchmark_state diff --git a/restful_server/qtip_server.py b/restful_server/qtip_server.py index e036a1cb..a059ca3c 100644 --- a/restful_server/qtip_server.py +++ b/restful_server/qtip_server.py @@ -24,7 +24,7 @@ class JobModel: resource_fields = { 'installer_type': fields.String, 'installer_ip': fields.String, - 'max-minutes': fields.Integer, + 'max_minutes': fields.Integer, 'pod_name': fields.String, 'suite_name': fields.String, 'type': fields.String, @@ -92,7 +92,7 @@ class JobList(Resource): "installer_ip": The installer ip of the pod, -"max-minutes": If specified, the maximum duration in minutes +"max_minutes": If specified, the maximum duration in minutes for any single test iteration, default is '60', "pod_name": If specified, the Pod name, default is 'default', @@ -126,16 +126,16 @@ default is all benchmarks in suite with specified type ) def post(self): parser = reqparse.RequestParser() - parser.add_argument('installer_type', type=str, required=True, help='Installer_type is required') - parser.add_argument('installer_ip', type=str, required=True, help='Installer_ip is required') - parser.add_argument('max-minutes', type=int, required=False, default=60, help='max-minutes should be integer') + parser.add_argument('installer_type', type=str, required=True, help='installer_type is required') + parser.add_argument('installer_ip', type=str, required=True, help='installer_ip is required') + parser.add_argument('max_minutes', type=int, required=False, default=60, help='max_minutes should be integer') parser.add_argument('pod_name', type=str, required=False, default='default', help='pod_name should be string') parser.add_argument('suite_name', type=str, required=False, default='compute', help='suite_name should be string') parser.add_argument('type', type=str, required=False, default='BM', help='type should be BM, VM and ALL') parser.add_argument('benchmark_name', type=str, required=False, default='all', help='benchmark_name should be string') args = parser.parse_args() - if not args_handler.check_suit_in_test_list(args["suite_name"]): - return abort(404, 'message:Test Suit {0} does not exist in test_list'.format(args["suite_name"])) + if not args_handler.check_suite_in_test_list(args["suite_name"]): + return abort(404, 'message:Test suite {0} does not exist in test_list'.format(args["suite_name"])) if not args_handler.check_lab_name(args["pod_name"]): return abort(404, 'message: You have specified a lab {0}\ that is not present in test_cases'.format(args['pod_name'])) @@ -171,14 +171,14 @@ default is all benchmarks in suite with specified type for benchmark in benchmarks_list: if db.is_job_timeout(job_id) or stop_event.is_set(): break - db.update_benmark_state_in_state_detail(job_id, benchmark, 'processing') + db.update_benchmark_state(job_id, benchmark, 'processing') result = args_handler.prepare_and_run_benchmark(installer_type, '/home', args_handler.get_benchmark_path(pod_name, suite_name, benchmark)) db.update_job_result_detail(job_id, benchmark, copy(result)) - db.update_benmark_state_in_state_detail(job_id, benchmark, 'finished') + db.update_benchmark_state(job_id, benchmark, 'finished') db.finish_job(job_id) diff --git a/tests/qtip_server_test.py b/tests/qtip_server_test.py index 6659fc07..2f9eebf1 100644 --- a/tests/qtip_server_test.py +++ b/tests/qtip_server_test.py @@ -33,7 +33,7 @@ class TestClass: 'installer_ip': '10.20.0.2', 'pod_name': 'default', 'suite_name': 'compute', - 'max-minutes': 60, + 'max_minutes': 60, 'type': 'BM', 'state': 'finished', 'state_detail': [{'state': 'finished', 'benchmark': 'dhrystone_bm.yaml'}, @@ -45,7 +45,7 @@ class TestClass: ({'installer_type': 'fuel', 'installer_ip': '10.20.0.2', 'pod_name': 'zte-pod1', - 'max-minutes': 20, + 'max_minutes': 20, 'suite_name': 'compute', 'type': 'VM', 'benchmark_name': 'dhrystone_vm.yaml'}, @@ -54,7 +54,7 @@ class TestClass: 'installer_ip': '10.20.0.2', 'pod_name': 'zte-pod1', 'suite_name': 'compute', - 'max-minutes': 20, + 'max_minutes': 20, 'type': 'VM', 'state': 'finished', 'state_detail': [{u'state': u'finished', u'benchmark': u'dhrystone_vm.yaml'}], |