7cf53b3949f1f66fc1af52377b1b86b5cfb52369
[functest.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 import mock
10 import os
11 import unittest
12
13 from snaps.openstack.os_credentials import OSCreds
14
15 from functest.core.testcase import TestCase
16 from functest.opnfv_tests.openstack.snaps import (connection_check, api_check,
17                                                   health_check, smoke)
18
19
20 class ConnectionCheckTesting(unittest.TestCase):
21     """
22     Ensures the VPingUserdata class can run in Functest. This test does not
23     actually connect with an OpenStack pod.
24     """
25
26     def setUp(self):
27         self.os_creds = OSCreds(
28             username='user', password='pass',
29             auth_url='http://foo.com:5000/v3', project_name='bar')
30
31         self.connection_check = connection_check.ConnectionCheck(
32             os_creds=self.os_creds, ext_net_name='foo')
33
34     @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
35     def test_run_success(self, add_os_client_tests):
36         result = mock.MagicMock(name='unittest.TextTestResult')
37         result.testsRun = 100
38         result.failures = []
39         result.errors = []
40         with mock.patch('unittest.TextTestRunner.run', return_value=result):
41             self.assertEquals(TestCase.EX_OK, self.connection_check.run())
42             self.assertEquals(TestCase.EX_OK,
43                               self.connection_check.is_successful())
44
45     @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
46     def test_run_1_of_100_failures(self, add_os_client_tests):
47         result = mock.MagicMock(name='unittest.TextTestResult')
48         result.testsRun = 100
49         result.failures = ['foo']
50         result.errors = []
51         with mock.patch('unittest.TextTestRunner.run', return_value=result):
52             self.assertEquals(TestCase.EX_OK, self.connection_check.run())
53             self.assertEquals(TestCase.EX_TESTCASE_FAILED,
54                               self.connection_check.is_successful())
55
56     @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
57     def test_run_1_of_100_failures_within_criteria(self, add_os_client_tests):
58         self.connection_check.criteria = 90
59         result = mock.MagicMock(name='unittest.TextTestResult')
60         result.testsRun = 100
61         result.failures = ['foo']
62         result.errors = []
63         with mock.patch('unittest.TextTestRunner.run', return_value=result):
64             self.assertEquals(TestCase.EX_OK, self.connection_check.run())
65             self.assertEquals(TestCase.EX_OK,
66                               self.connection_check.is_successful())
67
68
69 class APICheckTesting(unittest.TestCase):
70     """
71     Ensures the VPingUserdata class can run in Functest. This test does not
72     actually connect with an OpenStack pod.
73     """
74
75     def setUp(self):
76         self.os_creds = OSCreds(
77             username='user', password='pass',
78             auth_url='http://foo.com:5000/v3', project_name='bar')
79
80         self.api_check = api_check.ApiCheck(
81             os_creds=self.os_creds, ext_net_name='foo')
82
83     @mock.patch('snaps.test_suite_builder.add_openstack_api_tests')
84     def test_run_success(self, add_tests):
85         result = mock.MagicMock(name='unittest.TextTestResult')
86         result.testsRun = 100
87         result.failures = []
88         result.errors = []
89         with mock.patch('unittest.TextTestRunner.run', return_value=result):
90             self.assertEquals(TestCase.EX_OK, self.api_check.run())
91             self.assertEquals(TestCase.EX_OK,
92                               self.api_check.is_successful())
93
94     @mock.patch('snaps.test_suite_builder.add_openstack_api_tests')
95     def test_run_1_of_100_failures(self, add_tests):
96         result = mock.MagicMock(name='unittest.TextTestResult')
97         result.testsRun = 100
98         result.failures = ['foo']
99         result.errors = []
100         with mock.patch('unittest.TextTestRunner.run', return_value=result):
101             self.assertEquals(TestCase.EX_OK, self.api_check.run())
102             self.assertEquals(TestCase.EX_TESTCASE_FAILED,
103                               self.api_check.is_successful())
104
105     @mock.patch('snaps.test_suite_builder.add_openstack_api_tests')
106     def test_run_1_of_100_failures_within_criteria(self, add_tests):
107         self.api_check.criteria = 90
108         result = mock.MagicMock(name='unittest.TextTestResult')
109         result.testsRun = 100
110         result.failures = ['foo']
111         result.errors = []
112         with mock.patch('unittest.TextTestRunner.run', return_value=result):
113             self.assertEquals(TestCase.EX_OK, self.api_check.run())
114             self.assertEquals(TestCase.EX_OK,
115                               self.api_check.is_successful())
116
117
118 class HealthCheckTesting(unittest.TestCase):
119     """
120     Ensures the VPingUserdata class can run in Functest. This test does not
121     actually connect with an OpenStack pod.
122     """
123
124     def setUp(self):
125         self.os_creds = OSCreds(
126             username='user', password='pass',
127             auth_url='http://foo.com:5000/v3', project_name='bar')
128
129         self.health_check = health_check.HealthCheck(
130             os_creds=self.os_creds, ext_net_name='foo')
131
132     @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
133     def test_run_success(self, add_tests):
134         result = mock.MagicMock(name='unittest.TextTestResult')
135         result.testsRun = 100
136         result.failures = []
137         result.errors = []
138         with mock.patch('unittest.TextTestRunner.run', return_value=result):
139             self.assertEquals(TestCase.EX_OK, self.health_check.run())
140             self.assertEquals(TestCase.EX_OK,
141                               self.health_check.is_successful())
142
143     @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
144     def test_run_1_of_100_failures(self, add_tests):
145         result = mock.MagicMock(name='unittest.TextTestResult')
146         result.testsRun = 100
147         result.failures = ['foo']
148         result.errors = []
149         with mock.patch('unittest.TextTestRunner.run', return_value=result):
150             self.assertEquals(TestCase.EX_OK, self.health_check.run())
151             self.assertEquals(TestCase.EX_TESTCASE_FAILED,
152                               self.health_check.is_successful())
153
154     @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
155     def test_run_1_of_100_failures_within_criteria(self, add_tests):
156         self.health_check.criteria = 90
157         result = mock.MagicMock(name='unittest.TextTestResult')
158         result.testsRun = 100
159         result.failures = ['foo']
160         result.errors = []
161         with mock.patch('unittest.TextTestRunner.run', return_value=result):
162             self.assertEquals(TestCase.EX_OK, self.health_check.run())
163             self.assertEquals(TestCase.EX_OK,
164                               self.health_check.is_successful())
165
166
167 class SmokeTesting(unittest.TestCase):
168     """
169     Ensures the VPingUserdata class can run in Functest. This test does not
170     actually connect with an OpenStack pod.
171     """
172
173     def setUp(self):
174         self.os_creds = OSCreds(
175             username='user', password='pass',
176             auth_url='http://foo.com:5000/v3', project_name='bar')
177
178         self.smoke = smoke.SnapsSmoke(
179             os_creds=self.os_creds, ext_net_name='foo')
180
181     @mock.patch('snaps.test_suite_builder.add_openstack_integration_tests')
182     @mock.patch('os.path.join', return_value=os.getcwd())
183     def test_run_success(self, add_tests, cwd):
184         result = mock.MagicMock(name='unittest.TextTestResult')
185         result.testsRun = 100
186         result.failures = []
187         result.errors = []
188         with mock.patch('unittest.TextTestRunner.run', return_value=result):
189             self.assertEquals(TestCase.EX_OK, self.smoke.run())
190             self.assertEquals(TestCase.EX_OK,
191                               self.smoke.is_successful())
192
193     @mock.patch('snaps.test_suite_builder.add_openstack_integration_tests')
194     @mock.patch('os.path.join', return_value=os.getcwd())
195     def test_run_1_of_100_failures(self, add_tests, cwd):
196         result = mock.MagicMock(name='unittest.TextTestResult')
197         result.testsRun = 100
198         result.failures = ['foo']
199         result.errors = []
200         with mock.patch('unittest.TextTestRunner.run', return_value=result):
201             self.assertEquals(TestCase.EX_OK, self.smoke.run())
202             self.assertEquals(TestCase.EX_TESTCASE_FAILED,
203                               self.smoke.is_successful())
204
205     @mock.patch('snaps.test_suite_builder.add_openstack_integration_tests')
206     @mock.patch('os.path.join', return_value=os.getcwd())
207     def test_run_1_of_100_failures_within_criteria(self, add_tests, cwd):
208         self.smoke.criteria = 90
209         result = mock.MagicMock(name='unittest.TextTestResult')
210         result.testsRun = 100
211         result.failures = ['foo']
212         result.errors = []
213         with mock.patch('unittest.TextTestRunner.run', return_value=result):
214             self.assertEquals(TestCase.EX_OK, self.smoke.run())
215             self.assertEquals(TestCase.EX_OK,
216                               self.smoke.is_successful())