コード例 #1
0
ファイル: test_run_tests.py プロジェクト: jlausuch/functest
 def test_run_all_default(self, mock_logger_info):
     with mock.patch(
             'functest.ci.run_tests.Runner.run_tier') as mock_method:
         CONST.__setattr__('CI_LOOP', 'test_ci_loop')
         self.runner.run_all(self.tiers)
         mock_method.assert_any_call(self.tier)
         self.assertTrue(mock_logger_info.called)
コード例 #2
0
 def test_logger_test_results(self, mock_logger_info):
     CONST.__setattr__('results_test_db_url', self.db_url)
     with mock.patch('functest.utils.functest_utils.get_pod_name',
                     return_value=self.node_name), \
             mock.patch('functest.utils.functest_utils.get_scenario',
                        return_value=self.scenario), \
             mock.patch('functest.utils.functest_utils.get_version',
                        return_value=self.version), \
             mock.patch('functest.utils.functest_utils.get_build_tag',
                        return_value=self.build_tag):
         functest_utils.logger_test_results(self.project, self.case_name,
                                            self.status, self.details)
         mock_logger_info.assert_called_once_with(
             "\n"
             "****************************************\n"
             "\t %(p)s/%(n)s results \n\n"
             "****************************************\n"
             "DB:\t%(db)s\n"
             "pod:\t%(pod)s\n"
             "version:\t%(v)s\n"
             "scenario:\t%(s)s\n"
             "status:\t%(c)s\n"
             "build tag:\t%(b)s\n"
             "details:\t%(d)s\n" % {
                 'p': self.project,
                 'n': self.case_name,
                 'db': CONST.__getattribute__('results_test_db_url'),
                 'pod': self.node_name,
                 'v': self.version,
                 's': self.scenario,
                 'c': self.status,
                 'b': self.build_tag,
                 'd': self.details
             })
コード例 #3
0
 def test_source_rc_missing_installer_ip(self):
     with mock.patch('functest.ci.prepare_env.os.path.isfile',
                     return_value=False), \
             self.assertRaises(Exception):
         CONST.__setattr__('INSTALLER_IP', None)
         CONST.__setattr__('openstack_creds', 'test_creds')
         prepare_env.source_rc_file()
コード例 #4
0
 def test_check_env_variables_with_node(self, mock_logger_warn,
                                        mock_logger_info):
     CONST.__setattr__('NODE_NAME', mock.Mock())
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_info.assert_any_call(test_utils.
                                      SubstrMatch("    NODE_NAME="))
コード例 #5
0
 def test_check_env_variables_with_scenario(self, mock_logger_warn,
                                            mock_logger_info):
     CONST.__setattr__('DEPLOY_SCENARIO', 'test_scenario')
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_info.assert_any_call(test_utils.
                                      SubstrMatch("DEPLOY_SCENARIO="))
コード例 #6
0
 def setUp(self):
     self.default_args = {'config': self._config,
                          'testlist': self._testlist}
     CONST.__setattr__('OS_AUTH_URL', 'https://ip:5000/v3')
     CONST.__setattr__('OS_INSECURE', 'true')
     self.os_creds = OSCreds(
         username='******', password='******',
         auth_url='http://foo.com:5000/v3', project_name='bar')
コード例 #7
0
 def test_check_env_variables_with_inst_ip(self, mock_logger_warn,
                                           mock_logger_info):
     CONST.__setattr__('INSTALLER_IP', mock.Mock())
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_info.assert_any_call(test_utils.
                                      SubstrMatch("    INSTALLER_IP="))
コード例 #8
0
 def test_wrong_shema(self):
     CONST.__setattr__('results_test_db_url', '/dev/null')
     self.assertFalse(
         functest_utils.push_results_to_db(self._project_name,
                                           self._case_name,
                                           self._start_time,
                                           self._stop_time, self._result,
                                           {}))
コード例 #9
0
 def test_check_env_variables_with_ci_debug(self, mock_logger_warn,
                                            mock_logger_info):
     CONST.__setattr__('CI_DEBUG', mock.Mock())
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_info.assert_any_call(test_utils.
                                      SubstrMatch("    CI_DEBUG="))
コード例 #10
0
 def test_check_env_variables_missing_inst_type(self, mock_logger_warn,
                                                mock_logger_info):
     CONST.__setattr__('INSTALLER_TYPE', None)
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_warn.assert_any_call("The env variable 'INSTALLER_TYPE'"
                                      " is not defined.")
コード例 #11
0
    def test_check_env_variables_with_is_ci_run(self, mock_logger_warn,
                                                mock_logger_info):
        CONST.__setattr__('IS_CI_RUN', mock.Mock())
        prepare_env.check_env_variables()
        mock_logger_info.assert_any_call("Checking environment variables"
                                         "...")

        mock_logger_info.assert_any_call(test_utils.
                                         SubstrMatch("    IS_CI_RUN="))
