Fully remove CreateInstanceSingleNetworkTests
[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 (
71     KeystoneSmokeTests, KeystoneUtilsTests)
72 from snaps.openstack.utils.tests.neutron_utils_tests import (
73     NeutronSmokeTests, NeutronUtilsNetworkTests, NeutronUtilsSubnetTests,
74     NeutronUtilsRouterTests, NeutronUtilsSecurityGroupTests,
75     NeutronUtilsFloatingIpTests)
76 from snaps.openstack.utils.tests.nova_utils_tests import (
77     NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests,
78     NovaUtilsInstanceTests, NovaUtilsInstanceVolumeTests)
79 from snaps.provisioning.tests.ansible_utils_tests import (
80     AnsibleProvisioningTests)
81
82
83 def add_openstack_client_tests(suite, os_creds, ext_net_name,
84                                use_keystone=True, log_level=logging.INFO):
85     """
86     Adds tests written to exercise OpenStack client retrieval
87
88     :param suite: the unittest.TestSuite object to which to add the tests
89     :param os_creds: and instance of OSCreds that holds the credentials
90                      required by OpenStack
91     :param ext_net_name: the name of an external network on the cloud under
92                          test
93     :param use_keystone: when True, tests requiring direct access to Keystone
94                          are added as these need to be running on a host that
95                          has access to the cloud's private network
96     :param log_level: the logging level
97     :return: None as the tests will be adding to the 'suite' parameter object
98     """
99     # Basic connection tests
100     suite.addTest(
101         OSComponentTestCase.parameterize(
102             GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
103             log_level=log_level))
104
105     if use_keystone:
106         suite.addTest(
107             OSComponentTestCase.parameterize(
108                 KeystoneSmokeTests, os_creds=os_creds,
109                 ext_net_name=ext_net_name, log_level=log_level))
110
111     suite.addTest(
112         OSComponentTestCase.parameterize(
113             NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
114             log_level=log_level))
115     suite.addTest(
116         OSComponentTestCase.parameterize(
117             NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
118             log_level=log_level))
119     suite.addTest(
120         OSComponentTestCase.parameterize(
121             HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
122             log_level=log_level))
123     suite.addTest(
124         OSComponentTestCase.parameterize(
125             CinderSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
126             log_level=log_level))
127
128
129 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
130                             image_metadata=None, log_level=logging.INFO):
131     # pylint: disable=too-many-arguments
132     """
133     Adds tests written to exercise all existing OpenStack APIs
134
135     :param suite: the unittest.TestSuite object to which to add the tests
136     :param os_creds: Instance of OSCreds that holds the credentials
137                      required by OpenStack
138     :param ext_net_name: the name of an external network on the cloud under
139                          test
140     :param use_keystone: when True, tests requiring direct access to Keystone
141                          are added as these need to be running on a host that
142                          has access to the cloud's private network
143     :param image_metadata: dict() object containing metadata for creating an
144                            image with custom config
145                            (see YAML files in examples/image-metadata)
146     :param log_level: the logging level
147     :return: None as the tests will be adding to the 'suite' parameter object
148     """
149     # Tests the OpenStack API calls
150     if use_keystone:
151         suite.addTest(OSComponentTestCase.parameterize(
152             KeystoneUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
153             log_level=log_level))
154         suite.addTest(OSComponentTestCase.parameterize(
155             CreateUserSuccessTests, os_creds=os_creds,
156             ext_net_name=ext_net_name, log_level=log_level))
157         suite.addTest(OSComponentTestCase.parameterize(
158             CreateProjectSuccessTests, os_creds=os_creds,
159             ext_net_name=ext_net_name, log_level=log_level))
160         suite.addTest(OSComponentTestCase.parameterize(
161             CreateProjectUserTests, os_creds=os_creds,
162             ext_net_name=ext_net_name, log_level=log_level))
163
164     suite.addTest(OSComponentTestCase.parameterize(
165         GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
166         image_metadata=image_metadata,
167         log_level=log_level))
168     suite.addTest(OSComponentTestCase.parameterize(
169         NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name,
170         log_level=log_level))
171     suite.addTest(OSComponentTestCase.parameterize(
172         NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name,
173         log_level=log_level))
174     suite.addTest(OSComponentTestCase.parameterize(
175         NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name,
176         log_level=log_level))
177     suite.addTest(OSComponentTestCase.parameterize(
178         NeutronUtilsSecurityGroupTests, os_creds=os_creds,
179         ext_net_name=ext_net_name, log_level=log_level))
180     suite.addTest(OSComponentTestCase.parameterize(
181         NeutronUtilsFloatingIpTests, os_creds=os_creds,
182         ext_net_name=ext_net_name, log_level=log_level))
183     suite.addTest(OSComponentTestCase.parameterize(
184         NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
185         log_level=log_level))
186     suite.addTest(OSComponentTestCase.parameterize(
187         NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
188         log_level=log_level))
189     suite.addTest(OSComponentTestCase.parameterize(
190         NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name,
191         log_level=log_level, image_metadata=image_metadata))
192     suite.addTest(OSComponentTestCase.parameterize(
193         NovaUtilsInstanceVolumeTests, os_creds=os_creds,
194         ext_net_name=ext_net_name, log_level=log_level,
195         image_metadata=image_metadata))
196     suite.addTest(OSComponentTestCase.parameterize(
197         CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
198         log_level=log_level))
199     suite.addTest(OSComponentTestCase.parameterize(
200         HeatUtilsCreateSimpleStackTests, os_creds=os_creds,
201         ext_net_name=ext_net_name, log_level=log_level,
202         image_metadata=image_metadata))
203     suite.addTest(OSComponentTestCase.parameterize(
204         HeatUtilsCreateComplexStackTests, os_creds=os_creds,
205         ext_net_name=ext_net_name, log_level=log_level,
206         image_metadata=image_metadata))
207     suite.addTest(OSComponentTestCase.parameterize(
208         HeatUtilsFlavorTests, os_creds=os_creds,
209         ext_net_name=ext_net_name, log_level=log_level,
210         image_metadata=image_metadata))
211     suite.addTest(OSComponentTestCase.parameterize(
212         HeatUtilsKeypairTests, os_creds=os_creds,
213         ext_net_name=ext_net_name, log_level=log_level,
214         image_metadata=image_metadata))
215     suite.addTest(OSComponentTestCase.parameterize(
216         HeatUtilsSecurityGroupTests, os_creds=os_creds,
217         ext_net_name=ext_net_name, log_level=log_level,
218         image_metadata=image_metadata))
219     suite.addTest(OSComponentTestCase.parameterize(
220         CinderUtilsQoSTests, os_creds=os_creds,
221         ext_net_name=ext_net_name, log_level=log_level,
222         image_metadata=image_metadata))
223     suite.addTest(OSComponentTestCase.parameterize(
224         CinderUtilsVolumeTests, os_creds=os_creds,
225         ext_net_name=ext_net_name, log_level=log_level,
226         image_metadata=image_metadata))
227     suite.addTest(OSComponentTestCase.parameterize(
228         CinderUtilsSimpleVolumeTypeTests, os_creds=os_creds,
229         ext_net_name=ext_net_name, log_level=log_level,
230         image_metadata=image_metadata))
231     suite.addTest(OSComponentTestCase.parameterize(
232         CinderUtilsAddEncryptionTests, os_creds=os_creds,
233         ext_net_name=ext_net_name, log_level=log_level,
234         image_metadata=image_metadata))
235     suite.addTest(OSComponentTestCase.parameterize(
236         CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds,
237         ext_net_name=ext_net_name, log_level=log_level,
238         image_metadata=image_metadata))
239
240
241 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
242                                     use_keystone=True, flavor_metadata=None,
243                                     image_metadata=None, use_floating_ips=True,
244                                     netconf_override=None,
245                                     log_level=logging.INFO):
246     # pylint: disable=too-many-arguments
247     """
248     Adds tests written to exercise all long-running OpenStack integration tests
249     meaning they will be creating VM instances and potentially performing some
250     SSH functions through floatingIPs
251
252     :param suite: the unittest.TestSuite object to which to add the tests
253     :param os_creds: and instance of OSCreds that holds the credentials
254                      required by OpenStack
255     :param ext_net_name: the name of an external network on the cloud under
256                          test
257     :param use_keystone: when True, tests requiring direct access to Keystone
258                          are added as these need to be running on a host that
259                          has access to the cloud's private network
260     :param image_metadata: dict() object containing metadata for creating an
261                            image with custom config
262                            (see YAML files in examples/image-metadata)
263     :param flavor_metadata: dict() object containing the metadata required by
264                             your flavor based on your configuration:
265                             (i.e. {'hw:mem_page_size': 'large'})
266     :param use_floating_ips: when true, all tests requiring Floating IPs will
267                              be added to the suite
268     :param netconf_override: dict() containing the reconfigured network_type,
269                              physical_network and segmentation_id
270     :param log_level: the logging level
271     :return: None as the tests will be adding to the 'suite' parameter object
272     """
273     # Tests the OpenStack API calls via a creator. If use_keystone, objects
274     # will be created with a custom user and project
275
276     # Creator Object tests
277     suite.addTest(OSIntegrationTestCase.parameterize(
278         CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
279         use_keystone=use_keystone,
280         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
281         log_level=log_level))
282     suite.addTest(OSIntegrationTestCase.parameterize(
283         CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
284         use_keystone=use_keystone,
285         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
286         log_level=log_level))
287     suite.addTest(OSIntegrationTestCase.parameterize(
288         CreateImageNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
289         use_keystone=use_keystone,
290         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
291         log_level=log_level))
292     suite.addTest(OSIntegrationTestCase.parameterize(
293         CreateMultiPartImageTests, os_creds=os_creds,
294         ext_net_name=ext_net_name, use_keystone=use_keystone,
295         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
296         log_level=log_level))
297     suite.addTest(OSIntegrationTestCase.parameterize(
298         CreateKeypairsTests, os_creds=os_creds, ext_net_name=ext_net_name,
299         use_keystone=use_keystone,
300         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
301         log_level=log_level))
302     suite.addTest(OSIntegrationTestCase.parameterize(
303         CreateKeypairsCleanupTests, os_creds=os_creds,
304         ext_net_name=ext_net_name,
305         use_keystone=use_keystone,
306         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
307         log_level=log_level))
308     suite.addTest(OSIntegrationTestCase.parameterize(
309         CreateNetworkSuccessTests, os_creds=os_creds,
310         ext_net_name=ext_net_name, use_keystone=use_keystone,
311         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
312         log_level=log_level))
313     suite.addTest(OSIntegrationTestCase.parameterize(
314         CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
315         use_keystone=use_keystone,
316         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
317         log_level=log_level))
318     suite.addTest(OSIntegrationTestCase.parameterize(
319         CreateRouterNegativeTests, os_creds=os_creds,
320         ext_net_name=ext_net_name, use_keystone=use_keystone,
321         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
322         log_level=log_level))
323     suite.addTest(OSIntegrationTestCase.parameterize(
324         CreateQoSTests, os_creds=os_creds,
325         ext_net_name=ext_net_name, use_keystone=use_keystone,
326         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
327         log_level=log_level))
328     suite.addTest(OSIntegrationTestCase.parameterize(
329         CreateSimpleVolumeTypeSuccessTests, os_creds=os_creds,
330         ext_net_name=ext_net_name, use_keystone=use_keystone,
331         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
332         log_level=log_level))
333     suite.addTest(OSIntegrationTestCase.parameterize(
334         CreateVolumeTypeComplexTests, os_creds=os_creds,
335         ext_net_name=ext_net_name, use_keystone=use_keystone,
336         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
337         log_level=log_level))
338     suite.addTest(OSIntegrationTestCase.parameterize(
339         CreateSimpleVolumeSuccessTests, os_creds=os_creds,
340         ext_net_name=ext_net_name, use_keystone=use_keystone,
341         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
342         log_level=log_level))
343     suite.addTest(OSIntegrationTestCase.parameterize(
344         CreateSimpleVolumeFailureTests, os_creds=os_creds,
345         ext_net_name=ext_net_name, use_keystone=use_keystone,
346         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
347         log_level=log_level))
348     suite.addTest(OSIntegrationTestCase.parameterize(
349         CreateVolumeWithTypeTests, os_creds=os_creds,
350         ext_net_name=ext_net_name, use_keystone=use_keystone,
351         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
352         log_level=log_level))
353     suite.addTest(OSIntegrationTestCase.parameterize(
354         CreateVolumeWithImageTests, os_creds=os_creds,
355         ext_net_name=ext_net_name, use_keystone=use_keystone,
356         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
357         log_level=log_level))
358
359     # VM Instances
360     suite.addTest(OSIntegrationTestCase.parameterize(
361         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
362         use_keystone=use_keystone,
363         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
364         log_level=log_level))
365     suite.addTest(OSIntegrationTestCase.parameterize(
366         CreateInstanceTwoNetTests, os_creds=os_creds,
367         ext_net_name=ext_net_name, use_keystone=use_keystone,
368         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
369         log_level=log_level))
370     suite.addTest(OSIntegrationTestCase.parameterize(
371         CreateInstanceSimpleTests, os_creds=os_creds,
372         ext_net_name=ext_net_name, use_keystone=use_keystone,
373         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
374         netconf_override=netconf_override, log_level=log_level))
375     suite.addTest(OSIntegrationTestCase.parameterize(
376         CreateInstancePortManipulationTests, os_creds=os_creds,
377         ext_net_name=ext_net_name, use_keystone=use_keystone,
378         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
379         netconf_override=netconf_override, log_level=log_level))
380     suite.addTest(OSIntegrationTestCase.parameterize(
381         InstanceSecurityGroupTests, os_creds=os_creds,
382         ext_net_name=ext_net_name, use_keystone=use_keystone,
383         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
384         netconf_override=netconf_override, log_level=log_level))
385     suite.addTest(OSIntegrationTestCase.parameterize(
386         CreateInstanceOnComputeHost, os_creds=os_creds,
387         ext_net_name=ext_net_name, use_keystone=use_keystone,
388         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
389         netconf_override=netconf_override, log_level=log_level))
390     suite.addTest(OSIntegrationTestCase.parameterize(
391         CreateInstanceFromThreePartImage, os_creds=os_creds,
392         ext_net_name=ext_net_name, use_keystone=use_keystone,
393         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
394         netconf_override=netconf_override, log_level=log_level))
395     suite.addTest(OSIntegrationTestCase.parameterize(
396         CreateInstanceVolumeTests, os_creds=os_creds,
397         ext_net_name=ext_net_name, use_keystone=use_keystone,
398         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
399         netconf_override=netconf_override, log_level=log_level))
400     suite.addTest(OSIntegrationTestCase.parameterize(
401         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
402         use_keystone=use_keystone,
403         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
404         log_level=log_level))
405     suite.addTest(OSIntegrationTestCase.parameterize(
406         CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name,
407         use_keystone=use_keystone,
408         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
409         log_level=log_level))
410     suite.addTest(OSIntegrationTestCase.parameterize(
411         CreateStackFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
412         use_keystone=use_keystone,
413         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
414         log_level=log_level))
415     suite.addTest(OSIntegrationTestCase.parameterize(
416         CreateStackKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
417         use_keystone=use_keystone,
418         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
419         log_level=log_level))
420     suite.addTest(OSIntegrationTestCase.parameterize(
421         CreateStackSecurityGroupTests, os_creds=os_creds,
422         ext_net_name=ext_net_name, use_keystone=use_keystone,
423         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
424         log_level=log_level))
425     suite.addTest(OSIntegrationTestCase.parameterize(
426         CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
427         use_keystone=use_keystone,
428         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
429         log_level=log_level))
430
431     if use_floating_ips:
432         suite.addTest(OSIntegrationTestCase.parameterize(
433             CreateStackFloatingIpTests, os_creds=os_creds,
434             ext_net_name=ext_net_name, use_keystone=use_keystone,
435             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
436             log_level=log_level))
437         suite.addTest(OSIntegrationTestCase.parameterize(
438             AnsibleProvisioningTests, os_creds=os_creds,
439             ext_net_name=ext_net_name, use_keystone=use_keystone,
440             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
441             log_level=log_level))