root / test / py / ganeti.bootstrap_unittest.py @ 3039e2dc
History | View | Annotate | Download (3.9 kB)
1 | 5030cff3 | Helga Velroyen | #!/usr/bin/python
|
---|---|---|---|
2 | 5030cff3 | Helga Velroyen | #
|
3 | 5030cff3 | Helga Velroyen | |
4 | 5030cff3 | Helga Velroyen | # Copyright (C) 2013 Google Inc.
|
5 | 5030cff3 | Helga Velroyen | #
|
6 | 5030cff3 | Helga Velroyen | # This program is free software; you can redistribute it and/or modify
|
7 | 5030cff3 | Helga Velroyen | # it under the terms of the GNU General Public License as published by
|
8 | 5030cff3 | Helga Velroyen | # the Free Software Foundation; either version 2 of the License, or
|
9 | 5030cff3 | Helga Velroyen | # (at your option) any later version.
|
10 | 5030cff3 | Helga Velroyen | #
|
11 | 5030cff3 | Helga Velroyen | # This program is distributed in the hope that it will be useful, but
|
12 | 5030cff3 | Helga Velroyen | # WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 | 5030cff3 | Helga Velroyen | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 | 5030cff3 | Helga Velroyen | # General Public License for more details.
|
15 | 5030cff3 | Helga Velroyen | #
|
16 | 5030cff3 | Helga Velroyen | # You should have received a copy of the GNU General Public License
|
17 | 5030cff3 | Helga Velroyen | # along with this program; if not, write to the Free Software
|
18 | 5030cff3 | Helga Velroyen | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
19 | 5030cff3 | Helga Velroyen | # 02110-1301, USA.
|
20 | 5030cff3 | Helga Velroyen | |
21 | 5030cff3 | Helga Velroyen | |
22 | 5030cff3 | Helga Velroyen | """Script for testing ganeti.bootstrap"""
|
23 | 5030cff3 | Helga Velroyen | |
24 | 5030cff3 | Helga Velroyen | import shutil |
25 | 5030cff3 | Helga Velroyen | import tempfile |
26 | 5030cff3 | Helga Velroyen | import unittest |
27 | 5030cff3 | Helga Velroyen | |
28 | 5030cff3 | Helga Velroyen | from ganeti import bootstrap |
29 | 5030cff3 | Helga Velroyen | from ganeti import constants |
30 | 5030cff3 | Helga Velroyen | from ganeti import errors |
31 | 3039e2dc | Helga Velroyen | from ganeti import pathutils |
32 | 5030cff3 | Helga Velroyen | |
33 | 5030cff3 | Helga Velroyen | import testutils |
34 | 3039e2dc | Helga Velroyen | import mock |
35 | 5030cff3 | Helga Velroyen | |
36 | 5030cff3 | Helga Velroyen | |
37 | 5030cff3 | Helga Velroyen | class TestPrepareFileStorage(unittest.TestCase): |
38 | 5030cff3 | Helga Velroyen | def setUp(self): |
39 | 3039e2dc | Helga Velroyen | unittest.TestCase.setUp(self)
|
40 | 5030cff3 | Helga Velroyen | self.tmpdir = tempfile.mkdtemp()
|
41 | 5030cff3 | Helga Velroyen | |
42 | 5030cff3 | Helga Velroyen | def tearDown(self): |
43 | 5030cff3 | Helga Velroyen | shutil.rmtree(self.tmpdir)
|
44 | 5030cff3 | Helga Velroyen | |
45 | 3039e2dc | Helga Velroyen | def enableFileStorage(self, enable): |
46 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates = []
|
47 | 3039e2dc | Helga Velroyen | if enable:
|
48 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates.append(constants.DT_FILE)
|
49 | 3039e2dc | Helga Velroyen | else:
|
50 | 3039e2dc | Helga Velroyen | # anything != DT_FILE would do here
|
51 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates.append(constants.DT_DISKLESS)
|
52 | 3039e2dc | Helga Velroyen | |
53 | 3039e2dc | Helga Velroyen | def testFallBackToDefaultPathAcceptedFileStorageEnabled(self): |
54 | 3039e2dc | Helga Velroyen | expected_file_storage_dir = pathutils.DEFAULT_FILE_STORAGE_DIR |
55 | 3039e2dc | Helga Velroyen | acceptance_fn = mock.Mock() |
56 | 3039e2dc | Helga Velroyen | init_fn = mock.Mock(return_value=expected_file_storage_dir) |
57 | 3039e2dc | Helga Velroyen | self.enableFileStorage(True) |
58 | 5030cff3 | Helga Velroyen | file_storage_dir = bootstrap._PrepareFileStorage( |
59 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates, None, acceptance_fn=acceptance_fn, |
60 | 3039e2dc | Helga Velroyen | init_fn=init_fn) |
61 | 3039e2dc | Helga Velroyen | self.assertEqual(expected_file_storage_dir, file_storage_dir)
|
62 | 3039e2dc | Helga Velroyen | acceptance_fn.assert_called_with(expected_file_storage_dir) |
63 | 3039e2dc | Helga Velroyen | init_fn.assert_called_with(expected_file_storage_dir) |
64 | 3039e2dc | Helga Velroyen | |
65 | 3039e2dc | Helga Velroyen | def testPathAcceptedFileStorageEnabled(self): |
66 | 3039e2dc | Helga Velroyen | acceptance_fn = mock.Mock() |
67 | 3039e2dc | Helga Velroyen | init_fn = mock.Mock(return_value=self.tmpdir)
|
68 | 3039e2dc | Helga Velroyen | self.enableFileStorage(True) |
69 | 3039e2dc | Helga Velroyen | file_storage_dir = bootstrap._PrepareFileStorage( |
70 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates, self.tmpdir, acceptance_fn=acceptance_fn, |
71 | 3039e2dc | Helga Velroyen | init_fn=init_fn) |
72 | 5030cff3 | Helga Velroyen | self.assertEqual(self.tmpdir, file_storage_dir) |
73 | 3039e2dc | Helga Velroyen | acceptance_fn.assert_called_with(self.tmpdir)
|
74 | 3039e2dc | Helga Velroyen | init_fn.assert_called_with(self.tmpdir)
|
75 | 5030cff3 | Helga Velroyen | |
76 | 3039e2dc | Helga Velroyen | def testPathAcceptedFileStorageDisabled(self): |
77 | 3039e2dc | Helga Velroyen | acceptance_fn = mock.Mock() |
78 | 3039e2dc | Helga Velroyen | init_fn = mock.Mock() |
79 | 3039e2dc | Helga Velroyen | self.enableFileStorage(False) |
80 | 5030cff3 | Helga Velroyen | file_storage_dir = bootstrap._PrepareFileStorage( |
81 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates, self.tmpdir, acceptance_fn=acceptance_fn, |
82 | 3039e2dc | Helga Velroyen | init_fn=init_fn) |
83 | 3039e2dc | Helga Velroyen | self.assertEqual(self.tmpdir, file_storage_dir) |
84 | 3039e2dc | Helga Velroyen | self.assertFalse(init_fn.called)
|
85 | 3039e2dc | Helga Velroyen | self.assertFalse(acceptance_fn.called)
|
86 | 3039e2dc | Helga Velroyen | |
87 | 3039e2dc | Helga Velroyen | def testPathNotAccepted(self): |
88 | 3039e2dc | Helga Velroyen | acceptance_fn = mock.Mock() |
89 | 3039e2dc | Helga Velroyen | acceptance_fn.side_effect = errors.FileStoragePathError |
90 | 3039e2dc | Helga Velroyen | init_fn = mock.Mock() |
91 | 3039e2dc | Helga Velroyen | self.enableFileStorage(True) |
92 | 3039e2dc | Helga Velroyen | self.assertRaises(errors.OpPrereqError, bootstrap._PrepareFileStorage,
|
93 | 3039e2dc | Helga Velroyen | self.enabled_disk_templates, self.tmpdir, acceptance_fn=acceptance_fn, |
94 | 3039e2dc | Helga Velroyen | init_fn=init_fn) |
95 | 3039e2dc | Helga Velroyen | acceptance_fn.assert_called_with(self.tmpdir)
|
96 | 5030cff3 | Helga Velroyen | |
97 | 5030cff3 | Helga Velroyen | |
98 | 5030cff3 | Helga Velroyen | class TestInitCheckEnabledDiskTemplates(unittest.TestCase): |
99 | 5030cff3 | Helga Velroyen | def testValidTemplates(self): |
100 | 5030cff3 | Helga Velroyen | enabled_disk_templates = list(constants.DISK_TEMPLATES)
|
101 | 5030cff3 | Helga Velroyen | bootstrap._InitCheckEnabledDiskTemplates(enabled_disk_templates) |
102 | 5030cff3 | Helga Velroyen | |
103 | 5030cff3 | Helga Velroyen | def testInvalidTemplates(self): |
104 | 5030cff3 | Helga Velroyen | enabled_disk_templates = ["pinkbunny"]
|
105 | 5030cff3 | Helga Velroyen | self.assertRaises(errors.OpPrereqError,
|
106 | 5030cff3 | Helga Velroyen | bootstrap._InitCheckEnabledDiskTemplates, enabled_disk_templates) |
107 | 5030cff3 | Helga Velroyen | |
108 | 5030cff3 | Helga Velroyen | def testEmptyTemplates(self): |
109 | 5030cff3 | Helga Velroyen | enabled_disk_templates = [] |
110 | 5030cff3 | Helga Velroyen | self.assertRaises(errors.OpPrereqError,
|
111 | 5030cff3 | Helga Velroyen | bootstrap._InitCheckEnabledDiskTemplates, enabled_disk_templates) |
112 | 5030cff3 | Helga Velroyen | |
113 | 5030cff3 | Helga Velroyen | |
114 | 5030cff3 | Helga Velroyen | if __name__ == "__main__": |
115 | 5030cff3 | Helga Velroyen | testutils.GanetiTestProgram() |