def execute_framework(test_cases, iterations, base_heat_template, heat_template_parameters, deployment_configuration, openstack_credentials): """ Runs the framework :param test_cases: Test cases to be ran on the workload (dict() of dict()) Each string represents a test case and it is one of the strings provided by the "get_available_test_cases()" function output. :param iterations: Number of iterations to be executed (int) :param base_heat_template: File name of the base heat template of the workload to be deployed (string) :param heat_template_parameters: Dictionary of parameters to be given as input to the heat template ( dict() ) See http://docs.openstack.org/developer/heat/template_guide/hot_guide.html Section "Template input parameters" :param deployment_configuration: Dictionary of parameters representing the deployment configuration of the workload The key is a string representing the name of the parameter, the value is a list of strings representing the value to be assumed by a specific param. The format is: ( dict[string] = list(strings) ) ) The parameters are user defined: they have to correspond to the place holders provided in the heat template. (Use "#" in the syntax, es. - heat template "#param", - config_var "param") :return: the name of the csv file where the results have been stored """ # TODO: replace with user credentials credentials = common.get_credentials() # TODO: improve Input validation if not isinstance(base_heat_template, str): raise ValueError('The provided base_heat_template variable must be a string') if not isinstance(iterations, int): raise ValueError('The provided iterations variable must be an integer value') if not isinstance(credentials, dict): raise ValueError('The provided openstack_credentials variable must be a dictionary') credential_keys = ['', ''] missing = [credential_key for credential_key in credential_keys if credential_key not in credentials.keys()] if not isinstance(heat_template_parameters, dict): raise ValueError('The provided heat_template_parameters variable must be a dictionary') if not isinstance(test_cases, list): raise ValueError('The provided test_cases variable must be a dictionary') # Heat template generation (base_heat_template, deployment_configuration) common.LOG.info("Generation of all the heat templates required by the experiment") heat_template_generation.generates_templates(base_heat_template, deployment_configuration) # Benchmarking Unit (test_cases, iterations, heat_template_parameters)\ benchmarking_unit = bench.BenchmarkingUnit(base_heat_template, common.get_credentials(), heat_template_parameters, iterations, test_cases) try: common.LOG.info("Benchmarking Unit initialization") benchmarking_unit.initialize() common.LOG.info("Becnhmarking Unit Running") benchmarking_unit.run_benchmarks() finally: common.LOG.info("Benchmarking Unit Finalization") benchmarking_unit.finalize()
def test_get_credentials_for_success(self): expected = { 'ip_controller': '@string "value"', 'project': '@string "value"', 'auth_uri': '@string "value"', 'user': '******', 'heat_url': '@string "value"', 'password': '******' } output = common.get_credentials() self.assertEqual(expected, output)
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] benchmarks.append(bench) b_unit = bench_unit.BenchmarkingUnit(common.TEMPLATE_NAME, common.get_credentials(), common.get_heat_template_params(), common.ITERATIONS, benchmarks) try: common.LOG.info("Initialization of Benchmarking Unit") b_unit.initialize() common.LOG.info("Benchmarking Unit Running") b_unit.run_benchmarks() finally: common.LOG.info("Benchmarking Unit Finalization") # b_unit.finalize() # Deployment Engine # deployment_engine = sd.SmartDeployment() # deployment_engine.deploy_vtc()