Temporary disable one unstable snaps test
[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     CreateInstanceSingleNetworkTests, 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)
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     # Temporary disabled for gating
193     # JIRA: SNAPS-263
194     # suite.addTest(OSComponentTestCase.parameterize(
195     #     NovaUtilsInstanceVolumeTests, os_creds=os_creds,
196     #     ext_net_name=ext_net_name, log_level=log_level,
197     #     image_metadata=image_metadata))
198     suite.addTest(OSComponentTestCase.parameterize(
199         CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
200         log_level=log_level))
201     suite.addTest(OSComponentTestCase.parameterize(
202         HeatUtilsCreateSimpleStackTests, 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         HeatUtilsCreateComplexStackTests, 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         HeatUtilsFlavorTests, 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         HeatUtilsKeypairTests, 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         HeatUtilsSecurityGroupTests, 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         CinderUtilsQoSTests, 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         CinderUtilsVolumeTests, 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         CinderUtilsSimpleVolumeTypeTests, 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         CinderUtilsAddEncryptionTests, os_creds=os_creds,
235         ext_net_name=ext_net_name, log_level=log_level,
236         image_metadata=image_metadata))
237     suite.addTest(OSComponentTestCase.parameterize(
238         CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds,
239         ext_net_name=ext_net_name, log_level=log_level,
240         image_metadata=image_metadata))
241
242
243 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
244                                     use_keystone=True, flavor_metadata=None,
245                                     image_metadata=None, use_floating_ips=True,
246                                     netconf_override=None,
247                                     log_level=logging.INFO):
248     # pylint: disable=too-many-arguments
249     """
250     Adds tests written to exercise all long-running OpenStack integration tests
251     meaning they will be creating VM instances and potentially performing some
252     SSH functions through floatingIPs
253
254     :param suite: the unittest.TestSuite object to which to add the tests
255     :param os_creds: and instance of OSCreds that holds the credentials
256                      required by OpenStack
257     :param ext_net_name: the name of an external network on the cloud under
258                          test
259     :param use_keystone: when True, tests requiring direct access to Keystone
260                          are added as these need to be running on a host that
261                          has access to the cloud's private network
262     :param image_metadata: dict() object containing metadata for creating an
263                            image with custom config
264                            (see YAML files in examples/image-metadata)
265     :param flavor_metadata: dict() object containing the metadata required by
266                             your flavor based on your configuration:
267                             (i.e. {'hw:mem_page_size': 'large'})
268     :param use_floating_ips: when true, all tests requiring Floating IPs will
269                              be added to the suite
270     :param netconf_override: dict() containing the reconfigured network_type,
271                              physical_network and segmentation_id
272     :param log_level: the logging level
273     :return: None as the tests will be adding to the 'suite' parameter object
274     """
275     # Tests the OpenStack API calls via a creator. If use_keystone, objects
276     # will be created with a custom user and project
277
278     # Creator Object tests
279     suite.addTest(OSIntegrationTestCase.parameterize(
280         CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
281         use_keystone=use_keystone,
282         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
283         log_level=log_level))
284     suite.addTest(OSIntegrationTestCase.parameterize(
285         CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
286         use_keystone=use_keystone,
287         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
288         log_level=log_level))
289     suite.addTest(OSIntegrationTestCase.parameterize(
290         CreateImageNegativeTests, os_creds=os_creds, 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         CreateMultiPartImageTests, 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         CreateKeypairsTests, 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         CreateKeypairsCleanupTests, os_creds=os_creds,
306         ext_net_name=ext_net_name,
307         use_keystone=use_keystone,
308         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
309         log_level=log_level))
310     suite.addTest(OSIntegrationTestCase.parameterize(
311         CreateNetworkSuccessTests, os_creds=os_creds,
312         ext_net_name=ext_net_name, use_keystone=use_keystone,
313         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
314         log_level=log_level))
315     suite.addTest(OSIntegrationTestCase.parameterize(
316         CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
317         use_keystone=use_keystone,
318         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
319         log_level=log_level))
320     suite.addTest(OSIntegrationTestCase.parameterize(
321         CreateRouterNegativeTests, os_creds=os_creds,
322         ext_net_name=ext_net_name, use_keystone=use_keystone,
323         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
324         log_level=log_level))
325     suite.addTest(OSIntegrationTestCase.parameterize(
326         CreateQoSTests, os_creds=os_creds,
327         ext_net_name=ext_net_name, use_keystone=use_keystone,
328         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
329         log_level=log_level))
330     suite.addTest(OSIntegrationTestCase.parameterize(
331         CreateSimpleVolumeTypeSuccessTests, os_creds=os_creds,
332         ext_net_name=ext_net_name, use_keystone=use_keystone,
333         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
334         log_level=log_level))
335     suite.addTest(OSIntegrationTestCase.parameterize(
336         CreateVolumeTypeComplexTests, os_creds=os_creds,
337         ext_net_name=ext_net_name, use_keystone=use_keystone,
338         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
339         log_level=log_level))
340     suite.addTest(OSIntegrationTestCase.parameterize(
341         CreateSimpleVolumeSuccessTests, os_creds=os_creds,
342         ext_net_name=ext_net_name, use_keystone=use_keystone,
343         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
344         log_level=log_level))
345     suite.addTest(OSIntegrationTestCase.parameterize(
346         CreateSimpleVolumeFailureTests, os_creds=os_creds,
347         ext_net_name=ext_net_name, use_keystone=use_keystone,
348         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
349         log_level=log_level))
350     suite.addTest(OSIntegrationTestCase.parameterize(
351         CreateVolumeWithTypeTests, os_creds=os_creds,
352         ext_net_name=ext_net_name, use_keystone=use_keystone,
353         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
354         log_level=log_level))
355     suite.addTest(OSIntegrationTestCase.parameterize(
356         CreateVolumeWithImageTests, os_creds=os_creds,
357         ext_net_name=ext_net_name, use_keystone=use_keystone,
358         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
359         log_level=log_level))
360
361     # VM Instances
362     suite.addTest(OSIntegrationTestCase.parameterize(
363         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
364         use_keystone=use_keystone,
365         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
366         log_level=log_level))
367     suite.addTest(OSIntegrationTestCase.parameterize(
368         CreateInstanceTwoNetTests, os_creds=os_creds,
369         ext_net_name=ext_net_name, use_keystone=use_keystone,
370         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
371         log_level=log_level))
372     suite.addTest(OSIntegrationTestCase.parameterize(
373         CreateInstanceSimpleTests, os_creds=os_creds,
374         ext_net_name=ext_net_name, use_keystone=use_keystone,
375         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
376         netconf_override=netconf_override, log_level=log_level))
377     suite.addTest(OSIntegrationTestCase.parameterize(
378         CreateInstancePortManipulationTests, os_creds=os_creds,
379         ext_net_name=ext_net_name, use_keystone=use_keystone,
380         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
381         netconf_override=netconf_override, log_level=log_level))
382     suite.addTest(OSIntegrationTestCase.parameterize(
383         InstanceSecurityGroupTests, os_creds=os_creds,
384         ext_net_name=ext_net_name, use_keystone=use_keystone,
385         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
386         netconf_override=netconf_override, log_level=log_level))
387     suite.addTest(OSIntegrationTestCase.parameterize(
388         CreateInstanceOnComputeHost, os_creds=os_creds,
389         ext_net_name=ext_net_name, use_keystone=use_keystone,
390         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
391         netconf_override=netconf_override, log_level=log_level))
392     suite.addTest(OSIntegrationTestCase.parameterize(
393         CreateInstanceFromThreePartImage, os_creds=os_creds,
394         ext_net_name=ext_net_name, use_keystone=use_keystone,
395         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
396         netconf_override=netconf_override, log_level=log_level))
397     suite.addTest(OSIntegrationTestCase.parameterize(
398         CreateInstanceVolumeTests, os_creds=os_creds,
399         ext_net_name=ext_net_name, use_keystone=use_keystone,
400         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
401         netconf_override=netconf_override, log_level=log_level))
402     suite.addTest(OSIntegrationTestCase.parameterize(
403         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
404         use_keystone=use_keystone,
405         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
406         log_level=log_level))
407     suite.addTest(OSIntegrationTestCase.parameterize(
408         CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name,
409         use_keystone=use_keystone,
410         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
411         log_level=log_level))
412     suite.addTest(OSIntegrationTestCase.parameterize(
413         CreateStackFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
414         use_keystone=use_keystone,
415         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
416         log_level=log_level))
417     suite.addTest(OSIntegrationTestCase.parameterize(
418         CreateStackKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
419         use_keystone=use_keystone,
420         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
421         log_level=log_level))
422     suite.addTest(OSIntegrationTestCase.parameterize(
423         CreateStackSecurityGroupTests, os_creds=os_creds,
424         ext_net_name=ext_net_name, use_keystone=use_keystone,
425         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
426         log_level=log_level))
427     suite.addTest(OSIntegrationTestCase.parameterize(
428         CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
429         use_keystone=use_keystone,
430         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
431         log_level=log_level))
432
433     if use_floating_ips:
434         suite.addTest(OSIntegrationTestCase.parameterize(
435             CreateInstanceSingleNetworkTests, os_creds=os_creds,
436             ext_net_name=ext_net_name, use_keystone=use_keystone,
437             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
438             log_level=log_level))
439         suite.addTest(OSIntegrationTestCase.parameterize(
440             CreateStackFloatingIpTests, os_creds=os_creds,
441             ext_net_name=ext_net_name, use_keystone=use_keystone,
442             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
443             log_level=log_level))
444         suite.addTest(OSIntegrationTestCase.parameterize(
445             AnsibleProvisioningTests, os_creds=os_creds,
446             ext_net_name=ext_net_name, use_keystone=use_keystone,
447             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
448             log_level=log_level))