예제 #1
0
    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()
예제 #2
0
파일: common_test.py 프로젝트: kkltcjk/1026
 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)
예제 #3
0
 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()