Merge "Remove Snaps NeutronUtilsFloatingIpTests"
[functest.git] / functest / opnfv_tests / openstack / snaps / snaps_suite_builder.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
4 #
5 # This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10
11 """
12 Snaps test suite including openstack client tests, api tests and
13 integration tests.
14 add_openstack_client_tests: for connection_check
15 add_openstack_api_tests: for api_check
16 add_openstack_integration_tests: for snaps_smoke
17 """
18
19 import logging
20
21 from snaps.openstack.tests.create_flavor_tests import (
22     CreateFlavorTests)
23 from snaps.openstack.tests.create_image_tests import (
24     CreateImageSuccessTests, CreateImageNegativeTests,
25     CreateMultiPartImageTests)
26 from snaps.openstack.tests.create_instance_tests import (
27     CreateInstanceOnComputeHost,
28     CreateInstanceSimpleTests, InstanceSecurityGroupTests,
29     CreateInstancePortManipulationTests, SimpleHealthCheck,
30     CreateInstanceFromThreePartImage, CreateInstanceTwoNetTests,
31     CreateInstanceVolumeTests)
32 from snaps.openstack.tests.create_keypairs_tests import (
33     CreateKeypairsTests, CreateKeypairsCleanupTests)
34 from snaps.openstack.tests.create_network_tests import (
35     CreateNetworkSuccessTests)
36 from snaps.openstack.tests.create_project_tests import (
37     CreateProjectSuccessTests, CreateProjectUserTests)
38 from snaps.openstack.tests.create_qos_tests import (
39     CreateQoSTests)
40 from snaps.openstack.tests.create_router_tests import (
41     CreateRouterSuccessTests, CreateRouterNegativeTests)
42 from snaps.openstack.tests.create_security_group_tests import (
43     CreateSecurityGroupTests)
44 from snaps.openstack.tests.create_stack_tests import (
45     CreateStackSuccessTests, CreateStackNegativeTests,
46     CreateStackFlavorTests, CreateStackFloatingIpTests,
47     CreateStackKeypairTests, CreateStackVolumeTests,
48     CreateStackSecurityGroupTests)
49 from snaps.openstack.tests.create_user_tests import (
50     CreateUserSuccessTests)
51 from snaps.openstack.tests.create_volume_tests import (
52     CreateSimpleVolumeSuccessTests,
53     CreateVolumeWithTypeTests, CreateVolumeWithImageTests,
54     CreateSimpleVolumeFailureTests)
55 from snaps.openstack.tests.create_volume_type_tests import (
56     CreateSimpleVolumeTypeSuccessTests,
57     CreateVolumeTypeComplexTests)
58 from snaps.openstack.tests.os_source_file_test import (
59     OSComponentTestCase, OSIntegrationTestCase)
60 from snaps.openstack.utils.tests.cinder_utils_tests import (
61     CinderSmokeTests, CinderUtilsQoSTests, CinderUtilsSimpleVolumeTypeTests,
62     CinderUtilsAddEncryptionTests, CinderUtilsVolumeTypeCompleteTests,
63     CinderUtilsVolumeTests)
64 from snaps.openstack.utils.tests.glance_utils_tests import (
65     GlanceSmokeTests, GlanceUtilsTests)
66 from snaps.openstack.utils.tests.heat_utils_tests import (
67     HeatSmokeTests, HeatUtilsCreateSimpleStackTests,
68     HeatUtilsCreateComplexStackTests, HeatUtilsFlavorTests,
69     HeatUtilsKeypairTests, HeatUtilsSecurityGroupTests)
70 from snaps.openstack.utils.tests.keystone_utils_tests import KeystoneSmokeTests
71 from snaps.openstack.utils.tests.neutron_utils_tests import (
72     NeutronSmokeTests, NeutronUtilsNetworkTests, NeutronUtilsSubnetTests,
73     NeutronUtilsRouterTests, NeutronUtilsSecurityGroupTests)
74 from snaps.openstack.utils.tests.nova_utils_tests import (
75     NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests,
76     NovaUtilsInstanceTests)
77
78
79 def add_openstack_client_tests(suite, os_creds, ext_net_name,
80                                use_keystone=True, log_level=logging.INFO):
81     """
82     Adds tests written to exercise OpenStack client retrieval
83
84     :param suite: the unittest.TestSuite object to which to add the tests
85     :param os_creds: and instance of OSCreds that holds the credentials
86                      required by OpenStack
87     :param ext_net_name: the name of an external network on the cloud under
88                          test
89     :param use_keystone: when True, tests requiring direct access to Keystone
90                          are added as these need to be running on a host that
91                          has access to the cloud's private network
92     :param log_level: the logging level
93     :return: None as the tests will be adding to the 'suite' parameter object
94     """
95     # Basic connection tests
96     suite.addTest(
97         OSComponentTestCase.parameterize(
98             GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
99             log_level=log_level))
100
101     if use_keystone:
102         suite.addTest(
103             OSComponentTestCase.parameterize(
104                 KeystoneSmokeTests, os_creds=os_creds,
105                 ext_net_name=ext_net_name, log_level=log_level))
106
107     suite.addTest(
108         OSComponentTestCase.parameterize(
109             NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
110             log_level=log_level))
111     suite.addTest(
112         OSComponentTestCase.parameterize(
113             NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
114             log_level=log_level))
115     suite.addTest(
116         OSComponentTestCase.parameterize(
117             HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
118             log_level=log_level))
119     suite.addTest(
120         OSComponentTestCase.parameterize(
121             CinderSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
122             log_level=log_level))
123
124
125 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
126                             image_metadata=None, log_level=logging.INFO):
127     # pylint: disable=too-many-arguments
128     """
129     Adds tests written to exercise all existing OpenStack APIs
130
131     :param suite: the unittest.TestSuite object to which to add the tests
132     :param os_creds: Instance of OSCreds that holds the credentials
133                      required by OpenStack
134     :param ext_net_name: the name of an external network on the cloud under
135                          test
136     :param use_keystone: when True, tests requiring direct access to Keystone
137                          are added as these need to be running on a host that
138                          has access to the cloud's private network
139     :param image_metadata: dict() object containing metadata for creating an
140                            image with custom config
141                            (see YAML files in examples/image-metadata)
142     :param log_level: the logging level
143     :return: None as the tests will be adding to the 'suite' parameter object
144     """
145     # Tests the OpenStack API calls
146     if use_keystone:
147         suite.addTest(OSComponentTestCase.parameterize(
148             CreateUserSuccessTests, os_creds=os_creds,
149             ext_net_name=ext_net_name, log_level=log_level))
150         suite.addTest(OSComponentTestCase.parameterize(
151             CreateProjectSuccessTests, os_creds=os_creds,
152             ext_net_name=ext_net_name, log_level=log_level))
153         suite.addTest(OSComponentTestCase.parameterize(
154             CreateProjectUserTests, os_creds=os_creds,
155             ext_net_name=ext_net_name, log_level=log_level))
156
157     suite.addTest(OSComponentTestCase.parameterize(
158         GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
159         image_metadata=image_metadata,
160         log_level=log_level))
161     suite.addTest(OSComponentTestCase.parameterize(
162         NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name,
163         log_level=log_level))
164     suite.addTest(OSComponentTestCase.parameterize(
165         NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name,
166         log_level=log_level))
167     suite.addTest(OSComponentTestCase.parameterize(
168         NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name,
169         log_level=log_level))
170     suite.addTest(OSComponentTestCase.parameterize(
171         NeutronUtilsSecurityGroupTests, os_creds=os_creds,
172         ext_net_name=ext_net_name, log_level=log_level))
173     suite.addTest(OSComponentTestCase.parameterize(
174         NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
175         log_level=log_level))
176     suite.addTest(OSComponentTestCase.parameterize(
177         NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
178         log_level=log_level))
179     suite.addTest(OSComponentTestCase.parameterize(
180         NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name,
181         log_level=log_level, image_metadata=image_metadata))
182     suite.addTest(OSComponentTestCase.parameterize(
183         CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
184         log_level=log_level))
185     suite.addTest(OSComponentTestCase.parameterize(
186         HeatUtilsCreateSimpleStackTests, os_creds=os_creds,
187         ext_net_name=ext_net_name, log_level=log_level,
188         image_metadata=image_metadata))
189     suite.addTest(OSComponentTestCase.parameterize(
190         HeatUtilsCreateComplexStackTests, os_creds=os_creds,
191         ext_net_name=ext_net_name, log_level=log_level,
192         image_metadata=image_metadata))
193     suite.addTest(OSComponentTestCase.parameterize(
194         HeatUtilsFlavorTests, os_creds=os_creds,
195         ext_net_name=ext_net_name, log_level=log_level,
196         image_metadata=image_metadata))
197     suite.addTest(OSComponentTestCase.parameterize(
198         HeatUtilsKeypairTests, os_creds=os_creds,
199         ext_net_name=ext_net_name, log_level=log_level,
200         image_metadata=image_metadata))
201     suite.addTest(OSComponentTestCase.parameterize(
202         HeatUtilsSecurityGroupTests, os_creds=os_creds,
203         ext_net_name=ext_net_name, log_level=log_level,
204         image_metadata=image_metadata))
205     suite.addTest(OSComponentTestCase.parameterize(
206         CinderUtilsQoSTests, os_creds=os_creds,
207         ext_net_name=ext_net_name, log_level=log_level,
208         image_metadata=image_metadata))
209     suite.addTest(OSComponentTestCase.parameterize(
210         CinderUtilsVolumeTests, os_creds=os_creds,
211         ext_net_name=ext_net_name, log_level=log_level,
212         image_metadata=image_metadata))
213     suite.addTest(OSComponentTestCase.parameterize(
214         CinderUtilsSimpleVolumeTypeTests, os_creds=os_creds,
215         ext_net_name=ext_net_name, log_level=log_level,
216         image_metadata=image_metadata))
217     suite.addTest(OSComponentTestCase.parameterize(
218         CinderUtilsAddEncryptionTests, os_creds=os_creds,
219         ext_net_name=ext_net_name, log_level=log_level,
220         image_metadata=image_metadata))
221     suite.addTest(OSComponentTestCase.parameterize(
222         CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds,
223         ext_net_name=ext_net_name, log_level=log_level,
224         image_metadata=image_metadata))
225
226
227 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
228                                     use_keystone=True, flavor_metadata=None,
229                                     image_metadata=None, use_floating_ips=True,
230                                     netconf_override=None,
231                                     log_level=logging.INFO):
232     # pylint: disable=too-many-arguments
233     """
234     Adds tests written to exercise all long-running OpenStack integration tests
235     meaning they will be creating VM instances and potentially performing some
236     SSH functions through floatingIPs
237
238     :param suite: the unittest.TestSuite object to which to add the tests
239     :param os_creds: and instance of OSCreds that holds the credentials
240                      required by OpenStack
241     :param ext_net_name: the name of an external network on the cloud under
242                          test
243     :param use_keystone: when True, tests requiring direct access to Keystone
244                          are added as these need to be running on a host that
245                          has access to the cloud's private network
246     :param image_metadata: dict() object containing metadata for creating an
247                            image with custom config
248                            (see YAML files in examples/image-metadata)
249     :param flavor_metadata: dict() object containing the metadata required by
250                             your flavor based on your configuration:
251                             (i.e. {'hw:mem_page_size': 'large'})
252     :param use_floating_ips: when true, all tests requiring Floating IPs will
253                              be added to the suite
254     :param netconf_override: dict() containing the reconfigured network_type,
255                              physical_network and segmentation_id
256     :param log_level: the logging level
257     :return: None as the tests will be adding to the 'suite' parameter object
258     """
259     # Tests the OpenStack API calls via a creator. If use_keystone, objects
260     # will be created with a custom user and project
261
262     # Creator Object tests
263     suite.addTest(OSIntegrationTestCase.parameterize(
264         CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
265         use_keystone=use_keystone,
266         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
267         log_level=log_level))
268     suite.addTest(OSIntegrationTestCase.parameterize(
269         CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
270         use_keystone=use_keystone,
271         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
272         log_level=log_level))
273     suite.addTest(OSIntegrationTestCase.parameterize(
274         CreateImageNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
275         use_keystone=use_keystone,
276         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
277         log_level=log_level))
278     suite.addTest(OSIntegrationTestCase.parameterize(
279         CreateMultiPartImageTests, os_creds=os_creds,
280         ext_net_name=ext_net_name, use_keystone=use_keystone,
281         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
282         log_level=log_level))
283     suite.addTest(OSIntegrationTestCase.parameterize(
284         CreateKeypairsTests, os_creds=os_creds, ext_net_name=ext_net_name,
285         use_keystone=use_keystone,
286         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
287         log_level=log_level))
288     suite.addTest(OSIntegrationTestCase.parameterize(
289         CreateKeypairsCleanupTests, os_creds=os_creds,
290         ext_net_name=ext_net_name,
291         use_keystone=use_keystone,
292         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
293         log_level=log_level))
294     suite.addTest(OSIntegrationTestCase.parameterize(
295         CreateNetworkSuccessTests, os_creds=os_creds,
296         ext_net_name=ext_net_name, use_keystone=use_keystone,
297         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
298         log_level=log_level))
299     suite.addTest(OSIntegrationTestCase.parameterize(
300         CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
301         use_keystone=use_keystone,
302         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
303         log_level=log_level))
304     suite.addTest(OSIntegrationTestCase.parameterize(
305         CreateRouterNegativeTests, os_creds=os_creds,
306         ext_net_name=ext_net_name, use_keystone=use_keystone,
307         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
308         log_level=log_level))
309     suite.addTest(OSIntegrationTestCase.parameterize(
310         CreateQoSTests, os_creds=os_creds,
311         ext_net_name=ext_net_name, use_keystone=use_keystone,
312         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
313         log_level=log_level))
314     suite.addTest(OSIntegrationTestCase.parameterize(
315         CreateSimpleVolumeTypeSuccessTests, os_creds=os_creds,
316         ext_net_name=ext_net_name, use_keystone=use_keystone,
317         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
318         log_level=log_level))
319     suite.addTest(OSIntegrationTestCase.parameterize(
320         CreateVolumeTypeComplexTests, os_creds=os_creds,
321         ext_net_name=ext_net_name, use_keystone=use_keystone,
322         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
323         log_level=log_level))
324     suite.addTest(OSIntegrationTestCase.parameterize(
325         CreateSimpleVolumeSuccessTests, os_creds=os_creds,
326         ext_net_name=ext_net_name, use_keystone=use_keystone,
327         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
328         log_level=log_level))
329     suite.addTest(OSIntegrationTestCase.parameterize(
330         CreateSimpleVolumeFailureTests, os_creds=os_creds,
331         ext_net_name=ext_net_name, use_keystone=use_keystone,
332         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
333         log_level=log_level))
334     suite.addTest(OSIntegrationTestCase.parameterize(
335         CreateVolumeWithTypeTests, os_creds=os_creds,
336         ext_net_name=ext_net_name, use_keystone=use_keystone,
337         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
338         log_level=log_level))
339     suite.addTest(OSIntegrationTestCase.parameterize(
340         CreateVolumeWithImageTests, os_creds=os_creds,
341         ext_net_name=ext_net_name, use_keystone=use_keystone,
342         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
343         log_level=log_level))
344
345     # VM Instances
346     suite.addTest(OSIntegrationTestCase.parameterize(
347         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
348         use_keystone=use_keystone,
349         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
350         log_level=log_level))
351     suite.addTest(OSIntegrationTestCase.parameterize(
352         CreateInstanceTwoNetTests, os_creds=os_creds,
353         ext_net_name=ext_net_name, use_keystone=use_keystone,
354         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
355         log_level=log_level))
356     suite.addTest(OSIntegrationTestCase.parameterize(
357         CreateInstanceSimpleTests, os_creds=os_creds,
358         ext_net_name=ext_net_name, use_keystone=use_keystone,
359         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
360         netconf_override=netconf_override, log_level=log_level))
361     suite.addTest(OSIntegrationTestCase.parameterize(
362         CreateInstancePortManipulationTests, os_creds=os_creds,
363         ext_net_name=ext_net_name, use_keystone=use_keystone,
364         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
365         netconf_override=netconf_override, log_level=log_level))
366     suite.addTest(OSIntegrationTestCase.parameterize(
367         InstanceSecurityGroupTests, os_creds=os_creds,
368         ext_net_name=ext_net_name, use_keystone=use_keystone,
369         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
370         netconf_override=netconf_override, log_level=log_level))
371     suite.addTest(OSIntegrationTestCase.parameterize(
372         CreateInstanceOnComputeHost, os_creds=os_creds,
373         ext_net_name=ext_net_name, use_keystone=use_keystone,
374         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
375         netconf_override=netconf_override, log_level=log_level))
376     suite.addTest(OSIntegrationTestCase.parameterize(
377         CreateInstanceFromThreePartImage, os_creds=os_creds,
378         ext_net_name=ext_net_name, use_keystone=use_keystone,
379         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
380         netconf_override=netconf_override, log_level=log_level))
381     suite.addTest(OSIntegrationTestCase.parameterize(
382         CreateInstanceVolumeTests, os_creds=os_creds,
383         ext_net_name=ext_net_name, use_keystone=use_keystone,
384         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
385         netconf_override=netconf_override, log_level=log_level))
386     suite.addTest(OSIntegrationTestCase.parameterize(
387         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
388         use_keystone=use_keystone,
389         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
390         log_level=log_level))
391     suite.addTest(OSIntegrationTestCase.parameterize(
392         CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name,
393         use_keystone=use_keystone,
394         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
395         log_level=log_level))
396     suite.addTest(OSIntegrationTestCase.parameterize(
397         CreateStackFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
398         use_keystone=use_keystone,
399         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
400         log_level=log_level))
401     suite.addTest(OSIntegrationTestCase.parameterize(
402         CreateStackKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
403         use_keystone=use_keystone,
404         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
405         log_level=log_level))
406     suite.addTest(OSIntegrationTestCase.parameterize(
407         CreateStackSecurityGroupTests, os_creds=os_creds,
408         ext_net_name=ext_net_name, use_keystone=use_keystone,
409         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
410         log_level=log_level))
411     suite.addTest(OSIntegrationTestCase.parameterize(
412         CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
413         use_keystone=use_keystone,
414         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
415         log_level=log_level))
416
417     if use_floating_ips:
418         suite.addTest(OSIntegrationTestCase.parameterize(
419             CreateStackFloatingIpTests, os_creds=os_creds,
420             ext_net_name=ext_net_name, use_keystone=use_keystone,
421             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
422             log_level=log_level))