blob: 44ce567d7ae607a3dd9cf216422e5ac52c75e7f3 [file] [log] [blame]
Marc Koderer64a54082014-02-05 16:45:47 +01001# Copyright 2014 Deutsche Telekom AG
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Matthew Treinishff598482014-02-28 16:13:58 -050016from tempest import config
Marc Koderer64a54082014-02-05 16:45:47 +010017import tempest.test as test
Matthew Treinishffad78a2016-04-16 14:39:52 -040018from tempest.tests import base
Marc Koderer6ee82dc2014-02-17 10:26:29 +010019from tempest.tests import fake_config
Marc Koderer64a54082014-02-05 16:45:47 +010020
21
Marc Koderer6ee82dc2014-02-17 10:26:29 +010022class TestNegativeAutoTest(base.TestCase):
Marc Koderer64a54082014-02-05 16:45:47 +010023 # Fake entries
Marc Koderer64a54082014-02-05 16:45:47 +010024 _service = 'compute'
25
26 fake_input_desc = {"name": "list-flavors-with-detail",
27 "http-method": "GET",
28 "url": "flavors/detail",
29 "json-schema": {"type": "object",
Matthew Treinish1d14c542014-06-17 20:25:40 -040030 "properties":
31 {"minRam": {"type": "integer"},
32 "minDisk": {"type": "integer"}}
Marc Koderer64a54082014-02-05 16:45:47 +010033 },
34 "resources": ["flavor", "volume", "image"]
35 }
36
Marc Koderer6ee82dc2014-02-17 10:26:29 +010037 def setUp(self):
38 super(TestNegativeAutoTest, self).setUp()
Matthew Treinishff598482014-02-28 16:13:58 -050039 self.useFixture(fake_config.ConfigFixture())
Jordan Pittier0021c292016-03-29 21:33:34 +020040 self.patchobject(config, 'TempestConfigPrivate',
41 fake_config.FakePrivate)
Marc Koderer6ee82dc2014-02-17 10:26:29 +010042
Marc Koderer64a54082014-02-05 16:45:47 +010043 def _check_prop_entries(self, result, entry):
44 entries = [a for a in result if entry in a[0]]
45 self.assertIsNotNone(entries)
Marc Kodererf07f5d12014-09-01 09:47:23 +020046 self.assertGreater(len(entries), 1)
Marc Koderer64a54082014-02-05 16:45:47 +010047 for entry in entries:
Marc Kodererf07f5d12014-09-01 09:47:23 +020048 self.assertIsNotNone(entry[1]['_negtest_name'])
Marc Koderer64a54082014-02-05 16:45:47 +010049
50 def _check_resource_entries(self, result, entry):
51 entries = [a for a in result if entry in a[0]]
52 self.assertIsNotNone(entries)
53 self.assertIs(len(entries), 3)
54 for entry in entries:
55 self.assertIsNotNone(entry[1]['resource'])
56
Marc Koderer2eb12e12014-08-21 11:56:13 +020057 def test_generate_scenario(self):
Marc Koderer64a54082014-02-05 16:45:47 +010058 scenarios = test.NegativeAutoTest.\
Marc Koderer2eb12e12014-08-21 11:56:13 +020059 generate_scenario(self.fake_input_desc)
Marc Koderer64a54082014-02-05 16:45:47 +010060 self.assertIsInstance(scenarios, list)
61 for scenario in scenarios:
62 self.assertIsInstance(scenario, tuple)
63 self.assertIsInstance(scenario[0], str)
64 self.assertIsInstance(scenario[1], dict)
Marc Kodererf07f5d12014-09-01 09:47:23 +020065 self._check_prop_entries(scenarios, "minRam")
66 self._check_prop_entries(scenarios, "minDisk")
Marc Koderer64a54082014-02-05 16:45:47 +010067 self._check_resource_entries(scenarios, "inv_res")