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
20 #define DEFAULT_BURST 32U
21 #define DEFAULT_OPS 64U
24 #define TEST_ASSERT(cond, msg, ...) do { \
26 printf("TestCase %s() line %d failed: " \
27 msg "\n", __func__, __LINE__, ##__VA_ARGS__); \
32 /* Compare two buffers (length in bytes) */
33 #define TEST_ASSERT_BUFFERS_ARE_EQUAL(a, b, len, msg, ...) do { \
34 if (memcmp((a), (b), len)) { \
35 printf("TestCase %s() line %d failed: " \
36 msg "\n", __func__, __LINE__, ##__VA_ARGS__); \
37 rte_memdump(stdout, "Buffer A", (a), len); \
38 rte_memdump(stdout, "Buffer B", (b), len); \
43 #define TEST_ASSERT_SUCCESS(val, msg, ...) do { \
44 typeof(val) _val = (val); \
46 printf("TestCase %s() line %d failed (err %d): " \
47 msg "\n", __func__, __LINE__, _val, \
53 #define TEST_ASSERT_FAIL(val, msg, ...) \
54 TEST_ASSERT_SUCCESS(!(val), msg, ##__VA_ARGS__)
56 #define TEST_ASSERT_NOT_NULL(val, msg, ...) do { \
57 if ((val) == NULL) { \
58 printf("TestCase %s() line %d failed (null): " \
59 msg "\n", __func__, __LINE__, ##__VA_ARGS__); \
64 struct unit_test_case {
66 void (*teardown)(void);
67 int (*testcase)(void);
71 #define TEST_CASE(testcase) {NULL, NULL, testcase, #testcase}
73 #define TEST_CASE_ST(setup, teardown, testcase) \
74 {setup, teardown, testcase, #testcase}
76 #define TEST_CASES_END() {NULL, NULL, NULL, NULL}
78 struct unit_test_suite {
79 const char *suite_name;
81 void (*teardown)(void);
82 struct unit_test_case unit_test_cases[];
85 int unit_test_suite_runner(struct unit_test_suite *suite);
87 typedef int (test_callback)(void);
88 TAILQ_HEAD(test_commands_list, test_command);
90 TAILQ_ENTRY(test_command) next;
92 test_callback *callback;
95 void add_test_command(struct test_command *t);
97 /* Register a test function */
98 #define REGISTER_TEST_COMMAND(name, testsuite) \
99 static int test_func_##name(void) \
101 return unit_test_suite_runner(&testsuite); \
103 static struct test_command test_struct_##name = { \
104 .command = RTE_STR(name), \
105 .callback = test_func_##name, \
107 static void __attribute__((constructor, used)) \
108 test_register_##name(void) \
110 add_test_command(&test_struct_##name); \
113 const char *get_vector_filename(void);
115 unsigned int get_num_ops(void);
117 unsigned int get_burst_sz(void);
119 unsigned int get_num_lcores(void);
121 bool get_init_device(void);