Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.utils.nodesetup_unittest.py @ 1a2eb2dc

History | View | Annotate | Download (4 kB)

1 17b97ab3 Michael Hanselmann
#!/usr/bin/python
2 17b97ab3 Michael Hanselmann
#
3 17b97ab3 Michael Hanselmann
4 8f9a87c5 Iustin Pop
# Copyright (C) 2006, 2007, 2010, 2011 Google Inc.
5 17b97ab3 Michael Hanselmann
#
6 17b97ab3 Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 17b97ab3 Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 17b97ab3 Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 17b97ab3 Michael Hanselmann
# (at your option) any later version.
10 17b97ab3 Michael Hanselmann
#
11 17b97ab3 Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 17b97ab3 Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 17b97ab3 Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 17b97ab3 Michael Hanselmann
# General Public License for more details.
15 17b97ab3 Michael Hanselmann
#
16 17b97ab3 Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 17b97ab3 Michael Hanselmann
# along with this program; if not, write to the Free Software
18 17b97ab3 Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 17b97ab3 Michael Hanselmann
# 02110-1301, USA.
20 17b97ab3 Michael Hanselmann
21 17b97ab3 Michael Hanselmann
22 17b97ab3 Michael Hanselmann
"""Script for testing ganeti.utils.nodesetup"""
23 17b97ab3 Michael Hanselmann
24 17b97ab3 Michael Hanselmann
import os
25 17b97ab3 Michael Hanselmann
import tempfile
26 17b97ab3 Michael Hanselmann
import unittest
27 17b97ab3 Michael Hanselmann
28 17b97ab3 Michael Hanselmann
from ganeti import constants
29 17b97ab3 Michael Hanselmann
from ganeti import utils
30 17b97ab3 Michael Hanselmann
31 17b97ab3 Michael Hanselmann
import testutils
32 17b97ab3 Michael Hanselmann
33 17b97ab3 Michael Hanselmann
34 17b97ab3 Michael Hanselmann
class TestEtcHosts(testutils.GanetiTestCase):
35 17b97ab3 Michael Hanselmann
  """Test functions modifying /etc/hosts"""
36 17b97ab3 Michael Hanselmann
37 17b97ab3 Michael Hanselmann
  def setUp(self):
38 17b97ab3 Michael Hanselmann
    testutils.GanetiTestCase.setUp(self)
39 17b97ab3 Michael Hanselmann
    self.tmpname = self._CreateTempFile()
40 17b97ab3 Michael Hanselmann
    handle = open(self.tmpname, "w")
41 17b97ab3 Michael Hanselmann
    try:
42 17b97ab3 Michael Hanselmann
      handle.write("# This is a test file for /etc/hosts\n")
43 17b97ab3 Michael Hanselmann
      handle.write("127.0.0.1\tlocalhost\n")
44 17b97ab3 Michael Hanselmann
      handle.write("192.0.2.1 router gw\n")
45 17b97ab3 Michael Hanselmann
    finally:
46 17b97ab3 Michael Hanselmann
      handle.close()
47 eea3b572 Bernardo Dal Seno
    os.chmod(self.tmpname, 0644)
48 17b97ab3 Michael Hanselmann
49 17b97ab3 Michael Hanselmann
  def testSettingNewIp(self):
50 17b97ab3 Michael Hanselmann
    utils.SetEtcHostsEntry(self.tmpname, "198.51.100.4", "myhost.example.com",
51 17b97ab3 Michael Hanselmann
                           ["myhost"])
52 17b97ab3 Michael Hanselmann
53 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
54 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
55 17b97ab3 Michael Hanselmann
      "127.0.0.1\tlocalhost\n"
56 17b97ab3 Michael Hanselmann
      "192.0.2.1 router gw\n"
57 17b97ab3 Michael Hanselmann
      "198.51.100.4\tmyhost.example.com myhost\n")
58 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
59 17b97ab3 Michael Hanselmann
60 17b97ab3 Michael Hanselmann
  def testSettingExistingIp(self):
61 17b97ab3 Michael Hanselmann
    utils.SetEtcHostsEntry(self.tmpname, "192.0.2.1", "myhost.example.com",
62 17b97ab3 Michael Hanselmann
                           ["myhost"])
63 17b97ab3 Michael Hanselmann
64 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
65 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
66 17b97ab3 Michael Hanselmann
      "127.0.0.1\tlocalhost\n"
