Merge "Remove test_get_endpoint_with_each_interface"
[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     NeutronUtilsFloatingIpTests)
75 from snaps.openstack.utils.tests.nova_utils_tests import (
76     NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests,
77     NovaUtilsInstanceTests)
78
79
80 def add_openstack_client_tests(suite, os_creds, ext_net_name,
81                                use_keystone=True, log_level=logging.INFO):
82     """
83     Adds tests written to exercise OpenStack client retrieval
84
85     :param suite: the unittest.TestSuite object to which to add the tests
86     :param os_creds: and instance of OSCreds that holds the credentials
87                      required by OpenStack
88     :param ext_net_name: the name of an external network on the cloud under
89                          test
90     :param use_keystone: when True, tests requiring direct access to Keystone
91                          are added as these need to be running on a host that
92                          has access to the cloud's private network
93     :param log_level: the logging level
94     :return: None as the tests will be adding to the 'suite' parameter object
95     """
96     # Basic connection tests
97     suite.addTest(
98         OSComponentTestCase.parameterize(
99             GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
100             log_level=log_level))
101
102     if use_keystone:
103         suite.addTest(
104             OSComponentTestCase.parameterize(
105                 KeystoneSmokeTests, os_creds=os_creds,
106                 ext_net_name=ext_net_name, log_level=log_level))
107
108     suite.addTest(
109         OSComponentTestCase.parameterize(
110             NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
111             log_level=log_level))
112     suite.addTest(
113         OSComponentTestCase.parameterize(
114             NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
115             log_level=log_level))
116     suite.addTest(
117         OSComponentTestCase.parameterize(
118             HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
119             log_level=log_level))
120     suite.addTest(
121         OSComponentTestCase.parameterize(
122             CinderSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
123             log_level=log_level))
124
125
126 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
127                             image_metadata=None, log_level=logging.INFO):
128     # pylint: disable=too-many-arguments
129     """
130     Adds tests written to exercise all existing OpenStack APIs
131
132     :param suite: the unittest.TestSuite object to which to add the tests
133     :param os_creds: Instance of OSCreds that holds the credentials
134                      required by OpenStack
135     :param ext_net_name: the name of an external network on the cloud under
136                          test
137     :param use_keystone: when True, tests requiring direct access to Keystone
138                          are added as these need to be running on a host that
139                          has access to the cloud's private network
140     :param image_metadata: dict() object containing metadata for creating an
141                            image with custom config
142                            (see YAML files in examples/image-metadata)
143     :param log_level: the logging level
144     :return: None as the tests will be adding to the 'suite' parameter object
145     """
146     # Tests the OpenStack API calls
147     if use_keystone:
148         suite.addTest(OSComponentTestCase.parameterize(
149             CreateUserSuccessTests, os_creds=os_creds,
150             ext_net_name=ext_net_name, log_level=log_level))
151         suite.addTest(OSComponentTestCase.parameterize(
152             CreateProjectSuccessTests, os_creds=os_creds,
153             ext_net_name=ext_net_name, log_level=log_level))
154         suite.addTest(OSComponentTestCase.parameterize(
155             CreateProjectUserTests, os_creds=os_creds,
156             ext_net_name=ext_net_name, log_level=log_level))
157
158     suite.addTest(OSComponentTestCase.parameterize(
159         GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
160         image_metadata=image_metadata,
161         log_level=log_level))
162     suite.addTest(OSComponentTestCase.parameterize(
163         NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name,
164         log_level=log_level))
165     suite.addTest(OSComponentTestCase.parameterize(
166         NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name,
167         log_level=log_level))
168     suite.addTest(OSComponentTestCase.parameterize(
169         NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name,
170         log_level=log_level))
171     suite.addTest(OSComponentTestCase.parameterize(
172         NeutronUtilsSecurityGroupTests, os_creds=os_creds,
173         ext_net_name=ext_net_name, log_level=log_level))
174     suite.addTest(OSComponentTestCase.parameterize(
175         NeutronUtilsFloatingIpTests, os_creds=os_creds,
176         ext_net_name=ext_net_name, log_level=log_level))
177     suite.addTest(OSComponentTestCase.parameterize(
178         NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
179         log_level=log_level))
180     suite.addTest(OSComponentTestCase.parameterize(
181         NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
182         log_level=log_level))
183     suite.addTest(OSComponentTestCase.parameterize(
184         NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name,
185         log_level=log_level, image_metadata=image_metadata))
186     suite.addTest(OSComponentTestCase.parameterize(
187         CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
188         log_level=log_level))
189     suite.addTest(OSComponentTestCase.parameterize(
190         HeatUtilsCreateSimpleStackTests, 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         HeatUtilsCreateComplexStackTests, 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         HeatUtilsFlavorTests, 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         HeatUtilsKeypairTests, 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         HeatUtilsSecurityGroupTests, 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         CinderUtilsQoSTests, 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         CinderUtilsVolumeTests, 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         CinderUtilsSimpleVolumeTypeTests, 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         CinderUtilsAddEncryptionTests, 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         CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds,
227         ext_net_name=ext_net_name, log_level=log_level,
228         image_metadata=image_metadata))
229
230
231 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
232                                     use_keystone=True, flavor_metadata=None,
233                                     image_metadata=None, use_floating_ips=True,
234                                     netconf_override=None,
235                                     log_level=logging.INFO):
236     # pylint: disable=too-many-arguments
237     """
238     Adds tests written to exercise all long-running OpenStack integration tests
239     meaning they will be creating VM instances and potentially performing some
240     SSH functions through floatingIPs
241
242     :param suite: the unittest.TestSuite object to which to add the tests
243     :param os_creds: and instance of OSCreds that holds the credentials
244                      required by OpenStack
245     :param ext_net_name: the name of an external network on the cloud under
246                          test
247     :param use_keystone: when True, tests requiring direct access to Keystone
248                          are added as these need to be running on a host that
249                          has access to the cloud's private network
250     :param image_metadata: dict() object containing metadata for creating an
251                            image with custom config
252                            (see YAML files in examples/image-metadata)
253     :param flavor_metadata: dict() object containing the metadata required by
254                             your flavor based on your configuration:
255                             (i.e. {'hw:mem_page_size': 'large'})
256     :param use_floating_ips: when true, all tests requiring Floating IPs will
257                              be added to the suite
258     :param netconf_override: dict() containing the reconfigured network_type,
259                              physical_network and segmentation_id
260     :param log_level: the logging level
261     :return: None as the tests will be adding to the 'suite' parameter object
262     """
263     # Tests the OpenStack API calls via a creator. If use_keystone, objects
264     # will be created with a custom user and project
265
266     # Creator Object tests
267     suite.addTest(OSIntegrationTestCase.parameterize(
268         CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
269         use_keystone=use_keystone,
270         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
271         log_level=log_level))
272     suite.addTest(OSIntegrationTestCase.parameterize(
273         CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
274         use_keystone=use_keystone,
275         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
276         log_level=log_level))
277     suite.addTest(OSIntegrationTestCase.parameterize(
278         CreateImageNegativeTests, 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         CreateMultiPartImageTests, os_creds=os_creds,
284         ext_net_name=ext_net_name, use_keystone=use_keystone,
285         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
286         log_level=log_level))
287     suite.addTest(OSIntegrationTestCase.parameterize(
288         CreateKeypairsTests, 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         CreateKeypairsCleanupTests, os_creds=os_creds,
294         ext_net_name=ext_net_name,
295         use_keystone=use_keystone,
296         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
297         log_level=log_level))
298     suite.addTest(OSIntegrationTestCase.parameterize(
299         CreateNetworkSuccessTests, os_creds=os_creds,
300         ext_net_name=ext_net_name, use_keystone=use_keystone,
301         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
302         log_level=log_level))
303     suite.addTest(OSIntegrationTestCase.parameterize(
304         CreateRouterSuccessTests, os_creds=os_creds, 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         CreateRouterNegativeTests, 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         CreateQoSTests, os_creds=os_creds,
315         ext_net_name=ext_net_name, use_keystone=use_keystone,
316         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
317         log_level=log_level))
318     suite.addTest(OSIntegrationTestCase.parameterize(
319         CreateSimpleVolumeTypeSuccessTests, 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         CreateVolumeTypeComplexTests, 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         CreateSimpleVolumeSuccessTests, 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         CreateSimpleVolumeFailureTests, 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         CreateVolumeWithTypeTests, 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         CreateVolumeWithImageTests, 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
349     # VM Instances
350     suite.addTest(OSIntegrationTestCase.parameterize(
351         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
352         use_keystone=use_keystone,
353         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
354         log_level=log_level))
355     suite.addTest(OSIntegrationTestCase.parameterize(
356         CreateInstanceTwoNetTests, 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     suite.addTest(OSIntegrationTestCase.parameterize(
361         CreateInstanceSimpleTests, os_creds=os_creds,
362         ext_net_name=ext_net_name, use_keystone=use_keystone,
363         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
364         netconf_override=netconf_override, log_level=log_level))
365     suite.addTest(OSIntegrationTestCase.parameterize(
366         CreateInstancePortManipulationTests, 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         netconf_override=netconf_override, log_level=log_level))
370     suite.addTest(OSIntegrationTestCase.parameterize(
371         InstanceSecurityGroupTests, 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         CreateInstanceOnComputeHost, 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         CreateInstanceFromThreePartImage, 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         CreateInstanceVolumeTests, 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         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
392         use_keystone=use_keystone,
393         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
394         log_level=log_level))
395     suite.addTest(OSIntegrationTestCase.parameterize(
396         CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name,
397         use_keystone=use_keystone,
398         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
399         log_level=log_level))
400     suite.addTest(OSIntegrationTestCase.parameterize(
401         CreateStackFlavorTests, 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         CreateStackKeypairTests, 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         CreateStackSecurityGroupTests, os_creds=os_creds,
412         ext_net_name=ext_net_name, use_keystone=use_keystone,
413         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
414         log_level=log_level))
415     suite.addTest(OSIntegrationTestCase.parameterize(
416         CreateStackNegativeTests, 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
421     if use_floating_ips:
422         suite.addTest(OSIntegrationTestCase.parameterize(
423             CreateStackFloatingIpTests, 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))