Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.runtime_unittest.py @ 415feb2e

History | View | Annotate | Download (5 kB)

1 f12e1736 René Nussbaumer
#!/usr/bin/python
2 f12e1736 René Nussbaumer
#
3 f12e1736 René Nussbaumer
4 f12e1736 René Nussbaumer
# Copyright (C) 2010 Google Inc.
5 f12e1736 René Nussbaumer
#
6 f12e1736 René Nussbaumer
# This program is free software; you can redistribute it and/or modify
7 f12e1736 René Nussbaumer
# it under the terms of the GNU General Public License as published by
8 f12e1736 René Nussbaumer
# the Free Software Foundation; either version 2 of the License, or
9 f12e1736 René Nussbaumer
# (at your option) any later version.
10 f12e1736 René Nussbaumer
#
11 f12e1736 René Nussbaumer
# This program is distributed in the hope that it will be useful, but
12 f12e1736 René Nussbaumer
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 f12e1736 René Nussbaumer
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 f12e1736 René Nussbaumer
# General Public License for more details.
15 f12e1736 René Nussbaumer
#
16 f12e1736 René Nussbaumer
# You should have received a copy of the GNU General Public License
17 f12e1736 René Nussbaumer
# along with this program; if not, write to the Free Software
18 f12e1736 René Nussbaumer
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 f12e1736 René Nussbaumer
# 02110-1301, USA.
20 f12e1736 René Nussbaumer
21 f12e1736 René Nussbaumer
"""Script for testing ganeti.runtime"""
22 f12e1736 René Nussbaumer
23 f12e1736 René Nussbaumer
from ganeti import constants
24 f12e1736 René Nussbaumer
from ganeti import errors
25 f12e1736 René Nussbaumer
from ganeti import runtime
26 f12e1736 René Nussbaumer
27 f12e1736 René Nussbaumer
import testutils
28 44fbd23b René Nussbaumer
import unittest
29 f12e1736 René Nussbaumer
30 f12e1736 René Nussbaumer
31 f12e1736 René Nussbaumer
class _EntStub:
32 f12e1736 René Nussbaumer
  def __init__(self, uid=None, gid=None):
33 f12e1736 René Nussbaumer
    self.pw_uid = uid
34 f12e1736 René Nussbaumer
    self.gr_gid = gid
35 f12e1736 René Nussbaumer
36 f12e1736 René Nussbaumer
37 f12e1736 René Nussbaumer
def _StubGetpwnam(user):
38 f12e1736 René Nussbaumer
  users = {
39 f12e1736 René Nussbaumer
    constants.MASTERD_USER: _EntStub(uid=0),
40 f12e1736 René Nussbaumer
    constants.CONFD_USER: _EntStub(uid=1),
41 f12e1736 René Nussbaumer
    constants.RAPI_USER: _EntStub(uid=2),
42 f12e1736 René Nussbaumer
    constants.NODED_USER: _EntStub(uid=3),
43 f12e1736 René Nussbaumer
    }
44 f12e1736 René Nussbaumer
  return users[user]
45 f12e1736 René Nussbaumer
46 f12e1736 René Nussbaumer
47 f12e1736 René Nussbaumer
def _StubGetgrnam(group):
48 f12e1736 René Nussbaumer
  groups = {
49 f12e1736 René Nussbaumer
    constants.MASTERD_GROUP: _EntStub(gid=0),
50 f12e1736 René Nussbaumer
    constants.CONFD_GROUP: _EntStub(gid=1),
51 f12e1736 René Nussbaumer
    constants.RAPI_GROUP: _EntStub(gid=2),
52 f12e1736 René Nussbaumer
    constants.DAEMONS_GROUP: _EntStub(gid=3),
53 f12e1736 René Nussbaumer
    constants.ADMIN_GROUP: _EntStub(gid=4),
54 44fbd23b René Nussbaumer
    constants.NODED_GROUP: _EntStub(gid=5),
55 f12e1736 René Nussbaumer
    }
56 f12e1736 René Nussbaumer
  return groups[group]
57 f12e1736 René Nussbaumer
58 f12e1736 René Nussbaumer
59 f12e1736 René Nussbaumer
def _RaisingStubGetpwnam(user):
60 f12e1736 René Nussbaumer
  raise KeyError("user not found")
61 f12e1736 René Nussbaumer
62 f12e1736 René Nussbaumer
63 f12e1736 René Nussbaumer
def _RaisingStubGetgrnam(group):
64 f12e1736 René Nussbaumer
  raise KeyError("group not found")
65 f12e1736 René Nussbaumer
66 f12e1736 René Nussbaumer
67 f12e1736 René Nussbaumer
class ResolverStubRaising(object):
68 f12e1736 René Nussbaumer
  def __init__(self):
69 f12e1736 René Nussbaumer
    raise errors.ConfigurationError("No entries")
70 f12e1736 René Nussbaumer
71 f12e1736 René Nussbaumer
72 44fbd23b René Nussbaumer
class TestErrors(unittest.TestCase):
73 44fbd23b René Nussbaumer
  def setUp(self):
