Exemplo n.º 1
0
    def init():
        """
        Initializes the Framework

        :return: None
        """
        common.init(api=True)
Exemplo n.º 2
0
    def init():
        """
        Initializes the Framework

        :return: None
        """
        common.init(api=True)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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]
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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