diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-12-08 11:27:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-08 11:27:49 +0100 |
commit | 2a25efce5f3e03385a4fa1a412d6f41a07e9d483 (patch) | |
tree | c1d55aa093c69fd92e934e26bca6f8a7d5caff61 /smoketest/scripts/cli | |
parent | 7ef0840d464205964314c97e4335a2fcf0ca0532 (diff) | |
parent | e8957b575b050b075b74c94c3352d253414f4a6f (diff) | |
download | vyos-1x-2a25efce5f3e03385a4fa1a412d6f41a07e9d483.tar.gz vyos-1x-2a25efce5f3e03385a4fa1a412d6f41a07e9d483.zip |
Merge pull request #633 from jack9603301/T3089
mirror: T3089: support two-way traffic mirroring
Diffstat (limited to 'smoketest/scripts/cli')
-rw-r--r-- | smoketest/scripts/cli/base_interfaces_test.py | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/smoketest/scripts/cli/base_interfaces_test.py b/smoketest/scripts/cli/base_interfaces_test.py index 4187fd77c..d1bb9c3fe 100644 --- a/smoketest/scripts/cli/base_interfaces_test.py +++ b/smoketest/scripts/cli/base_interfaces_test.py @@ -28,6 +28,22 @@ from vyos.util import dict_search from vyos.validate import is_intf_addr_assigned from vyos.validate import is_ipv6_link_local +def read_mirror_rule(interfaces): + Success = 0 + for interface in interfaces: + get_tc_cmd = 'tc -j qdisc' + tmp = cmd(get_tc_cmd, shell=True) + data = json.loads(tmp) + for rule in data: + dev = rule['dev'] + handle = rule['handle'] + kind = rule['kind'] + if dev == interface and handle == "ffff:" and kind == "ingress": + Success+=1 + elif dev == interface and handle == "1:" and kind == "prio": + Success+=1 + return Success + class BasicInterfaceTest: class BaseTest(unittest.TestCase): _test_ip = False @@ -73,25 +89,19 @@ class BasicInterfaceTest: Success = 0 i = 0 if self._test_mirror: + # Check the two-way mirror rules of ingress and egress for interface in self._interfaces: - self.session.set(self._base_path + [interface, 'mirror', 'lo']) + self.session.set(self._base_path + [interface, 'mirror', 'ingress', 'lo']) + self.session.set(self._base_path + [interface, 'mirror', 'egress', 'lo']) i+=1 self.session.commit() # Parse configuration - for interface in self._interfaces: - get_tc_cmd = 'tc -j qdisc' - tmp = cmd(get_tc_cmd, shell=True) - data = json.loads(tmp) - for rule in data: - dev = rule['dev'] - handle = rule['handle'] - kind = rule['kind'] - if dev == interface and handle == "ffff:" and kind == "ingress": - Success+=1 - if Success == i: + Success = read_mirror_rule(self._interfaces) + if Success == i*2: self.assertTrue(True) else: self.assertTrue(False) + i=0 else: return None |