def test_enable_disable(self): # For failures self.maxDiff = None # Set testbed Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') # Create Vlan object vlan1 = Vlan() dev1.add_feature(vlan1) vlan1.device_attr[dev1].enabled = True # Check config strings built correctly cfgs = vlan1.build_config(apply=False) self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'feature interface-vlan', 'feature vn-segment-vlan-based', ])) # Unconfigure uncfgs = vlan1.build_unconfig(apply=False) self.assertMultiLineEqual( str(uncfgs[dev1.name]), '\n'.join([ 'no feature interface-vlan', 'no feature vn-segment-vlan-based', ])) dev1.remove_feature(vlan1) # Create Vlan object vlan2 = Vlan() dev1.add_feature(vlan2) vlan2.device_attr[dev1].enabled_interface_vlan = True # Check config strings built correctly cfgs = vlan2.build_config(apply=False) self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'feature interface-vlan', ])) # Unconfigure uncfgs = vlan2.build_unconfig(apply=False) self.assertMultiLineEqual( str(uncfgs[dev1.name]), '\n'.join([ 'no feature interface-vlan', ])) # Remove feature dev1.remove_feature(vlan2) # Create Vlan object vlan3 = Vlan() dev1.add_feature(vlan3) vlan3.device_attr[dev1].enabled_vn_segment_vlan_based = True # Build config cfgs = vlan3.build_config(apply=False) self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'feature vn-segment-vlan-based', ])) # Unconfigure uncfgs = vlan3.build_unconfig(apply=False) self.assertMultiLineEqual( str(uncfgs[dev1.name]), '\n'.join([ 'no feature vn-segment-vlan-based', ]))
def test_init(self): testbed = Genie.testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='iosxr') intf1 = Interface(device=dev1, name='GigabitEthernet0/0/0/1') intf2 = Interface(device=dev1, name='GigabitEthernet0/0/0/2') dev2 = Device(testbed=testbed, name='PE2', os='iosxr') intf3 = Interface(device=dev2, name='GigabitEthernet0/0/0/3') intf4 = Interface(device=dev2, name='GigabitEthernet0/0/0/4') with self.assertRaises(TypeError): evi1 = Evi() with self.assertRaises(TypeError): evi1 = Evi(device=dev1) with self.assertRaises(TypeError): evi1 = Evi(evi_id=1) with self.assertRaises(AssertionError): evi1 = Evi(device=dev1, evi_id=1) evpn = Evpn() self.assertSetEqual(evpn.evis, set()) dev2.add_feature(evpn) with self.assertRaises(AssertionError): evi1 = Evi(device=dev1, evi_id=1) dev1.add_feature(evpn) evi1 = Evi(device=dev1, evi_id=1) self.assertIs(evi1.testbed, testbed) self.assertIsInstance(evpn.evis, typedset) self.assertSetEqual(evpn.evis, set([evi1])) self.assertIs(type(evpn.device_attr[dev1].evis), types.GeneratorType) self.assertCountEqual(evpn.device_attr[dev1].evis, [evi1]) self.assertCountEqual(evpn.device_attr[dev2].evis, []) self.assertIsNotNone(evi1.bgp) with self.assertRaises(AttributeError): evi1.bgp = None self.assertIsNotNone(evi1.load_balancing) with self.assertRaises(AttributeError): evi1.load_balancing = None self.assertFalse(evi1.load_balancing.enabled) evpn.load_balancing.enabled = True self.assertTrue(evi1.load_balancing.enabled) with self.assertRaises(AttributeError): del evi1.load_balancing.enabled evi1.load_balancing.enabled = False self.assertFalse(evi1.load_balancing.enabled) del evi1.load_balancing.enabled self.assertTrue(evi1.load_balancing.enabled) cfgs = evpn.build_config(apply=False) self.assertDictEqual( cfgs, { dev1.name: '\n'.join([ 'evpn', ' evi 1', ' load-balancing', ' exit', ' exit', ' load-balancing', ' exit', ' exit', ]), dev2.name: '\n'.join([ 'evpn', ' load-balancing', ' exit', ' exit', ]), }) dev2.remove_feature(evpn) cfgs = evpn.build_config(apply=False) self.assertDictEqual( cfgs, { dev1.name: '\n'.join([ 'evpn', ' evi 1', ' load-balancing', ' exit', ' exit', ' load-balancing', ' exit', ' exit', ]), }) evi1.load_balancing.enabled = False cfgs = evpn.build_config(apply=False) self.assertDictEqual( cfgs, { dev1.name: '\n'.join([ 'evpn', ' evi 1', ' exit', ' load-balancing', ' exit', ' exit', ]), }) # XXXJST # cfg = evi1.build_config(apply=False) # self.assertMultiLineEqual(cfg, '\n'.join([ # 'evpn', # ' evi 1', # ' exit', # ' exit', # ])) cfg = evi1.build_config(apply=False) self.assertMultiLineEqual(str(cfg), '\n'.join([ 'evi 1', ' exit', ]))