summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli/test_interfaces_geneve.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-03-03 00:11:28 +0100
committerChristian Poessinger <christian@poessinger.com>2021-03-03 00:16:49 +0100
commitaf609001364404e0b53ac3ee31ac75de54325ecb (patch)
treeb326f3d72f2b1eabfa4b5fec6b15089fde52d9a2 /smoketest/scripts/cli/test_interfaces_geneve.py
parent93ce06e24a5d527bcae5315aefbc25533d2a7f07 (diff)
downloadvyos-1x-af609001364404e0b53ac3ee31ac75de54325ecb.tar.gz
vyos-1x-af609001364404e0b53ac3ee31ac75de54325ecb.zip
geneve: T1799: add additional per tunnel options
Support setting additional options to the GENEVE tunnel like: - ttl - tos - do not fragment bit - ipv6 flowlabel
Diffstat (limited to 'smoketest/scripts/cli/test_interfaces_geneve.py')
-rwxr-xr-xsmoketest/scripts/cli/test_interfaces_geneve.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_interfaces_geneve.py b/smoketest/scripts/cli/test_interfaces_geneve.py
index b708b5437..e31867900 100755
--- a/smoketest/scripts/cli/test_interfaces_geneve.py
+++ b/smoketest/scripts/cli/test_interfaces_geneve.py
@@ -17,6 +17,9 @@
import unittest
from vyos.configsession import ConfigSession
+from vyos.ifconfig import Interface
+from vyos.util import get_json_iface_options
+
from base_interfaces_test import BasicInterfaceTest
class GeneveInterfaceTest(BasicInterfaceTest.BaseTest):
@@ -28,8 +31,51 @@ class GeneveInterfaceTest(BasicInterfaceTest.BaseTest):
cls._options = {
'gnv0': ['vni 10', 'remote 127.0.1.1'],
'gnv1': ['vni 20', 'remote 127.0.1.2'],
+ 'gnv1': ['vni 30', 'remote 2001:db8::1', 'parameters ipv6 flowlabel 0x1000'],
}
cls._interfaces = list(cls._options)
+ def test_geneve_parameters(self):
+ tos = '40'
+ ttl = 20
+ for intf in self._interfaces:
+ for option in self._options.get(intf, []):
+ self.session.set(self._base_path + [intf] + option.split())
+
+ self.session.set(self._base_path + [intf, 'parameters', 'ip', 'dont-fragment'])
+ self.session.set(self._base_path + [intf, 'parameters', 'ip', 'tos', tos])
+ self.session.set(self._base_path + [intf, 'parameters', 'ip', 'ttl', str(ttl)])
+ ttl += 10
+
+ self.session.commit()
+
+ ttl = 20
+ for interface in self._interfaces:
+ options = get_json_iface_options(interface)
+ import pprint
+ pprint.pprint(options)
+
+ vni = options['linkinfo']['info_data']['id']
+ self.assertIn(f'vni {vni}', self._options[interface])
+
+ if any('remote' in s for s in self._options[interface]):
+ key = 'remote'
+ if 'remote6' in options['linkinfo']['info_data']:
+ key = 'remote6'
+
+ remote = options['linkinfo']['info_data'][key]
+ self.assertIn(f'remote {remote}', self._options[interface])
+
+ if any('flowlabel' in s for s in self._options[interface]):
+ label = options['linkinfo']['info_data']['label']
+ self.assertIn(f'parameters ipv6 flowlabel {label}', self._options[interface])
+
+ self.assertEqual('geneve', options['linkinfo']['info_kind'])
+ self.assertEqual('set', options['linkinfo']['info_data']['df'])
+ self.assertEqual(f'0x{tos}', options['linkinfo']['info_data']['tos'])
+ self.assertEqual(ttl, options['linkinfo']['info_data']['ttl'])
+ self.assertEqual(Interface(interface).get_admin_state(), 'up')
+ ttl += 10
+
if __name__ == '__main__':
unittest.main(verbosity=2)