test suite reviews and discussions
 help / color / mirror / Atom feed
From: Yogesh Jangra <yogesh.jangra@intel.com>
To: dts@dpdk.org
Cc: venkata.suresh.kumar.p@intel.com, kamalakannan.r@intel.com,
	harshad.suresh.narayane@intel.com
Subject: [PATCH 1/2] tests/pipeline: adding testcases for multiple features
Date: Wed, 15 Jun 2022 00:38:38 -0400	[thread overview]
Message-ID: <1655267919-322663-2-git-send-email-yogesh.jangra@intel.com> (raw)
In-Reply-To: <1655267919-322663-1-git-send-email-yogesh.jangra@intel.com>

This patch include the changes to enhance the pipeline test suite
covering mirroring, recirculation, direction flag, extern hash,
learner table, and table default parameterized action features.

Signed-off-by: Kamalakannan R <kamalakannan.r@intel.com>
Signed-off-by: Yogesh Jangra <yogesh.jangra@intel.com>
Signed-off-by: Harshad Suresh Narayane <harshad.suresh.narayane@intel.com>
Tested-by: Venkata Suresh Kumar P <venkata.suresh.kumar.p@intel.com>
---
 tests/TestSuite_pipeline.py | 603 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 597 insertions(+), 6 deletions(-)

diff --git a/tests/TestSuite_pipeline.py b/tests/TestSuite_pipeline.py
index dd23cc9..309504c 100644
--- a/tests/TestSuite_pipeline.py
+++ b/tests/TestSuite_pipeline.py
@@ -62,7 +62,6 @@ class TestPipeline(TestCase):
             for line in input:
                 time = TIMESTAMP.match(line)
                 if time:
-                    # print("time match")
                     if flag_line_completed == 1:
                         flag_line_completed = 0
                         output.write("\n# Packet {}\n".format(i))
@@ -72,14 +71,11 @@ class TestPipeline(TestCase):
                     continue
                 payload = PAYLOAD.match(line)
                 if payload:
-                    # print("payload match")
                     address = payload.group(1)
                     hex_data = payload.group(2).replace(" ", "")
                     hex_data = " ".join(
                         "".join(part) for part in self.pair_hex_digits(hex_data, 2, " ")
                     )
-                    # print('{}  {}'.format(address, hex_data))
-                    # print(len(hex_data))
                     if len(hex_data) < 47:
                         output.write("{:0>6}  {:<47}\n".format(address, hex_data))
                         output.write("\n")
@@ -443,7 +439,6 @@ class TestPipeline(TestCase):
                 sleep(1)
                 msg = s.recv(BUFFER_SIZE)
                 response = msg.decode()
-                # print('Rxd: ' + response)
                 if "pipeline>" not in response:
                     s.close()
                     self.dut.send_expect("^C", "# ", 20)
@@ -465,7 +460,6 @@ class TestPipeline(TestCase):
         sleep(0.1)
         msg = socket.recv(BUFFER_SIZE)
         response = msg.decode()
-        # print('Rxd: ' + response)
         if expected_rsp not in response:
             socket.close()
             self.dut.send_expect("^C", "# ", 20)
@@ -643,6 +637,58 @@ class TestPipeline(TestCase):
         self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
         self.dut.send_expect("^C", "# ", 20)
 
