# Copyright 2015 NEC Corporation. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslo_config import cfg import six import testtools from tempest.api.compute import base as compute_base from tempest import config from tempest.lib import exceptions from tempest.tests import base from tempest.tests import fake_config class VersionTestNoneTolatest(compute_base.BaseV2ComputeTest): min_microversion = None max_microversion = 'latest' class VersionTestNoneTo2_2(compute_base.BaseV2ComputeTest): min_microversion = None max_microversion = '2.2' class VersionTest2_3ToLatest(compute_base.BaseV2ComputeTest): min_microversion = '2.3' max_microversion = 'latest' class VersionTest2_5To2_10(compute_base.BaseV2ComputeTest): min_microversion = '2.5' max_microversion = '2.10' class VersionTest2_10To2_10(compute_base.BaseV2ComputeTest): min_microversion = '2.10' max_microversion = '2.10' class InvalidVersionTest(compute_base.BaseV2ComputeTest): min_microversion = '2.11' max_microversion = '2.1' class TestMicroversionsTestsClass(base.TestCase): def setUp(self): super(TestMicroversionsTestsClass, self).setUp() self.useFixture(fake_config.ConfigFixture()) self.patchobject(config, 'TempestConfigPrivate', fake_config.FakePrivate) def _test_version(self, cfg_min, cfg_max, expected_pass_tests, expected_skip_tests): cfg.CONF.set_default('min_microversion', cfg_min, group='compute') cfg.CONF.set_default('max_microversion', cfg_max, group='compute') try: for test_class in expected_pass_tests: test_class.skip_checks() for test_class in expected_skip_tests: self.assertRaises(testtools.TestCase.skipException, test_class.skip_checks) except testtools.TestCase.skipException as e: raise testtools.TestCase.failureException(six.text_type(e)) def test_config_version_none_none(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2] expected_skip_tests = [VersionTest2_3ToLatest, VersionTest2_5To2_10, VersionTest2_10To2_10] self._test_version(None, None, expected_pass_tests, expected_skip_tests) def test_config_version_none_23(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2, VersionTest2_3ToLatest] expected_skip_tests = [VersionTest2_5To2_10, VersionTest2_10To2_10] self._test_version(None, '2.3', expected_pass_tests, expected_skip_tests) def test_config_version_22_latest(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2, VersionTest2_3ToLatest, VersionTest2_5To2_10, VersionTest2_10To2_10] expected_skip_tests = [] self._test_version('2.2', 'latest', expected_pass_tests, expected_skip_tests) def test_config_version_22_23(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2, VersionTest2_3ToLatest] expected_skip_tests = [VersionTest2_5To2_10, VersionTest2_10To2_10] self._test_version('2.2', '2.3', expected_pass_tests, expected_skip_tests) def test_config_version_210_210(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTest2_3ToLatest, VersionTest2_5To2_10, VersionTest2_10To2_10] expected_skip_tests = [VersionTestNoneTo2_2] self._test_version('2.10', '2.10', expected_pass_tests, expected_skip_tests) def test_config_version_none_latest(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTestNoneTo2_2, VersionTest2_3ToLatest, VersionTest2_5To2_10, VersionTest2_10To2_10] expected_skip_tests = [] self._test_version(None, 'latest', expected_pass_tests, expected_skip_tests) def test_config_version_latest_latest(self): expected_pass_tests = [VersionTestNoneTolatest, VersionTest2_3ToLatest] expected_skip_tests = [VersionTestNoneTo2_2, VersionTest2_5To2_10, VersionTest2_10To2_10] self._test_version('latest', 'latest', expected_pass_tests, expected_skip_tests) def test_config_invalid_version(self): cfg.CONF.set_default('min_microversion', '2.5', group='compute') cfg.CONF.set_default('max_microversion', '2.1', group='compute') self.assertRaises(exceptions.InvalidAPIVersionRange, VersionTestNoneTolatest.skip_checks) def test_config_version_invalid_test_version(self): cfg.CONF.set_default('min_microversion', None, group='compute') cfg.CONF.set_default('max_microversion', '2.13', group='compute') self.assertRaises(exceptions.InvalidAPIVersionRange, InvalidVersionTest.skip_checks)