diff options
Diffstat (limited to 'func/cli.py')
-rw-r--r-- | func/cli.py | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/func/cli.py b/func/cli.py new file mode 100644 index 00000000..5e8f02cf --- /dev/null +++ b/func/cli.py @@ -0,0 +1,109 @@ +############################################################################## +# 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 +from func.env_setup import Env_setup +from func.driver import Driver +from func.spawn_vm import SpawnVM +import argparse + + +class cli: + + @staticmethod + def _getfile(file_path): + with open('test_list/' + file_path, 'r') as fin_put: + _benchmarks = fin_put.readlines() + for items in range(len(_benchmarks)): + _benchmarks[items] = _benchmarks[items].rstrip() + return _benchmarks + + @staticmethod + def _getsuite(file_path): + + return file_path + + @staticmethod + def _check_test_list(filename): + + if os.path.isfile('test_list/' + filename): + return True + else: + return False + + @staticmethod + def _check_lab_name(lab_name): + + if os.path.isdir('test_cases/' + lab_name): + return True + else: + return False + + @staticmethod + def _get_f_name(file_name): + + return file_name[0: file_name.find('.')] + + @staticmethod + def _parse_args(args): + parser = argparse.ArgumentParser() + parser.add_argument('-l ', '--lab', help='Name of Lab on which being tested, These can' + 'be found in the test_cases/ 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', help='File in test_list 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') + return parser.parse_args(args) + + def __init__(self, args=sys.argv[1:]): + + suite = [] + args = self._parse_args(args) + + if not self._check_test_list(args.file): + print '\n\n ERROR: Test File Does not exist in test_list/ please enter correct file \n\n' + sys.exit(0) + + if not self._check_lab_name(args.lab): + print '\n\n You have specified a lab that is not present in test_cases/ please enter correct \ + file. If unsure how to proceed, use -l default.\n\n' + sys.exit(0) + + benchmarks = self._getfile(args.file) + suite.append(args.file) + suite = self._getsuite(suite) + for items in range(len(benchmarks)): + if suite and benchmarks: + obj = Env_setup() + if os.path.isfile('./test_cases/' + args.lab.lower() + '/' + suite[0] + '/' + benchmarks[items]): + [benchmark, vm_info, benchmark_details, proxy_info] = \ + obj.parse('./test_cases/' + args.lab.lower() + '/' + suite[0] + '/' + benchmarks[items]) + + if len(vm_info) != 0: + SpawnVM(vm_info) + obj.call_ping_test() + obj.call_ssh_test() + obj.update_ansible() + dvr = Driver() + dvr.drive_bench(benchmark, + obj.roles_dict.items(), + self._get_f_name(benchmarks[items]), + benchmark_details, + obj.ip_pw_dict.items(), + proxy_info) + else: + print (benchmarks[items], ' is not a Template in the Directory - \ + Enter a Valid file name. or use qtip.py -h for list') |