1 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
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
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # pylint: disable=missing-docstring
15 from snaps.openstack.os_credentials import OSCreds
16 from xtesting.core import testcase
18 from functest.opnfv_tests.openstack.snaps import api_check
19 from functest.opnfv_tests.openstack.snaps import health_check
20 from functest.opnfv_tests.openstack.snaps import smoke
23 class APICheckTesting(unittest.TestCase):
25 Ensures the VPingUserdata class can run in Functest. This test does not
26 actually connect with an OpenStack pod.
30 self.os_creds = OSCreds(
31 username='user', password='pass',
32 auth_url='http://foo.com:5000/v3', project_name='bar')
34 self.api_check = api_check.ApiCheck(
35 os_creds=self.os_creds, ext_net_name='foo')
37 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
38 'add_openstack_client_tests')
39 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
40 'add_openstack_api_tests')
41 @mock.patch('unittest.TextTestRunner.run',
42 return_value=mock.MagicMock(name='unittest.TextTestResult'))
43 def test_run_success(self, *args):
44 args[0].return_value.testsRun = 100
45 args[0].return_value.failures = []
46 args[0].return_value.errors = []
47 self.assertEquals(testcase.TestCase.EX_OK, self.api_check.run())
49 testcase.TestCase.EX_OK, self.api_check.is_successful())
50 args[0].assert_called_with(mock.ANY)
51 args[1].assert_called_with(
52 ext_net_name='foo', image_metadata=mock.ANY,
53 os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
55 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
56 'add_openstack_client_tests')
57 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
58 'add_openstack_api_tests')
59 @mock.patch('unittest.TextTestRunner.run',
60 return_value=mock.MagicMock(name='unittest.TextTestResult'))
61 def test_run_1_of_100_ko(self, *args):
62 args[0].return_value.testsRun = 100
63 args[0].return_value.failures = ['foo']
64 args[0].return_value.errors = []
65 self.assertEquals(testcase.TestCase.EX_OK, self.api_check.run())
67 testcase.TestCase.EX_TESTCASE_FAILED,
68 self.api_check.is_successful())
69 args[0].assert_called_with(mock.ANY)
70 args[1].assert_called_with(
71 ext_net_name='foo', image_metadata=mock.ANY,
72 os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
74 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
75 'add_openstack_client_tests')
76 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
77 'add_openstack_api_tests')
78 @mock.patch('unittest.TextTestRunner.run',
79 return_value=mock.MagicMock(name='unittest.TextTestResult'))
80 def test_run_1_of_100_ko_criteria(self, *args):
81 self.api_check.criteria = 90
82 args[0].return_value.testsRun = 100
83 args[0].return_value.failures = ['foo']
84 args[0].return_value.errors = []
85 self.assertEquals(testcase.TestCase.EX_OK, self.api_check.run())
87 testcase.TestCase.EX_OK, self.api_check.is_successful())
88 args[0].assert_called_with(mock.ANY)
89 args[1].assert_called_with(
90 ext_net_name='foo', image_metadata=mock.ANY,
91 os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
94 class HealthCheckTesting(unittest.TestCase):
96 Ensures the VPingUserdata class can run in Functest. This test does not
97 actually connect with an OpenStack pod.
101 self.os_creds = OSCreds(
102 username='user', password='pass',
103 auth_url='http://foo.com:5000/v3', project_name='bar')
105 self.health_check = health_check.HealthCheck(
106 os_creds=self.os_creds, ext_net_name='foo')
108 @mock.patch('snaps.openstack.tests.os_source_file_test.'
109 'OSIntegrationTestCase.parameterize')
110 @mock.patch('unittest.TextTestRunner.run',
111 return_value=mock.MagicMock(name='unittest.TextTestResult'))
112 def test_run_success(self, *args):
113 args[0].return_value.testsRun = 100
114 args[0].return_value.failures = []
115 args[0].return_value.errors = []
116 self.assertEquals(testcase.TestCase.EX_OK, self.health_check.run())
118 testcase.TestCase.EX_OK, self.health_check.is_successful())
119 args[0].assert_called_with(mock.ANY)
120 args[1].assert_called_with(
121 mock.ANY, ext_net_name='foo', flavor_metadata=mock.ANY,
122 image_metadata=mock.ANY, netconf_override=None,
123 os_creds=self.os_creds, use_keystone=True)
125 @mock.patch('snaps.openstack.tests.os_source_file_test.'
126 'OSIntegrationTestCase.parameterize')
127 @mock.patch('unittest.TextTestRunner.run',
128 return_value=mock.MagicMock(name='unittest.TextTestResult'))
129 def test_run_1_of_100_ko(self, *args):
130 args[0].return_value.testsRun = 100
131 args[0].return_value.failures = ['foo']
132 args[0].return_value.errors = []
133 self.assertEquals(testcase.TestCase.EX_OK, self.health_check.run())
135 testcase.TestCase.EX_TESTCASE_FAILED,
136 self.health_check.is_successful())
137 args[0].assert_called_with(mock.ANY)
138 args[1].assert_called_with(
139 mock.ANY, ext_net_name='foo', flavor_metadata=mock.ANY,
140 image_metadata=mock.ANY, netconf_override=None,
141 os_creds=self.os_creds, use_keystone=True)
143 @mock.patch('snaps.openstack.tests.os_source_file_test.'
144 'OSIntegrationTestCase.parameterize')
145 @mock.patch('unittest.TextTestRunner.run',
146 return_value=mock.MagicMock(name='unittest.TextTestResult'))
147 def test_run_1_of_100_ko_criteria(self, *args):
148 self.health_check.criteria = 90
149 args[0].return_value.testsRun = 100
150 args[0].return_value.failures = ['foo']
151 args[0].return_value.errors = []
152 self.assertEquals(testcase.TestCase.EX_OK, self.health_check.run())
154 testcase.TestCase.EX_OK, self.health_check.is_successful())
155 args[0].assert_called_with(mock.ANY)
156 args[1].assert_called_with(
157 mock.ANY, ext_net_name='foo', flavor_metadata=mock.ANY,
158 image_metadata=mock.ANY, netconf_override=None,
159 os_creds=self.os_creds, use_keystone=True)
162 class SmokeTesting(unittest.TestCase):
164 Ensures the VPingUserdata class can run in Functest. This test does not
165 actually connect with an OpenStack pod.
169 self.os_creds = OSCreds(
170 username='user', password='pass',
171 auth_url='http://foo.com:5000/v3', project_name='bar')
173 self.smoke = smoke.SnapsSmoke(
174 os_creds=self.os_creds, ext_net_name='foo')
176 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
177 'add_openstack_integration_tests')
178 @mock.patch('unittest.TextTestRunner.run',
179 return_value=mock.MagicMock(name='unittest.TextTestResult'))
180 def test_run_success(self, *args):
181 args[0].return_value.testsRun = 100
182 args[0].return_value.failures = []
183 args[0].return_value.errors = []
184 self.assertEquals(testcase.TestCase.EX_OK, self.smoke.run())
185 self.assertEquals(testcase.TestCase.EX_OK, self.smoke.is_successful())
186 args[0].assert_called_with(mock.ANY)
187 args[1].assert_called_with(
188 ext_net_name='foo', flavor_metadata=mock.ANY,
189 image_metadata=mock.ANY, netconf_override=None,
190 os_creds=self.os_creds, suite=mock.ANY, use_floating_ips=True,
193 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
194 'add_openstack_integration_tests')
195 @mock.patch('unittest.TextTestRunner.run',
196 return_value=mock.MagicMock(name='unittest.TextTestResult'))
197 def test_run_1_of_100_ko(self, *args):
198 args[0].return_value.testsRun = 100
199 args[0].return_value.failures = ['foo']
200 args[0].return_value.errors = []
201 self.assertEquals(testcase.TestCase.EX_OK, self.smoke.run())
203 testcase.TestCase.EX_TESTCASE_FAILED, self.smoke.is_successful())
204 args[0].assert_called_with(mock.ANY)
205 args[1].assert_called_with(
206 ext_net_name='foo', flavor_metadata=mock.ANY,
207 image_metadata=mock.ANY, netconf_override=mock.ANY,
208 os_creds=self.os_creds, suite=mock.ANY, use_floating_ips=True,
211 @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
212 'add_openstack_integration_tests')
213 @mock.patch('unittest.TextTestRunner.run',
214 return_value=mock.MagicMock(name='unittest.TextTestResult'))
215 def test_run_1_of_100_ko_criteria(self, *args):
216 self.smoke.criteria = 90
217 args[0].return_value.testsRun = 100
218 args[0].return_value.failures = ['foo']
219 args[0].return_value.errors = []
220 self.assertEquals(testcase.TestCase.EX_OK, self.smoke.run())
222 testcase.TestCase.EX_OK, self.smoke.is_successful())
223 args[0].assert_called_with(mock.ANY)
224 args[1].assert_called_with(
225 ext_net_name='foo', flavor_metadata=mock.ANY,
226 image_metadata=mock.ANY, netconf_override=None,
227 os_creds=self.os_creds, suite=mock.ANY, use_floating_ips=True,
231 if __name__ == "__main__":
232 logging.disable(logging.CRITICAL)
233 unittest.main(verbosity=2)