117 lines
6.2 KiB
Python
117 lines
6.2 KiB
Python
import unittest
|
|
import yaml
|
|
import validator.interface as interface
|
|
|
|
class TestInterfaceMethods(unittest.TestCase):
|
|
def setUp(self):
|
|
with open("unittest/TestInterfaceMethods.yaml", "r") as f:
|
|
self.cfg = yaml.load(f, Loader = yaml.FullLoader)
|
|
|
|
def test_enumerators(self):
|
|
ifs = interface.get_interfaces(self.cfg)
|
|
self.assertEqual(len(ifs), 15)
|
|
self.assertIn("GigabitEthernet1/0/1", ifs)
|
|
self.assertIn("GigabitEthernet1/0/1.200", ifs)
|
|
self.assertIn("GigabitEthernet1/0/1.204", ifs)
|
|
|
|
ifs = interface.get_sub_interfaces(self.cfg)
|
|
self.assertEqual(len(ifs), 10)
|
|
self.assertNotIn("GigabitEthernet1/0/1", ifs)
|
|
self.assertIn("GigabitEthernet1/0/1.200", ifs)
|
|
self.assertIn("GigabitEthernet1/0/1.204", ifs)
|
|
|
|
ifs = interface.get_qinx_interfaces(self.cfg)
|
|
self.assertEqual(len(ifs), 3)
|
|
self.assertNotIn("GigabitEthernet1/0/1.200", ifs)
|
|
self.assertIn("GigabitEthernet1/0/1.204", ifs)
|
|
|
|
def test_mtu(self):
|
|
self.assertEqual(interface.get_mtu(self.cfg, "GigabitEthernet1/0/1"), 9216)
|
|
self.assertEqual(interface.get_mtu(self.cfg, "GigabitEthernet1/0/1.200"), 9000)
|
|
self.assertEqual(interface.get_mtu(self.cfg, "GigabitEthernet1/0/1.201"), 1500)
|
|
|
|
def test_encapsulation(self):
|
|
self.assertTrue(interface.valid_encapsulation(self.cfg, "GigabitEthernet1/0/1.200"))
|
|
self.assertTrue(interface.unique_encapsulation(self.cfg, "GigabitEthernet1/0/1.200"))
|
|
self.assertEqual(interface.get_encapsulation(self.cfg, "GigabitEthernet1/0/1.200"),
|
|
{ 'dot1q': 1000, 'dot1ad': 0, 'inner-dot1q': 0, 'exact-match': False })
|
|
self.assertEqual(interface.get_encapsulation(self.cfg, "GigabitEthernet1/0/1.201"),
|
|
{ 'dot1q': 0, 'dot1ad': 1000, 'inner-dot1q': 0, 'exact-match': False })
|
|
self.assertEqual(interface.get_encapsulation(self.cfg, "GigabitEthernet1/0/1.202"),
|
|
{ 'dot1q': 1000, 'dot1ad': 0, 'inner-dot1q': 1234, 'exact-match': False })
|
|
self.assertEqual(interface.get_encapsulation(self.cfg, "GigabitEthernet1/0/1.203"),
|
|
{ 'dot1q': 0, 'dot1ad': 1000, 'inner-dot1q': 1000, 'exact-match': False })
|
|
self.assertEqual(interface.get_encapsulation(self.cfg, "GigabitEthernet1/0/1.204"),
|
|
{ 'dot1q': 0, 'dot1ad': 1000, 'inner-dot1q': 1000, 'exact-match': True })
|
|
|
|
self.assertFalse(interface.valid_encapsulation(self.cfg, "GigabitEthernet1/0/0.100"))
|
|
self.assertFalse(interface.valid_encapsulation(self.cfg, "GigabitEthernet1/0/0.101"))
|
|
|
|
self.assertFalse(interface.unique_encapsulation(self.cfg, "GigabitEthernet1/0/0.102"))
|
|
self.assertFalse(interface.unique_encapsulation(self.cfg, "GigabitEthernet1/0/0.103"))
|
|
|
|
def test_has_sub(self):
|
|
self.assertTrue(interface.has_sub(self.cfg, "GigabitEthernet1/0/1"))
|
|
self.assertFalse(interface.has_sub(self.cfg, "GigabitEthernet1/0/1.200"))
|
|
self.assertFalse(interface.has_sub(self.cfg, "GigabitEthernet2/0/0"))
|
|
self.assertFalse(interface.has_sub(self.cfg, "GigabitEthernet3/0/0"))
|
|
|
|
def test_is_sub(self):
|
|
self.assertFalse(interface.is_sub(self.cfg, "GigabitEthernet1/0/1"))
|
|
self.assertTrue(interface.is_sub(self.cfg, "GigabitEthernet1/0/1.200"))
|
|
|
|
def test_is_qinx(self):
|
|
self.assertTrue(interface.is_qinx(self.cfg, "GigabitEthernet1/0/1.202"))
|
|
self.assertTrue(interface.is_qinx(self.cfg, "GigabitEthernet1/0/1.203"))
|
|
self.assertTrue(interface.is_qinx(self.cfg, "GigabitEthernet1/0/1.204"))
|
|
|
|
self.assertFalse(interface.is_qinx(self.cfg, "GigabitEthernet1/0/1"))
|
|
self.assertFalse(interface.is_qinx(self.cfg, "GigabitEthernet1/0/1.200"))
|
|
self.assertFalse(interface.is_qinx(self.cfg, "GigabitEthernet1/0/1.201"))
|
|
|
|
def test_lcp(self):
|
|
self.assertIsNone(interface.get_lcp(self.cfg, "GigabitEthernet1/0/0"))
|
|
self.assertIsNone(interface.get_lcp(self.cfg, "GigabitEthernet1/0/0.100"))
|
|
|
|
self.assertEqual(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1"), "e1")
|
|
self.assertEqual(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.100"), "foo")
|
|
|
|
self.assertEqual(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.200"), "e1.1000")
|
|
self.assertEqual(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.201"), "e1.1000")
|
|
|
|
## TODO(pim) - sub 201-203 cannot have an LCP, their encap is not exact-match
|
|
## self.assertIsNone(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.200"))
|
|
## self.assertIsNone(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.201"))
|
|
## self.assertIsNone(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.202"))
|
|
## self.assertIsNone(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.203"))
|
|
self.assertEqual(interface.get_lcp(self.cfg, "GigabitEthernet1/0/1.204"), "e1.1000.1000")
|
|
|
|
def test_address(self):
|
|
self.assertFalse(interface.has_address(self.cfg, "GigabitEthernet1/0/0"))
|
|
self.assertFalse(interface.has_address(self.cfg, "GigabitEthernet1/0/0.100"))
|
|
|
|
self.assertTrue(interface.has_address(self.cfg, "GigabitEthernet1/0/1"))
|
|
self.assertTrue(interface.has_address(self.cfg, "GigabitEthernet1/0/1.100"))
|
|
|
|
def test_lx2c(self):
|
|
l2xc_ifs = interface.get_l2xc_interfaces(self.cfg)
|
|
l2xc_target_ifs = interface.get_l2xc_target_interfaces(self.cfg)
|
|
|
|
self.assertIn("GigabitEthernet3/0/0", l2xc_ifs)
|
|
self.assertIn("GigabitEthernet3/0/0", l2xc_target_ifs)
|
|
self.assertTrue(interface.is_l2xc_interface(self.cfg, "GigabitEthernet3/0/0"))
|
|
self.assertTrue(interface.is_l2xc_target_interface(self.cfg, "GigabitEthernet3/0/0"))
|
|
|
|
self.assertNotIn("GigabitEthernet2/0/0", l2xc_ifs)
|
|
self.assertNotIn("GigabitEthernet2/0/0", l2xc_target_ifs)
|
|
self.assertFalse(interface.is_l2xc_interface(self.cfg, "GigabitEthernet2/0/0"))
|
|
self.assertFalse(interface.is_l2xc_target_interface(self.cfg, "GigabitEthernet2/0/0"))
|
|
|
|
def test_l2(self):
|
|
self.assertTrue(interface.is_l2(self.cfg, "GigabitEthernet3/0/0"))
|
|
self.assertFalse(interface.is_l2(self.cfg, "GigabitEthernet1/0/0"))
|
|
|
|
def test_l3(self):
|
|
self.assertTrue(interface.is_l3(self.cfg, "GigabitEthernet1/0/0"))
|
|
self.assertFalse(interface.is_l3(self.cfg, "GigabitEthernet3/0/0"))
|