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)
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 })
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()
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="))
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="))
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')
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="))
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, {}))
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="))
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.")
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="))
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")
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.")
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")
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="))
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)
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()
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')
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(),
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)
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)
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)
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)
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')
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)
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))
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)
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)
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")
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'})