Пример #1
0
    def testEqual(self):
        self.assertTrue(self.ipv4 == ipaddr.IPv4Network('1.2.3.4/24'))
        self.assertFalse(self.ipv4 == ipaddr.IPv4Network('1.2.3.4/23'))
        self.assertFalse(self.ipv4 == ipaddr.IPv6Network('::1.2.3.4/24'))
        self.assertFalse(self.ipv4 == '')
        self.assertFalse(self.ipv4 == [])
        self.assertFalse(self.ipv4 == 2)
        self.assertTrue(ipaddr.IPNetwork('1.1.1.1/32') ==
                        ipaddr.IPAddress('1.1.1.1'))
        self.assertTrue(ipaddr.IPNetwork('1.1.1.1/24') ==
                        ipaddr.IPAddress('1.1.1.1'))
        self.assertFalse(ipaddr.IPNetwork('1.1.1.0/24') ==
                         ipaddr.IPAddress('1.1.1.1'))

        self.assertTrue(self.ipv6 ==
            ipaddr.IPv6Network('2001:658:22a:cafe:200::1/64'))
        self.assertTrue(ipaddr.IPNetwork('::1/128') ==
                        ipaddr.IPAddress('::1'))
        self.assertTrue(ipaddr.IPNetwork('::1/127') ==
                        ipaddr.IPAddress('::1'))
        self.assertFalse(ipaddr.IPNetwork('::0/127') ==
                         ipaddr.IPAddress('::1'))
        self.assertFalse(self.ipv6 ==
            ipaddr.IPv6Network('2001:658:22a:cafe:200::1/63'))
        self.assertFalse(self.ipv6 == ipaddr.IPv4Network('1.2.3.4/23'))
        self.assertFalse(self.ipv6 == '')
        self.assertFalse(self.ipv6 == [])
        self.assertFalse(self.ipv6 == 2)
Пример #2
0
    def testAutoMasking(self):
        addr1 = ipaddr.IPv4Network('1.1.1.255/24')
        addr1_masked = ipaddr.IPv4Network('1.1.1.0/24')
        self.assertEqual(addr1_masked, addr1.masked())

        addr2 = ipaddr.IPv6Network('2000:cafe::efac:100/96')
        addr2_masked = ipaddr.IPv6Network('2000:cafe::/96')
        self.assertEqual(addr2_masked, addr2.masked())
Пример #3
0
 def testEmbeddedIpv4(self):
     ipv4_string = '192.168.0.1'
     ipv4 = ipaddr.IPv4Network(ipv4_string)
     v4compat_ipv6 = ipaddr.IPv6Network('::%s' % ipv4_string)
     self.assertEqual(int(v4compat_ipv6.ip), int(ipv4.ip))
     v4mapped_ipv6 = ipaddr.IPv6Network('::ffff:%s' % ipv4_string)
     self.assertNotEqual(v4mapped_ipv6.ip, ipv4.ip)
     self.assertRaises(ipaddr.AddressValueError, ipaddr.IPv6Network,
                       '2001:1.1.1.1:1.1.1.1')
Пример #4
0
 def testExplodeShortHandIpStr(self):
     addr1 = ipaddr.IPv6Network('2001::1')
     addr2 = ipaddr.IPv6Address('2001:0:5ef5:79fd:0:59d:a0e5:ba1')
     self.assertEqual('2001:0000:0000:0000:0000:0000:0000:0001/128',
                      addr1.exploded)
     self.assertEqual('0000:0000:0000:0000:0000:0000:0000:0001/128',
                      ipaddr.IPv6Network('::1/128').exploded)
     # issue 77
     self.assertEqual('2001:0000:5ef5:79fd:0000:059d:a0e5:0ba1',
                      addr2.exploded)
