1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2020 Marvell International Ltd.
5 #include <rte_eal_trace.h>
10 #include "test_trace.h"
12 #ifdef RTE_EXEC_ENV_WINDOWS
17 printf("trace not supported on Windows, skipping test\n");
24 printf("trace_dump not supported on Windows, skipping test\n");
29 test_trace_metadata_dump(void)
31 printf("trace_metadata_dump not supported on Windows, skipping test\n");
38 test_trace_point_globbing(void)
42 rc = rte_trace_pattern("app.dpdk.test*", false);
46 if (rte_trace_point_is_enabled(&__app_dpdk_test_tp))
49 rc = rte_trace_pattern("app.dpdk.test*", true);
53 if (!rte_trace_point_is_enabled(&__app_dpdk_test_tp))
56 rc = rte_trace_pattern("invalid_testpoint.*", true);
67 test_trace_point_regex(void)
71 rc = rte_trace_regexp("app.dpdk.test*", false);
75 if (rte_trace_point_is_enabled(&__app_dpdk_test_tp))
78 rc = rte_trace_regexp("app.dpdk.test*", true);
82 if (!rte_trace_point_is_enabled(&__app_dpdk_test_tp))
85 rc = rte_trace_regexp("invalid_testpoint.*", true);
96 test_trace_point_disable_enable(void)
100 rc = rte_trace_point_disable(&__app_dpdk_test_tp);
104 if (rte_trace_point_is_enabled(&__app_dpdk_test_tp))
107 rc = rte_trace_point_enable(&__app_dpdk_test_tp);
111 if (!rte_trace_point_is_enabled(&__app_dpdk_test_tp))
115 app_dpdk_test_tp("app.dpdk.test.tp");
123 test_trace_mode(void)
125 enum rte_trace_mode current;
127 current = rte_trace_mode_get();
129 if (!rte_trace_is_enabled())
132 rte_trace_mode_set(RTE_TRACE_MODE_DISCARD);
133 if (rte_trace_mode_get() != RTE_TRACE_MODE_DISCARD)
136 rte_trace_mode_set(RTE_TRACE_MODE_OVERWRITE);
137 if (rte_trace_mode_get() != RTE_TRACE_MODE_OVERWRITE)
140 rte_trace_mode_set(current);
149 test_trace_points_lookup(void)
151 rte_trace_point_t *trace;
153 trace = rte_trace_point_lookup("app.dpdk.test.tp");
156 trace = rte_trace_point_lookup("this_trace_point_does_not_exist");
166 test_fp_trace_points(void)
168 /* Emit the FP trace */
175 test_generic_trace_points(void)
179 rte_eal_trace_generic_void();
180 rte_eal_trace_generic_u64(0x10000000000000);
181 rte_eal_trace_generic_u32(0x10000000);
182 rte_eal_trace_generic_u16(0xffee);
183 rte_eal_trace_generic_u8(0xc);
184 rte_eal_trace_generic_i64(-1234);
185 rte_eal_trace_generic_i32(-1234567);
186 rte_eal_trace_generic_i16(12);
187 rte_eal_trace_generic_i8(-3);
188 rte_eal_trace_generic_int(3333333);
189 rte_eal_trace_generic_long(333);
190 rte_eal_trace_generic_float(20.45);
191 rte_eal_trace_generic_double(20000.5000004);
192 rte_eal_trace_generic_ptr(&tmp);
193 rte_eal_trace_generic_str("my string");
194 rte_eal_trace_generic_size_t(sizeof(void *));
195 RTE_EAL_TRACE_GENERIC_FUNC;
200 static struct unit_test_suite trace_tests = {
201 .suite_name = "trace autotest",
205 TEST_CASE(test_trace_mode),
206 TEST_CASE(test_generic_trace_points),
207 TEST_CASE(test_fp_trace_points),
208 TEST_CASE(test_trace_point_disable_enable),
209 TEST_CASE(test_trace_point_globbing),
210 TEST_CASE(test_trace_point_regex),
211 TEST_CASE(test_trace_points_lookup),
219 return unit_test_suite_runner(&trace_tests);
223 test_trace_dump(void)
225 rte_trace_dump(stdout);
230 test_trace_metadata_dump(void)
232 return rte_trace_metadata_dump(stdout);
235 #endif /* !RTE_EXEC_ENV_WINDOWS */
237 REGISTER_TEST_COMMAND(trace_autotest, test_trace);
238 REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
239 REGISTER_TEST_COMMAND(trace_metadata_dump, test_trace_metadata_dump);