blob: ee6db710262cbf8135492cf733e28843aea5b795 [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
junbolibc2ae862017-07-29 15:46:48 +080016import six
Ghanshyam43e84652016-02-01 14:28:28 +090017import testtools
18
19from tempest.api.compute import base as compute_base
20from tempest import config
Ghanshyam1f47cf92016-02-25 04:57:18 +090021from tempest.lib import exceptions
Matthew Treinishffad78a2016-04-16 14:39:52 -040022from tempest.tests import base
Ghanshyam43e84652016-02-01 14:28:28 +090023from tempest.tests import fake_config
24
25
26class VersionTestNoneTolatest(compute_base.BaseV2ComputeTest):
27 min_microversion = None
28 max_microversion = 'latest'
29
30
31class VersionTestNoneTo2_2(compute_base.BaseV2ComputeTest):
32 min_microversion = None
33 max_microversion = '2.2'
34
35
36class VersionTest2_3ToLatest(compute_base.BaseV2ComputeTest):
37 min_microversion = '2.3'
38 max_microversion = 'latest'
39
40
41class VersionTest2_5To2_10(compute_base.BaseV2ComputeTest):
42 min_microversion = '2.5'
43 max_microversion = '2.10'
44
45
46class VersionTest2_10To2_10(compute_base.BaseV2ComputeTest):
47 min_microversion = '2.10'
48 max_microversion = '2.10'
49
50
51class InvalidVersionTest(compute_base.BaseV2ComputeTest):
52 min_microversion = '2.11'
53 max_microversion = '2.1'
54
55
56class TestMicroversionsTestsClass(base.TestCase):
57
58 def setUp(self):
59 super(TestMicroversionsTestsClass, self).setUp()
60 self.useFixture(fake_config.ConfigFixture())
Jordan Pittier0021c292016-03-29 21:33:34 +020061 self.patchobject(config, 'TempestConfigPrivate',
62 fake_config.FakePrivate)
Ghanshyam43e84652016-02-01 14:28:28 +090063
64 def _test_version(self, cfg_min, cfg_max,
65 expected_pass_tests,
66 expected_skip_tests):
67 cfg.CONF.set_default('min_microversion',
ghanshyam29591532016-03-11 17:12:43 +090068 cfg_min, group='compute')
Ghanshyam43e84652016-02-01 14:28:28 +090069 cfg.CONF.set_default('max_microversion',
ghanshyam29591532016-03-11 17:12:43 +090070 cfg_max, group='compute')
Ghanshyam43e84652016-02-01 14:28:28 +090071 try:
72 for test_class in expected_pass_tests:
73 test_class.skip_checks()
74 for test_class in expected_skip_tests:
75 self.assertRaises(testtools.TestCase.skipException,
76 test_class.skip_checks)
77 except testtools.TestCase.skipException as e:
junbolibc2ae862017-07-29 15:46:48 +080078 raise testtools.TestCase.failureException(six.text_type(e))
Ghanshyam43e84652016-02-01 14:28:28 +090079
80 def test_config_version_none_none(self):
81 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2]
82 expected_skip_tests = [VersionTest2_3ToLatest, VersionTest2_5To2_10,
83 VersionTest2_10To2_10]
84 self._test_version(None, None,
85 expected_pass_tests,
86 expected_skip_tests)
87
88 def test_config_version_none_23(self):
89 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
90 VersionTest2_3ToLatest]
91 expected_skip_tests = [VersionTest2_5To2_10, VersionTest2_10To2_10]
92 self._test_version(None, '2.3',
93 expected_pass_tests,
94 expected_skip_tests)
95
96 def test_config_version_22_latest(self):
97 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
98 VersionTest2_3ToLatest, VersionTest2_5To2_10,
99 VersionTest2_10To2_10]
100 expected_skip_tests = []
101 self._test_version('2.2', 'latest',
102 expected_pass_tests,
103 expected_skip_tests)
104
105 def test_config_version_22_23(self):
106 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
107 VersionTest2_3ToLatest]
108 expected_skip_tests = [VersionTest2_5To2_10, VersionTest2_10To2_10]
109 self._test_version('2.2', '2.3',
110 expected_pass_tests,
111 expected_skip_tests)
112
113 def test_config_version_210_210(self):
114 expected_pass_tests = [VersionTestNoneTolatest,
115 VersionTest2_3ToLatest,
116 VersionTest2_5To2_10,
117 VersionTest2_10To2_10]
118 expected_skip_tests = [VersionTestNoneTo2_2]
119 self._test_version('2.10', '2.10',
120 expected_pass_tests,
121 expected_skip_tests)
122
123 def test_config_version_none_latest(self):
124 expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2,
125 VersionTest2_3ToLatest, VersionTest2_5To2_10,
126 VersionTest2_10To2_10]
127 expected_skip_tests = []
128 self._test_version(None, 'latest',
129 expected_pass_tests,
130 expected_skip_tests)
131
132 def test_config_version_latest_latest(self):
133 expected_pass_tests = [VersionTestNoneTolatest, VersionTest2_3ToLatest]
134 expected_skip_tests = [VersionTestNoneTo2_2, VersionTest2_5To2_10,
135 VersionTest2_10To2_10]
136 self._test_version('latest', 'latest',
137 expected_pass_tests,
138 expected_skip_tests)
139
140 def test_config_invalid_version(self):
141 cfg.CONF.set_default('min_microversion',
ghanshyam29591532016-03-11 17:12:43 +0900142 '2.5', group='compute')
Ghanshyam43e84652016-02-01 14:28:28 +0900143 cfg.CONF.set_default('max_microversion',
ghanshyam29591532016-03-11 17:12:43 +0900144 '2.1', group='compute')
Ghanshyamd2e7a0a2016-02-02 10:53:33 +0900145 self.assertRaises(exceptions.InvalidAPIVersionRange,
Ghanshyam43e84652016-02-01 14:28:28 +0900146 VersionTestNoneTolatest.skip_checks)
147
148 def test_config_version_invalid_test_version(self):
149 cfg.CONF.set_default('min_microversion',
ghanshyam29591532016-03-11 17:12:43 +0900150 None, group='compute')
Ghanshyam43e84652016-02-01 14:28:28 +0900151 cfg.CONF.set_default('max_microversion',
ghanshyam29591532016-03-11 17:12:43 +0900152 '2.13', group='compute')
Ghanshyamd2e7a0a2016-02-02 10:53:33 +0900153 self.assertRaises(exceptions.InvalidAPIVersionRange,
Ghanshyam43e84652016-02-01 14:28:28 +0900154 InvalidVersionTest.skip_checks)