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