+    def test_extract_emit_010(self):
+
+        cli_file = "/tmp/pipeline/extract_emit_010/extract_emit_010.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/extract_emit_010/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/extract_emit_010/pcap_files/out_1.txt"] * 4
+        filters = ["less 120"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_extract_emit_011(self):
+
+        cli_file = "/tmp/pipeline/extract_emit_011/extract_emit_011.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/extract_emit_011/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/extract_emit_011/pcap_files/out_1.txt"] * 4
+        filters = ["less 120"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_extract_emit_012(self):
+
+        cli_file = "/tmp/pipeline/extract_emit_012/extract_emit_012.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/extract_emit_012/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/extract_emit_012/pcap_files/out_1.txt"] * 4
+        filters = ["less 120"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_extract_emit_013(self):
+
+        cli_file = "/tmp/pipeline/extract_emit_013/extract_emit_013.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/extract_emit_013/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/extract_emit_013/pcap_files/out_1.txt"] * 4
+        filters = ["udp and less 160"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
     def test_and_001(self):
 
         cli_file = "/tmp/pipeline/and_001/and_001.cli"
@@ -2670,6 +2716,82 @@ class TestPipeline(TestCase):
         self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
         self.dut.send_expect("^C", "# ", 20)
 
+    def test_table_005(self):
+
+        cli_file = "/tmp/pipeline/table_005/table_005.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/table_005/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/table_005/pcap_files/out_1.txt"] * 4
+        filters = ["tcp"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_table_006(self):
+
+        cli_file = "/tmp/pipeline/table_006/table_006.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/table_006/pcap_files/in_1.txt"]
+        out_pcap = [
+            "pipeline/table_006/pcap_files/out_0.txt",
+            "pipeline/table_006/pcap_files/out_1.txt",
+        ]
+        filters = ["udp port 4789 and less 120", "tcp"]
+        tx_port = [1]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_table_007(self):
+
+        cli_file = "/tmp/pipeline/table_007/table_007.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/table_007/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/table_007/pcap_files/out_1.txt"] * 4
+        filters = ["tcp"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_table_008(self):
+
+        cli_file = "/tmp/pipeline/table_008/table_008.cli"
+        self.run_dpdk_app(cli_file)
+        sleep(1)
+        s = self.connect_cli_server()
+
+        in_pcap = ["pipeline/table_008/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/table_008/pcap_files/out_1.txt"] * 4
+        filters = ["tcp"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        CLI_CMD = (
+            "pipeline PIPELINE0 table table_008_table default "
+            "/tmp/pipeline/table_008/cmd_files/cmd_2.txt\n"
+        )
+        self.socket_send_cmd(s, CLI_CMD, "pipeline> ")
+        CLI_CMD = "pipeline PIPELINE0 commit\n"
+        self.socket_send_cmd(s, CLI_CMD, "pipeline> ")
+
+        in_pcap = ["pipeline/table_008/pcap_files/in_1.txt"] * 4
+        out_pcap = ["pipeline/table_008/pcap_files/out_2.txt"] * 4
+        filters = ["tcp"] * 4
+        tx_port = [0, 1, 2, 3]
+        rx_port = [0, 1, 2, 3]
+
+        sleep(2)
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        s.close()
+        self.dut.send_expect("^C", "# ", 20)
+
     def test_reg_001(self):
 
         cli_file = "/tmp/pipeline/reg_001/reg_001.cli"
@@ -5171,6 +5293,446 @@ class TestPipeline(TestCase):
         self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
         self.dut.send_expect("^C", "# ", 20)
 
+    def test_learner_003(self):
+
+        cli_file = "/tmp/pipeline/learner_003/learner_003.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_003/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_003/pcap_files/out_1.txt"]
+        filters = ["tcp"]
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        in_pcap = ["pipeline/learner_003/pcap_files/in_2.txt"]
+        out_pcap = ["pipeline/learner_003/pcap_files/out_2.txt"]
+        filters = ["tcp"]
+        tx_port = [1]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        in_pcap = ["pipeline/learner_003/pcap_files/in_3.txt"]
+        out_pcap = ["pipeline/learner_003/pcap_files/out_3.txt"]
+        filters = ["tcp"]
+        tx_port = [2]
+        rx_port = [2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        in_pcap = ["pipeline/learner_003/pcap_files/in_4.txt"]
+        out_pcap = ["pipeline/learner_003/pcap_files/out_4.txt"]
+        filters = ["tcp"]
+        tx_port = [3]
+        rx_port = [3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_004(self):
+
+        cli_file = "/tmp/pipeline/learner_004/learner_004.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_004/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_004/pcap_files/out_1.txt"]
+        out_pcap.append("pipeline/learner_004/pcap_files/out_2.txt")
+        filters = ["udp port 4789 and less 120", "tcp"]
+        tx_port = [1]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_005(self):
+
+        cli_file = "/tmp/pipeline/learner_005/learner_005.cli"
+        self.run_dpdk_app(cli_file)
+        sleep(1)
+        s = self.connect_cli_server()
+
+        in_pcap = ["pipeline/learner_005/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_005/pcap_files/out_1.txt"]
+        out_pcap.append("pipeline/learner_005/pcap_files/out_2.txt")
+        filters = ["udp port 4789 and less 120", "tcp"]
+        tx_port = [1]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        CLI_CMD = (
+            "pipeline PIPELINE0 learner learn_005 default "
+            "/tmp/pipeline/learner_005/cmd_files/cmd_1.txt\n"
+        )
+        self.socket_send_cmd(s, CLI_CMD, "pipeline> ")
+        CLI_CMD = "pipeline PIPELINE0 commit\n"
+        self.socket_send_cmd(s, CLI_CMD, "pipeline> ")
+
+        in_pcap = ["pipeline/learner_005/pcap_files/in_2.txt"]
+        out_pcap = ["pipeline/learner_005/pcap_files/out_3.txt"]
+        out_pcap.append("pipeline/learner_005/pcap_files/out_3.txt")
+        filters = ["tcp"] * 2
+        tx_port = [2]
+        rx_port = [2]
+
+        sleep(2)
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        s.close()
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_006(self):
+
+        cli_file = "/tmp/pipeline/learner_006/learner_006.cli"
+        self.run_dpdk_app(
+            cli_file, "pipeline PIPELINE0 port out 3 link LINK3 txq 0 bsz 1\n"
+        )
+        sleep(1)
+        s = self.connect_cli_server()
+
+        CLI_CMD = (
+            "pipeline PIPELINE0 build /tmp/pipeline/learner_006/learner_006.spec\n"
+        )
+        self.socket_send_cmd(s, CLI_CMD, "Error -22 at line 65: Action config error.")
+
+        s.close()
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_007(self):
+
+        cli_file = "/tmp/pipeline/learner_007/learner_007.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_007/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_007/pcap_files/out_1.txt"]
+        filters = ["tcp"] * 4
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [0]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        sleep(30)
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_008(self):
+
+        cli_file = "/tmp/pipeline/learner_008/learner_008.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_008/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_008/pcap_files/out_1.txt"]
+        filters = ["tcp"] * 4
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [0]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        sleep(60)
+
+        in_pcap = ["pipeline/learner_008/pcap_files/in_2.txt"]
+        out_pcap_1 = "pipeline/learner_008/pcap_files/out_21.txt"
+        out_pcap_2 = "pipeline/learner_008/pcap_files/out_22.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+        tx_port = [0]
+        rx_port = [1, 0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_009(self):
+
+        cli_file = "/tmp/pipeline/learner_009/learner_009.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_009/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_009/pcap_files/out_1.txt"]
+        filters = ["tcp"] * 4
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        sleep(30)
+
+        tx_port = [0]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        sleep(40)
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_010(self):
+
+        cli_file = "/tmp/pipeline/learner_010/learner_010.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_010/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_010/pcap_files/out_1.txt"]
+        filters = ["tcp"] * 4
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [0]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        sleep(30)
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [0]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_learner_011(self):
+
+        cli_file = "/tmp/pipeline/learner_011/learner_011.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/learner_011/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/learner_011/pcap_files/out_1.txt"]
+        filters = ["tcp"] * 4
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [0]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        sleep(60)
+
+        in_pcap = ["pipeline/learner_011/pcap_files/in_2.txt"]
+        out_pcap_1 = "pipeline/learner_011/pcap_files/out_21.txt"
+        out_pcap_2 = "pipeline/learner_011/pcap_files/out_22.txt"
+        out_pcap = [out_pcap_1, out_pcap_2]
+
+        tx_port = [0]
+        rx_port = [1, 0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_001(self):
+
+        cli_file = "/tmp/pipeline/mirror_001/mirror_001.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_001/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_001/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_001/pcap_files/out_12.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+
+        filters = ["udp port 5000"] * 4
+        tx_port = [0]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [1]
+        rx_port = [1, 2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [2]
+        rx_port = [2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [3]
+        rx_port = [3, 0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_002(self):
+
+        cli_file = "/tmp/pipeline/mirror_002/mirror_002.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_002/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_002/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_002/pcap_files/out_12.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+
+        filters = ["udp port 5000"] * 4
+        tx_port = [0]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [1]
+        rx_port = [1, 2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [2]
+        rx_port = [2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [3]
+        rx_port = [3, 0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_003(self):
+
+        cli_file = "/tmp/pipeline/mirror_003/mirror_003.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_003/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_003/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_003/pcap_files/out_12.txt"
+        out_pcap_3 = "pipeline/mirror_003/pcap_files/out_13.txt"
+        out_pcap_4 = "pipeline/mirror_003/pcap_files/out_14.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_3]
+
+        filters = ["udp port 5000"] * 4
+        tx_port = [0]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        out_pcap = [out_pcap_1, out_pcap_4]
+        tx_port = [1]
+        rx_port = [1, 2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+        tx_port = [2]
+        rx_port = [2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+        tx_port = [3]
+        rx_port = [3, 0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_004(self):
+
+        cli_file = "/tmp/pipeline/mirror_004/mirror_004.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_004/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_004/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_004/pcap_files/out_12.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+
+        filters = ["udp port 5000"] * 4
+        tx_port = [0]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [1]
+        rx_port = [1, 2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [2]
+        rx_port = [2, 3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        tx_port = [3]
+        rx_port = [3, 0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_005(self):
+
+        cli_file = "/tmp/pipeline/mirror_005/mirror_005.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_005/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_005/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_005/pcap_files/out_12.txt"
+        out_pcap_3 = "pipeline/mirror_005/pcap_files/out_13.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2, out_pcap_3]
+
+        filters = ["udp port 5000"] * 4
+        tx_port = [0]
+        rx_port = [0, 1, 2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_006(self):
+
+        cli_file = "/tmp/pipeline/mirror_006/mirror_006.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_006/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_006/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_006/pcap_files/out_12.txt"
+        out_pcap_3 = "pipeline/mirror_006/pcap_files/out_13.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2, out_pcap_3]
+
+        filters = ["udp port 5000"] * 4
+        tx_port = [0]
+        rx_port = [0, 1, 2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_mirror_007(self):
+
+        cli_file = "/tmp/pipeline/mirror_007/mirror_007.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/mirror_007/pcap_files/in_1.txt"]
+        out_pcap_1 = "pipeline/mirror_007/pcap_files/out_11.txt"
+        out_pcap_2 = "pipeline/mirror_007/pcap_files/out_12.txt"
+
+        out_pcap = [out_pcap_1, out_pcap_2]
+
+        filters = ["udp port 500"] * 4
+        tx_port = [0]
+        rx_port = [0, 1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
+    def test_recirculate_001(self):
+
+        cli_file = "/tmp/pipeline/recirculate_001/recirculate_001.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/recirculate_001/pcap_files/in_1.txt"]
+        out_pcap = ["pipeline/recirculate_001/pcap_files/out_1.txt"]
+
+        filters = ["udp port 54505"] * 4
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
     def test_annotation_001(self):
 
         cli_file = "/tmp/pipeline/annotation_001/annotation_001.cli"
@@ -5258,6 +5820,35 @@ class TestPipeline(TestCase):
 
         self.dut.send_expect("^C", "# ", 20)
 
+    def test_direction_001(self):
+
+        cli_file = "/tmp/pipeline/direction_001/direction_001.cli"
+        self.run_dpdk_app(cli_file)
+
+        in_pcap = ["pipeline/direction_001/pcap_files/in_1.txt"]
+        out_pcap_1 = ["pipeline/direction_001/pcap_files/out_1.txt"]
+        out_pcap_2 = ["pipeline/direction_001/pcap_files/out_2.txt"]
+
+        filters = ["udp port 5000"]
+
+        tx_port = [0]
+        rx_port = [0]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap_1, filters)
+
+        tx_port = [1]
+        rx_port = [1]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap_1, filters)
+
+        tx_port = [2]
+        rx_port = [2]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap_2, filters)
+
+        tx_port = [3]
+        rx_port = [3]
+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap_2, filters)
+
+        self.dut.send_expect("^C", "# ", 20)
+
     def tear_down(self):
         """
         Run after each test case.
-- 
1.8.3.1


  reply	other threads:[~2022-06-15 12:02 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-15  4:38 [PATCH 0/2] " Yogesh Jangra
2022-06-15  4:38 ` Yogesh Jangra [this message]
2022-06-15  4:38 ` [PATCH 2/2] dep: adding dependency for multiple feature testcases Yogesh Jangra
2022-06-16  1:44 [PATCH 0/2] adding testcases for multiple features Yogesh Jangra
2022-06-16  1:44 ` [PATCH 1/2] tests/pipeline: " Yogesh Jangra
2022-06-21  7:26   ` Tu, Lijuan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1655267919-322663-2-git-send-email-yogesh.jangra@intel.com \
    --to=yogesh.jangra@intel.com \
    --cc=dts@dpdk.org \
    --cc=harshad.suresh.narayane@intel.com \
    --cc=kamalakannan.r@intel.com \
    --cc=venkata.suresh.kumar.p@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).