def test_pack_body(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV4) lsa_body.add_subnet_info(10, '255.255.255.0', '222.222.1.0') self.assertEqual(TestExtensionPrefix.body_bytes_v2_1, lsa_body.pack_lsa_body()) lsa_body.add_subnet_info(20, '255.255.0.0', '222.1.0.0') self.assertEqual(TestExtensionPrefix.body_bytes_v2_2, lsa_body.pack_lsa_body()) lsa_body.add_subnet_info(30, '255.0.0.0', '1.0.0.0') self.assertEqual(TestExtensionPrefix.body_bytes_v2_3, lsa_body.pack_lsa_body()) lsa_body.add_subnet_info(40, '0.0.0.0', '0.0.0.0') self.assertEqual(TestExtensionPrefix.body_bytes_v2_4, lsa_body.pack_lsa_body()) lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV6) lsa_body.add_prefix_info(10, 0, 0, '::') self.assertEqual(TestExtensionPrefix.body_bytes_v3_1, lsa_body.pack_lsa_body()) lsa_body.add_prefix_info(20, 32, 0, '2001:db8::') self.assertEqual(TestExtensionPrefix.body_bytes_v3_2, lsa_body.pack_lsa_body()) lsa_body.add_prefix_info(30, 64, 0, '2001:db8:cafe:1::') self.assertEqual(TestExtensionPrefix.body_bytes_v3_3, lsa_body.pack_lsa_body()) lsa_body.add_prefix_info(40, 96, 0, '2001:db8:cafe:1::') self.assertEqual(TestExtensionPrefix.body_bytes_v3_4, lsa_body.pack_lsa_body()) lsa_body.add_prefix_info(50, 128, 0, '2001:db8:cafe:1::') self.assertEqual(TestExtensionPrefix.body_bytes_v3_5, lsa_body.pack_lsa_body())
def test_get_subnet_info(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV4) self.assertIsNone( lsa_body.get_subnet_info('255.255.255.0', '222.222.1.0')) self.assertIsNone( lsa_body.get_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.add_subnet_info(10, '255.255.255.0', '222.222.1.0') self.assertEqual([10, '255.255.255.0', '222.222.1.0'], lsa_body.get_subnet_info('255.255.255.0', '222.222.1.0')) self.assertIsNone( lsa_body.get_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.add_subnet_info(10, '255.255.0.0', '111.111.2.0') self.assertEqual([10, '255.255.255.0', '222.222.1.0'], lsa_body.get_subnet_info('255.255.255.0', '222.222.1.0')) self.assertEqual([10, '255.255.0.0', '111.111.2.0'], lsa_body.get_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.delete_subnet_info('255.255.255.0', '222.222.1.0') self.assertIsNone( lsa_body.get_subnet_info('255.255.255.0', '222.222.1.0')) self.assertEqual([10, '255.255.0.0', '111.111.2.0'], lsa_body.get_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.delete_subnet_info('255.255.0.0', '111.111.2.0') self.assertIsNone( lsa_body.get_subnet_info('255.255.255.0', '222.222.1.0')) self.assertIsNone( lsa_body.get_subnet_info('255.255.0.0', '111.111.2.0'))
def test_delete_prefix_info(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV6) lsa_body.delete_prefix_info(64, '2001:db8:cafe:1::') self.assertEqual(0, len(lsa_body.prefix_list)) lsa_body.add_prefix_info(10, 64, 0, '2001:db8:cafe:1::') lsa_body.add_prefix_info(10, 32, 0, '2001:db8::') lsa_body.delete_prefix_info(64, '2001:db8:cafe:1::') self.assertEqual(1, len(lsa_body.prefix_list)) self.assertEqual([[10, 32, 0, '2001:db8::']], lsa_body.prefix_list) lsa_body.delete_prefix_info(64, '2001:db8:cafe:1::') self.assertEqual(1, len(lsa_body.prefix_list)) self.assertEqual([[10, 32, 0, '2001:db8::']], lsa_body.prefix_list) lsa_body.delete_prefix_info(32, '2001:db8::') self.assertEqual(0, len(lsa_body.prefix_list))
def test_add_subnet_info_invalid_parameters(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV4) with self.assertRaises(ValueError): lsa_body.add_subnet_info(-1, '0.0.0.0', '0.0.0.0') with self.assertRaises(ValueError): lsa_body.add_subnet_info(conf.MAX_VALUE_24_BITS + 1, '0.0.0.0', '0.0.0.0') with self.assertRaises(ValueError): lsa_body.add_subnet_info(0, '', '0.0.0.0') with self.assertRaises(ValueError): lsa_body.add_subnet_info(0, '2001:db8:cafe:1::', '0.0.0.0') with self.assertRaises(ValueError): lsa_body.add_subnet_info(0, '0.0.0.0', '') with self.assertRaises(ValueError): lsa_body.add_subnet_info(0, '0.0.0.0', '2001:db8:cafe:1::')
def test_delete_subnet_info(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV4) lsa_body.delete_subnet_info('255.255.255.0', '222.222.1.0') self.assertEqual(0, len(lsa_body.subnet_list)) lsa_body.add_subnet_info(10, '255.255.255.0', '222.222.1.0') lsa_body.add_subnet_info(10, '255.255.0.0', '111.111.2.0') lsa_body.delete_subnet_info('255.255.255.0', '222.222.1.0') self.assertEqual(1, len(lsa_body.subnet_list)) self.assertEqual([[10, '255.255.0.0', '111.111.2.0']], lsa_body.subnet_list) lsa_body.delete_subnet_info('255.255.255.0', '222.222.1.0') self.assertEqual(1, len(lsa_body.subnet_list)) self.assertEqual([[10, '255.255.0.0', '111.111.2.0']], lsa_body.subnet_list) lsa_body.delete_subnet_info('255.255.0.0', '111.111.2.0') self.assertEqual(0, len(lsa_body.subnet_list))
def test_has_prefix_info(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV6) self.assertFalse(lsa_body.has_prefix_info(64, '2001:db8:cafe:1::')) self.assertFalse(lsa_body.has_prefix_info(32, '2001:db8::')) lsa_body.add_prefix_info(10, 64, 0, '2001:db8:cafe:1::') self.assertTrue(lsa_body.has_prefix_info(64, '2001:db8:cafe:1::')) self.assertFalse(lsa_body.has_prefix_info(32, '2001:db8::')) lsa_body.add_prefix_info(10, 32, 0, '2001:db8::') self.assertTrue(lsa_body.has_prefix_info(64, '2001:db8:cafe:1::')) self.assertTrue(lsa_body.has_prefix_info(32, '2001:db8::')) lsa_body.delete_prefix_info(64, '2001:db8:cafe:1::') self.assertFalse(lsa_body.has_prefix_info(64, '2001:db8:cafe:1::')) self.assertTrue(lsa_body.has_prefix_info(32, '2001:db8::')) lsa_body.delete_prefix_info(32, '2001:db8::') self.assertFalse(lsa_body.has_prefix_info(64, '2001:db8:cafe:1::')) self.assertFalse(lsa_body.has_prefix_info(32, '2001:db8::'))
def test_add_prefix_info_invalid_parameters(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV6) with self.assertRaises(ValueError): lsa_body.add_prefix_info(-1, 0, 0, '::') with self.assertRaises(ValueError): lsa_body.add_prefix_info(conf.MAX_VALUE_24_BITS + 1, 0, 0, '::') with self.assertRaises(ValueError): lsa_body.add_prefix_info(0, -1, 0, '::') with self.assertRaises(ValueError): lsa_body.add_prefix_info(0, 16 * conf.BYTE_SIZE + 1, 0, '::') with self.assertRaises(ValueError): lsa_body.add_prefix_info(0, 0, -1, '::') with self.assertRaises(ValueError): lsa_body.add_prefix_info(0, 0, conf.MAX_VALUE_8_BITS + 1, '::') with self.assertRaises(ValueError): lsa_body.add_prefix_info(0, 0, 0, '') with self.assertRaises(ValueError): lsa_body.add_prefix_info(0, 0, 0, '0.0.0.0')
def test_add_subnet_info_successful(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV4) self.assertEqual(0, len(lsa_body.subnet_list)) lsa_body.add_subnet_info(0, '0.0.0.0', '255.255.255.255') self.assertEqual(1, len(lsa_body.subnet_list)) self.assertEqual([[0, '0.0.0.0', '255.255.255.255']], lsa_body.subnet_list) lsa_body.add_subnet_info(conf.MAX_VALUE_24_BITS, '0.0.0.0', '255.255.255.255') self.assertEqual(1, len(lsa_body.subnet_list)) self.assertEqual([[0, '0.0.0.0', '255.255.255.255']], lsa_body.subnet_list) lsa_body.add_subnet_info(conf.MAX_VALUE_24_BITS, '255.255.255.255', '0.0.0.0') self.assertEqual(2, len(lsa_body.subnet_list)) self.assertEqual( [[0, '0.0.0.0', '255.255.255.255'], [conf.MAX_VALUE_24_BITS, '255.255.255.255', '0.0.0.0']], lsa_body.subnet_list)
def test_add_prefix_info_successful(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV6) self.assertEqual(0, len(lsa_body.prefix_list)) lsa_body.add_prefix_info(0, 0, 0, '::') self.assertEqual(1, len(lsa_body.prefix_list)) self.assertEqual([[0, 0, 0, '::']], lsa_body.prefix_list) lsa_body.add_prefix_info(conf.MAX_VALUE_24_BITS, 0, conf.MAX_VALUE_8_BITS, '::') self.assertEqual(1, len(lsa_body.prefix_list)) self.assertEqual([[0, 0, 0, '::']], lsa_body.prefix_list) lsa_body.add_prefix_info(conf.MAX_VALUE_24_BITS, 16 * conf.BYTE_SIZE, conf.MAX_VALUE_8_BITS, 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') self.assertEqual(2, len(lsa_body.prefix_list)) self.assertEqual([[0, 0, 0, '::'], [ conf.MAX_VALUE_24_BITS, 16 * conf.BYTE_SIZE, conf.MAX_VALUE_8_BITS, 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' ]], lsa_body.prefix_list)
def test_get_prefix_info(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV6) self.assertIsNone(lsa_body.get_prefix_info(64, '2001:db8:cafe:1::')) self.assertIsNone(lsa_body.get_prefix_info(32, '2001:db8::')) lsa_body.add_prefix_info(10, 64, 0, '2001:db8:cafe:1::') self.assertEqual([10, 64, 0, '2001:db8:cafe:1::'], lsa_body.get_prefix_info(64, '2001:db8:cafe:1::')) self.assertIsNone(lsa_body.get_prefix_info(32, '2001:db8::')) lsa_body.add_prefix_info(10, 32, 0, '2001:db8::') self.assertEqual([10, 64, 0, '2001:db8:cafe:1::'], lsa_body.get_prefix_info(64, '2001:db8:cafe:1::')) self.assertEqual([10, 32, 0, '2001:db8::'], lsa_body.get_prefix_info(32, '2001:db8::')) lsa_body.delete_prefix_info(64, '2001:db8:cafe:1::') self.assertIsNone(lsa_body.get_prefix_info(64, '2001:db8:cafe:1::')) self.assertEqual([10, 32, 0, '2001:db8::'], lsa_body.get_prefix_info(32, '2001:db8::')) lsa_body.delete_prefix_info(32, '2001:db8::') self.assertIsNone(lsa_body.get_prefix_info(64, '2001:db8:cafe:1::')) self.assertIsNone(lsa_body.get_prefix_info(32, '2001:db8::'))
def test_has_subnet_info(self): lsa_body = extension_prefix.ExtensionPrefix(conf.VERSION_IPV4) self.assertFalse( lsa_body.has_subnet_info('255.255.255.0', '222.222.1.0')) self.assertFalse(lsa_body.has_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.add_subnet_info(10, '255.255.255.0', '222.222.1.0') self.assertTrue( lsa_body.has_subnet_info('255.255.255.0', '222.222.1.0')) self.assertFalse(lsa_body.has_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.add_subnet_info(10, '255.255.0.0', '111.111.2.0') self.assertTrue( lsa_body.has_subnet_info('255.255.255.0', '222.222.1.0')) self.assertTrue(lsa_body.has_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.delete_subnet_info('255.255.255.0', '222.222.1.0') self.assertFalse( lsa_body.has_subnet_info('255.255.255.0', '222.222.1.0')) self.assertTrue(lsa_body.has_subnet_info('255.255.0.0', '111.111.2.0')) lsa_body.delete_subnet_info('255.255.0.0', '111.111.2.0') self.assertFalse( lsa_body.has_subnet_info('255.255.255.0', '222.222.1.0')) self.assertFalse(lsa_body.has_subnet_info('255.255.0.0', '111.111.2.0'))
def create_extension_prefix_lsa_body(self, version): self.body = extension_prefix.ExtensionPrefix(version) self.set_lsa_length() self.set_lsa_checksum()