Пример #5
0
    def testGetSupernet(self):
        self.assertEqual(self.ipv4.supernet().prefixlen, 23)
        self.assertEqual(str(self.ipv4.supernet().network), '1.2.2.0')
        self.assertEqual(ipaddr.IPv4Network('0.0.0.0/0').supernet(),
                         ipaddr.IPv4Network('0.0.0.0/0'))

        self.assertEqual(self.ipv6.supernet().prefixlen, 63)
        self.assertEqual(str(self.ipv6.supernet().network),
                         '2001:658:22a:cafe::')
        self.assertEqual(ipaddr.IPv6Network('::0/0').supernet(),
                         ipaddr.IPv6Network('::0/0'))
Пример #6
0
 def testPacked(self):
     self.assertEqual(self.ipv4.packed,
                      _cb('\x01\x02\x03\x04'))
     self.assertEqual(ipaddr.IPv4Network('255.254.253.252').packed,
                      _cb('\xff\xfe\xfd\xfc'))
     self.assertEqual(self.ipv6.packed,
                      _cb('\x20\x01\x06\x58\x02\x2a\xca\xfe'
                          '\x02\x00\x00\x00\x00\x00\x00\x01'))
     self.assertEqual(ipaddr.IPv6Network('ffff:2:3:4:ffff::').packed,
                      _cb('\xff\xff\x00\x02\x00\x03\x00\x04\xff\xff'
                         + '\x00' * 6))
     self.assertEqual(ipaddr.IPv6Network('::1:0:0:0:0').packed,
                      _cb('\x00' * 6 + '\x00\x01' + '\x00' * 8))
Пример #7
0
 def testCompressIPv6Address(self):
     test_addresses = {
         '1:2:3:4:5:6:7:8': '1:2:3:4:5:6:7:8/128',
         '2001:0:0:4:0:0:0:8': '2001:0:0:4::8/128',
         '2001:0:0:4:5:6:7:8': '2001::4:5:6:7:8/128',
         '2001:0:3:4:5:6:7:8': '2001:0:3:4:5:6:7:8/128',
         '2001:0:3:4:5:6:7:8': '2001:0:3:4:5:6:7:8/128',
         '0:0:3:0:0:0:0:ffff': '0:0:3::ffff/128',
         '0:0:0:4:0:0:0:ffff': '::4:0:0:0:ffff/128',
         '0:0:0:0:5:0:0:ffff': '::5:0:0:ffff/128',
         '1:0:0:4:0:0:7:8': '1::4:0:0:7:8/128',
         '0:0:0:0:0:0:0:0': '::/128',
         '0:0:0:0:0:0:0:0/0': '::/0',
         '0:0:0:0:0:0:0:1': '::1/128',
         '2001:0658:022a:cafe:0000:0000:0000:0000/66':
         '2001:658:22a:cafe::/66',
         '::1.2.3.4': '::102:304/128',
         '1:2:3:4:5:ffff:1.2.3.4': '1:2:3:4:5:ffff:102:304/128',
         '::7:6:5:4:3:2:1': '0:7:6:5:4:3:2:1/128',
         '::7:6:5:4:3:2:0': '0:7:6:5:4:3:2:0/128',
         '7:6:5:4:3:2:1::': '7:6:5:4:3:2:1:0/128',
         '0:6:5:4:3:2:1::': '0:6:5:4:3:2:1:0/128',
         }
     for uncompressed, compressed in test_addresses.items():
         self.assertEqual(compressed, str(ipaddr.IPv6Network(uncompressed)))
