diff options
| -rwxr-xr-x | smoketest/scripts/cli/test_vrf.py | 48 | 
1 files changed, 44 insertions, 4 deletions
diff --git a/smoketest/scripts/cli/test_vrf.py b/smoketest/scripts/cli/test_vrf.py index 5daea589c..d6dd68f8b 100755 --- a/smoketest/scripts/cli/test_vrf.py +++ b/smoketest/scripts/cli/test_vrf.py @@ -216,11 +216,11 @@ class VRFTest(VyOSUnitTestSHIM.TestCase):          # commit changes          self.cli_commit() -        # Verify & cleanup +        # Verify VRF assignmant          for interface in self._interfaces: -            # os.readlink resolves to: '../../../../../virtual/net/foovrf' -            tmp = os.readlink(f'/sys/class/net/{interface}/master').split('/')[-1] -            self.assertEqual(tmp, vrf) +            tmp = get_interface_config(interface) +            self.assertEqual(vrf, tmp['master']) +              # cleanup              section = Section.section(interface)              self.cli_delete(['interfaces', section, interface, 'vrf']) @@ -262,5 +262,45 @@ class VRFTest(VyOSUnitTestSHIM.TestCase):              # Increment table ID for the next run              table = str(int(table) + 1) +    def test_vrf_link_local_ip_addresses(self): +        # Testcase for issue T4331 +        table = '100' +        vrf = 'orange' +        interface = 'dum9998' +        addresses = ['192.0.2.1/26', '2001:db8:9998::1/64', 'fe80::1/64'] + +        for address in addresses: +            self.cli_set(['interfaces', 'dummy', interface, 'address', address]) + +        # Create dummy interfaces +        self.cli_commit() + +        # ... and verify IP addresses got assigned +        for address in addresses: +            self.assertTrue(is_intf_addr_assigned(interface, address)) + +        # Move interface to VRF +        self.cli_set(base_path + ['name', vrf, 'table', table]) +        self.cli_set(['interfaces', 'dummy', interface, 'vrf', vrf]) + +        # Apply VRF config +        self.cli_commit() +        # Ensure VRF got created +        self.assertIn(vrf, interfaces()) +        # ... and IP addresses are still assigned +        for address in addresses: +            self.assertTrue(is_intf_addr_assigned(interface, address)) +        # Verify VRF table ID +        tmp = get_interface_config(vrf) +        self.assertEqual(int(table), tmp['linkinfo']['info_data']['table']) + +        # Verify interface is assigned to VRF +        tmp = get_interface_config(interface) +        self.assertEqual(vrf, tmp['master']) + +        # Delete Interface +        self.cli_delete(['interfaces', 'dummy', interface]) +        self.cli_commit() +  if __name__ == '__main__':      unittest.main(verbosity=2)  | 
