From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A737CA0577; Mon, 13 Apr 2020 17:09:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 58AC41BEE7; Mon, 13 Apr 2020 17:03:27 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 4C9481C120 for ; Mon, 13 Apr 2020 17:03:25 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03DF02LO014895; Mon, 13 Apr 2020 08:03:24 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0818; bh=5+R7gEUajnXZCtiZGIZ0vyG4FK8L1ZvFQyQVGv0XaVA=; b=i6HeWHBm1700pM0tozI/0pQrfIA91cZIJvtbtNwF3pk+vHAfwXv5vGOiM92oZkjEhCwq 9BofCBUukdRIuuom7xVgeHG8Ky19FuSyLkEkGek4dVg3OyirfxjL3RJf5iHjzqW+6MGq r+l1Mnd6T9CIxSHkflNroK5qCIJgUyiW/ViQOT72lVITImXC2Hin7MXE88hv/rt7pxx+ qTgJjBPjMJm/MNptpoAfNSeJXb2vGZhCRGQgh4rI7fU90QeiXksYqUWCesvv55kteunm 2h54CuLkRhuSkBUEy5YB23sCyvgen0o84bYPi/XxwBrVLwU7pqbO0PpEDNuTCyEB6kgr kw== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 30bb8qey2x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 13 Apr 2020 08:03:24 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 13 Apr 2020 08:03:23 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 13 Apr 2020 08:03:22 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 13 Apr 2020 08:03:22 -0700 Received: from jerin-lab.marvell.com (jerin-lab.marvell.com [10.28.34.14]) by maili.marvell.com (Postfix) with ESMTP id 618103F7040; Mon, 13 Apr 2020 08:03:20 -0700 (PDT) From: To: CC: , , , , , Date: Mon, 13 Apr 2020 20:31:10 +0530 Message-ID: <20200413150116.734047-28-jerinj@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200413150116.734047-1-jerinj@marvell.com> References: <20200403153709.3703448-1-jerinj@marvell.com> <20200413150116.734047-1-jerinj@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-13_07:2020-04-13, 2020-04-13 signatures=0 Subject: [dpdk-dev] [PATCH v5 27/33] eal/trace: add unit test cases X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Sunil Kumar Kori Example commands to run UT and check the traces with babeltrace viewer. - Delete the existing /root/dpdk-traces/ directory if needed. > sudo rm -rf /root/dpdk-traces/ - Start the dpdk-test > sudo ./build/app/test/dpdk-test -c 0x3 - --trace=.* - Run trace_autotest > trace_autotest - View the traces with babletrace viewer. > sudo babeltrace /root/dpdk-traces/ Signed-off-by: Sunil Kumar Kori --- app/test/Makefile | 3 +- app/test/meson.build | 2 + app/test/test_trace.c | 258 +++++++++++++++++++++++++++++++++ app/test/test_trace.h | 15 ++ app/test/test_trace_register.c | 19 +++ 5 files changed, 296 insertions(+), 1 deletion(-) create mode 100644 app/test/test_trace.c create mode 100644 app/test/test_trace.h create mode 100644 app/test/test_trace_register.c diff --git a/app/test/Makefile b/app/test/Makefile index be53d33c3..9fb7b843f 100644 --- a/app/test/Makefile +++ b/app/test/Makefile @@ -148,7 +148,8 @@ SRCS-y += test_alarm.c SRCS-y += test_interrupts.c SRCS-y += test_version.c SRCS-y += test_func_reentrancy.c - +SRCS-y += test_trace.c +SRCS-y += test_trace_register.c SRCS-y += test_service_cores.c ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y) diff --git a/app/test/meson.build b/app/test/meson.build index 351d29cb6..4966236e8 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -121,6 +121,8 @@ test_sources = files('commands.c', 'test_timer_racecond.c', 'test_timer_secondary.c', 'test_ticketlock.c', + 'test_trace.c', + 'test_trace_register.c', 'test_version.c', 'virtual_pmd.c' ) diff --git a/app/test/test_trace.c b/app/test/test_trace.c new file mode 100644 index 000000000..1f69e4142 --- /dev/null +++ b/app/test/test_trace.c @@ -0,0 +1,258 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2020 Marvell International Ltd. + */ + +#include +#include + +#include "test.h" +#include "test_trace.h" + +static int32_t +test_trace_point_globbing(void) +{ + bool val; + int rc; + + rc = rte_trace_pattern("app.dpdk.test*", false); + if (rc != 1) + goto failed; + + val = rte_trace_is_disabled(&__app_dpdk_test_tp); + if (val == false) + goto failed; + + rc = rte_trace_pattern("app.dpdk.test*", true); + if (rc != 1) + goto failed; + + val = rte_trace_is_enabled(&__app_dpdk_test_tp); + if (val == false) + goto failed; + + rc = rte_trace_pattern("invalid_testpoint.*", true); + if (rc != 0) + goto failed; + + return TEST_SUCCESS; + +failed: + return TEST_FAILED; +} + +static int32_t +test_trace_point_regex(void) +{ + bool val; + int rc; + + + rc = rte_trace_regexp("app.dpdk.test*", false); + if (rc != 1) + goto failed; + + val = rte_trace_is_disabled(&__app_dpdk_test_tp); + if (val == false) + goto failed; + + rc = rte_trace_regexp("app.dpdk.test*", true); + if (rc != 1) + goto failed; + + val = rte_trace_is_enabled(&__app_dpdk_test_tp); + if (val == false) + goto failed; + + rc = rte_trace_regexp("invalid_testpoint.*", true); + if (rc != 0) + goto failed; + + return TEST_SUCCESS; + +failed: + return TEST_FAILED; +} + +static int32_t +test_trace_point_disable_enable(void) +{ + bool val; + int rc; + + rc = rte_trace_disable(&__app_dpdk_test_tp); + if (rc < 0) + goto failed; + + val = rte_trace_is_disabled(&__app_dpdk_test_tp); + if (val == false) + goto failed; + + rc = rte_trace_enable(&__app_dpdk_test_tp); + if (rc < 0) + goto failed; + + val = rte_trace_is_enabled(&__app_dpdk_test_tp); + if (val == false) + goto failed; + + /* Emit the trace */ + app_dpdk_test_tp("app.dpdk.test.tp"); + return TEST_SUCCESS; + +failed: + return TEST_FAILED; +} + +static int32_t +test_trace_validity(void) +{ + rte_trace_t invalid_trace = (int64_t)-1; /* Invalid trace */ + bool rc; + + rc = rte_trace_id_is_invalid(&__app_dpdk_test_tp); + if (rc == true) + goto failed; + + rc = rte_trace_id_is_invalid(&invalid_trace); + if (rc == false) + goto failed; + + return TEST_SUCCESS; + +failed: + return TEST_FAILED; +} + +static int +test_trace_global_status(void) +{ + bool enabled, disabled; + + enabled = rte_trace_global_is_enabled(); + disabled = rte_trace_global_is_disabled(); + + if (enabled != disabled) + return TEST_SUCCESS; + + return TEST_FAILED; +} + +static int +test_trace_mode(void) +{ + enum rte_trace_mode current; + + current = rte_trace_mode_get(); + + if (rte_trace_global_is_disabled()) + return TEST_SKIPPED; + + rte_trace_mode_set(RTE_TRACE_MODE_DISCARD); + if (rte_trace_mode_get() != RTE_TRACE_MODE_DISCARD) + goto failed; + + rte_trace_mode_set(RTE_TRACE_MODE_OVERWRITE); + if (rte_trace_mode_get() != RTE_TRACE_MODE_OVERWRITE) + goto failed; + + rte_trace_mode_set(current); + return TEST_SUCCESS; + +failed: + return TEST_FAILED; + +} + +static int +test_trace_points_lookup(void) +{ + rte_trace_t *trace; + + trace = rte_trace_by_name("app.dpdk.test.tp"); + if (trace == NULL) + goto fail; + trace = rte_trace_by_name("this_trace_point_does_not_exist"); + if (trace != NULL) + goto fail; + + return TEST_SUCCESS; +fail: + return TEST_FAILED; +} + +static int +test_trace_fastpath_point(void) +{ + /* Emit the FP trace */ + app_dpdk_test_fp(); + + return TEST_SUCCESS; +} + +static int +test_generic_trace_points(void) +{ + int tmp; + + rte_trace_lib_eal_generic_void(); + rte_trace_lib_eal_generic_u64(0x10000000000000); + rte_trace_lib_eal_generic_u32(0x10000000); + rte_trace_lib_eal_generic_u16(0xffee); + rte_trace_lib_eal_generic_u8(0xc); + rte_trace_lib_eal_generic_i64(-1234); + rte_trace_lib_eal_generic_i32(-1234567); + rte_trace_lib_eal_generic_i16(12); + rte_trace_lib_eal_generic_i8(-3); + rte_trace_lib_eal_generic_int(3333333); + rte_trace_lib_eal_generic_long(333); + rte_trace_lib_eal_generic_float(20.45); + rte_trace_lib_eal_generic_double(20000.5000004); + rte_trace_lib_eal_generic_ptr(&tmp); + rte_trace_lib_eal_generic_str("my string"); + RTE_TRACE_LIB_EAL_GENERIC_FUNC; + + return TEST_SUCCESS; +} + +static struct unit_test_suite trace_tests = { + .suite_name = "trace autotest", + .setup = NULL, + .teardown = NULL, + .unit_test_cases = { + TEST_CASE(test_trace_global_status), + TEST_CASE(test_trace_mode), + TEST_CASE(test_generic_trace_points), + TEST_CASE(test_trace_fastpath_point), + TEST_CASE(test_trace_point_disable_enable), + TEST_CASE(test_trace_point_globbing), + TEST_CASE(test_trace_point_regex), + TEST_CASE(test_trace_points_lookup), + TEST_CASE(test_trace_validity), + TEST_CASES_END() + } +}; + +static int +test_trace(void) +{ + return unit_test_suite_runner(&trace_tests); +} + +REGISTER_TEST_COMMAND(trace_autotest, test_trace); + +static int +test_trace_dump(void) +{ + rte_trace_dump(stdout); + return 0; +} + +REGISTER_TEST_COMMAND(trace_dump, test_trace_dump); + +static int +test_trace_metadata_dump(void) +{ + return rte_trace_metadata_dump(stdout); +} + +REGISTER_TEST_COMMAND(trace_metadata_dump, test_trace_metadata_dump); diff --git a/app/test/test_trace.h b/app/test/test_trace.h new file mode 100644 index 000000000..18dd573f3 --- /dev/null +++ b/app/test/test_trace.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2020 Marvell International Ltd. + */ +#include + +RTE_TRACE_POINT( + app_dpdk_test_tp, + RTE_TRACE_POINT_ARGS(const char *str), + rte_trace_ctf_string(str); +) + +RTE_TRACE_POINT_FP( + app_dpdk_test_fp, + RTE_TRACE_POINT_ARGS(void), +) diff --git a/app/test/test_trace_register.c b/app/test/test_trace_register.c new file mode 100644 index 000000000..074b4f4bb --- /dev/null +++ b/app/test/test_trace_register.c @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2020 Marvell International Ltd. + */ +#define RTE_TRACE_POINT_REGISTER_SELECT /* Select trace point register macros */ + +#include + +#include "test_trace.h" + +/* Define trace points */ +RTE_TRACE_POINT_DEFINE(app_dpdk_test_tp); +RTE_TRACE_POINT_DEFINE(app_dpdk_test_fp); + +RTE_INIT(register_valid_trace_points) +{ + RTE_TRACE_POINT_REGISTER(app_dpdk_test_tp, app.dpdk.test.tp); + RTE_TRACE_POINT_REGISTER(app_dpdk_test_fp, app.dpdk.test.fp); +} + -- 2.25.1