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