summaryrefslogtreecommitdiff
path: root/smoketest/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'smoketest/scripts')
-rwxr-xr-xsmoketest/scripts/cli/test_vrf.py47
1 files changed, 45 insertions, 2 deletions
diff --git a/smoketest/scripts/cli/test_vrf.py b/smoketest/scripts/cli/test_vrf.py
index 7bcfea861..c0f610323 100755
--- a/smoketest/scripts/cli/test_vrf.py
+++ b/smoketest/scripts/cli/test_vrf.py
@@ -16,10 +16,13 @@
import os
import unittest
+from netifaces import interfaces
-from vyos.configsession import ConfigSession, ConfigSessionError
+from vyos.configsession import ConfigSession
+from vyos.configsession import ConfigSessionError
from vyos.util import read_file
from vyos.validate import is_intf_addr_assigned
+from vyos.ifconfig import Interface
class VRFTest(unittest.TestCase):
def setUp(self):
@@ -36,9 +39,12 @@ class VRFTest(unittest.TestCase):
table = 1000
for vrf in self._vrfs:
base = ['vrf', 'name', vrf]
- description = "VyOS-VRF-" + vrf
+ description = f'VyOS-VRF-{vrf}'
self.session.set(base + ['description', description])
+ if vrf == 'green':
+ self.session.set(base + ['disable'])
+
# check validate() - a table ID is mandatory
with self.assertRaises(ConfigSessionError):
self.session.commit()
@@ -49,6 +55,19 @@ class VRFTest(unittest.TestCase):
# commit changes
self.session.commit()
+ # Verify VRF configuration
+ for vrf in self._vrfs:
+ description = f'VyOS-VRF-{vrf}'
+ self.assertTrue(vrf in interfaces())
+ vrf_if = Interface(vrf)
+ # validate proper interface description
+ self.assertEqual(vrf_if.get_alias(), description)
+ # validate admin up/down state of VRF
+ state = 'up'
+ if vrf == 'green':
+ state = 'down'
+ self.assertEqual(vrf_if.get_admin_state(), state)
+
def test_vrf_loopback_ips(self):
table = 1000
for vrf in self._vrfs:
@@ -58,9 +77,33 @@ class VRFTest(unittest.TestCase):
# commit changes
self.session.commit()
+
+ # Verify VRF configuration
for vrf in self._vrfs:
+ self.assertTrue(vrf in interfaces())
self.assertTrue(is_intf_addr_assigned(vrf, '127.0.0.1'))
self.assertTrue(is_intf_addr_assigned(vrf, '::1'))
+ def test_vrf_table_id_is_unalterable(self):
+ # Linux Kernel prohibits the change of a VRF table on the fly.
+ # VRF must be deleted and recreated!
+ table = 666
+ vrf = self._vrfs[0]
+ base = ['vrf', 'name', vrf]
+ self.session.set(base + ['table', str(table)])
+
+ # commit changes
+ self.session.commit()
+
+ # Check if VRF has been created
+ self.assertTrue(vrf in interfaces())
+
+ table += 1
+ self.session.set(base + ['table', str(table)])
+ # check validate() - table ID can not be altered!
+ with self.assertRaises(ConfigSessionError):
+ self.session.commit()
+
+
if __name__ == '__main__':
unittest.main(verbosity=2)