Statistics
| Branch: | Tag: | Revision:

root / test / py / ganeti.cmdlib.cluster_unittest.py @ 47387ccb

History | View | Annotate | Download (2.8 kB)

1 3039e2dc Helga Velroyen
#!/usr/bin/python
2 3039e2dc Helga Velroyen
#
3 3039e2dc Helga Velroyen
4 3039e2dc Helga Velroyen
# Copyright (C) 2013 Google Inc.
5 3039e2dc Helga Velroyen
#
6 3039e2dc Helga Velroyen
# This program is free software; you can redistribute it and/or modify
7 3039e2dc Helga Velroyen
# it under the terms of the GNU General Public License as published by
8 3039e2dc Helga Velroyen
# the Free Software Foundation; either version 2 of the License, or
9 3039e2dc Helga Velroyen
# (at your option) any later version.
10 3039e2dc Helga Velroyen
#
11 3039e2dc Helga Velroyen
# This program is distributed in the hope that it will be useful, but
12 3039e2dc Helga Velroyen
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 3039e2dc Helga Velroyen
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 3039e2dc Helga Velroyen
# General Public License for more details.
15 3039e2dc Helga Velroyen
#
16 3039e2dc Helga Velroyen
# You should have received a copy of the GNU General Public License
17 3039e2dc Helga Velroyen
# along with this program; if not, write to the Free Software
18 3039e2dc Helga Velroyen
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 3039e2dc Helga Velroyen
# 02110-1301, USA.
20 3039e2dc Helga Velroyen
21 3039e2dc Helga Velroyen
22 3039e2dc Helga Velroyen
"""Script for unittesting the cmdlib module 'cluster'"""
23 3039e2dc Helga Velroyen
24 3039e2dc Helga Velroyen
25 3039e2dc Helga Velroyen
import unittest
26 3039e2dc Helga Velroyen
27 3039e2dc Helga Velroyen
from ganeti.cmdlib import cluster
28 3039e2dc Helga Velroyen
from ganeti import constants
29 3039e2dc Helga Velroyen
from ganeti import errors
30 3039e2dc Helga Velroyen
31 3039e2dc Helga Velroyen
import testutils
32 3039e2dc Helga Velroyen
import mock
33 3039e2dc Helga Velroyen
34 3039e2dc Helga Velroyen
35 3039e2dc Helga Velroyen
class TestCheckFileStoragePath(unittest.TestCase):
36 3039e2dc Helga Velroyen
37 3039e2dc Helga Velroyen
  def setUp(self):
38 3039e2dc Helga Velroyen
    unittest.TestCase.setUp(self)
39 3039e2dc Helga Velroyen
    self.log_warning = mock.Mock()
40 3039e2dc Helga Velroyen
41 3039e2dc Helga Velroyen
  def enableFileStorage(self, file_storage_enabled):
42 3039e2dc Helga Velroyen
    if file_storage_enabled:
43 3039e2dc Helga Velroyen
      self.enabled_disk_templates = [constants.DT_FILE]
44 3039e2dc Helga Velroyen
    else:
45 3039e2dc Helga Velroyen
      # anything != 'file' would do here
46 3039e2dc Helga Velroyen
      self.enabled_disk_templates = [constants.DT_DISKLESS]
47 3039e2dc Helga Velroyen
48 3039e2dc Helga Velroyen
  def testNone(self):
49 3039e2dc Helga Velroyen
    self.enableFileStorage(True)
50 3039e2dc Helga Velroyen
    self.assertRaises(
51 3039e2dc Helga Velroyen
        errors.ProgrammerError,
52 3039e2dc Helga Velroyen
        cluster.CheckFileStoragePathVsEnabledDiskTemplates,
53 3039e2dc Helga Velroyen
        self.log_warning, None, self.enabled_disk_templates)
54 3039e2dc Helga Velroyen
55 3039e2dc Helga Velroyen
  def testNotEmptyAndEnabled(self):
56 3039e2dc Helga Velroyen
    self.enableFileStorage(True)
57 3039e2dc Helga Velroyen
    cluster.CheckFileStoragePathVsEnabledDiskTemplates(
58 3039e2dc Helga Velroyen
        self.log_warning, "/some/path", self.enabled_disk_templates)
59 3039e2dc Helga Velroyen
60 3039e2dc Helga Velroyen
  def testNotEnabled(self):
61 3039e2dc Helga Velroyen
    self.enableFileStorage(False)
62 3039e2dc Helga Velroyen
    cluster.CheckFileStoragePathVsEnabledDiskTemplates(
63 3039e2dc Helga Velroyen
        self.log_warning, "/some/path", self.enabled_disk_templates)
64 3039e2dc Helga Velroyen
    self.assertTrue(self.log_warning.called)
65 3039e2dc Helga Velroyen
66 3039e2dc Helga Velroyen
  def testEmptyAndEnabled(self):
67 3039e2dc Helga Velroyen
    self.enableFileStorage(True)
68 3039e2dc Helga Velroyen
    self.assertRaises(
69 3039e2dc Helga Velroyen
        errors.OpPrereqError,
70 3039e2dc Helga Velroyen
        cluster.CheckFileStoragePathVsEnabledDiskTemplates,
71 3039e2dc Helga Velroyen
        self.log_warning, "", self.enabled_disk_templates)
72 3039e2dc Helga Velroyen
73 3039e2dc Helga Velroyen
  def testEmptyAndDisabled(self):
74 3039e2dc Helga Velroyen
    self.enableFileStorage(False)
75 3039e2dc Helga Velroyen
    cluster.CheckFileStoragePathVsEnabledDiskTemplates(
76 3039e2dc Helga Velroyen
        NotImplemented, "", self.enabled_disk_templates)
77 3039e2dc Helga Velroyen
78 3039e2dc Helga Velroyen
79 c89eb67d Helga Velroyen
class TestGetEnabledDiskTemplates(unittest.TestCase):
80 c89eb67d Helga Velroyen
81 c89eb67d Helga Velroyen
  def testNoNew(self):
82 c89eb67d Helga Velroyen
    op_dts = [constants.DT_DISKLESS]
83 c89eb67d Helga Velroyen
    old_dts = [constants.DT_DISKLESS]
84 c89eb67d Helga Velroyen
    (enabled_dts, new_dts) =\
85 c89eb67d Helga Velroyen
        cluster.LUClusterSetParams._GetEnabledDiskTemplatesInner(
86 c89eb67d Helga Velroyen
            op_dts, old_dts)
87 c89eb67d Helga Velroyen
    self.assertEqual(enabled_dts, old_dts)
88 c89eb67d Helga Velroyen
    self.assertEqual(new_dts, [])
89 c89eb67d Helga Velroyen
90 c89eb67d Helga Velroyen
91 3039e2dc Helga Velroyen
if __name__ == "__main__":
92 3039e2dc Helga Velroyen
  testutils.GanetiTestProgram()