1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2017 Intel Corporation
11 #include <rte_common.h>
12 #include <rte_hexdump.h>
15 #define TEST_SUCCESS 0
16 #define TEST_FAILED -1
17 #define TEST_SKIPPED 1
19 #define MAX_BURST 512U
21 #define DEFAULT_BURST 32U
22 #define DEFAULT_OPS 64U
23 #define DEFAULT_ITER 6U
27 #define TEST_ASSERT(cond, msg, ...) do { \
29 printf("TestCase %s() line %d failed: " \
30 msg "\n", __func__, __LINE__, ##__VA_ARGS__); \
35 /* Compare two buffers (length in bytes) */
36 #define TEST_ASSERT_BUFFERS_ARE_EQUAL(a, b, len, msg, ...) do { \
37 if (memcmp((a), (b), len)) { \
38 printf("TestCase %s() line %d failed: " \
39 msg "\n", __func__, __LINE__, ##__VA_ARGS__); \
40 rte_memdump(stdout, "Buffer A", (a), len); \
41 rte_memdump(stdout, "Buffer B", (b), len); \
46 #define TEST_ASSERT_SUCCESS(val, msg, ...) do { \
47 typeof(val) _val = (val); \
49 printf("TestCase %s() line %d failed (err %d): " \
50 msg "\n", __func__, __LINE__, _val, \
56 #define TEST_ASSERT_FAIL(val, msg, ...) \
57 TEST_ASSERT_SUCCESS(!(val), msg, ##__VA_ARGS__)
59 #define TEST_ASSERT_NOT_NULL(val, msg, ...) do { \
60 if ((val) == NULL) { \
61 printf("TestCase %s() line %d failed (null): " \
62 msg "\n", __func__, __LINE__, ##__VA_ARGS__); \
67 struct unit_test_case {
69 void (*teardown)(void);
70 int (*testcase)(void);
74 #define TEST_CASE(testcase) {NULL, NULL, testcase, #testcase}
76 #define TEST_CASE_ST(setup, teardown, testcase) \
77 {setup, teardown, testcase, #testcase}
79 #define TEST_CASES_END() {NULL, NULL, NULL, NULL}
81 struct unit_test_suite {
82 const char *suite_name;
84 void (*teardown)(void);
85 struct unit_test_case unit_test_cases[];
88 int unit_test_suite_runner(struct unit_test_suite *suite);
90 typedef int (test_callback)(void);
91 TAILQ_HEAD(test_commands_list, test_command);
93 TAILQ_ENTRY(test_command) next;
95 test_callback *callback;
98 void add_test_command(struct test_command *t);
100 /* Register a test function */
101 #define REGISTER_TEST_COMMAND(name, testsuite) \
102 static int test_func_##name(void) \
104 return unit_test_suite_runner(&testsuite); \
106 static struct test_command test_struct_##name = { \
107 .command = RTE_STR(name), \
108 .callback = test_func_##name, \
110 RTE_INIT(test_register_##name) \
112 add_test_command(&test_struct_##name); \
115 const char *get_vector_filename(void);
117 unsigned int get_num_ops(void);
119 unsigned int get_burst_sz(void);
121 unsigned int get_num_lcores(void);
123 double get_snr(void);
125 unsigned int get_iter_max(void);
127 bool get_init_device(void);