Revision 8b312c1d test/ganeti.netutils_unittest.py

b/test/ganeti.netutils_unittest.py
140 140
      netutils.HostInfo.NormalizeName(value)
141 141

  
142 142

  
143
class TestIsValidIP4(unittest.TestCase):
144
  def test(self):
145
    self.assert_(netutils.IsValidIP4("127.0.0.1"))
146
    self.assert_(netutils.IsValidIP4("0.0.0.0"))
147
    self.assert_(netutils.IsValidIP4("255.255.255.255"))
148
    self.assertFalse(netutils.IsValidIP4("0"))
149
    self.assertFalse(netutils.IsValidIP4("1"))
150
    self.assertFalse(netutils.IsValidIP4("1.1.1"))
151
    self.assertFalse(netutils.IsValidIP4("255.255.255.256"))
152
    self.assertFalse(netutils.IsValidIP4("::1"))
153

  
154

  
155
class TestIsValidIP6(unittest.TestCase):
156
  def test(self):
157
    self.assert_(netutils.IsValidIP6("::"))
158
    self.assert_(netutils.IsValidIP6("::1"))
159
    self.assert_(netutils.IsValidIP6("1" + (":1" * 7)))
160
    self.assert_(netutils.IsValidIP6("ffff" + (":ffff" * 7)))
161
    self.assertFalse(netutils.IsValidIP6("0"))
162
    self.assertFalse(netutils.IsValidIP6(":1"))
163
    self.assertFalse(netutils.IsValidIP6("f" + (":f" * 6)))
164
    self.assertFalse(netutils.IsValidIP6("fffg" + (":ffff" * 7)))
165
    self.assertFalse(netutils.IsValidIP6("fffff" + (":ffff" * 7)))
166
    self.assertFalse(netutils.IsValidIP6("1" + (":1" * 8)))
167
    self.assertFalse(netutils.IsValidIP6("127.0.0.1"))
168

  
169

  
170
class TestIsValidIP(unittest.TestCase):
171
  def test(self):
172
    self.assert_(netutils.IsValidIP("0.0.0.0"))
173
    self.assert_(netutils.IsValidIP("127.0.0.1"))
174
    self.assert_(netutils.IsValidIP("::"))
175
    self.assert_(netutils.IsValidIP("::1"))
176
    self.assertFalse(netutils.IsValidIP("0"))
177
    self.assertFalse(netutils.IsValidIP("1.1.1.256"))
178
    self.assertFalse(netutils.IsValidIP("a:g::1"))
179

  
143
class TestIPAddress(unittest.TestCase):
144
  def testIsValid(self):
145
    self.assert_(netutils.IPAddress.IsValid("0.0.0.0"))
146
    self.assert_(netutils.IPAddress.IsValid("127.0.0.1"))
147
    self.assert_(netutils.IPAddress.IsValid("::"))
148
    self.assert_(netutils.IPAddress.IsValid("::1"))
149

  
150
  def testNotIsValid(self):
151
    self.assertFalse(netutils.IPAddress.IsValid("0"))
152
    self.assertFalse(netutils.IPAddress.IsValid("1.1.1.256"))
153
    self.assertFalse(netutils.IPAddress.IsValid("a:g::1"))
154

  
155

  
156
  def testGetAddressFamily(self):
157
    fn = netutils.IPAddress.GetAddressFamily
158
    self.assertEqual(fn("127.0.0.1"), socket.AF_INET)
159
    self.assertEqual(fn("10.2.0.127"), socket.AF_INET)
160
    self.assertEqual(fn("::1"), socket.AF_INET6)
161
    self.assertEqual(fn("2001:db8::1"), socket.AF_INET6)
162
    self.assertRaises(errors.IPAddressError, fn, "0")
180 163

  
181
class TestGetAddressFamily(unittest.TestCase):
182
  def test(self):
183
    self.assertEqual(netutils.GetAddressFamily("127.0.0.1"), socket.AF_INET)
184
    self.assertEqual(netutils.GetAddressFamily("10.2.0.127"), socket.AF_INET)
185
    self.assertEqual(netutils.GetAddressFamily("::1"), socket.AF_INET6)
186
    self.assertEqual(netutils.GetAddressFamily("fe80::a00:27ff:fe08:5048"),
187
                     socket.AF_INET6)
188
    self.assertRaises(errors.GenericError, netutils.GetAddressFamily, "0")
164
  def testOwnLoopback(self):
165
    # FIXME: In a pure IPv6 environment this is no longer true
166
    self.assert_(netutils.IPAddress.Own("127.0.0.1"),
167
                 "Should own 127.0.0.1 address")
168

  
169
  def testNotOwnAddress(self):
170
    self.assertFalse(netutils.IPAddress.Own("2001:db8::1"),
171
                     "Should not own IP address 2001:db8::1")
172
    self.assertFalse(netutils.IPAddress.Own("192.0.2.1"),
173
                     "Should not own IP address 192.0.2.1")
174

  
175

  
176
class TestIP4Address(unittest.TestCase):
177
  def testGetIPIntFromString(self):
178
    fn = netutils.IP4Address._GetIPIntFromString
179
    self.assertEqual(fn("0.0.0.0"), 0)
180
    self.assertEqual(fn("0.0.0.1"), 1)