コード例 #12
0
 def test_load_config_no_creds(self, loader_mock=None, get_mock=None):
     """Test load config without creds."""
     CONST.__setattr__('NODE_NAME', 'MOCK_POD')
     EnergyRecorder.energy_recorder_api = None
     EnergyRecorder.load_config()
     self.assertEquals(EnergyRecorder.energy_recorder_api["auth"], None)
     self.assertEquals(
         EnergyRecorder.energy_recorder_api["uri"],
         "http://pod-uri:8888/recorders/environment/MOCK_POD")
コード例 #13
0
 def test_check_env_variables_missing_scenario(self, mock_logger_warn,
                                               mock_logger_info):
     CONST.__setattr__('DEPLOY_SCENARIO', None)
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_warn.assert_any_call("The env variable"
                                      " 'DEPLOY_SCENARIO' is not defined"
                                      ". Setting CI_SCENARIO=undefined.")
コード例 #14
0
 def test_check_env_variables_missing_inst_ip(self, mock_logger_warn,
                                              mock_logger_info):
     CONST.__setattr__('INSTALLER_IP', None)
     prepare_env.check_env_variables()
     mock_logger_info.assert_any_call("Checking environment variables"
                                      "...")
     mock_logger_warn.assert_any_call(
         "The env variable 'INSTALLER_IP' is not defined. It is recommended"
         " to extract some information from the deployment")
コード例 #15
0
    def test_check_env_variables_with_build_tag(self, mock_logger_warn,
                                                mock_logger_info):
        CONST.__setattr__('BUILD_TAG', mock.Mock())
        prepare_env.check_env_variables()
        mock_logger_info.assert_any_call("Checking environment variables"
                                         "...")

        mock_logger_info.assert_any_call(test_utils.
                                         SubstrMatch("    BUILD_TAG="))
コード例 #16
0
 def test_makedirs_exc(self, *args):
     CONST.__setattr__('results_test_db_url', URL)
     self.assertFalse(
         functest_utils.push_results_to_db(self._project_name,
                                           self._case_name,
                                           self._start_time,
                                           self._stop_time, self._result,
                                           {}))
     args[0].assert_called_once_with(DIR)
コード例 #17
0
 def test_source_rc_missing_rc_file(self, mock_logger_warn,
                                    mock_logger_info,
                                    mock_logger_error):
     with mock.patch('functest.ci.prepare_env.os.path.isfile',
                     return_value=True), \
             mock.patch('functest.ci.prepare_env.os.path.getsize',
                        return_value=0), \
             self.assertRaises(Exception):
         CONST.__setattr__('openstack_creds', 'test_creds')
         prepare_env.source_rc_file()
コード例 #18
0
    def test_get_verifier_id_default(self):
        CONST.__setattr__('tempest_deployment_name', 'test_deploy_name')
        with mock.patch('functest.opnfv_tests.openstack.tempest.'
                        'conf_utils.subprocess.Popen') as mock_popen:
            mock_stdout = mock.Mock()
            attrs = {'stdout.readline.return_value': 'test_deploy_id'}
            mock_stdout.configure_mock(**attrs)
            mock_popen.return_value = mock_stdout

            self.assertEqual(conf_utils.get_verifier_id(), 'test_deploy_id')
コード例 #19
0
 def test_get_verifier_id_missing_verifier(self):
     CONST.__setattr__('tempest_deployment_name', 'test_deploy_name')
     with mock.patch('functest.opnfv_tests.openstack.tempest.'
                     'conf_utils.subprocess.Popen') as mock_popen, \
             self.assertRaises(Exception):
         mock_stdout = mock.Mock()
         attrs = {'stdout.readline.return_value': ''}
         mock_stdout.configure_mock(**attrs)
         mock_popen.return_value = mock_stdout
         conf_utils.get_verifier_id(),
コード例 #20
0
 def test_update_db_url(self, mock_db_url, mock_safe_load,
                        mock_get_functest_yaml):
     CONST.__setattr__('DEPLOY_SCENARIO', 'default_scenario')
     with mock.patch("__builtin__.open", mock.mock_open()), \
         mock.patch('functest.ci.prepare_env.yaml.dump'), \
             mock.patch.dict('functest.ci.prepare_env.os.environ',
                             {'TEST_DB_URL': self.db_url_env},
                             clear=True):
         prepare_env.update_config_file()
         self.assertTrue(mock_db_url.called)
コード例 #21
0
    def test_get_deployment_handler_missing_const_vars(self):
        with mock.patch('functest.ci.prepare_env.'
                        'factory.Factory.get_handler') as m:
            CONST.__setattr__('INSTALLER_IP', None)
            prepare_env.get_deployment_handler()
            self.assertFalse(m.called)

            CONST.__setattr__('INSTALLER_TYPE', None)
            prepare_env.get_deployment_handler()
            self.assertFalse(m.called)
