def init(): """ Initializes the Framework :return: None """ common.init(api=True)
def test_init_for_success(self, mock_conf_file, init_pkgen, init_log, init_general_vars, init_conf_file, mock_getcwd): mock_getcwd.return_value = self.dir common.init(True) init_pkgen.assert_called_once() init_conf_file.assert_called_once() init_general_vars.assert_called_once() init_log.assert_called_once() expected = self.dir.split('experimental_framework/')[0] self.assertEqual(common.BASE_DIR, expected)
def init(): common.init(api=True)
# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. __author__ = "vmriccox" from experimental_framework import heat_template_generation, common from experimental_framework import benchmarking_unit as bench_unit # Initialization of the utilities tools common.init() common.LOG.info("Generation of all the heat templates required by the experiment ...") heat_template_generation.generates_templates(common.TEMPLATE_NAME, common.get_deployment_configuration_variables_from_conf_file()) common.LOG.info("Running Benchmarks ...") required_benchmarks = common.get_benchmarks_from_conf_file() test_case_params = common.get_testcase_params() benchmarks = list() for benchmark in required_benchmarks: bench = dict() bench['name'] = benchmark bench['params'] = dict() for param in test_case_params.keys(): bench['params'][param] = test_case_params[param]
def execute_framework(test_cases, iterations, heat_template, heat_template_parameters, deployment_configuration, openstack_credentials): """ Executes the framework according the inputs :param test_cases: Test cases to be ran on the workload (dict() of dict()) Example: test_case = dict() test_case['name'] = 'module.Class' test_case['params'] = dict() test_case['params']['throughput'] = '1' test_case['params']['vlan_sender'] = '1007' test_case['params']['vlan_receiver'] = '1006' test_cases = [test_case] :param iterations: Number of cycles to be executed (int) :param heat_template: (string) File name of the heat template of the workload to be deployed. It contains the parameters to be evaluated in the form of #parameter_name. (See heat_templates/vTC.yaml as example). :param heat_template_parameters: (dict) Parameters to be provided as input to the heat template. See http://docs.openstack.org/developer/heat/ template_guide/hot_guide.html - section "Template input parameters" for further info. :param deployment_configuration: ( dict[string] = list(strings) ) ) Dictionary of parameters representing the deployment configuration of the workload The key is a string corresponding to the name of the parameter, the value is a list of strings representing the value to be assumed by a specific param. The parameters are user defined: they have to correspond to the place holders (#parameter_name) specified in the heat template. :return: dict() Containing results """ common.init(api=True) # Input Validation common.InputValidation.validate_os_credentials(openstack_credentials) credentials = openstack_credentials msg = 'The provided heat_template does not exist' if common.RELEASE == 'liberty': heat_template = 'vTC_liberty.yaml' else: heat_template = 'vTC.yaml' template = "{}{}".format(common.get_template_dir(), heat_template) common.InputValidation.validate_file_exist(template, msg) msg = 'The provided iterations variable must be an integer value' common.InputValidation.validate_integer(iterations, msg) msg = 'The provided heat_template_parameters variable must be a ' \ 'dictionary' common.InputValidation.validate_dictionary(heat_template_parameters, msg) log_msg = "Generation of all the heat templates " \ "required by the experiment" common.LOG.info(log_msg) heat_template_generation.generates_templates(heat_template, deployment_configuration) benchmarking_unit = \ b_unit.BenchmarkingUnit( heat_template, credentials, heat_template_parameters, iterations, test_cases) try: common.LOG.info("Benchmarking Unit initialization") benchmarking_unit.initialize() common.LOG.info("Benchmarking Unit Running") results = benchmarking_unit.run_benchmarks() finally: common.LOG.info("Benchmarking Unit Finalization") benchmarking_unit.finalize() return results
def execute_framework( test_cases, iterations, heat_template, heat_template_parameters, deployment_configuration, openstack_credentials ): """ Executes the framework according the inputs :param test_cases: Test cases to be ran on the workload (dict() of dict()) Example: test_case = dict() test_case['name'] = 'module.Class' test_case['params'] = dict() test_case['params']['throughput'] = '1' test_case['params']['vlan_sender'] = '1007' test_case['params']['vlan_receiver'] = '1006' test_cases = [test_case] :param iterations: Number of cycles to be executed (int) :param heat_template: (string) File name of the heat template of the workload to be deployed. It contains the parameters to be evaluated in the form of #parameter_name. (See heat_templates/vTC.yaml as example). :param heat_template_parameters: (dict) Parameters to be provided as input to the heat template. See http://docs.openstack.org/developer/heat/ template_guide/hot_guide.html - section "Template input parameters" for further info. :param deployment_configuration: ( dict[string] = list(strings) ) ) Dictionary of parameters representing the deployment configuration of the workload The key is a string corresponding to the name of the parameter, the value is a list of strings representing the value to be assumed by a specific param. The parameters are user defined: they have to correspond to the place holders (#parameter_name) specified in the heat template. :return: dict() Containing results """ common.init(api=True) # Input Validation common.InputValidation.validate_os_credentials(openstack_credentials) credentials = openstack_credentials msg = 'The provided heat_template does not exist' if common.RELEASE == 'liberty': heat_template = 'vTC_liberty.yaml' else: heat_template = 'vTC.yaml' template = "{}{}".format(common.get_template_dir(), heat_template) common.InputValidation.validate_file_exist(template, msg) msg = 'The provided iterations variable must be an integer value' common.InputValidation.validate_integer(iterations, msg) msg = 'The provided heat_template_parameters variable must be a ' \ 'dictionary' common.InputValidation.validate_dictionary(heat_template_parameters, msg) log_msg = "Generation of all the heat templates " \ "required by the experiment" common.LOG.info(log_msg) heat_template_generation.generates_templates(heat_template, deployment_configuration) benchmarking_unit = \ b_unit.BenchmarkingUnit( heat_template, credentials, heat_template_parameters, iterations, test_cases) try: common.LOG.info("Benchmarking Unit initialization") benchmarking_unit.initialize() common.LOG.info("Benchmarking Unit Running") results = benchmarking_unit.run_benchmarks() finally: common.LOG.info("Benchmarking Unit Finalization") benchmarking_unit.finalize() return results