3 # All rights reserved. This program and the accompanying materials
4 # are made available under the terms of the Apache License, Version 2.0
5 # which accompanies this distribution, and is available at
6 # http://www.apache.org/licenses/LICENSE-2.0
13 from functest.core import testcase
14 from functest.opnfv_tests.openstack.refstack_client import refstack_client
15 from functest.utils.constants import CONST
18 class OSRefstackClientTesting(unittest.TestCase):
20 _config = os.path.join(
21 CONST.__getattribute__('dir_functest_test'),
22 CONST.__getattribute__('refstack_tempest_conf_path'))
23 _testlist = os.path.join(
24 CONST.__getattribute__('dir_functest_test'),
25 CONST.__getattribute__('refstack_defcore_list'))
28 self.defaultargs = {'config': self._config,
29 'testlist': self._testlist}
30 self.refstackclient = refstack_client.RefstackClient()
32 def test_source_venv(self):
33 CONST.__setattr__('dir_refstack_client', 'test_repo_dir')
34 with mock.patch('functest.opnfv_tests.openstack.refstack_client.'
35 'refstack_client.ft_utils.execute_command') as m:
37 ". .venv/bin/activate;"
39 .format(CONST.__getattribute__('dir_refstack_client')))
40 self.refstackclient.source_venv()
41 m.assert_any_call(cmd)
43 def test_run_defcore(self):
44 config = 'tempest.conf'
46 with mock.patch('functest.opnfv_tests.openstack.refstack_client.'
47 'refstack_client.ft_utils.execute_command') as m:
49 "./refstack-client test -c {1} -v --test-list {2};"
51 .format(CONST.__getattribute__('dir_refstack_client'),
54 self.refstackclient.run_defcore(config, testlist)
55 m.assert_any_call(cmd)
57 def _get_main_kwargs(self, key=None):
58 kwargs = {'config': self._config,
59 'testlist': self._testlist}
64 def _test_main(self, status, *args):
65 kwargs = self._get_main_kwargs()
66 self.assertEqual(self.refstackclient.main(**kwargs), status)
68 args[0].assert_called_once_with(
69 refstack_client.RefstackClient.result_dir)
73 def _test_main_missing_keyword(self, key):
74 kwargs = self._get_main_kwargs(key)
75 self.assertEqual(self.refstackclient.main(**kwargs),
76 testcase.TestCase.EX_RUN_ERROR)
78 def test_main_missing_conf(self):
79 self._test_main_missing_keyword('config')
81 def test_main_missing_testlist(self):
82 self._test_main_missing_keyword('testlist')
84 def _test_argparser(self, arg, value):
85 self.defaultargs[arg] = value
86 parser = refstack_client.RefstackClientParser()
87 self.assertEqual(parser.parse_args(["--{}={}".format(arg, value)]),
90 def test_argparser_conf(self):
91 self._test_argparser('config', self._config)
93 def test_argparser_testlist(self):
94 self._test_argparser('testlist', self._testlist)
96 def test_argparser_multiple_args(self):
97 self.defaultargs['config'] = self._config
98 self.defaultargs['testlist'] = self._testlist
99 parser = refstack_client.RefstackClientParser()
100 self.assertEqual(parser.parse_args(
101 ["--config={}".format(self._config),
102 "--testlist={}".format(self._testlist)
103 ]), self.defaultargs)
106 if __name__ == "__main__":
107 logging.disable(logging.CRITICAL)
108 unittest.main(verbosity=2)