コード例 #1
0
ファイル: test_experimenter.py プロジェクト: ntlinh16/cloudal
def test_define_parameters():
    dir_path = os.path.dirname(os.path.realpath(__file__))
    file_path = os.path.join(dir_path, "../../test_data/test.yaml")
    result = parse_config_file(file_path)
    actual = define_parameters(result['parameters'])
    # assert result is None
    assert isinstance(actual, dict)
    assert actual['iteration'] == range(1, 5)
    assert actual['duration'] == [10]
    assert actual['workloads'] == ['write']
コード例 #2
0
    def run(self):
        logger.debug('Parse and convert configs for G5K provisioner')
        self.configs = parse_config_file(self.args.config_file_path)

        # Add the number of Antidote DC as a parameter
        self.configs['parameters']['n_dc'] = len(
            self.configs['exp_env']['clusters'])

        logger.debug('Normalize the parameter space')
        self.normalized_parameters = define_parameters(
            self.configs['parameters'])

        logger.debug('Normalize the given configs')
        kube_master_site = self.create_configs()

        logger.info('''Your largest topology:
                        Antidote DCs: %s
                        n_antidotedb_per_DC: %s  ''' %
                    (len(self.configs['exp_env']['clusters']),
                     max(self.normalized_parameters['n_nodes_per_dc'])))

        sweeper = create_combs_queue(
            result_dir=self.configs['exp_env']['results_dir'],
            parameters=self.configs['parameters'],
        )
        kube_namespace = 'elmerfs-exp'
        oar_job_ids = None
        while len(sweeper.get_remaining()) > 0:
            if oar_job_ids is None:
                oar_job_ids, kube_master = self.setup_env(
                    kube_master_site, kube_namespace)

            comb = sweeper.get_next()
            sweeper = self.run_workflow(
                kube_master=kube_master,
                kube_namespace=kube_namespace,
                comb=comb,
                sweeper=sweeper,
            )

            if not is_job_alive(oar_job_ids):
                oardel(oar_job_ids)
                oar_job_ids = None
        logger.info('Finish the experiment!!!')
コード例 #3
0
    def run(self):
        logger.debug('Parse and convert configs for OVH provisioner')
        self.configs = parse_config_file(self.args.config_file_path)
        # Add the number of Antidote DC as a parameter
        self.configs['parameters']['n_dc'] = len(
            self.configs['exp_env']['clusters'])

        logger.debug('Normalize the parameter space')
        self.normalized_parameters = define_parameters(
            self.configs['parameters'])

        logger.debug('Normalize the given configs')
        kube_master_site = self.create_configs()

        logger.info('''Your largest topology:
                        Antidote DCs: %s
                        n_antidotedb_per_DC: %s
                        n_fmke_client_per_DC: %s ''' %
                    (len(self.configs['exp_env']['clusters']),
                     max(self.normalized_parameters['n_nodes_per_dc']),
                     max(self.normalized_parameters['n_fmke_client_per_dc'])))

        logger.info('Creating the combination list')
        sweeper = create_paramsweeper(
            result_dir=self.configs['exp_env']['results_dir'],
            parameters=self.normalized_parameters)

        kube_namespace = 'fmke-exp'
        node_ids_file = None
        while len(sweeper.get_remaining()) > 0:
            if node_ids_file is None:
                kube_master, node_ids_file = self.setup_env(
                    kube_master_site, kube_namespace)
            comb = sweeper.get_next()
            sweeper = self.run_exp_workflow(kube_namespace=kube_namespace,
                                            kube_master=kube_master,
                                            comb=comb,
                                            sweeper=sweeper)
            # if not is_nodes_alive(node_ids_file):
            #     node_ids_file = None
        logger.info('Finish the experiment!!!')
コード例 #4
0
ファイル: test_experimenter.py プロジェクト: ntlinh16/cloudal
def test_define_parameters_wrong_input(parameters):
    with pytest.raises(TypeError) as exc_info:
        define_parameters(parameters)
    assert 'Parameters has to be a dictionary.' in str(exc_info)