Fix warnings in all snaps-related modules
[functest-xtesting.git] / functest / tests / unit / openstack / snaps / test_snaps.py
1 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
2 #
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 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8
9 # pylint: disable=missing-docstring
10
11 import logging
12 import unittest
13
14 import mock
15 from snaps.openstack.os_credentials import OSCreds
16
17 from functest.core.testcase import TestCase
18 from functest.opnfv_tests.openstack.snaps import (
19     connection_check, api_check, health_check, smoke)
20
21
22 class ConnectionCheckTesting(unittest.TestCase):
23     """
24     Ensures the VPingUserdata class can run in Functest. This test does not
25     actually connect with an OpenStack pod.
26     """
27
28     def setUp(self):
29         self.os_creds = OSCreds(
30             username='user', password='pass',
31             auth_url='http://foo.com:5000/v3', project_name='bar')
32
33         self.connection_check = connection_check.ConnectionCheck(
34             os_creds=self.os_creds, ext_net_name='foo')
35
36     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
37                 'add_openstack_client_tests')
38     @mock.patch('unittest.TextTestRunner.run',
39                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
40     def test_run_success(self, *args):
41         args[0].return_value.testsRun = 100
42         args[0].return_value.failures = []
43         args[0].return_value.errors = []
44         self.assertEquals(TestCase.EX_OK, self.connection_check.run())
45         self.assertEquals(
46             TestCase.EX_OK, self.connection_check.is_successful())
47         args[0].assert_called_with(mock.ANY)
48         args[1].assert_called_with(
49             ext_net_name='foo', os_creds=self.os_creds, suite=mock.ANY,
50             use_keystone=True)
51
52     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
53                 'add_openstack_client_tests')
54     @mock.patch('unittest.TextTestRunner.run',
55                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
56     def test_run_1_of_100_ko(self, *args):
57         args[0].return_value.testsRun = 100
58         args[0].return_value.failures = ['foo']
59         args[0].return_value.errors = []
60         self.assertEquals(TestCase.EX_OK, self.connection_check.run())
61         self.assertEquals(
62             TestCase.EX_TESTCASE_FAILED, self.connection_check.is_successful())
63         args[0].assert_called_with(mock.ANY)
64         args[1].assert_called_with(
65             ext_net_name='foo', os_creds=self.os_creds, suite=mock.ANY,
66             use_keystone=True)
67
68     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
69                 'add_openstack_client_tests')
70     @mock.patch('unittest.TextTestRunner.run',
71                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
72     def test_run_1_of_100_ko_criteria(self, *args):
73         self.connection_check.criteria = 90
74         args[0].return_value.testsRun = 100
75         args[0].return_value.failures = ['foo']
76         args[0].return_value.errors = []
77         self.assertEquals(TestCase.EX_OK, self.connection_check.run())
78         self.assertEquals(
79             TestCase.EX_OK, self.connection_check.is_successful())
80         args[0].assert_called_with(mock.ANY)
81         args[1].assert_called_with(
82             ext_net_name='foo', os_creds=self.os_creds, suite=mock.ANY,
83             use_keystone=True)
84
85
86 class APICheckTesting(unittest.TestCase):
87     """
88     Ensures the VPingUserdata class can run in Functest. This test does not
89     actually connect with an OpenStack pod.
90     """
91
92     def setUp(self):
93         self.os_creds = OSCreds(
94             username='user', password='pass',
95             auth_url='http://foo.com:5000/v3', project_name='bar')
96
97         self.api_check = api_check.ApiCheck(
98             os_creds=self.os_creds, ext_net_name='foo')
99
100     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
101                 'add_openstack_api_tests')
102     @mock.patch('unittest.TextTestRunner.run',
103                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
104     def test_run_success(self, *args):
105         args[0].return_value.testsRun = 100
106         args[0].return_value.failures = []
107         args[0].return_value.errors = []
108         self.assertEquals(TestCase.EX_OK, self.api_check.run())
109         self.assertEquals(
110             TestCase.EX_OK, self.api_check.is_successful())
111         args[0].assert_called_with(mock.ANY)
112         args[1].assert_called_with(
113             ext_net_name='foo', image_metadata=mock.ANY,
114             os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
115
116     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
117                 'add_openstack_api_tests')
118     @mock.patch('unittest.TextTestRunner.run',
119                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
120     def test_run_1_of_100_ko(self, *args):
121         args[0].return_value.testsRun = 100
122         args[0].return_value.failures = ['foo']
123         args[0].return_value.errors = []
124         self.assertEquals(TestCase.EX_OK, self.api_check.run())
125         self.assertEquals(
126             TestCase.EX_TESTCASE_FAILED, self.api_check.is_successful())
127         args[0].assert_called_with(mock.ANY)
128         args[1].assert_called_with(
129             ext_net_name='foo', image_metadata=mock.ANY,
130             os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
131
132     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
133                 'add_openstack_api_tests')
134     @mock.patch('unittest.TextTestRunner.run',
135                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
136     def test_run_1_of_100_ko_criteria(self, *args):
137         self.api_check.criteria = 90
138         args[0].return_value.testsRun = 100
139         args[0].return_value.failures = ['foo']
140         args[0].return_value.errors = []
141         self.assertEquals(TestCase.EX_OK, self.api_check.run())
142         self.assertEquals(
143             TestCase.EX_OK, self.api_check.is_successful())
144         args[0].assert_called_with(mock.ANY)
145         args[1].assert_called_with(
146             ext_net_name='foo', image_metadata=mock.ANY,
147             os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
148
149
150 class HealthCheckTesting(unittest.TestCase):
151     """
152     Ensures the VPingUserdata class can run in Functest. This test does not
153     actually connect with an OpenStack pod.
154     """
155
156     def setUp(self):
157         self.os_creds = OSCreds(
158             username='user', password='pass',
159             auth_url='http://foo.com:5000/v3', project_name='bar')
160
161         self.health_check = health_check.HealthCheck(
162             os_creds=self.os_creds, ext_net_name='foo')
163
164     @mock.patch('snaps.openstack.tests.os_source_file_test.'
165                 'OSIntegrationTestCase.parameterize')
166     @mock.patch('unittest.TextTestRunner.run',
167                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
168     def test_run_success(self, *args):
169         args[0].return_value.testsRun = 100
170         args[0].return_value.failures = []
171         args[0].return_value.errors = []
172         self.assertEquals(TestCase.EX_OK, self.health_check.run())
173         self.assertEquals(
174             TestCase.EX_OK, self.health_check.is_successful())
175         args[0].assert_called_with(mock.ANY)
176         args[1].assert_called_with(
177             mock.ANY, ext_net_name='foo', flavor_metadata=None,
178             image_metadata=mock.ANY, netconf_override=None,
179             os_creds=self.os_creds, use_keystone=True)
180
181     @mock.patch('snaps.openstack.tests.os_source_file_test.'
182                 'OSIntegrationTestCase.parameterize')
183     @mock.patch('unittest.TextTestRunner.run',
184                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
185     def test_run_1_of_100_ko(self, *args):
186         args[0].return_value.testsRun = 100
187         args[0].return_value.failures = ['foo']
188         args[0].return_value.errors = []
189         self.assertEquals(TestCase.EX_OK, self.health_check.run())
190         self.assertEquals(
191             TestCase.EX_TESTCASE_FAILED, self.health_check.is_successful())
192         args[0].assert_called_with(mock.ANY)
193         args[1].assert_called_with(
194             mock.ANY, ext_net_name='foo', flavor_metadata=None,
195             image_metadata=mock.ANY, netconf_override=None,
196             os_creds=self.os_creds, use_keystone=True)
197
198     @mock.patch('snaps.openstack.tests.os_source_file_test.'
199                 'OSIntegrationTestCase.parameterize')
200     @mock.patch('unittest.TextTestRunner.run',
201                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
202     def test_run_1_of_100_ko_criteria(self, *args):
203         self.health_check.criteria = 90
204         args[0].return_value.testsRun = 100
205         args[0].return_value.failures = ['foo']
206         args[0].return_value.errors = []
207         self.assertEquals(TestCase.EX_OK, self.health_check.run())
208         self.assertEquals(
209             TestCase.EX_OK, self.health_check.is_successful())
210         args[0].assert_called_with(mock.ANY)
211         args[1].assert_called_with(
212             mock.ANY, ext_net_name='foo', flavor_metadata=None,
213             image_metadata=mock.ANY, netconf_override=None,
214             os_creds=self.os_creds, use_keystone=True)
215
216
217 class SmokeTesting(unittest.TestCase):
218     """
219     Ensures the VPingUserdata class can run in Functest. This test does not
220     actually connect with an OpenStack pod.
221     """
222
223     def setUp(self):
224         self.os_creds = OSCreds(
225             username='user', password='pass',
226             auth_url='http://foo.com:5000/v3', project_name='bar')
227
228         self.smoke = smoke.SnapsSmoke(
229             os_creds=self.os_creds, ext_net_name='foo')
230
231     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
232                 'add_openstack_integration_tests')
233     @mock.patch('unittest.TextTestRunner.run',
234                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
235     def test_run_success(self, *args):
236         args[0].return_value.testsRun = 100
237         args[0].return_value.failures = []
238         args[0].return_value.errors = []
239         self.assertEquals(TestCase.EX_OK, self.smoke.run())
240         self.assertEquals(TestCase.EX_OK, self.smoke.is_successful())
241         args[0].assert_called_with(mock.ANY)
242         args[1].assert_called_with(
243             ext_net_name='foo', flavor_metadata=None, image_metadata=mock.ANY,
244             netconf_override=None, os_creds=self.os_creds,
245             suite=mock.ANY, use_floating_ips=True, use_keystone=True)
246
247     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
248                 'add_openstack_integration_tests')
249     @mock.patch('unittest.TextTestRunner.run',
250                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
251     def test_run_1_of_100_ko(self, *args):
252         args[0].return_value.testsRun = 100
253         args[0].return_value.failures = ['foo']
254         args[0].return_value.errors = []
255         self.assertEquals(TestCase.EX_OK, self.smoke.run())
256         self.assertEquals(
257             TestCase.EX_TESTCASE_FAILED, self.smoke.is_successful())
258         args[0].assert_called_with(mock.ANY)
259         args[1].assert_called_with(
260             ext_net_name='foo', flavor_metadata=None, image_metadata=mock.ANY,
261             netconf_override=mock.ANY, os_creds=self.os_creds,
262             suite=mock.ANY, use_floating_ips=True, use_keystone=True)
263
264     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
265                 'add_openstack_integration_tests')
266     @mock.patch('unittest.TextTestRunner.run',
267                 return_value=mock.MagicMock(name='unittest.TextTestResult'))
268     def test_run_1_of_100_ko_criteria(self, *args):
269         self.smoke.criteria = 90
270         args[0].return_value.testsRun = 100
271         args[0].return_value.failures = ['foo']
272         args[0].return_value.errors = []
273         self.assertEquals(TestCase.EX_OK, self.smoke.run())
274         self.assertEquals(
275             TestCase.EX_OK, self.smoke.is_successful())
276         args[0].assert_called_with(mock.ANY)
277         args[1].assert_called_with(
278             ext_net_name='foo', flavor_metadata=None, image_metadata=mock.ANY,
279             netconf_override=None, os_creds=self.os_creds,
280             suite=mock.ANY, use_floating_ips=True, use_keystone=True)
281
282
283 if __name__ == "__main__":
284     logging.disable(logging.CRITICAL)
285     unittest.main(verbosity=2)