Пример #8
0
    def testNotEqual(self):
        self.assertFalse(self.ipv4 != ipaddr.IPv4Network('1.2.3.4/24'))
        self.assertTrue(self.ipv4 != ipaddr.IPv4Network('1.2.3.4/23'))
        self.assertTrue(self.ipv4 != ipaddr.IPv6Network('::1.2.3.4/24'))
        self.assertTrue(self.ipv4 != '')
        self.assertTrue(self.ipv4 != [])
        self.assertTrue(self.ipv4 != 2)

        addr2 = ipaddr.IPAddress('2001:658:22a:cafe:200::1')
        self.assertFalse(self.ipv6 !=
            ipaddr.IPv6Network('2001:658:22a:cafe:200::1/64'))
        self.assertTrue(self.ipv6 !=
            ipaddr.IPv6Network('2001:658:22a:cafe:200::1/63'))
        self.assertTrue(self.ipv6 != ipaddr.IPv4Network('1.2.3.4/23'))
        self.assertTrue(self.ipv6 != '')
        self.assertTrue(self.ipv6 != [])
        self.assertTrue(self.ipv6 != 2)
Пример #9
0
    def testZeroNetmask(self):
        ipv4_zero_netmask = ipaddr.IPv4Network('1.2.3.4/0')
        self.assertEqual(int(ipv4_zero_netmask.netmask), 0)
        self.assertTrue(ipv4_zero_netmask._is_valid_netmask(str(0)))

        ipv6_zero_netmask = ipaddr.IPv6Network('::1/0')
        self.assertEqual(int(ipv6_zero_netmask.netmask), 0)
        self.assertTrue(ipv6_zero_netmask._is_valid_netmask(str(0)))
Пример #10
0
    def testIpFromInt(self):
        self.assertEqual(self.ipv4.ip, ipaddr.IPv4Network(16909060).ip)
        self.assertRaises(ipaddr.AddressValueError,
                          ipaddr.IPv4Network, 2**32)
        self.assertRaises(ipaddr.AddressValueError,
                          ipaddr.IPv4Network, -1)

        ipv4 = ipaddr.IPNetwork('1.2.3.4')
        ipv6 = ipaddr.IPNetwork('2001:658:22a:cafe:200:0:0:1')
        self.assertEqual(ipv4, ipaddr.IPNetwork(int(ipv4)))
        self.assertEqual(ipv6, ipaddr.IPNetwork(int(ipv6)))

        v6_int = 42540616829182469433547762482097946625
        self.assertEqual(self.ipv6.ip, ipaddr.IPv6Network(v6_int).ip)
        self.assertRaises(ipaddr.AddressValueError,
                          ipaddr.IPv6Network, 2**128)
        self.assertRaises(ipaddr.AddressValueError,
                          ipaddr.IPv6Network, -1)

        self.assertEqual(ipaddr.IPNetwork(self.ipv4.ip).version, 4)
        self.assertEqual(ipaddr.IPNetwork(self.ipv6.ip).version, 6)