74 44fbd23b René Nussbaumer
    self.resolver = runtime.GetentResolver(_getpwnam=_StubGetpwnam,
75 44fbd23b René Nussbaumer
                                           _getgrnam=_StubGetgrnam)
76 f12e1736 René Nussbaumer
77 44fbd23b René Nussbaumer
  def testEverythingSuccessful(self):
78 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.masterd_uid,
79 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.MASTERD_USER).pw_uid)
80 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.masterd_gid,
81 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.MASTERD_GROUP).gr_gid)
82 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.confd_uid,
83 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.CONFD_USER).pw_uid)
84 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.confd_gid,
85 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.CONFD_GROUP).gr_gid)
86 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.rapi_uid,
87 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.RAPI_USER).pw_uid)
88 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.rapi_gid,
89 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.RAPI_GROUP).gr_gid)
90 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.noded_uid,
91 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.NODED_USER).pw_uid)
92 f12e1736 René Nussbaumer
93 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.daemons_gid,
94 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.DAEMONS_GROUP).gr_gid)
95 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.admin_gid,
96 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.ADMIN_GROUP).gr_gid)
97 f12e1736 René Nussbaumer
98 f12e1736 René Nussbaumer
  def testUserNotFound(self):
99 f12e1736 René Nussbaumer
    self.assertRaises(errors.ConfigurationError, runtime.GetentResolver,
100 f12e1736 René Nussbaumer
                      _getpwnam=_RaisingStubGetpwnam, _getgrnam=_StubGetgrnam)
101 f12e1736 René Nussbaumer
102 f12e1736 René Nussbaumer
  def testGroupNotFound(self):
103 f12e1736 René Nussbaumer
    self.assertRaises(errors.ConfigurationError, runtime.GetentResolver,
104 f12e1736 René Nussbaumer
                      _getpwnam=_StubGetpwnam, _getgrnam=_RaisingStubGetgrnam)
105 f12e1736 René Nussbaumer
106 f12e1736 René Nussbaumer
  def testUserNotFoundGetEnts(self):
107 f12e1736 René Nussbaumer
    self.assertRaises(errors.ConfigurationError, runtime.GetEnts,
108 f12e1736 René Nussbaumer
                      resolver=ResolverStubRaising)
109 f12e1736 René Nussbaumer
110 44fbd23b René Nussbaumer
  def testLookupForUser(self):
111 44fbd23b René Nussbaumer
    master_stub = _StubGetpwnam(constants.MASTERD_USER)
112 44fbd23b René Nussbaumer
    rapi_stub = _StubGetpwnam(constants.RAPI_USER)
113 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.LookupUid(master_stub.pw_uid),
114 44fbd23b René Nussbaumer
                     constants.MASTERD_USER)
115 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.LookupUid(rapi_stub.pw_uid),
116 44fbd23b René Nussbaumer
                     constants.RAPI_USER)
117 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.LookupUser(constants.MASTERD_USER),
118 44fbd23b René Nussbaumer
                     master_stub.pw_uid)
119 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.LookupUser(constants.RAPI_USER),
120 44fbd23b René Nussbaumer
                     rapi_stub.pw_uid)
121 44fbd23b René Nussbaumer
122 44fbd23b René Nussbaumer
  def testLookupForGroup(self):
123 44fbd23b René Nussbaumer
    master_stub = _StubGetgrnam(constants.MASTERD_GROUP)
124 44fbd23b René Nussbaumer
    rapi_stub = _StubGetgrnam(constants.RAPI_GROUP)
125 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.LookupGid(master_stub.gr_gid),
126 44fbd23b René Nussbaumer
                     constants.MASTERD_GROUP)
127 44fbd23b René Nussbaumer
    self.assertEqual(self.resolver.LookupGid(rapi_stub.gr_gid),
128 44fbd23b René Nussbaumer
                     constants.RAPI_GROUP)
129 44fbd23b René Nussbaumer
130 44fbd23b René Nussbaumer
  def testLookupForUserNotFound(self):
131 44fbd23b René Nussbaumer
    self.assertRaises(errors.ConfigurationError, self.resolver.LookupUid, 9999)
132 44fbd23b René Nussbaumer
    self.assertRaises(errors.ConfigurationError,
133 44fbd23b René Nussbaumer
                      self.resolver.LookupUser, "does-not-exist-foo")
134 44fbd23b René Nussbaumer
135 44fbd23b René Nussbaumer
  def testLookupForGroupNotFound(self):
136 44fbd23b René Nussbaumer
    self.assertRaises(errors.ConfigurationError, self.resolver.LookupGid, 9999)
137 44fbd23b René Nussbaumer
    self.assertRaises(errors.ConfigurationError,
138 44fbd23b René Nussbaumer
                      self.resolver.LookupGroup, "does-not-exist-foo")
139 44fbd23b René Nussbaumer
140 f12e1736 René Nussbaumer
141 f12e1736 René Nussbaumer
if __name__ == "__main__":
142 f12e1736 René Nussbaumer
  testutils.GanetiTestProgram()