root / test / py / qa.qa_config_unittest.py @ 6a654276
History | View | Annotate | Download (8.4 kB)
1 | a0c3e726 | Michael Hanselmann | #!/usr/bin/python
|
---|---|---|---|
2 | a0c3e726 | Michael Hanselmann | #
|
3 | a0c3e726 | Michael Hanselmann | |
4 | 8a96c5a6 | Michael Hanselmann | # Copyright (C) 2012, 2013 Google Inc.
|
5 | a0c3e726 | Michael Hanselmann | #
|
6 | a0c3e726 | Michael Hanselmann | # This program is free software; you can redistribute it and/or modify
|
7 | a0c3e726 | Michael Hanselmann | # it under the terms of the GNU General Public License as published by
|
8 | a0c3e726 | Michael Hanselmann | # the Free Software Foundation; either version 2 of the License, or
|
9 | a0c3e726 | Michael Hanselmann | # (at your option) any later version.
|
10 | a0c3e726 | Michael Hanselmann | #
|
11 | a0c3e726 | Michael Hanselmann | # This program is distributed in the hope that it will be useful, but
|
12 | a0c3e726 | Michael Hanselmann | # WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 | a0c3e726 | Michael Hanselmann | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 | a0c3e726 | Michael Hanselmann | # General Public License for more details.
|
15 | a0c3e726 | Michael Hanselmann | #
|
16 | a0c3e726 | Michael Hanselmann | # You should have received a copy of the GNU General Public License
|
17 | a0c3e726 | Michael Hanselmann | # along with this program; if not, write to the Free Software
|
18 | a0c3e726 | Michael Hanselmann | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
19 | a0c3e726 | Michael Hanselmann | # 02110-1301, USA.
|
20 | a0c3e726 | Michael Hanselmann | |
21 | a0c3e726 | Michael Hanselmann | |
22 | a0c3e726 | Michael Hanselmann | """Script for testing qa.qa_config"""
|
23 | a0c3e726 | Michael Hanselmann | |
24 | a0c3e726 | Michael Hanselmann | import unittest |
25 | 8a96c5a6 | Michael Hanselmann | import tempfile |
26 | 8a96c5a6 | Michael Hanselmann | import shutil |
27 | 8a96c5a6 | Michael Hanselmann | import os |
28 | 6a654276 | Michael Hanselmann | import operator |
29 | 8a96c5a6 | Michael Hanselmann | |
30 | 8a96c5a6 | Michael Hanselmann | from ganeti import utils |
31 | 8a96c5a6 | Michael Hanselmann | from ganeti import serializer |
32 | 8a96c5a6 | Michael Hanselmann | from ganeti import constants |
33 | 8a96c5a6 | Michael Hanselmann | from ganeti import compat |
34 | a0c3e726 | Michael Hanselmann | |
35 | a0c3e726 | Michael Hanselmann | from qa import qa_config |
36 | 8a96c5a6 | Michael Hanselmann | from qa import qa_error |
37 | a0c3e726 | Michael Hanselmann | |
38 | a0c3e726 | Michael Hanselmann | import testutils |
39 | a0c3e726 | Michael Hanselmann | |
40 | a0c3e726 | Michael Hanselmann | |
41 | a0c3e726 | Michael Hanselmann | class TestTestEnabled(unittest.TestCase): |
42 | a0c3e726 | Michael Hanselmann | def testSimple(self): |
43 | a0c3e726 | Michael Hanselmann | for name in ["test", ["foobar"], ["a", "b"]]: |
44 | a0c3e726 | Michael Hanselmann | self.assertTrue(qa_config.TestEnabled(name, _cfg={}))
|
45 | a0c3e726 | Michael Hanselmann | |
46 | a0c3e726 | Michael Hanselmann | for default in [False, True]: |
47 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled("foo", _cfg={ |
48 | a0c3e726 | Michael Hanselmann | "tests": {
|
49 | a0c3e726 | Michael Hanselmann | "default": default,
|
50 | a0c3e726 | Michael Hanselmann | "foo": False, |
51 | a0c3e726 | Michael Hanselmann | }, |
52 | a0c3e726 | Michael Hanselmann | })) |
53 | a0c3e726 | Michael Hanselmann | |
54 | a0c3e726 | Michael Hanselmann | self.assertTrue(qa_config.TestEnabled("bar", _cfg={ |
55 | a0c3e726 | Michael Hanselmann | "tests": {
|
56 | a0c3e726 | Michael Hanselmann | "default": default,
|
57 | a0c3e726 | Michael Hanselmann | "bar": True, |
58 | a0c3e726 | Michael Hanselmann | }, |
59 | a0c3e726 | Michael Hanselmann | })) |
60 | a0c3e726 | Michael Hanselmann | |
61 | a0c3e726 | Michael Hanselmann | def testEitherWithDefault(self): |
62 | a0c3e726 | Michael Hanselmann | names = qa_config.Either("one")
|
63 | a0c3e726 | Michael Hanselmann | |
64 | a0c3e726 | Michael Hanselmann | self.assertTrue(qa_config.TestEnabled(names, _cfg={
|
65 | a0c3e726 | Michael Hanselmann | "tests": {
|
66 | a0c3e726 | Michael Hanselmann | "default": True, |
67 | a0c3e726 | Michael Hanselmann | }, |
68 | a0c3e726 | Michael Hanselmann | })) |
69 | a0c3e726 | Michael Hanselmann | |
70 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled(names, _cfg={
|
71 | a0c3e726 | Michael Hanselmann | "tests": {
|
72 | a0c3e726 | Michael Hanselmann | "default": False, |
73 | a0c3e726 | Michael Hanselmann | }, |
74 | a0c3e726 | Michael Hanselmann | })) |
75 | a0c3e726 | Michael Hanselmann | |
76 | a0c3e726 | Michael Hanselmann | def testEither(self): |
77 | a0c3e726 | Michael Hanselmann | names = [qa_config.Either(["one", "two"]), |
78 | a0c3e726 | Michael Hanselmann | qa_config.Either("foo"),
|
79 | a0c3e726 | Michael Hanselmann | "hello",
|
80 | a0c3e726 | Michael Hanselmann | ["bar", "baz"]] |
81 | a0c3e726 | Michael Hanselmann | |
82 | a0c3e726 | Michael Hanselmann | self.assertTrue(qa_config.TestEnabled(names, _cfg={
|
83 | a0c3e726 | Michael Hanselmann | "tests": {
|
84 | a0c3e726 | Michael Hanselmann | "default": True, |
85 | a0c3e726 | Michael Hanselmann | }, |
86 | a0c3e726 | Michael Hanselmann | })) |
87 | a0c3e726 | Michael Hanselmann | |
88 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled(names, _cfg={
|
89 | a0c3e726 | Michael Hanselmann | "tests": {
|
90 | a0c3e726 | Michael Hanselmann | "default": False, |
91 | a0c3e726 | Michael Hanselmann | }, |
92 | a0c3e726 | Michael Hanselmann | })) |
93 | a0c3e726 | Michael Hanselmann | |
94 | a0c3e726 | Michael Hanselmann | for name in ["foo", "bar", "baz", "hello"]: |
95 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled(names, _cfg={
|
96 | a0c3e726 | Michael Hanselmann | "tests": {
|
97 | a0c3e726 | Michael Hanselmann | "default": True, |
98 | a0c3e726 | Michael Hanselmann | name: False,
|
99 | a0c3e726 | Michael Hanselmann | }, |
100 | a0c3e726 | Michael Hanselmann | })) |
101 | a0c3e726 | Michael Hanselmann | |
102 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled(names, _cfg={
|
103 | a0c3e726 | Michael Hanselmann | "tests": {
|
104 | a0c3e726 | Michael Hanselmann | "default": True, |
105 | a0c3e726 | Michael Hanselmann | "one": False, |
106 | a0c3e726 | Michael Hanselmann | "two": False, |
107 | a0c3e726 | Michael Hanselmann | }, |
108 | a0c3e726 | Michael Hanselmann | })) |
109 | a0c3e726 | Michael Hanselmann | |
110 | a0c3e726 | Michael Hanselmann | self.assertTrue(qa_config.TestEnabled(names, _cfg={
|
111 | a0c3e726 | Michael Hanselmann | "tests": {
|
112 | a0c3e726 | Michael Hanselmann | "default": True, |
113 | a0c3e726 | Michael Hanselmann | "one": False, |
114 | a0c3e726 | Michael Hanselmann | "two": True, |
115 | a0c3e726 | Michael Hanselmann | }, |
116 | a0c3e726 | Michael Hanselmann | })) |
117 | a0c3e726 | Michael Hanselmann | |
118 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled(names, _cfg={
|
119 | a0c3e726 | Michael Hanselmann | "tests": {
|
120 | a0c3e726 | Michael Hanselmann | "default": True, |
121 | a0c3e726 | Michael Hanselmann | "one": True, |
122 | a0c3e726 | Michael Hanselmann | "two": True, |
123 | a0c3e726 | Michael Hanselmann | "foo": False, |
124 | a0c3e726 | Michael Hanselmann | }, |
125 | a0c3e726 | Michael Hanselmann | })) |
126 | a0c3e726 | Michael Hanselmann | |
127 | a0c3e726 | Michael Hanselmann | def testEitherNestedWithAnd(self): |
128 | a0c3e726 | Michael Hanselmann | names = qa_config.Either([["one", "two"], "foo"]) |
129 | a0c3e726 | Michael Hanselmann | |
130 | a0c3e726 | Michael Hanselmann | self.assertTrue(qa_config.TestEnabled(names, _cfg={
|
131 | a0c3e726 | Michael Hanselmann | "tests": {
|
132 | a0c3e726 | Michael Hanselmann | "default": True, |
133 | a0c3e726 | Michael Hanselmann | }, |
134 | a0c3e726 | Michael Hanselmann | })) |
135 | a0c3e726 | Michael Hanselmann | |
136 | a0c3e726 | Michael Hanselmann | for name in ["one", "two"]: |
137 | a0c3e726 | Michael Hanselmann | self.assertFalse(qa_config.TestEnabled(names, _cfg={
|
138 | a0c3e726 | Michael Hanselmann | "tests": {
|
139 | a0c3e726 | Michael Hanselmann | "default": True, |
140 | a0c3e726 | Michael Hanselmann | "foo": False, |
141 | a0c3e726 | Michael Hanselmann | name: False,
|
142 | a0c3e726 | Michael Hanselmann | }, |
143 | a0c3e726 | Michael Hanselmann | })) |
144 | a0c3e726 | Michael Hanselmann | |
145 | a0c3e726 | Michael Hanselmann | |
146 | 8a96c5a6 | Michael Hanselmann | class TestQaConfigLoad(unittest.TestCase): |
147 | 8a96c5a6 | Michael Hanselmann | def setUp(self): |
148 | 8a96c5a6 | Michael Hanselmann | self.tmpdir = tempfile.mkdtemp()
|
149 | 8a96c5a6 | Michael Hanselmann | |
150 | 8a96c5a6 | Michael Hanselmann | def tearDown(self): |
151 | 8a96c5a6 | Michael Hanselmann | shutil.rmtree(self.tmpdir)
|
152 | 8a96c5a6 | Michael Hanselmann | |
153 | 8a96c5a6 | Michael Hanselmann | def testLoadNonExistent(self): |
154 | 8a96c5a6 | Michael Hanselmann | filename = utils.PathJoin(self.tmpdir, "does.not.exist") |
155 | 8a96c5a6 | Michael Hanselmann | self.assertRaises(EnvironmentError, qa_config._QaConfig.Load, filename) |
156 | 8a96c5a6 | Michael Hanselmann | |
157 | 8a96c5a6 | Michael Hanselmann | @staticmethod
|
158 | 8a96c5a6 | Michael Hanselmann | def _WriteConfig(filename, data): |
159 | 8a96c5a6 | Michael Hanselmann | utils.WriteFile(filename, data=serializer.DumpJson(data)) |
160 | 8a96c5a6 | Michael Hanselmann | |
161 | 8a96c5a6 | Michael Hanselmann | def _CheckLoadError(self, filename, data, expected): |
162 | 8a96c5a6 | Michael Hanselmann | self._WriteConfig(filename, data)
|
163 | 8a96c5a6 | Michael Hanselmann | |
164 | 8a96c5a6 | Michael Hanselmann | try:
|
165 | 8a96c5a6 | Michael Hanselmann | qa_config._QaConfig.Load(filename) |
166 | 8a96c5a6 | Michael Hanselmann | except qa_error.Error, err:
|
167 | 8a96c5a6 | Michael Hanselmann | self.assertTrue(str(err).startswith(expected)) |
168 | 8a96c5a6 | Michael Hanselmann | else:
|
169 | 8a96c5a6 | Michael Hanselmann | self.fail("Exception was not raised") |
170 | 8a96c5a6 | Michael Hanselmann | |
171 | 8a96c5a6 | Michael Hanselmann | def testFailsValidation(self): |
172 | 8a96c5a6 | Michael Hanselmann | filename = utils.PathJoin(self.tmpdir, "qa.json") |
173 | 8a96c5a6 | Michael Hanselmann | testconfig = {} |
174 | 8a96c5a6 | Michael Hanselmann | |
175 | 8a96c5a6 | Michael Hanselmann | check_fn = compat.partial(self._CheckLoadError, filename, testconfig)
|
176 | 8a96c5a6 | Michael Hanselmann | |
177 | 8a96c5a6 | Michael Hanselmann | # No nodes
|
178 | 8a96c5a6 | Michael Hanselmann | check_fn("Need at least one node")
|
179 | 8a96c5a6 | Michael Hanselmann | |
180 | 8a96c5a6 | Michael Hanselmann | testconfig["nodes"] = [
|
181 | 8a96c5a6 | Michael Hanselmann | { |
182 | 8a96c5a6 | Michael Hanselmann | "primary": "xen-test-0", |
183 | 8a96c5a6 | Michael Hanselmann | "secondary": "192.0.2.1", |
184 | 8a96c5a6 | Michael Hanselmann | }, |
185 | 8a96c5a6 | Michael Hanselmann | ] |
186 | 8a96c5a6 | Michael Hanselmann | |
187 | 8a96c5a6 | Michael Hanselmann | # No instances
|
188 | 8a96c5a6 | Michael Hanselmann | check_fn("Need at least one instance")
|
189 | 8a96c5a6 | Michael Hanselmann | |
190 | 8a96c5a6 | Michael Hanselmann | testconfig["instances"] = [
|
191 | 8a96c5a6 | Michael Hanselmann | { |
192 | 8a96c5a6 | Michael Hanselmann | "name": "xen-test-inst1", |
193 | 8a96c5a6 | Michael Hanselmann | }, |
194 | 8a96c5a6 | Michael Hanselmann | ] |
195 | 8a96c5a6 | Michael Hanselmann | |
196 | 8a96c5a6 | Michael Hanselmann | # Missing "disk" and "disk-growth"
|
197 | 8a96c5a6 | Michael Hanselmann | check_fn("Config options 'disk' and 'disk-growth' ")
|
198 | 8a96c5a6 | Michael Hanselmann | |
199 | 8a96c5a6 | Michael Hanselmann | testconfig["disk"] = []
|
200 | 8a96c5a6 | Michael Hanselmann | testconfig["disk-growth"] = testconfig["disk"] |
201 | 8a96c5a6 | Michael Hanselmann | |
202 | 8a96c5a6 | Michael Hanselmann | # Minimal accepted configuration
|
203 | 8a96c5a6 | Michael Hanselmann | self._WriteConfig(filename, testconfig)
|
204 | 8a96c5a6 | Michael Hanselmann | result = qa_config._QaConfig.Load(filename) |
205 | 8a96c5a6 | Michael Hanselmann | self.assertTrue(result.get("nodes")) |
206 | 8a96c5a6 | Michael Hanselmann | |
207 | 8a96c5a6 | Michael Hanselmann | # Non-existent instance check script
|
208 | 8a96c5a6 | Michael Hanselmann | testconfig[qa_config._INSTANCE_CHECK_KEY] = \ |
209 | 8a96c5a6 | Michael Hanselmann | utils.PathJoin(self.tmpdir, "instcheck") |
210 | 8a96c5a6 | Michael Hanselmann | check_fn("Can't find instance check script")
|
211 | 8a96c5a6 | Michael Hanselmann | del testconfig[qa_config._INSTANCE_CHECK_KEY]
|
212 | 8a96c5a6 | Michael Hanselmann | |
213 | 8a96c5a6 | Michael Hanselmann | # No enabled hypervisor
|
214 | 8a96c5a6 | Michael Hanselmann | testconfig[qa_config._ENABLED_HV_KEY] = None
|
215 | 8a96c5a6 | Michael Hanselmann | check_fn("No hypervisor is enabled")
|
216 | 8a96c5a6 | Michael Hanselmann | |
217 | 8a96c5a6 | Michael Hanselmann | # Unknown hypervisor
|
218 | 8a96c5a6 | Michael Hanselmann | testconfig[qa_config._ENABLED_HV_KEY] = ["#unknownhv#"]
|
219 | 8a96c5a6 | Michael Hanselmann | check_fn("Unknown hypervisor(s) enabled:")
|
220 | 8a96c5a6 | Michael Hanselmann | |
221 | 8a96c5a6 | Michael Hanselmann | |
222 | 8a96c5a6 | Michael Hanselmann | class TestQaConfigWithSampleConfig(unittest.TestCase): |
223 | 8a96c5a6 | Michael Hanselmann | """Tests using C{qa-sample.json}.
|
224 | 8a96c5a6 | Michael Hanselmann |
|
225 | 8a96c5a6 | Michael Hanselmann | This test case serves two purposes:
|
226 | 8a96c5a6 | Michael Hanselmann |
|
227 | 8a96c5a6 | Michael Hanselmann | - Ensure shipped C{qa-sample.json} file is considered a valid QA
|
228 | 8a96c5a6 | Michael Hanselmann | configuration
|
229 | 8a96c5a6 | Michael Hanselmann | - Test some functions of L{qa_config._QaConfig} without having to
|
230 | 8a96c5a6 | Michael Hanselmann | mock a whole configuration file
|
231 | 8a96c5a6 | Michael Hanselmann |
|
232 | 8a96c5a6 | Michael Hanselmann | """
|
233 | 8a96c5a6 | Michael Hanselmann | def setUp(self): |
234 | 8a96c5a6 | Michael Hanselmann | filename = "%s/qa/qa-sample.json" % testutils.GetSourceDir()
|
235 | 8a96c5a6 | Michael Hanselmann | |
236 | 8a96c5a6 | Michael Hanselmann | self.config = qa_config._QaConfig.Load(filename)
|
237 | 8a96c5a6 | Michael Hanselmann | |
238 | 8a96c5a6 | Michael Hanselmann | def testGetEnabledHypervisors(self): |
239 | 8a96c5a6 | Michael Hanselmann | self.assertEqual(self.config.GetEnabledHypervisors(), |
240 | 8a96c5a6 | Michael Hanselmann | [constants.DEFAULT_ENABLED_HYPERVISOR]) |
241 | 8a96c5a6 | Michael Hanselmann | |
242 | 8a96c5a6 | Michael Hanselmann | def testGetDefaultHypervisor(self): |
243 | 8a96c5a6 | Michael Hanselmann | self.assertEqual(self.config.GetDefaultHypervisor(), |
244 | 8a96c5a6 | Michael Hanselmann | constants.DEFAULT_ENABLED_HYPERVISOR) |
245 | 8a96c5a6 | Michael Hanselmann | |
246 | 8a96c5a6 | Michael Hanselmann | def testGetInstanceCheckScript(self): |
247 | 8a96c5a6 | Michael Hanselmann | self.assertTrue(self.config.GetInstanceCheckScript() is None) |
248 | 8a96c5a6 | Michael Hanselmann | |
249 | 8a96c5a6 | Michael Hanselmann | def testGetAndGetItem(self): |
250 | 8a96c5a6 | Michael Hanselmann | self.assertEqual(self.config["nodes"], self.config.get("nodes")) |
251 | 8a96c5a6 | Michael Hanselmann | |
252 | 8a96c5a6 | Michael Hanselmann | def testGetMasterNode(self): |
253 | 8a96c5a6 | Michael Hanselmann | self.assertEqual(self.config.GetMasterNode(), self.config["nodes"][0]) |
254 | 8a96c5a6 | Michael Hanselmann | |
255 | 8a96c5a6 | Michael Hanselmann | |
256 | a08e181f | Michael Hanselmann | class TestQaConfig(unittest.TestCase): |
257 | a08e181f | Michael Hanselmann | def setUp(self): |
258 | a08e181f | Michael Hanselmann | filename = \ |
259 | a08e181f | Michael Hanselmann | testutils.TestDataFilename("qa-minimal-nodes-instances-only.json")
|
260 | a08e181f | Michael Hanselmann | |
261 | a08e181f | Michael Hanselmann | self.config = qa_config._QaConfig.Load(filename)
|
262 | a08e181f | Michael Hanselmann | |
263 | a08e181f | Michael Hanselmann | def testExclusiveStorage(self): |
264 | a08e181f | Michael Hanselmann | self.assertRaises(AssertionError, self.config.GetExclusiveStorage) |
265 | a08e181f | Michael Hanselmann | |
266 | a08e181f | Michael Hanselmann | for value in [False, True, 0, 1, 30804, ""]: |
267 | a08e181f | Michael Hanselmann | self.config.SetExclusiveStorage(value)
|
268 | a08e181f | Michael Hanselmann | self.assertEqual(self.config.GetExclusiveStorage(), bool(value)) |
269 | a08e181f | Michael Hanselmann | |
270 | a08e181f | Michael Hanselmann | for template in constants.DISK_TEMPLATES: |
271 | a08e181f | Michael Hanselmann | if value and template not in constants.DTS_EXCL_STORAGE: |
272 | a08e181f | Michael Hanselmann | self.assertFalse(self.config.IsTemplateSupported(template)) |
273 | a08e181f | Michael Hanselmann | else:
|
274 | a08e181f | Michael Hanselmann | self.assertTrue(self.config.IsTemplateSupported(template)) |
275 | a08e181f | Michael Hanselmann | |
276 | 6a654276 | Michael Hanselmann | def testInstanceConversion(self): |
277 | 6a654276 | Michael Hanselmann | self.assertTrue(isinstance(self.config["instances"][0], |
278 | 6a654276 | Michael Hanselmann | qa_config._QaInstance)) |
279 | 6a654276 | Michael Hanselmann | |
280 | 6a654276 | Michael Hanselmann | def testAcquireAndReleaseInstance(self): |
281 | 6a654276 | Michael Hanselmann | self.assertFalse(compat.any(map(operator.attrgetter("used"), |
282 | 6a654276 | Michael Hanselmann | self.config["instances"]))) |
283 | 6a654276 | Michael Hanselmann | |
284 | 6a654276 | Michael Hanselmann | inst = qa_config.AcquireInstance(_cfg=self.config)
|
285 | 6a654276 | Michael Hanselmann | self.assertTrue(inst.used)
|
286 | 6a654276 | Michael Hanselmann | self.assertTrue(inst.disk_template is None) |
287 | 6a654276 | Michael Hanselmann | |
288 | 6a654276 | Michael Hanselmann | qa_config.ReleaseInstance(inst) |
289 | 6a654276 | Michael Hanselmann | |
290 | 6a654276 | Michael Hanselmann | self.assertFalse(inst.used)
|
291 | 6a654276 | Michael Hanselmann | self.assertTrue(inst.disk_template is None) |
292 | 6a654276 | Michael Hanselmann | |
293 | 6a654276 | Michael Hanselmann | self.assertFalse(compat.any(map(operator.attrgetter("used"), |
294 | 6a654276 | Michael Hanselmann | self.config["instances"]))) |
295 | 6a654276 | Michael Hanselmann | |
296 | 6a654276 | Michael Hanselmann | def testAcquireInstanceTooMany(self): |
297 | 6a654276 | Michael Hanselmann | # Acquire all instances
|
298 | 6a654276 | Michael Hanselmann | for _ in range(len(self.config["instances"])): |
299 | 6a654276 | Michael Hanselmann | inst = qa_config.AcquireInstance(_cfg=self.config)
|
300 | 6a654276 | Michael Hanselmann | self.assertTrue(inst.used)
|
301 | 6a654276 | Michael Hanselmann | self.assertTrue(inst.disk_template is None) |
302 | 6a654276 | Michael Hanselmann | |
303 | 6a654276 | Michael Hanselmann | # The next acquisition must fail
|
304 | 6a654276 | Michael Hanselmann | self.assertRaises(qa_error.OutOfInstancesError,
|
305 | 6a654276 | Michael Hanselmann | qa_config.AcquireInstance, _cfg=self.config)
|
306 | 6a654276 | Michael Hanselmann | |
307 | a08e181f | Michael Hanselmann | |
308 | a0c3e726 | Michael Hanselmann | if __name__ == "__main__": |
309 | a0c3e726 | Michael Hanselmann | testutils.GanetiTestProgram() |