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