コード例 #22
0
 def test_patch_file(self, mock_logger_debug):
     with mock.patch("__builtin__.open", mock.mock_open()), \
         mock.patch('functest.ci.prepare_env.yaml.safe_load',
                    return_value={'test_scenario': {'tkey': 'tvalue'}}), \
         mock.patch('functest.ci.prepare_env.ft_utils.get_functest_yaml',
                    return_value={'tkey1': 'tvalue1'}), \
         mock.patch('functest.ci.prepare_env.os.remove') as m, \
             mock.patch('functest.ci.prepare_env.yaml.dump'):
         CONST.__setattr__('DEPLOY_SCENARIO', 'test_scenario')
         prepare_env.patch_file('test_file')
         self.assertTrue(m.called)
コード例 #23
0
 def test_get_deployment_handler_exception(self, mock_debug):
     with mock.patch('functest.ci.prepare_env.'
                     'factory.Factory.get_handler',
                     side_effect=Exception), \
         mock.patch('functest.ci.prepare_env.'
                    'ft_utils.get_parameter_from_yaml'):
         CONST.__setattr__('INSTALLER_IP', 'test_ip')
         CONST.__setattr__('INSTALLER_TYPE', 'test_inst_type')
         opnfv_constants.INSTALLERS = ['test_inst_type']
         prepare_env.get_deployment_handler()
         self.assertTrue(mock_debug.called)
コード例 #24
0
 def test_apply_tempest_blacklist_no_blacklist(self):
     with mock.patch('__builtin__.open', mock.mock_open()) as m, \
         mock.patch.object(self.tempestcommon, 'read_file',
                           return_value=['test1', 'test2']):
         conf_utils.TEMPEST_BLACKLIST = Exception
         CONST.__setattr__('INSTALLER_TYPE', 'installer_type')
         CONST.__setattr__('DEPLOY_SCENARIO', 'deploy_scenario')
         self.tempestcommon.apply_tempest_blacklist()
         obj = m()
         obj.write.assert_any_call('test1\n')
         obj.write.assert_any_call('test2\n')
コード例 #25
0
 def test_decorators_with_previous(self,
                                   loader_mock=None,
                                   recorder_mock=None,
                                   cur_scenario_mock=None):
     """Test energy module decorators."""
     CONST.__setattr__('NODE_NAME', 'MOCK_POD')
     self.__decorated_method()
     calls = [mock.call.start(self.case_name),
              mock.call.submit_scenario(PREVIOUS_SCENARIO,
                                        PREVIOUS_STEP)]
     recorder_mock.assert_has_calls(calls, True)
コード例 #26
0
 def test_push_results_to_db_default(self):
     dic = self._get_env_dict(None)
     CONST.__setattr__('results_test_db_url', self.db_url)
     with mock.patch.dict(os.environ,
                          dic,
                          clear=True), \
             mock.patch('functest.utils.functest_utils.requests.post'):
         self.assertTrue(
             functest_utils.push_results_to_db(self.project, self.case_name,
                                               self.start_date,
                                               self.stop_date, self.result,
                                               self.details))
コード例 #27
0
 def test_run_defcore(self):
     CONST.__setattr__('OS_AUTH_URL', 'http://ip:5000/v3')
     insecure = ''
     config = 'tempest.conf'
     testlist = 'testlist'
     client = self._create_client()
     with mock.patch('functest.opnfv_tests.openstack.refstack_client.'
                     'refstack_client.ft_utils.execute_command') as m_cmd:
         cmd = ("refstack-client test {0} -c {1} -v --test-list {2}".format(
             insecure, config, testlist))
         client.run_defcore(config, testlist)
         m_cmd.assert_any_call(cmd)
コード例 #28
0
def source_credentials(rc_file):
    with open(rc_file, "r") as f:
        for line in f:
            var = (line.rstrip('"\n').replace('export ', '').split("=")
                   if re.search(r'(.*)=(.*)', line) else None)
            # The two next lines should be modified as soon as rc_file
            # conforms with common rules. Be aware that it could induce
            # issues if value starts with '
            if var:
                key = re.sub(r'^["\' ]*|[ \'"]*$', '', var[0])
                value = re.sub(r'^["\' ]*|[ \'"]*$', '', "".join(var[1:]))
                os.environ[key] = value
                CONST.__setattr__(key, value)
コード例 #29
0
    def test_create_verifier(self, mock_logger_debug):
        mock_popen = mock.Mock()
        attrs = {'poll.return_value': None,
                 'stdout.readline.return_value': '0'}
        mock_popen.configure_mock(**attrs)

        CONST.__setattr__('tempest_verifier_name', 'test_veifier_name')
        with mock.patch('functest.utils.functest_utils.execute_command_raise',
                        side_effect=Exception), \
                self.assertRaises(Exception):
            conf_utils.create_verifier()
            mock_logger_debug.assert_any_call("Tempest test_veifier_name"
                                              " does not exist")
コード例 #30
0
 def test_http_shema(self, *args):
     CONST.__setattr__('results_test_db_url', 'http://127.0.0.1')
     self.assertTrue(
         functest_utils.push_results_to_db(self._project_name,
                                           self._case_name,
                                           self._start_time,
                                           self._stop_time, self._result,
                                           {}))
     args[1].assert_called_once_with()
     args[0].assert_called_once_with(
         'http://127.0.0.1',
         data=self._get_json(),
         headers={'Content-Type': 'application/json'})