67 17b97ab3 Michael Hanselmann
      "192.0.2.1\tmyhost.example.com myhost\n")
68 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
69 17b97ab3 Michael Hanselmann
70 17b97ab3 Michael Hanselmann
  def testSettingDuplicateName(self):
71 17b97ab3 Michael Hanselmann
    utils.SetEtcHostsEntry(self.tmpname, "198.51.100.4", "myhost", ["myhost"])
72 17b97ab3 Michael Hanselmann
73 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
74 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
75 17b97ab3 Michael Hanselmann
      "127.0.0.1\tlocalhost\n"
76 17b97ab3 Michael Hanselmann
      "192.0.2.1 router gw\n"
77 17b97ab3 Michael Hanselmann
      "198.51.100.4\tmyhost\n")
78 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
79 17b97ab3 Michael Hanselmann
80 8f9a87c5 Iustin Pop
  def testSettingOrdering(self):
81 8f9a87c5 Iustin Pop
    utils.SetEtcHostsEntry(self.tmpname, "127.0.0.1", "localhost.localdomain",
82 8f9a87c5 Iustin Pop
                           ["localhost"])
83 8f9a87c5 Iustin Pop
84 8f9a87c5 Iustin Pop
    self.assertFileContent(self.tmpname,
85 8f9a87c5 Iustin Pop
      "# This is a test file for /etc/hosts\n"
86 8f9a87c5 Iustin Pop
      "127.0.0.1\tlocalhost.localdomain localhost\n"
87 8f9a87c5 Iustin Pop
      "192.0.2.1 router gw\n")
88 8f9a87c5 Iustin Pop
    self.assertFileMode(self.tmpname, 0644)
89 8f9a87c5 Iustin Pop
90 17b97ab3 Michael Hanselmann
  def testRemovingExistingHost(self):
91 17b97ab3 Michael Hanselmann
    utils.RemoveEtcHostsEntry(self.tmpname, "router")
92 17b97ab3 Michael Hanselmann
93 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
94 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
95 17b97ab3 Michael Hanselmann
      "127.0.0.1\tlocalhost\n"
96 17b97ab3 Michael Hanselmann
      "192.0.2.1 gw\n")
97 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
98 17b97ab3 Michael Hanselmann
99 17b97ab3 Michael Hanselmann
  def testRemovingSingleExistingHost(self):
100 17b97ab3 Michael Hanselmann
    utils.RemoveEtcHostsEntry(self.tmpname, "localhost")
101 17b97ab3 Michael Hanselmann
102 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
103 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
104 17b97ab3 Michael Hanselmann
      "192.0.2.1 router gw\n")
105 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
106 17b97ab3 Michael Hanselmann
107 17b97ab3 Michael Hanselmann
  def testRemovingNonExistingHost(self):
108 17b97ab3 Michael Hanselmann
    utils.RemoveEtcHostsEntry(self.tmpname, "myhost")
109 17b97ab3 Michael Hanselmann
110 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
111 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
112 17b97ab3 Michael Hanselmann
      "127.0.0.1\tlocalhost\n"
113 17b97ab3 Michael Hanselmann
      "192.0.2.1 router gw\n")
114 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
115 17b97ab3 Michael Hanselmann
116 17b97ab3 Michael Hanselmann
  def testRemovingAlias(self):
117 17b97ab3 Michael Hanselmann
    utils.RemoveEtcHostsEntry(self.tmpname, "gw")
118 17b97ab3 Michael Hanselmann
119 17b97ab3 Michael Hanselmann
    self.assertFileContent(self.tmpname,
120 17b97ab3 Michael Hanselmann
      "# This is a test file for /etc/hosts\n"
121 17b97ab3 Michael Hanselmann
      "127.0.0.1\tlocalhost\n"
122 17b97ab3 Michael Hanselmann
      "192.0.2.1 router\n")
123 17b97ab3 Michael Hanselmann
    self.assertFileMode(self.tmpname, 0644)
124 17b97ab3 Michael Hanselmann
125 17b97ab3 Michael Hanselmann
126 17b97ab3 Michael Hanselmann
if __name__ == "__main__":
127 17b97ab3 Michael Hanselmann
  testutils.GanetiTestProgram()