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