* [dts] [PATCH V1 1/3] test_plans/asan_smoke_test_plan:add asan smoke test plan @ 2022-02-11 12:56 Zhimin Huang 2022-02-11 12:56 ` [dts] [PATCH V1 2/3] test_plans/index:add new suite Zhimin Huang 2022-02-11 12:56 ` [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite Zhimin Huang 0 siblings, 2 replies; 4+ messages in thread From: Zhimin Huang @ 2022-02-11 12:56 UTC (permalink / raw) To: dts; +Cc: Zhimin Huang add asan smoke test plan. Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com> --- test_plans/asan_smoke_test_plan.rst | 74 +++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 test_plans/asan_smoke_test_plan.rst diff --git a/test_plans/asan_smoke_test_plan.rst b/test_plans/asan_smoke_test_plan.rst new file mode 100644 index 00000000..e7d05a19 --- /dev/null +++ b/test_plans/asan_smoke_test_plan.rst @@ -0,0 +1,74 @@ +.. Copyright (c) <2022>, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +=========================== +AddressSanitizer Smoke Test +=========================== + +Description +=========== + +AddressSanitizer (ASan) is a fast memory error detector,it is a widely-used debugging tool to detect memory access errors. + + - `AddressSanitizer<https://github.com/google/sanitizers/wiki/AddressSanitizer>` + - It finds use-after-free, various kinds of buffer overruns in dpdk, and printing out detailed debug information + whenever an error is detected. + - ASAN is integrated with gcc and clang, and use meson option '-Db_sanitize=address' to enable. + +Prerequisites +============= + +1. NIC requires: + + - Intel ethernet cards: niantic/fortville/columbiaville,etc + +2. Software:: + + dpdk: http://dpdk.org/git/dpdk. + scapy: http://www.secdev.org/projects/scapy/ + +Test Case: RX/TX test with ASan enable +====================================== + +1. Build dpdk with ASan tool, add "-Dbuildtype=debug -Db_lundef=false -Db_sanitize=address" + in meson build system could enable ASan tool, such as below:: + + CC=gcc meson -Denable_kmods=True -Dlibdir=lib -Dbuildtype=debug -Db_lundef=false -Db_sanitize=address --default-library=static x86_64-native-linuxapp-gcc + ninja -C x86_64-native-linuxapp-gcc -j 70 + +2. Bind NIC port to vfio-pci. + +3. Setup testpmd, check testpmd could launch successfully and don't have "heap-buffer-overflow", "use-after-free" memory errors. + +4. Set mac forward mode. + +5. Send packet and check testpmd forward packet successfully. \ No newline at end of file -- 2.17.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [dts] [PATCH V1 2/3] test_plans/index:add new suite 2022-02-11 12:56 [dts] [PATCH V1 1/3] test_plans/asan_smoke_test_plan:add asan smoke test plan Zhimin Huang @ 2022-02-11 12:56 ` Zhimin Huang 2022-02-11 12:56 ` [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite Zhimin Huang 1 sibling, 0 replies; 4+ messages in thread From: Zhimin Huang @ 2022-02-11 12:56 UTC (permalink / raw) To: dts; +Cc: Zhimin Huang add new testplan to index. Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com> --- test_plans/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/test_plans/index.rst b/test_plans/index.rst index e3511caa..89571ffe 100644 --- a/test_plans/index.rst +++ b/test_plans/index.rst @@ -38,6 +38,7 @@ The following are the test plans for the DPDK DTS automated test system. :numbered: ABI_stable_test_plan + asan_smoke_test_plan blocklist_test_plan checksum_offload_test_plan coremask_test_plan -- 2.17.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite 2022-02-11 12:56 [dts] [PATCH V1 1/3] test_plans/asan_smoke_test_plan:add asan smoke test plan Zhimin Huang 2022-02-11 12:56 ` [dts] [PATCH V1 2/3] test_plans/index:add new suite Zhimin Huang @ 2022-02-11 12:56 ` Zhimin Huang 2022-02-11 6:54 ` Lin, Xueqin 1 sibling, 1 reply; 4+ messages in thread From: Zhimin Huang @ 2022-02-11 12:56 UTC (permalink / raw) To: dts; +Cc: Zhimin Huang add asan smoke test suite. Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com> --- tests/TestSuite_asan_smoke.py | 107 ++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 tests/TestSuite_asan_smoke.py diff --git a/tests/TestSuite_asan_smoke.py b/tests/TestSuite_asan_smoke.py new file mode 100644 index 00000000..fc876da6 --- /dev/null +++ b/tests/TestSuite_asan_smoke.py @@ -0,0 +1,107 @@ +# BSD LICENSE +# +# Copyright(c) 2022 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from .smoke_base import ( + DEFAULT_MTU_VALUE, + JUMBO_FRAME_LENGTH, + JUMBO_FRAME_MTU, + LAUNCH_QUEUE, + SmokeTest, +) +from framework.packet import Packet +from framework.pmd_output import PmdOutput +from framework.test_case import TestCase + +class TestAsanSmoke(TestCase): + + def set_up_all(self): + """ + Run at the start of each test suite. + Generic filter Prerequistites + """ + self.smoke_dut_ports = self.dut.get_ports(self.nic) + self.ports_pci = [self.dut.ports_info[self.smoke_dut_ports[0]]['pci']] + # Verify that enough ports are available + self.verify(len(self.smoke_dut_ports) >= 1, "Insufficient ports") + self.tester_port0 = self.tester.get_local_port(self.smoke_dut_ports[0]) + self.smoke_tester_nic = self.tester.get_interface(self.tester_port0) + self.smoke_tester_mac = self.tester.get_mac(self.smoke_dut_ports[0]) + self.smoke_dut_mac = self.dut.get_mac_address(self.smoke_dut_ports[0]) + self.cores = "1S/5C/1T" + # check core num + core_list = self.dut.get_core_list(self.cores) + self.verify(len(core_list) >= 5, "Insufficient cores for testing") + + # init Packet(), SmokeTest(), PmdOutput() + self.pkt = Packet() + self.smoke_base = SmokeTest(self) + self.pmd_out = PmdOutput(self.dut) + + # build dpdk with asan tool + self.dut.build_install_dpdk(target=self.target, + extra_options="-Dbuildtype=debug -Db_lundef=false -Db_sanitize=address") + + def set_up(self): + """ + Run before each test case. + """ + pass + + def tear_down(self): + """ + Run after each test case. + """ + self.pmd_out.execute_cmd("stop") + + def tear_down_all(self): + """ + Run after each test suite. + """ + self.dut.send_expect("quit", "#") + self.dut.kill_all() + self.dut.build_install_dpdk(self.target) + + def check_testpmd_status(self): + cmd = "ps -aux | grep testpmd | grep -v grep" + out = self.dut.send_expect(cmd, "#", 15, alt_session=True) + self.verify("testpmd" in out, "After build dpdk with ASan, start testpmd failed") + + def test_rxtx_with_asan_enable(self): + out = self.pmd_out.start_testpmd(cores=self.cores, ports=self.ports_pci) + self.check_testpmd_status() + self.verify(all([error_key not in out for error_key in ['heap-buffer-overflow', 'use-after-free']]), + "the testpmd have error key words") + self.pmd_out.execute_cmd("set fwd mac") + self.pmd_out.execute_cmd("set verbose 1") + self.pmd_out.execute_cmd("start") + queues, stats = self.smoke_base.send_pkg_return_stats() + self.verify(stats['RX-packets'] != 0 and stats['RX-packets'] == stats['TX-packets'], "RX-packets: {} " + "TX-packets : {}, rx tx test failed".format(stats['RX-packets'], stats['TX-packets'])) \ No newline at end of file -- 2.17.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite 2022-02-11 12:56 ` [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite Zhimin Huang @ 2022-02-11 6:54 ` Lin, Xueqin 0 siblings, 0 replies; 4+ messages in thread From: Lin, Xueqin @ 2022-02-11 6:54 UTC (permalink / raw) To: Huang, ZhiminX, dts; +Cc: Huang, ZhiminX > -----Original Message----- > From: Zhimin Huang <zhiminx.huang@intel.com> > Sent: Friday, February 11, 2022 8:57 PM > To: dts@dpdk.org > Cc: Huang, ZhiminX <zhiminx.huang@intel.com> > Subject: [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite > > add asan smoke test suite. > > Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com> Acked-by: Xueqin Lin <xueqin.lin@intel.com> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-02-11 6:54 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-02-11 12:56 [dts] [PATCH V1 1/3] test_plans/asan_smoke_test_plan:add asan smoke test plan Zhimin Huang 2022-02-11 12:56 ` [dts] [PATCH V1 2/3] test_plans/index:add new suite Zhimin Huang 2022-02-11 12:56 ` [dts] [PATCH V1 3/3] tests/asan_smoke:add asan smoke test suite Zhimin Huang 2022-02-11 6:54 ` Lin, Xueqin
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).