From ede2972be4c49962a04b1addb9df6ce58f2d9f42 Mon Sep 17 00:00:00 2001
From: jack9603301 <jack9603301@163.com>
Date: Thu, 3 Dec 2020 12:11:43 +0800
Subject: interface: T3089: Migrate port mirroring to vyos-1x

---
 smoketest/scripts/cli/base_interfaces_test.py     | 28 +++++++++++++++++++++++
 smoketest/scripts/cli/test_interfaces_bonding.py  |  1 +
 smoketest/scripts/cli/test_interfaces_bridge.py   |  1 +
 smoketest/scripts/cli/test_interfaces_ethernet.py |  1 +
 4 files changed, 31 insertions(+)

(limited to 'smoketest')

diff --git a/smoketest/scripts/cli/base_interfaces_test.py b/smoketest/scripts/cli/base_interfaces_test.py
index e02424073..0a4e85c0f 100644
--- a/smoketest/scripts/cli/base_interfaces_test.py
+++ b/smoketest/scripts/cli/base_interfaces_test.py
@@ -33,6 +33,7 @@ class BasicInterfaceTest:
         _test_vlan = False
         _test_qinq = False
         _test_ipv6 = False
+        _test_mirror = False
         _base_path = []
 
         _options = {}
@@ -66,6 +67,33 @@ class BasicInterfaceTest:
 
             self.session.commit()
             del self.session
+        
+        def test_mirror(self):
+            Success = 0
+            i = 0
+            if self._test_mirror:
+                for interface in self._interfaces:
+                    self.session.set(self._base_path + [interface, 'mirror', '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:
+                    self.assertTrue(True)
+                else:
+                    self.assertTrue(False)
+            else:
+                return None
+                            
 
         def test_add_description(self):
             """
diff --git a/smoketest/scripts/cli/test_interfaces_bonding.py b/smoketest/scripts/cli/test_interfaces_bonding.py
index ac5e01e50..93ed1ced5 100755
--- a/smoketest/scripts/cli/test_interfaces_bonding.py
+++ b/smoketest/scripts/cli/test_interfaces_bonding.py
@@ -34,6 +34,7 @@ class BondingInterfaceTest(BasicInterfaceTest.BaseTest):
         self._test_vlan = True
         self._test_qinq = True
         self._test_ipv6 = True
+        self._test_mirror = True
 
         self._members = []
         # we need to filter out VLAN interfaces identified by a dot (.)
diff --git a/smoketest/scripts/cli/test_interfaces_bridge.py b/smoketest/scripts/cli/test_interfaces_bridge.py
index 3742491e8..9bddede31 100755
--- a/smoketest/scripts/cli/test_interfaces_bridge.py
+++ b/smoketest/scripts/cli/test_interfaces_bridge.py
@@ -31,6 +31,7 @@ class BridgeInterfaceTest(BasicInterfaceTest.BaseTest):
         self._test_ipv6 = True
         self._test_vlan = True
         self._test_qinq = True
+        self._test_mirror = True
 
         self._base_path = ['interfaces', 'bridge']
         self._interfaces = ['br0']
diff --git a/smoketest/scripts/cli/test_interfaces_ethernet.py b/smoketest/scripts/cli/test_interfaces_ethernet.py
index 761ec7506..bdb20a5c7 100755
--- a/smoketest/scripts/cli/test_interfaces_ethernet.py
+++ b/smoketest/scripts/cli/test_interfaces_ethernet.py
@@ -30,6 +30,7 @@ class EthernetInterfaceTest(BasicInterfaceTest.BaseTest):
         self._test_vlan = True
         self._test_qinq = True
         self._test_ipv6 = True
+        self._test_mirror = True
         self._interfaces = []
 
         # we need to filter out VLAN interfaces identified by a dot (.)
-- 
cgit v1.2.3