1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
##############################################################################
# Copyright (c) 2015 Dell Inc and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
import sys
import os
import args_handler
import argparse
import logger_utils
logger = logger_utils.QtipLogger('cli').get
class Cli:
@staticmethod
def _parse_args(args):
parser = argparse.ArgumentParser()
parser.add_argument('-l ', '--lab', required=True, help='Name of Lab '
'on which being tested, These can'
'be found in the benchmarks/testplan/ directory. Please '
'ensure that you have edited the respective files '
'before using them. For testing other than through Jenkins'
' The user should list default after -l . all the fields in'
' the files are necessary and should be filled')
parser.add_argument('-f', '--file', required=True, help='File in '
'benchmarks/suite/ with the list of tests. there are three files'
'\n compute '
'\n storage '
'\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 benchmarks/suite/file_name')
return parser.parse_args(args)
def __init__(self, args=sys.argv[1:]):
args = self._parse_args(args)
if not args_handler.check_suite(args.file):
logger.error("ERROR: This suite file %s doesn't exist under benchmarks/suite/.\
Please enter correct file." % str(args.file))
sys.exit(1)
if not args_handler.check_lab_name(args.lab):
logger.error("You have specified a lab that is not present under benchmarks/testplan/.\
Please enter correct file. If unsure how to proceed, use -l default.")
sys.exit(1)
suite = args.file
benchmarks = args_handler.get_files_in_suite(suite)
test_cases = args_handler.get_files_in_test_plan(args.lab, suite)
benchmarks_list = filter(lambda x: x in test_cases, benchmarks)
if args.benchmark:
if not args_handler.check_benchmark_name(args.lab, args.file, args.benchmark):
logger.error("You have specified an incorrect benchmark.\
Please enter the correct one.")
sys.exit(1)
else:
logger.info("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)
logger.info("{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)))
|