4 ## Copyright (c) 2010-2020 Intel Corporation
6 ## Licensed under the Apache License, Version 2.0 (the "License");
7 ## you may not use this file except in compliance with the License.
8 ## You may obtain a copy of the License at
10 ## http://www.apache.org/licenses/LICENSE-2.0
12 ## Unless required by applicable law or agreed to in writing, software
13 ## distributed under the License is distributed on an "AS IS" BASIS,
14 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 ## See the License for the specific language governing permissions and
16 ## limitations under the License.
18 from __future__ import print_function
19 from __future__ import print_function
20 from __future__ import division
22 from future import standard_library
23 standard_library.install_aliases()
24 from builtins import object
26 from rapid_cli import RapidCli
27 from rapid_log import RapidLog
28 from rapid_parser import RapidConfigParser
29 from rapid_defaults import RapidDefaults
30 from rapid_machine import RapidMachine
31 from rapid_generator_machine import RapidGeneratorMachine
32 from rapid_flowsizetest import FlowSizeTest
33 from rapid_corestatstest import CoreStatsTest
34 from rapid_portstatstest import PortStatsTest
35 from rapid_impairtest import ImpairTest
36 from rapid_irqtest import IrqTest
37 from rapid_warmuptest import WarmupTest
39 class RapidTestManager(object):
41 RapidTestManager Class
45 return (RapidDefaults.test_params)
48 def run_tests(test_params):
49 RapidLog.log_init(test_params)
50 test_params = RapidConfigParser.parse_config(test_params)
51 RapidLog.debug(test_params)
52 monitor_gen = monitor_sut = False
53 background_machines = []
54 sut_machine = gen_machine = None
56 for machine_params in test_params['machines']:
57 if 'gencores' in machine_params.keys():
58 machine = RapidGeneratorMachine(test_params['key'], test_params['user'], test_params['vim_type'], test_params['rundir'], machine_params)
59 if machine_params['monitor']:
61 RapidLog.exception("Can only monitor 1 generator")
62 raise Exception("Can only monitor 1 generator")
67 background_machines.append(machine)
69 machine = RapidMachine(test_params['key'], test_params['user'], test_params['vim_type'], test_params['rundir'], machine_params)
70 if machine_params['monitor']:
72 RapidLog.exception("Can only monitor 1 sut")
73 raise Exception("Can only monitor 1 sut")
77 machines.append(machine)
78 if test_params['configonly']:
80 for machine in machines:
83 for test_param in test_params['tests']:
84 RapidLog.info(test_param['test'])
85 if test_param['test'] in ['flowsizetest', 'TST009test', 'fixed_rate']:
86 test = FlowSizeTest(test_param, test_params['lat_percentile'],
87 test_params['runtime'], test_params['pushgateway'],
88 test_params['environment_file'], gen_machine,
89 sut_machine, background_machines)
90 elif test_param['test'] in ['corestats']:
91 test = CoreStatsTest(test_params['runtime'],
92 test_params['pushgateway'],
93 test_params['environment_file'], machines)
94 elif test_param['test'] in ['portstats']:
95 test = PortStatsTest(test_params['runtime'],
96 test_params['pushgateway'],
97 test_params['environment_file'], machines)
98 elif test_param['test'] in ['impairtest']:
99 test = ImpairTest(test_param, test_params['lat_percentile'],
100 test_params['runtime'], test_params['pushgateway'],
101 test_params['environment_file'], gen_machine,
103 elif test_param['test'] in ['irqtest']:
104 test = IrqTest(test_params['runtime'], machines)
105 elif test_param['test'] in ['warmuptest']:
106 test = WarmupTest(test_param, gen_machine)
108 RapidLog.debug('Test name ({}) is not valid:'.format(
110 single_test_result = test.run()
111 if not single_test_result:
118 test_params = RapidDefaults.test_params
119 # When no cli is used, the process_cli can be replaced by code modifying
121 test_params = RapidCli.process_cli(test_params)
122 test_result = RapidTestManager.run_tests(test_params)
123 RapidLog.info('Test result is : {}'.format(test_result))
125 if __name__ == "__main__":