Пример #11
0
    def testNetworkComparison(self):
        # ip1 and ip2 have the same network address
        ip1 = ipaddr.IPv4Network('1.1.1.0/24')
        ip2 = ipaddr.IPv4Network('1.1.1.1/24')
        ip3 = ipaddr.IPv4Network('1.1.2.0/24')

        self.assertTrue(ip1 < ip3)
        self.assertTrue(ip3 > ip2)

        self.assertEqual(ip1.compare_networks(ip2), 0)
        self.assertTrue(ip1._get_networks_key() == ip2._get_networks_key())
        self.assertEqual(ip1.compare_networks(ip3), -1)
        self.assertTrue(ip1._get_networks_key() < ip3._get_networks_key())

        ip1 = ipaddr.IPv6Network('2001::2000/96')
        ip2 = ipaddr.IPv6Network('2001::2001/96')
        ip3 = ipaddr.IPv6Network('2001:ffff::2000/96')

        self.assertTrue(ip1 < ip3)
        self.assertTrue(ip3 > ip2)
        self.assertEqual(ip1.compare_networks(ip2), 0)
        self.assertTrue(ip1._get_networks_key() == ip2._get_networks_key())
        self.assertEqual(ip1.compare_networks(ip3), -1)
        self.assertTrue(ip1._get_networks_key() < ip3._get_networks_key())

        # Test comparing different protocols.
        # Should always raise a TypeError.
        ipv6 = ipaddr.IPv6Network('::/0')
        ipv4 = ipaddr.IPv4Network('0.0.0.0/0')
        self.assertRaises(TypeError, ipv4.__lt__, ipv6)
        self.assertRaises(TypeError, ipv4.__gt__, ipv6)
        self.assertRaises(TypeError, ipv6.__lt__, ipv4)
        self.assertRaises(TypeError, ipv6.__gt__, ipv4)

        # Regression test for issue 19.
        ip1 = ipaddr.IPNetwork('10.1.2.128/25')
        self.assertFalse(ip1 < ip1)
        self.assertFalse(ip1 > ip1)
        ip2 = ipaddr.IPNetwork('10.1.3.0/24')
        self.assertTrue(ip1 < ip2)
        self.assertFalse(ip2 < ip1)
        self.assertFalse(ip1 > ip2)
        self.assertTrue(ip2 > ip1)
        ip3 = ipaddr.IPNetwork('10.1.3.0/25')
        self.assertTrue(ip2 < ip3)
        self.assertFalse(ip3 < ip2)
        self.assertFalse(ip2 > ip3)
        self.assertTrue(ip3 > ip2)

        # Regression test for issue 28.
        ip1 = ipaddr.IPNetwork('10.10.10.0/31')
        ip2 = ipaddr.IPNetwork('10.10.10.0')
        ip3 = ipaddr.IPNetwork('10.10.10.2/31')
        ip4 = ipaddr.IPNetwork('10.10.10.2')
        sorted = [ip1, ip2, ip3, ip4]
        unsorted = [ip2, ip4, ip1, ip3]
        unsorted.sort()
        self.assertEqual(sorted, unsorted)
        unsorted = [ip4, ip1, ip3, ip2]
        unsorted.sort()
        self.assertEqual(sorted, unsorted)
        self.assertRaises(TypeError, ip1.__lt__, ipaddr.IPAddress('10.10.10.0'))
        self.assertRaises(TypeError, ip2.__lt__, ipaddr.IPAddress('10.10.10.0'))

        # <=, >=
        self.assertTrue(ipaddr.IPNetwork('1.1.1.1') <=
                        ipaddr.IPNetwork('1.1.1.1'))
        self.assertTrue(ipaddr.IPNetwork('1.1.1.1') <=
                        ipaddr.IPNetwork('1.1.1.2'))
        self.assertFalse(ipaddr.IPNetwork('1.1.1.2') <=
                        ipaddr.IPNetwork('1.1.1.1'))
        self.assertTrue(ipaddr.IPNetwork('::1') <= ipaddr.IPNetwork('::1'))
        self.assertTrue(ipaddr.IPNetwork('::1') <= ipaddr.IPNetwork('::2'))
        self.assertFalse(ipaddr.IPNetwork('::2') <= ipaddr.IPNetwork('::1'))