181
    self.assertEqual(fn("127.0.0.1"), 2130706433)
182
    self.assertEqual(fn("192.0.2.129"), 3221226113)
183
    self.assertEqual(fn("255.255.255.255"), 2**32 - 1)
184
    self.assertNotEqual(fn("0.0.0.0"), 1)
185
    self.assertNotEqual(fn("0.0.0.0"), 1)
186

  
187
  def testIsValid(self):
188
    self.assert_(netutils.IP4Address.IsValid("0.0.0.0"))
189
    self.assert_(netutils.IP4Address.IsValid("127.0.0.1"))
190
    self.assert_(netutils.IP4Address.IsValid("192.0.2.199"))
191
    self.assert_(netutils.IP4Address.IsValid("255.255.255.255"))
192

  
193
  def testNotIsValid(self):
194
    self.assertFalse(netutils.IP4Address.IsValid("0"))
195
    self.assertFalse(netutils.IP4Address.IsValid("1"))
196
    self.assertFalse(netutils.IP4Address.IsValid("1.1.1"))
197
    self.assertFalse(netutils.IP4Address.IsValid("255.255.255.256"))
198
    self.assertFalse(netutils.IP4Address.IsValid("::1"))
199

  
200
  def testInNetwork(self):
201
    self.assert_(netutils.IP4Address.InNetwork("127.0.0.0/8", "127.0.0.1"))
202

  
203
  def testNotInNetwork(self):
204
    self.assertFalse(netutils.IP4Address.InNetwork("192.0.2.0/24",
205
                                                   "127.0.0.1"))
206

  
207
  def testIsLoopback(self):
208
    self.assert_(netutils.IP4Address.IsLoopback("127.0.0.1"))
209

  
210
  def testNotIsLoopback(self):
211
    self.assertFalse(netutils.IP4Address.IsLoopback("192.0.2.1"))
212

  
213

  
214
class TestIP6Address(unittest.TestCase):
215
  def testGetIPIntFromString(self):
216
    fn = netutils.IP6Address._GetIPIntFromString
217
    self.assertEqual(fn("::"), 0)
218
    self.assertEqual(fn("::1"), 1)
219
    self.assertEqual(fn("2001:db8::1"),
220
                     42540766411282592856903984951653826561L)
221
    self.assertEqual(fn("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"), 2**128-1)
222
    self.assertNotEqual(netutils.IP6Address._GetIPIntFromString("::2"), 1)
223

  
224
  def testIsValid(self):
225
    self.assert_(netutils.IP6Address.IsValid("::"))
226
    self.assert_(netutils.IP6Address.IsValid("::1"))
227
    self.assert_(netutils.IP6Address.IsValid("1" + (":1" * 7)))
228
    self.assert_(netutils.IP6Address.IsValid("ffff" + (":ffff" * 7)))
229
    self.assert_(netutils.IP6Address.IsValid("::"))
230

  
231
  def testNotIsValid(self):
232
    self.assertFalse(netutils.IP6Address.IsValid("0"))
233
    self.assertFalse(netutils.IP6Address.IsValid(":1"))
234
    self.assertFalse(netutils.IP6Address.IsValid("f" + (":f" * 6)))
235
    self.assertFalse(netutils.IP6Address.IsValid("fffg" + (":ffff" * 7)))
236
    self.assertFalse(netutils.IP6Address.IsValid("fffff" + (":ffff" * 7)))
237
    self.assertFalse(netutils.IP6Address.IsValid("1" + (":1" * 8)))
238
    self.assertFalse(netutils.IP6Address.IsValid("127.0.0.1"))
239

  
240
  def testInNetwork(self):
241
    self.assert_(netutils.IP6Address.InNetwork("::1/128", "::1"))
242

  
243
  def testNotInNetwork(self):
244
    self.assertFalse(netutils.IP6Address.InNetwork("2001:db8::1/128", "::1"))
245

  
246
  def testIsLoopback(self):
247
    self.assert_(netutils.IP6Address.IsLoopback("::1"))
248

  
249
  def testNotIsLoopback(self):
250
    self.assertFalse(netutils.IP6Address.IsLoopback("2001:db8::1"))
189 251

  
190 252

  
191 253
class _BaseTcpPingTest:
......
323 385
    _BaseTcpPingDeafTest.tearDown(self)
324 386

  
325 387

  
326
class TestOwnIpAddress(unittest.TestCase):
327
  """Testcase for OwnIpAddress"""
328

  
329
  def testOwnLoopback(self):
330
    """check having the loopback ip"""
331
    self.failUnless(netutils.OwnIpAddress(constants.IP4_ADDRESS_LOCALHOST),
332
                    "Should own the loopback address")
333

  
334
  def testNowOwnAddress(self):
335
    """check that I don't own an address"""
336

  
337
    # Network 192.0.2.0/24 is reserved for test/documentation as per
338
    # RFC 5737, so we *should* not have an address of this range... if
339
    # this fails, we should extend the test to multiple addresses
340
    DST_IP = "192.0.2.1"
341
    self.failIf(netutils.OwnIpAddress(DST_IP),
342
                "Should not own IP address %s" % DST_IP)
343

  
344

  
345 388
if __name__ == "__main__":
346 389
  testutils.GanetiTestProgram()

Also available in: Unified diff