blob: 673864160a2e3f9e193ed763ebb70f439bbbc857 [file] [log] [blame]
Ghanshyam43e84652016-02-01 14:28:28 +09001# Copyright 2015 NEC Corporation. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15from oslo_config import cfg
16import testtools
17
18from tempest.api.compute import base as compute_base
19from tempest import config
20from tempest import exceptions
21from tempest.tests import base
22from tempest.tests import fake_config
23
24
25class VersionTestNoneTolatest(compute_base.BaseV2ComputeTest):
26 min_microversion = None
27 max_microversion = 'latest'
28
29
30class VersionTestNoneTo2_2(compute_base.BaseV2ComputeTest):
31 min_microversion = None
32 max_microversion = '2.2'
33
34
35class VersionTest2_3ToLatest(compute_base.BaseV2ComputeTest):
36 min_microversion = '2.3'
37 max_microversion = 'latest'
38
39
40class VersionTest2_5To2_10(compute_base.BaseV2ComputeTest):
41 min_microversion = '2.5'
42 max_microversion = '2.10'
43
44
45class VersionTest2_10To2_10(compute_base.BaseV2ComputeTest):
46 min_microversion = '2.10'
47 max_microversion = '2.10'
48
49
50class InvalidVersionTest(compute_base.BaseV2ComputeTest):
51 min_microversion = '2.11'
52 max_microversion = '2.1'
53
54
55class TestMicroversionsTestsClass(base.TestCase):
56
57 def setUp(self):
58 super(TestMicroversionsTestsClass, self).setUp()
59 self.useFixture(fake_config.ConfigFixture())
60 self.stubs.Set(config, 'TempestConfigPrivate',
61 fake_config.FakePrivate)
62
63 def _test_version(self, cfg_min, cfg_max,
64 expected_pass_tests,
65 expected_skip_tests):
66 cfg.CONF.set_default('min_microversion',
67 cfg_min, group='compute-feature-enabled')
68 cfg.CONF.set_default('max_microversion',
69 cfg_max, group='compute-feature-enabled')
70 try:
71 for test_class in expected_pass_tests:
72 test_class.skip_checks()
73 for test_class in expected_skip_tests:
74 self.assertRaises(testtools.TestCase.skipException,
75 test_class.skip_checks)
76 except testtools.TestCase.skipException as e:
77 raise testtools.TestCase.failureException(e.message)
78
79 def test_config_version_none_none(self):
80 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2]
81 expected_skip_tests = [VersionTest2_3ToLatest, VersionTest2_5To2_10,
82 VersionTest2_10To2_10]
83 self._test_version(None, None,
84 expected_pass_tests,
85 expected_skip_tests)
86
87 def test_config_version_none_23(self):
88 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
89 VersionTest2_3ToLatest]
90 expected_skip_tests = [VersionTest2_5To2_10, VersionTest2_10To2_10]
91 self._test_version(None, '2.3',
92 expected_pass_tests,
93 expected_skip_tests)
94
95 def test_config_version_22_latest(self):
96 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
97 VersionTest2_3ToLatest, VersionTest2_5To2_10,
98 VersionTest2_10To2_10]
99 expected_skip_tests = []
100 self._test_version('2.2', 'latest',
101 expected_pass_tests,
102 expected_skip_tests)
103
104 def test_config_version_22_23(self):
105 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
106 VersionTest2_3ToLatest]
107 expected_skip_tests = [VersionTest2_5To2_10, VersionTest2_10To2_10]
108 self._test_version('2.2', '2.3',
109 expected_pass_tests,
110 expected_skip_tests)
111
112 def test_config_version_210_210(self):
113 expected_pass_tests = [VersionTestNoneTolatest,
114 VersionTest2_3ToLatest,
115 VersionTest2_5To2_10,
116 VersionTest2_10To2_10]
117 expected_skip_tests = [VersionTestNoneTo2_2]
118 self._test_version('2.10', '2.10',
119 expected_pass_tests,
120 expected_skip_tests)
121
122 def test_config_version_none_latest(self):
123 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
124 VersionTest2_3ToLatest, VersionTest2_5To2_10,
125 VersionTest2_10To2_10]
126 expected_skip_tests = []
127 self._test_version(None, 'latest',
128 expected_pass_tests,
129 expected_skip_tests)
130
131 def test_config_version_latest_latest(self):
132 expected_pass_tests = [VersionTestNoneTolatest, VersionTest2_3ToLatest]
133 expected_skip_tests = [VersionTestNoneTo2_2, VersionTest2_5To2_10,
134 VersionTest2_10To2_10]
135 self._test_version('latest', 'latest',
136 expected_pass_tests,
137 expected_skip_tests)
138
139 def test_config_invalid_version(self):
140 cfg.CONF.set_default('min_microversion',
141 '2.5', group='compute-feature-enabled')
142 cfg.CONF.set_default('max_microversion',
143 '2.1', group='compute-feature-enabled')
Ghanshyamd2e7a0a2016-02-02 10:53:33 +0900144 self.assertRaises(exceptions.InvalidAPIVersionRange,
Ghanshyam43e84652016-02-01 14:28:28 +0900145 VersionTestNoneTolatest.skip_checks)
146
147 def test_config_version_invalid_test_version(self):
148 cfg.CONF.set_default('min_microversion',
149 None, group='compute-feature-enabled')
150 cfg.CONF.set_default('max_microversion',
151 '2.13', group='compute-feature-enabled')
Ghanshyamd2e7a0a2016-02-02 10:53:33 +0900152 self.assertRaises(exceptions.InvalidAPIVersionRange,
Ghanshyam43e84652016-02-01 14:28:28 +0900153 InvalidVersionTest.skip_checks)