Пример #12
0
    def testCollapsing(self):
        # test only IP addresses including some duplicates
        ip1 = ipaddr.IPv4Address('1.1.1.0')
        ip2 = ipaddr.IPv4Address('1.1.1.1')
        ip3 = ipaddr.IPv4Address('1.1.1.2')
        ip4 = ipaddr.IPv4Address('1.1.1.3')
        ip5 = ipaddr.IPv4Address('1.1.1.4')
        ip6 = ipaddr.IPv4Address('1.1.1.0')
        # check that addreses are subsumed properly.
        collapsed = ipaddr.collapse_address_list([ip1, ip2, ip3, ip4, ip5, ip6])
        self.assertEqual(collapsed, [ipaddr.IPv4Network('1.1.1.0/30'),
                                     ipaddr.IPv4Network('1.1.1.4/32')])

        # test a mix of IP addresses and networks including some duplicates
        ip1 = ipaddr.IPv4Address('1.1.1.0')
        ip2 = ipaddr.IPv4Address('1.1.1.1')
        ip3 = ipaddr.IPv4Address('1.1.1.2')
        ip4 = ipaddr.IPv4Address('1.1.1.3')
        ip5 = ipaddr.IPv4Network('1.1.1.4/30')
        ip6 = ipaddr.IPv4Network('1.1.1.4/30')
        # check that addreses are subsumed properly.
        collapsed = ipaddr.collapse_address_list([ip5, ip1, ip2, ip3, ip4, ip6])
        self.assertEqual(collapsed, [ipaddr.IPv4Network('1.1.1.0/29')])

        # test only IP networks
        ip1 = ipaddr.IPv4Network('1.1.0.0/24')
        ip2 = ipaddr.IPv4Network('1.1.1.0/24')
        ip3 = ipaddr.IPv4Network('1.1.2.0/24')
        ip4 = ipaddr.IPv4Network('1.1.3.0/24')
        ip5 = ipaddr.IPv4Network('1.1.4.0/24')
        # stored in no particular order b/c we want CollapseAddr to call [].sort
        ip6 = ipaddr.IPv4Network('1.1.0.0/22')
        # check that addreses are subsumed properly.
        collapsed = ipaddr.collapse_address_list([ip1, ip2, ip3, ip4, ip5, ip6])
        self.assertEqual(collapsed, [ipaddr.IPv4Network('1.1.0.0/22'),
                                     ipaddr.IPv4Network('1.1.4.0/24')])

        # test that two addresses are supernet'ed properly
        collapsed = ipaddr.collapse_address_list([ip1, ip2])
        self.assertEqual(collapsed, [ipaddr.IPv4Network('1.1.0.0/23')])

        # test same IP networks
        ip_same1 = ip_same2 = ipaddr.IPv4Network('1.1.1.1/32')
        self.assertEqual(ipaddr.collapse_address_list([ip_same1, ip_same2]),
                         [ip_same1])

        # test same IP addresses
        ip_same1 = ip_same2 = ipaddr.IPv4Address('1.1.1.1')
        self.assertEqual(ipaddr.collapse_address_list([ip_same1, ip_same2]),
                         [ipaddr.IPNetwork('1.1.1.1/32')])
        ip1 = ipaddr.IPv6Network('::2001:1/100')
        ip2 = ipaddr.IPv6Network('::2002:1/120')
        ip3 = ipaddr.IPv6Network('::2001:1/96')
        # test that ipv6 addresses are subsumed properly.
        collapsed = ipaddr.collapse_address_list([ip1, ip2, ip3])
        self.assertEqual(collapsed, [ip3])

        # the toejam test
        ip1 = ipaddr.IPAddress('1.1.1.1')
        ip2 = ipaddr.IPAddress('::1')
        self.assertRaises(TypeError, ipaddr.collapse_address_list,
                          [ip1, ip2])
Пример #13
0
 def testSlash128Constructor(self):
     self.assertEqual(str(ipaddr.IPv6Network('::1/128')),
                               '::1/128')
Пример #14
0
 def testRepr(self):
     self.assertEqual("IPv4Network('1.2.3.4/32')",
                      repr(ipaddr.IPv4Network('1.2.3.4')))
     self.assertEqual("IPv6Network('::1/128')",
                      repr(ipaddr.IPv6Network('::1')))
Пример #15
0
 def setUp(self):
     self.ipv4 = ipaddr.IPv4Network('1.2.3.4/24')
     self.ipv4_hostmask = ipaddr.IPv4Network('10.0.0.1/0.255.255.255')
     self.ipv6 = ipaddr.IPv6Network('2001:658:22a:cafe:200:0:0:1/64')
Пример #16
0
 def testGetSubnetForSingle128(self):
     ip = ipaddr.IPv6Network('::1/128')
     subnets1 = [str(x) for x in ip.subnet()]
     subnets2 = [str(x) for x in ip.subnet(2)]
     self.assertEqual(subnets1, ['::1/128'])
     self.assertEqual(subnets1, subnets2)