Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.runtime_unittest.py @ 7578ab0a

History | View | Annotate | Download (3.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 f12e1736 René Nussbaumer
29 f12e1736 René Nussbaumer
30 f12e1736 René Nussbaumer
class _EntStub:
31 f12e1736 René Nussbaumer
  def __init__(self, uid=None, gid=None):
32 f12e1736 René Nussbaumer
    self.pw_uid = uid
33 f12e1736 René Nussbaumer
    self.gr_gid = gid
34 f12e1736 René Nussbaumer
35 f12e1736 René Nussbaumer
36 f12e1736 René Nussbaumer
def _StubGetpwnam(user):
37 f12e1736 René Nussbaumer
  users = {
38 f12e1736 René Nussbaumer
    constants.MASTERD_USER: _EntStub(uid=0),
39 f12e1736 René Nussbaumer
    constants.CONFD_USER: _EntStub(uid=1),
40 f12e1736 René Nussbaumer
    constants.RAPI_USER: _EntStub(uid=2),
41 f12e1736 René Nussbaumer
    constants.NODED_USER: _EntStub(uid=3),
42 f12e1736 René Nussbaumer
    }
43 f12e1736 René Nussbaumer
  return users[user]
44 f12e1736 René Nussbaumer
45 f12e1736 René Nussbaumer
46 f12e1736 René Nussbaumer
def _StubGetgrnam(group):
47 f12e1736 René Nussbaumer
  groups = {
48 f12e1736 René Nussbaumer
    constants.MASTERD_GROUP: _EntStub(gid=0),
49 f12e1736 René Nussbaumer
    constants.CONFD_GROUP: _EntStub(gid=1),
50 f12e1736 René Nussbaumer
    constants.RAPI_GROUP: _EntStub(gid=2),
51 f12e1736 René Nussbaumer
    constants.DAEMONS_GROUP: _EntStub(gid=3),
52 f12e1736 René Nussbaumer
    constants.ADMIN_GROUP: _EntStub(gid=4),
53 f12e1736 René Nussbaumer
    }
54 f12e1736 René Nussbaumer
  return groups[group]
55 f12e1736 René Nussbaumer
56 f12e1736 René Nussbaumer
57 f12e1736 René Nussbaumer
def _RaisingStubGetpwnam(user):
58 f12e1736 René Nussbaumer
  raise KeyError("user not found")
59 f12e1736 René Nussbaumer
60 f12e1736 René Nussbaumer
61 f12e1736 René Nussbaumer
def _RaisingStubGetgrnam(group):
62 f12e1736 René Nussbaumer
  raise KeyError("group not found")
63 f12e1736 René Nussbaumer
64 f12e1736 René Nussbaumer
65 f12e1736 René Nussbaumer
class ResolverStubRaising(object):
66 f12e1736 René Nussbaumer
  def __init__(self):
67 f12e1736 René Nussbaumer
    raise errors.ConfigurationError("No entries")
68 f12e1736 René Nussbaumer
69 f12e1736 René Nussbaumer
70 f12e1736 René Nussbaumer
class TestErrors(testutils.GanetiTestCase):
71 f12e1736 René Nussbaumer
  def testEverythingSuccessful(self):
72 f12e1736 René Nussbaumer
    resolver = runtime.GetentResolver(_getpwnam=_StubGetpwnam,
73 f12e1736 René Nussbaumer
                                      _getgrnam=_StubGetgrnam)
74 f12e1736 René Nussbaumer
75 f12e1736 René Nussbaumer
    self.assertEqual(resolver.masterd_uid,
76 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.MASTERD_USER).pw_uid)
77 f12e1736 René Nussbaumer
    self.assertEqual(resolver.masterd_gid,
78 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.MASTERD_GROUP).gr_gid)
79 f12e1736 René Nussbaumer
    self.assertEqual(resolver.confd_uid,
80 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.CONFD_USER).pw_uid)
81 f12e1736 René Nussbaumer
    self.assertEqual(resolver.confd_gid,
82 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.CONFD_GROUP).gr_gid)
83 f12e1736 René Nussbaumer
    self.assertEqual(resolver.rapi_uid,
84 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.RAPI_USER).pw_uid)
85 f12e1736 René Nussbaumer
    self.assertEqual(resolver.rapi_gid,
86 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.RAPI_GROUP).gr_gid)
87 f12e1736 René Nussbaumer
    self.assertEqual(resolver.noded_uid,
88 f12e1736 René Nussbaumer
                     _StubGetpwnam(constants.NODED_USER).pw_uid)
89 f12e1736 René Nussbaumer
90 f12e1736 René Nussbaumer
    self.assertEqual(resolver.daemons_gid,
91 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.DAEMONS_GROUP).gr_gid)
92 f12e1736 René Nussbaumer
    self.assertEqual(resolver.admin_gid,
93 f12e1736 René Nussbaumer
                     _StubGetgrnam(constants.ADMIN_GROUP).gr_gid)
94 f12e1736 René Nussbaumer
95 f12e1736 René Nussbaumer
  def testUserNotFound(self):
96 f12e1736 René Nussbaumer
    self.assertRaises(errors.ConfigurationError, runtime.GetentResolver,
97 f12e1736 René Nussbaumer
                      _getpwnam=_RaisingStubGetpwnam, _getgrnam=_StubGetgrnam)
98 f12e1736 René Nussbaumer
99 f12e1736 René Nussbaumer
  def testGroupNotFound(self):
100 f12e1736 René Nussbaumer
    self.assertRaises(errors.ConfigurationError, runtime.GetentResolver,
101 f12e1736 René Nussbaumer
                      _getpwnam=_StubGetpwnam, _getgrnam=_RaisingStubGetgrnam)
102 f12e1736 René Nussbaumer
103 f12e1736 René Nussbaumer
  def testUserNotFoundGetEnts(self):
104 f12e1736 René Nussbaumer
    self.assertRaises(errors.ConfigurationError, runtime.GetEnts,
105 f12e1736 René Nussbaumer
                      resolver=ResolverStubRaising)
106 f12e1736 René Nussbaumer
107 f12e1736 René Nussbaumer
108 f12e1736 René Nussbaumer
if __name__ == "__main__":
109 f12e1736 René Nussbaumer
  testutils.GanetiTestProgram()