1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 # and others. All rights reserved.
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
19 from snaps.config.tests.cluster_template_tests import (
20 ClusterTemplateConfigUnitTests)
21 from snaps.config.tests.network_tests import (
22 NetworkConfigUnitTests, SubnetConfigUnitTests, PortConfigUnitTests)
23 from snaps.config.tests.security_group_tests import (
24 SecurityGroupConfigUnitTests, SecurityGroupRuleConfigUnitTests)
25 from snaps.config.tests.vm_inst_tests import (
26 VmInstanceConfigUnitTests, FloatingIpConfigUnitTests)
27 from snaps.config.tests.volume_tests import VolumeConfigUnitTests
28 from snaps.config.tests.volume_type_tests import VolumeTypeConfigUnitTests
29 from snaps.config.tests.qos_tests import QoSConfigUnitTests
30 from snaps.config.tests.stack_tests import StackConfigUnitTests
31 from snaps.config.tests.router_tests import RouterConfigUnitTests
32 from snaps.config.tests.user_tests import UserConfigUnitTests
33 from snaps.config.tests.project_tests import ProjectConfigUnitTests
34 from snaps.config.tests.keypair_tests import KeypairConfigUnitTests
35 from snaps.config.tests.flavor_tests import FlavorConfigUnitTests
36 import snaps.config.tests.image_tests as image_tests
37 import snaps.openstack.tests.create_image_tests as creator_tests
38 from snaps.domain.test.cluster_template_tests import ClusterTemplateUnitTests
39 from snaps.domain.test.flavor_tests import FlavorDomainObjectTests
40 from snaps.domain.test.image_tests import ImageDomainObjectTests
41 from snaps.domain.test.keypair_tests import KeypairDomainObjectTests
42 from snaps.domain.test.network_tests import (
43 SecurityGroupDomainObjectTests, SecurityGroupRuleDomainObjectTests,
44 PortDomainObjectTests, RouterDomainObjectTests,
45 InterfaceRouterDomainObjectTests, NetworkObjectTests, SubnetObjectTests)
46 from snaps.domain.test.project_tests import (
47 ProjectDomainObjectTests, DomainDomainObjectTests,
48 ComputeQuotasDomainObjectTests, NetworkQuotasDomainObjectTests)
49 from snaps.domain.test.role_tests import RoleDomainObjectTests
50 from snaps.domain.test.stack_tests import (
51 StackDomainObjectTests, ResourceDomainObjectTests)
52 from snaps.domain.test.user_tests import UserDomainObjectTests
53 from snaps.domain.test.vm_inst_tests import (
54 VmInstDomainObjectTests, FloatingIpDomainObjectTests)
55 from snaps.domain.test.volume_tests import (
56 QoSSpecDomainObjectTests, VolumeTypeDomainObjectTests,
57 VolumeTypeEncryptionObjectTests, VolumeDomainObjectTests)
58 from snaps.openstack.tests.cluster_template_tests import (
59 CreateClusterTemplateTests)
60 from snaps.openstack.tests.conf.os_credentials_tests import (
61 ProxySettingsUnitTests, OSCredsUnitTests)
62 from snaps.openstack.tests.create_flavor_tests import (
63 CreateFlavorTests, FlavorSettingsUnitTests)
64 from snaps.openstack.tests.create_image_tests import (
65 CreateImageSuccessTests, CreateImageNegativeTests,
66 CreateMultiPartImageTests)
67 from snaps.openstack.tests.create_instance_tests import (
68 CreateInstanceSingleNetworkTests, CreateInstanceOnComputeHost,
69 CreateInstanceSimpleTests, FloatingIpSettingsUnitTests,
70 InstanceSecurityGroupTests, VmInstanceSettingsUnitTests,
71 CreateInstancePortManipulationTests, SimpleHealthCheck,
72 CreateInstanceFromThreePartImage, CreateInstanceMockOfflineTests,
73 CreateInstanceTwoNetTests, CreateInstanceVolumeTests,
74 CreateInstanceIPv6NetworkTests)
75 from snaps.openstack.tests.create_keypairs_tests import (
76 CreateKeypairsTests, KeypairSettingsUnitTests, CreateKeypairsCleanupTests)
77 from snaps.openstack.tests.create_network_tests import (
78 CreateNetworkSuccessTests, NetworkSettingsUnitTests, PortSettingsUnitTests,
79 SubnetSettingsUnitTests, CreateNetworkTypeTests, CreateNetworkIPv6Tests)
80 from snaps.openstack.tests.create_project_tests import (
81 CreateProjectSuccessTests, ProjectSettingsUnitTests,
82 CreateProjectUserTests)
83 from snaps.openstack.tests.create_qos_tests import (
84 QoSSettingsUnitTests, CreateQoSTests)
85 from snaps.openstack.tests.create_router_tests import (
86 CreateRouterSuccessTests, CreateRouterNegativeTests,
87 RouterSettingsUnitTests)
88 from snaps.openstack.tests.create_security_group_tests import (
89 CreateSecurityGroupTests, SecurityGroupRuleSettingsUnitTests,
90 SecurityGroupSettingsUnitTests)
91 from snaps.openstack.tests.create_stack_tests import (
92 StackSettingsUnitTests, CreateStackSuccessTests, CreateStackNegativeTests,
93 CreateStackFlavorTests, CreateStackFloatingIpTests,
94 CreateStackNestedResourceTests, CreateStackKeypairTests,
95 CreateStackVolumeTests, CreateStackSecurityGroupTests)
96 from snaps.openstack.tests.create_user_tests import (
97 UserSettingsUnitTests, CreateUserSuccessTests)
98 from snaps.openstack.tests.create_volume_tests import (
99 VolumeSettingsUnitTests, CreateSimpleVolumeSuccessTests,
100 CreateVolumeWithTypeTests, CreateVolumeWithImageTests,
101 CreateSimpleVolumeFailureTests)
102 from snaps.openstack.tests.create_volume_type_tests import (
103 VolumeTypeSettingsUnitTests, CreateSimpleVolumeTypeSuccessTests,
104 CreateVolumeTypeComplexTests)
105 from snaps.openstack.tests.os_source_file_test import (
106 OSComponentTestCase, OSIntegrationTestCase)
107 from snaps.openstack.utils.tests.cinder_utils_tests import (
108 CinderSmokeTests, CinderUtilsQoSTests, CinderUtilsSimpleVolumeTypeTests,
109 CinderUtilsAddEncryptionTests, CinderUtilsVolumeTypeCompleteTests,
110 CinderUtilsVolumeTests)
111 from snaps.openstack.utils.tests.glance_utils_tests import (
112 GlanceSmokeTests, GlanceUtilsTests)
113 from snaps.openstack.utils.tests.heat_utils_tests import (
114 HeatSmokeTests, HeatUtilsCreateSimpleStackTests,
115 HeatUtilsCreateComplexStackTests, HeatUtilsFlavorTests,
116 HeatUtilsKeypairTests, HeatUtilsVolumeTests, HeatUtilsSecurityGroupTests)
117 from snaps.openstack.utils.tests.keystone_utils_tests import (
118 KeystoneSmokeTests, KeystoneUtilsTests)
119 from snaps.openstack.utils.tests.neutron_utils_tests import (
120 NeutronSmokeTests, NeutronUtilsNetworkTests, NeutronUtilsSubnetTests,
121 NeutronUtilsRouterTests, NeutronUtilsSecurityGroupTests,
122 NeutronUtilsFloatingIpTests, NeutronUtilsIPv6Tests)
123 from snaps.openstack.utils.tests.nova_utils_tests import (
124 NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests,
125 NovaUtilsInstanceTests, NovaUtilsInstanceVolumeTests)
126 from snaps.openstack.utils.tests.settings_utils_tests import (
127 SettingsUtilsUnitTests)
128 from snaps.openstack.utils.tests.magnum_utils_tests import (
129 MagnumSmokeTests, MagnumUtilsClusterTypeTests)
130 from snaps.provisioning.tests.ansible_utils_tests import (
131 AnsibleProvisioningTests)
132 from snaps.tests.file_utils_tests import FileUtilsTests
134 __author__ = 'spisarski'
137 def add_unit_tests(suite):
139 Adds tests that do not require external resources
140 :param suite: the unittest.TestSuite object to which to add the tests
141 :return: None as the tests will be adding to the 'suite' parameter object
143 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(FileUtilsTests))
144 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
145 ProxySettingsUnitTests))
146 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
148 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
149 SecurityGroupConfigUnitTests))
150 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
151 SecurityGroupSettingsUnitTests))
152 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
153 SecurityGroupRuleConfigUnitTests))
154 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
155 SecurityGroupRuleSettingsUnitTests))
156 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
157 SecurityGroupDomainObjectTests))
158 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
159 SecurityGroupRuleDomainObjectTests))
160 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
161 image_tests.ImageConfigUnitTests))
162 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
163 creator_tests.ImageSettingsUnitTests))
164 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
165 ImageDomainObjectTests))
166 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
167 FlavorConfigUnitTests))
168 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
169 FlavorSettingsUnitTests))
170 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
171 FlavorDomainObjectTests))
172 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
173 KeypairConfigUnitTests))
174 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
175 KeypairSettingsUnitTests))
176 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
177 KeypairDomainObjectTests))
178 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
179 UserConfigUnitTests))
180 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
181 UserSettingsUnitTests))
182 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
183 UserDomainObjectTests))
184 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
185 ProjectConfigUnitTests))
186 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
187 ProjectSettingsUnitTests))
188 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
189 ProjectDomainObjectTests))
190 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
191 DomainDomainObjectTests))
192 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
193 ComputeQuotasDomainObjectTests))
194 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
195 NetworkQuotasDomainObjectTests))
196 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
197 RoleDomainObjectTests))
198 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
199 NetworkConfigUnitTests))
200 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
201 NetworkSettingsUnitTests))
202 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
204 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
205 SubnetConfigUnitTests))
206 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
207 SubnetSettingsUnitTests))
208 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
210 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
211 PortConfigUnitTests))
212 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
213 PortSettingsUnitTests))
214 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
215 PortDomainObjectTests))
216 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
217 RouterConfigUnitTests))
218 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
219 RouterSettingsUnitTests))
220 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
221 RouterDomainObjectTests))
222 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
223 InterfaceRouterDomainObjectTests))
224 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
225 FloatingIpConfigUnitTests))
226 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
227 FloatingIpSettingsUnitTests))
228 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
229 VmInstanceConfigUnitTests))
230 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
231 VmInstanceSettingsUnitTests))
232 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
233 StackDomainObjectTests))
234 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
235 ResourceDomainObjectTests))
236 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
237 StackConfigUnitTests))
238 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
239 StackSettingsUnitTests))
240 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
241 VolumeTypeDomainObjectTests))
242 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
243 VolumeTypeEncryptionObjectTests))
244 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
245 VolumeDomainObjectTests))
246 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
247 QoSSpecDomainObjectTests))
248 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
249 VmInstDomainObjectTests))
250 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
251 FloatingIpDomainObjectTests))
252 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
254 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
255 QoSSettingsUnitTests))
256 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
257 VolumeTypeConfigUnitTests))
258 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
259 VolumeTypeSettingsUnitTests))
260 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
261 VolumeConfigUnitTests))
262 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
263 VolumeSettingsUnitTests))
264 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
265 ClusterTemplateConfigUnitTests))
266 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
267 ClusterTemplateUnitTests))
268 suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
269 SettingsUtilsUnitTests))
272 def add_openstack_client_tests(suite, os_creds, ext_net_name,
273 use_keystone=True, log_level=logging.INFO):
275 Adds tests written to exercise OpenStack client retrieval
276 :param suite: the unittest.TestSuite object to which to add the tests
277 :param os_creds: and instance of OSCreds that holds the credentials
278 required by OpenStack
279 :param ext_net_name: the name of an external network on the cloud under
281 :param use_keystone: when True, tests requiring direct access to Keystone
282 are added as these need to be running on a host that
283 has access to the cloud's private network
284 :param log_level: the logging level
285 :return: None as the tests will be adding to the 'suite' parameter object
287 # Basic connection tests
289 OSComponentTestCase.parameterize(
290 GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
291 log_level=log_level))
295 OSComponentTestCase.parameterize(
296 KeystoneSmokeTests, os_creds=os_creds,
297 ext_net_name=ext_net_name, log_level=log_level))
300 OSComponentTestCase.parameterize(
301 NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
302 log_level=log_level))
304 OSComponentTestCase.parameterize(
305 NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
306 log_level=log_level))
308 OSComponentTestCase.parameterize(
309 HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
310 log_level=log_level))
312 OSComponentTestCase.parameterize(
313 CinderSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
314 log_level=log_level))
317 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
318 image_metadata=None, log_level=logging.INFO):
320 Adds tests written to exercise all existing OpenStack APIs
321 :param suite: the unittest.TestSuite object to which to add the tests
322 :param os_creds: Instance of OSCreds that holds the credentials
323 required by OpenStack
324 :param ext_net_name: the name of an external network on the cloud under
326 :param use_keystone: when True, tests requiring direct access to Keystone
327 are added as these need to be running on a host that
328 has access to the cloud's private network
329 :param image_metadata: dict() object containing metadata for creating an
330 image with custom config
331 (see YAML files in examples/image-metadata)
332 :param log_level: the logging level
333 :return: None as the tests will be adding to the 'suite' parameter object
335 # Tests the OpenStack API calls
337 suite.addTest(OSComponentTestCase.parameterize(
338 KeystoneUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
339 log_level=log_level))
340 suite.addTest(OSComponentTestCase.parameterize(
341 CreateUserSuccessTests, os_creds=os_creds,
342 ext_net_name=ext_net_name, log_level=log_level))
343 suite.addTest(OSComponentTestCase.parameterize(
344 CreateProjectSuccessTests, os_creds=os_creds,
345 ext_net_name=ext_net_name, log_level=log_level))
346 suite.addTest(OSComponentTestCase.parameterize(
347 CreateProjectUserTests, os_creds=os_creds,
348 ext_net_name=ext_net_name, log_level=log_level))
350 suite.addTest(OSComponentTestCase.parameterize(
351 GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
352 image_metadata=image_metadata,
353 log_level=log_level))
354 suite.addTest(OSComponentTestCase.parameterize(
355 NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name,
356 log_level=log_level))
357 suite.addTest(OSComponentTestCase.parameterize(
358 NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name,
359 log_level=log_level))
360 suite.addTest(OSComponentTestCase.parameterize(
361 NeutronUtilsIPv6Tests, os_creds=os_creds, ext_net_name=ext_net_name,
362 log_level=log_level))
363 suite.addTest(OSComponentTestCase.parameterize(
364 NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name,
365 log_level=log_level))
366 suite.addTest(OSComponentTestCase.parameterize(
367 NeutronUtilsSecurityGroupTests, os_creds=os_creds,
368 ext_net_name=ext_net_name, log_level=log_level))
369 suite.addTest(OSComponentTestCase.parameterize(
370 NeutronUtilsFloatingIpTests, os_creds=os_creds,
371 ext_net_name=ext_net_name, log_level=log_level))
372 suite.addTest(OSComponentTestCase.parameterize(
373 NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
374 log_level=log_level))
375 suite.addTest(OSComponentTestCase.parameterize(
376 NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
377 log_level=log_level))
378 suite.addTest(OSComponentTestCase.parameterize(
379 NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name,
380 log_level=log_level, image_metadata=image_metadata))
381 suite.addTest(OSComponentTestCase.parameterize(
382 NovaUtilsInstanceVolumeTests, os_creds=os_creds,
383 ext_net_name=ext_net_name, log_level=log_level,
384 image_metadata=image_metadata))
385 suite.addTest(OSComponentTestCase.parameterize(
386 CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
387 log_level=log_level))
388 suite.addTest(OSComponentTestCase.parameterize(
389 HeatUtilsCreateSimpleStackTests, os_creds=os_creds,
390 ext_net_name=ext_net_name, log_level=log_level,
391 image_metadata=image_metadata))
392 suite.addTest(OSComponentTestCase.parameterize(
393 HeatUtilsCreateComplexStackTests, os_creds=os_creds,
394 ext_net_name=ext_net_name, log_level=log_level,
395 image_metadata=image_metadata))
396 suite.addTest(OSComponentTestCase.parameterize(
397 HeatUtilsFlavorTests, os_creds=os_creds,
398 ext_net_name=ext_net_name, log_level=log_level,
399 image_metadata=image_metadata))
400 suite.addTest(OSComponentTestCase.parameterize(
401 HeatUtilsKeypairTests, os_creds=os_creds,
402 ext_net_name=ext_net_name, log_level=log_level,
403 image_metadata=image_metadata))
404 suite.addTest(OSComponentTestCase.parameterize(
405 HeatUtilsSecurityGroupTests, os_creds=os_creds,
406 ext_net_name=ext_net_name, log_level=log_level,
407 image_metadata=image_metadata))
408 suite.addTest(OSComponentTestCase.parameterize(
409 HeatUtilsVolumeTests, os_creds=os_creds,
410 ext_net_name=ext_net_name, log_level=log_level,
411 image_metadata=image_metadata))
412 suite.addTest(OSComponentTestCase.parameterize(
413 CinderUtilsQoSTests, os_creds=os_creds,
414 ext_net_name=ext_net_name, log_level=log_level,
415 image_metadata=image_metadata))
416 suite.addTest(OSComponentTestCase.parameterize(
417 CinderUtilsVolumeTests, os_creds=os_creds,
418 ext_net_name=ext_net_name, log_level=log_level,
419 image_metadata=image_metadata))
420 suite.addTest(OSComponentTestCase.parameterize(
421 CinderUtilsSimpleVolumeTypeTests, os_creds=os_creds,
422 ext_net_name=ext_net_name, log_level=log_level,
423 image_metadata=image_metadata))
424 suite.addTest(OSComponentTestCase.parameterize(
425 CinderUtilsAddEncryptionTests, os_creds=os_creds,
426 ext_net_name=ext_net_name, log_level=log_level,
427 image_metadata=image_metadata))
428 suite.addTest(OSComponentTestCase.parameterize(
429 CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds,
430 ext_net_name=ext_net_name, log_level=log_level,
431 image_metadata=image_metadata))
434 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
435 use_keystone=True, flavor_metadata=None,
436 image_metadata=None, use_floating_ips=True,
437 log_level=logging.INFO):
439 Adds tests written to exercise all long-running OpenStack integration tests
440 meaning they will be creating VM instances and potentially performing some
441 SSH functions through floatingIPs
442 :param suite: the unittest.TestSuite object to which to add the tests
443 :param os_creds: and instance of OSCreds that holds the credentials
444 required by OpenStack
445 :param ext_net_name: the name of an external network on the cloud under
447 :param use_keystone: when True, tests requiring direct access to Keystone
448 are added as these need to be running on a host that
449 has access to the cloud's private network
450 :param image_metadata: dict() object containing metadata for creating an
451 image with custom config
452 (see YAML files in examples/image-metadata)
453 :param flavor_metadata: dict() object containing the metadata required by
454 your flavor based on your configuration:
455 (i.e. {'hw:mem_page_size': 'large'})
456 :param use_floating_ips: when true, all tests requiring Floating IPs will
457 be added to the suite
458 :param log_level: the logging level
459 :return: None as the tests will be adding to the 'suite' parameter object
461 # Tests the OpenStack API calls via a creator. If use_keystone, objects
462 # will be created with a custom user and project
464 # Creator Object tests
465 suite.addTest(OSIntegrationTestCase.parameterize(
466 CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
467 use_keystone=use_keystone,
468 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
469 log_level=log_level))
470 suite.addTest(OSIntegrationTestCase.parameterize(
471 CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
472 use_keystone=use_keystone,
473 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
474 log_level=log_level))
475 suite.addTest(OSIntegrationTestCase.parameterize(
476 CreateImageNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
477 use_keystone=use_keystone,
478 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
479 log_level=log_level))
480 suite.addTest(OSIntegrationTestCase.parameterize(
481 CreateMultiPartImageTests, os_creds=os_creds,
482 ext_net_name=ext_net_name, use_keystone=use_keystone,
483 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
484 log_level=log_level))
485 suite.addTest(OSIntegrationTestCase.parameterize(
486 CreateKeypairsTests, os_creds=os_creds, ext_net_name=ext_net_name,
487 use_keystone=use_keystone,
488 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
489 log_level=log_level))
490 suite.addTest(OSIntegrationTestCase.parameterize(
491 CreateKeypairsCleanupTests, os_creds=os_creds,
492 ext_net_name=ext_net_name,
493 use_keystone=use_keystone,
494 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
495 log_level=log_level))
496 suite.addTest(OSIntegrationTestCase.parameterize(
497 CreateNetworkSuccessTests, os_creds=os_creds,
498 ext_net_name=ext_net_name, use_keystone=use_keystone,
499 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
500 log_level=log_level))
501 suite.addTest(OSIntegrationTestCase.parameterize(
502 CreateNetworkIPv6Tests, os_creds=os_creds,
503 ext_net_name=ext_net_name, use_keystone=use_keystone,
504 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
505 log_level=log_level))
506 suite.addTest(OSIntegrationTestCase.parameterize(
507 CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
508 use_keystone=use_keystone,
509 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
510 log_level=log_level))
511 suite.addTest(OSIntegrationTestCase.parameterize(
512 CreateRouterNegativeTests, os_creds=os_creds,
513 ext_net_name=ext_net_name, use_keystone=use_keystone,
514 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
515 log_level=log_level))
516 suite.addTest(OSIntegrationTestCase.parameterize(
517 CreateQoSTests, os_creds=os_creds,
518 ext_net_name=ext_net_name, use_keystone=use_keystone,
519 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
520 log_level=log_level))
521 suite.addTest(OSIntegrationTestCase.parameterize(
522 CreateSimpleVolumeTypeSuccessTests, os_creds=os_creds,
523 ext_net_name=ext_net_name, use_keystone=use_keystone,
524 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
525 log_level=log_level))
526 suite.addTest(OSIntegrationTestCase.parameterize(
527 CreateVolumeTypeComplexTests, os_creds=os_creds,
528 ext_net_name=ext_net_name, use_keystone=use_keystone,
529 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
530 log_level=log_level))
531 suite.addTest(OSIntegrationTestCase.parameterize(
532 CreateSimpleVolumeSuccessTests, os_creds=os_creds,
533 ext_net_name=ext_net_name, use_keystone=use_keystone,
534 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
535 log_level=log_level))
536 suite.addTest(OSIntegrationTestCase.parameterize(
537 CreateSimpleVolumeFailureTests, os_creds=os_creds,
538 ext_net_name=ext_net_name, use_keystone=use_keystone,
539 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
540 log_level=log_level))
541 suite.addTest(OSIntegrationTestCase.parameterize(
542 CreateVolumeWithTypeTests, os_creds=os_creds,
543 ext_net_name=ext_net_name, use_keystone=use_keystone,
544 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
545 log_level=log_level))
546 suite.addTest(OSIntegrationTestCase.parameterize(
547 CreateVolumeWithImageTests, os_creds=os_creds,
548 ext_net_name=ext_net_name, use_keystone=use_keystone,
549 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
550 log_level=log_level))
553 suite.addTest(OSIntegrationTestCase.parameterize(
554 SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
555 use_keystone=use_keystone,
556 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
557 log_level=log_level))
558 suite.addTest(OSIntegrationTestCase.parameterize(
559 CreateInstanceTwoNetTests, os_creds=os_creds,
560 ext_net_name=ext_net_name, use_keystone=use_keystone,
561 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
562 log_level=log_level))
563 suite.addTest(OSIntegrationTestCase.parameterize(
564 CreateInstanceSimpleTests, os_creds=os_creds,
565 ext_net_name=ext_net_name, use_keystone=use_keystone,
566 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
567 log_level=log_level))
568 suite.addTest(OSIntegrationTestCase.parameterize(
569 CreateInstancePortManipulationTests, os_creds=os_creds,
570 ext_net_name=ext_net_name, use_keystone=use_keystone,
571 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
572 log_level=log_level))
573 suite.addTest(OSIntegrationTestCase.parameterize(
574 InstanceSecurityGroupTests, os_creds=os_creds,
575 ext_net_name=ext_net_name, use_keystone=use_keystone,
576 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
577 log_level=log_level))
578 suite.addTest(OSIntegrationTestCase.parameterize(
579 CreateInstanceOnComputeHost, os_creds=os_creds,
580 ext_net_name=ext_net_name, use_keystone=use_keystone,
581 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
582 log_level=log_level))
583 suite.addTest(OSIntegrationTestCase.parameterize(
584 CreateInstanceFromThreePartImage, os_creds=os_creds,
585 ext_net_name=ext_net_name, use_keystone=use_keystone,
586 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
587 log_level=log_level))
588 suite.addTest(OSIntegrationTestCase.parameterize(
589 CreateInstanceVolumeTests, os_creds=os_creds,
590 ext_net_name=ext_net_name, use_keystone=use_keystone,
591 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
592 log_level=log_level))
593 suite.addTest(OSIntegrationTestCase.parameterize(
594 CreateInstanceIPv6NetworkTests, os_creds=os_creds,
595 ext_net_name=ext_net_name, use_keystone=use_keystone,
596 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
597 log_level=log_level))
598 suite.addTest(OSIntegrationTestCase.parameterize(
599 CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
600 use_keystone=use_keystone,
601 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
602 log_level=log_level))
603 suite.addTest(OSIntegrationTestCase.parameterize(
604 CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name,
605 use_keystone=use_keystone,
606 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
607 log_level=log_level))
608 suite.addTest(OSIntegrationTestCase.parameterize(
609 CreateStackFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
610 use_keystone=use_keystone,
611 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
612 log_level=log_level))
613 suite.addTest(OSIntegrationTestCase.parameterize(
614 CreateStackKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
615 use_keystone=use_keystone,
616 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
617 log_level=log_level))
618 suite.addTest(OSIntegrationTestCase.parameterize(
619 CreateStackSecurityGroupTests, os_creds=os_creds,
620 ext_net_name=ext_net_name, use_keystone=use_keystone,
621 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
622 log_level=log_level))
623 suite.addTest(OSIntegrationTestCase.parameterize(
624 CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
625 use_keystone=use_keystone,
626 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
627 log_level=log_level))
630 suite.addTest(OSIntegrationTestCase.parameterize(
631 CreateInstanceSingleNetworkTests, os_creds=os_creds,
632 ext_net_name=ext_net_name, use_keystone=use_keystone,
633 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
634 log_level=log_level))
635 suite.addTest(OSIntegrationTestCase.parameterize(
636 CreateStackFloatingIpTests, os_creds=os_creds,
637 ext_net_name=ext_net_name, use_keystone=use_keystone,
638 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
639 log_level=log_level))
640 suite.addTest(OSIntegrationTestCase.parameterize(
641 CreateStackNestedResourceTests, os_creds=os_creds,
642 ext_net_name=ext_net_name, use_keystone=use_keystone,
643 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
644 log_level=log_level))
645 suite.addTest(OSIntegrationTestCase.parameterize(
646 AnsibleProvisioningTests, os_creds=os_creds,
647 ext_net_name=ext_net_name, use_keystone=use_keystone,
648 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
649 log_level=log_level))
652 def add_openstack_ci_tests(
653 suite, os_creds, ext_net_name, use_keystone=True, flavor_metadata=None,
654 image_metadata=None, use_floating_ips=True, log_level=logging.INFO):
656 Adds tests written for a CI server to run the tests to validate code
658 :param suite: the unittest.TestSuite object to which to add the tests
659 :param os_creds: and instance of OSCreds that holds the credentials
660 required by OpenStack
661 :param ext_net_name: the name of an external network on the cloud under
663 :param use_keystone: when True, tests requiring direct access to Keystone
664 are added as these need to be running on a host that
665 has access to the cloud's private network
666 :param image_metadata: dict() object containing metadata for creating an
667 image with custom config
668 (see YAML files in examples/image-metadata)
669 :param flavor_metadata: dict() object containing the metadata required by
670 your flavor based on your configuration:
671 (i.e. {'hw:mem_page_size': 'large'})
672 :param use_floating_ips: when true, all tests requiring Floating IPs will
673 be added to the suite
674 :param log_level: the logging level
675 :return: None as the tests will be adding to the 'suite' parameter object
678 add_unit_tests(suite)
680 add_openstack_client_tests(suite, os_creds, ext_net_name, use_keystone,
683 add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone,
684 image_metadata, log_level)
686 suite.addTest(OSIntegrationTestCase.parameterize(
687 SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
688 use_keystone=use_keystone,
689 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
690 log_level=log_level))
693 suite.addTest(OSIntegrationTestCase.parameterize(
694 CreateInstanceSingleNetworkTests, os_creds=os_creds,
695 ext_net_name=ext_net_name, use_keystone=use_keystone,
696 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
697 log_level=log_level))
699 suite.addTest(OSIntegrationTestCase.parameterize(
700 CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
701 use_keystone=use_keystone,
702 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
703 log_level=log_level))
704 suite.addTest(OSIntegrationTestCase.parameterize(
705 CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
706 use_keystone=use_keystone,
707 flavor_metadata=flavor_metadata, image_metadata=image_metadata,
708 log_level=log_level))
711 def add_openstack_staging_tests(suite, os_creds, ext_net_name,
712 log_level=logging.INFO):
714 Adds tests that are still in development have not been designed to run
715 successfully against all OpenStack pods
716 :param suite: the unittest.TestSuite object to which to add the tests
717 :param os_creds: Instance of OSCreds that holds the credentials
718 required by OpenStack
719 :param ext_net_name: the name of an external network on the cloud under
721 :param log_level: the logging level
722 :return: None as the tests will be adding to the 'suite' parameter object
724 suite.addTest(OSComponentTestCase.parameterize(
725 CreateNetworkTypeTests, os_creds=os_creds,
726 ext_net_name=ext_net_name, log_level=log_level))
727 suite.addTest(OSComponentTestCase.parameterize(
728 CreateInstanceMockOfflineTests, os_creds=os_creds,
729 ext_net_name=ext_net_name, log_level=log_level))
730 suite.addTest(OSComponentTestCase.parameterize(
731 MagnumSmokeTests, os_creds=os_creds,
732 ext_net_name=ext_net_name, log_level=log_level))
733 suite.addTest(OSComponentTestCase.parameterize(
734 MagnumUtilsClusterTypeTests, os_creds=os_creds,
735 ext_net_name=ext_net_name, log_level=log_level))
736 suite.addTest(OSComponentTestCase.parameterize(
737 CreateClusterTemplateTests, os_creds=os_creds,
738 ext_net_name=ext_net_name, log_level=log_level))