test: eal flags cleanup
cover test: eal flags cleanup
Revisions to the EAL flags tests to cleanup and fix warnings. Split off from earlier patch series.
Stephen Hemminger (4):
test: re-enable format-truncation warnings
test: increase size of memzone name
test: refactor file prefix arg handling
test: use unit test runner for eal flags
app/test/meson.build | 1 - app/test/test_eal_flags.c | 161 ++++++++++++++++---------------------- app/test/test_memzone.c | 2 +- 3 files changed, 67 insertions(+), 97 deletions(-)
Signature · 1 line
2.51.0
PATCH 1/4 test: re-enable format-truncation warnings
Tests should be built with warnings.
--- app/test/meson.build | 1 - 1 file changed, 1 deletion(-)
app/test/meson.build +0 -1
@@ -260,7 +260,6 @@ cflags += no_wvla_cflag extra_flags = [ # Strict-aliasing rules are violated by uint8_t[] to context size casts. '-fno-strict-aliasing', - '-Wno-format-truncation', ] foreach arg: extra_flags
Signature · 1 line
2.51.0
Re: [PATCH 1/4] test: re-enable format-truncation warnings
Quoted 13 lines · On Sat, 15 Nov 2025 11:33:07 -0800 Stephen Hemminger…
Tests should be built with warnings.
Signed-off-by Stephen Hemminger <[email protected]>Acked-by Bruce Richardson <[email protected]>--- app/test/meson.build | 1 - 1 file changed, 1 deletion(-)app/test/meson.build +0
-0
app/test/meson.build cflags += no_wvla_cflag · line 265
Quoted 7 lines
app/test/meson.build +0
-1@@ -260,7 +260,6 @@ cflags += no_wvla_cflag extra_flags = [ # Strict-aliasing rules are violated by uint8_t[] to context size casts. '-fno-strict-aliasing', - '-Wno-format-truncation', ] foreach arg: extra_flags
Need to reorder these commits? so the warning enabling is last.
PATCH 2/4 test: increase size of memzone name
In reply to Stephen HemmingerThe tests were using a name buffer of 20 characters which could overflow if number of memory zones got large. The upper limit is defined as RTE_MEMZONE_NAMESIZE so use that.
In function ‘test_memzone_free’,
inlined from ‘test_memzone’ at ../app/test/test_memzone.c:1117:6:../app/test/test_memzone.c:52:35: warning: ‘%u’ directive output may be truncated writing between 1 and 10 bytes into a region of size 4 [-Wformat-truncation=]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:52:35: note: directive argument in the range [0, 2147483647]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:931:17: note: ‘snprintf’ output between 18 and 27 bytes into a destination of size 20
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
932 | i);
|--- app/test/test_memzone.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
app/test/test_memzone.c +1 -1
@@ -872,7 +872,7 @@ test_memzone_free(void) {const struct rte_memzone **mz;int i; -char name[20 ]; +char name[RTE_MEMZONE_NAMESIZE ];int rc =-1 ; mz = rte_calloc("memzone_test", rte_memzone_max_get() + 1,
Signature · 1 line
2.51.0
PATCH 3/4 test: refactor file prefix arg handling
In reply to Stephen HemmingerMake setting up --file-prefix arg logic into a function, and avoid impossible case of file prefix path causing overflow of string.
--- app/test/test_eal_flags.c | 123 +++++++++++++------------------------- 1 file changed, 40 insertions(+), 83 deletions(-)
app/test/test_eal_flags.c +40 -83
@@ -121,6 +121,8 @@ test_misc_flags(void)#define no_shconf "--no-shconf"#define allow "--allow"#define vdev "--vdev" +#define file_prefix "--file-prefix" +#define memtest "memtest"#define memtest1 "memtest1"#define memtest2 "memtest2"
@@ -312,6 +314,25 @@ get_number_of_sockets(void) }#endif +static const char * +get_file_prefix (void ) +{ +#ifdef RTE_EXEC_ENV_FREEBSD +/* BSD target doesn't support prefixes at this point */ +return "" ; +#else +static char prefix[PATH_MAX +sizeof (file_prefix)]; +char tmp[PATH_MAX ]; + +if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { +printf ("Error - unable to get current prefix!\n" ); +return NULL ; + } +snprintf (prefix,sizeof (prefix), file_prefix"=%s" , tmp); +return prefix; +#endif +} +/* * Test that the app doesn't run with invalid allow option. * Final tests ensures it does run with valid options as sanity check (one
@@ -320,18 +341,10 @@ get_number_of_sockets(void)static int test_allow_flag (void ) { -unsigned i; -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +unsigned int i; +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *wlinval[][7 ] = { {prgname, prefix, mp_flag,
@@ -387,17 +400,9 @@ test_allow_flag(void)static int test_invalid_b_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *blinval[][5 ] = { {prgname, prefix, mp_flag,"-b" ,"error" },
@@ -491,17 +496,9 @@ test_invalid_vdev_flag(void)static int test_invalid_r_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *rinval[][5 ] = { {prgname, prefix, mp_flag,"-r" ,"error" },
@@ -535,17 +532,9 @@ test_invalid_r_flag(void)static int test_missing_c_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* -c flag but no coremask value */ const char *argv1[] = { prgname, prefix, mp_flag,"-c" };
@@ -694,17 +683,9 @@ test_missing_c_flag(void)static int test_main_lcore_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char *prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif if (!rte_lcore_is_enabled (0 ) || !rte_lcore_is_enabled (1 ))return TEST_SKIPPED ;
@@ -751,17 +732,9 @@ test_main_lcore_flag(void)static int test_invalid_n_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* -n flag but no value */ const char *argv1[] = { prgname, prefix, no_huge, no_shconf,
@@ -803,17 +776,12 @@ test_invalid_n_flag(void)static int test_no_hpet_flag (void ) { -char prefix[PATH_MAX ] ="" ; -#ifdef RTE_EXEC_ENV_FREEBSD return 0 ;#else -char tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp);#endif /* With --no-hpet */
@@ -913,17 +881,14 @@ test_misc_flags(void)const char * prefix ="" ;const char * nosh_prefix ="" ;#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; +const char *prefix =get_file_prefix ();const char * nosh_prefix ="--file-prefix=noshconf" ;FILE * hugedir_handle =NULL ;char line[PATH_MAX ] = {0 };unsigned i, isempty =1 ; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp);/* * get first valid hugepage path
@@ -1525,17 +1490,9 @@ populate_socket_mem_param(int num_sockets, const char *mem,static int test_memory_flags (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* valid -m flag and mp flag */ const char *argv0[] = {prgname, prefix, mp_flag,
Signature · 1 line
2.51.0
PATCH 4/4 test: use unit test runner for eal flags
In reply to Stephen HemmingerMake the sub tests in eal flags suite into a group so that they are not individual tests.
--- app/test/test_eal_flags.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-)
app/test/test_eal_flags.c +26 -12
@@ -1649,15 +1649,29 @@ test_memory_flags(void)#endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST (eal_flags_c_opt_autotest, false, false, test_missing_c_flag); -REGISTER_FAST_TEST (eal_flags_main_opt_autotest, false, false, test_main_lcore_flag); -REGISTER_FAST_TEST (eal_flags_n_opt_autotest, false, false, test_invalid_n_flag); -REGISTER_FAST_TEST (eal_flags_hpet_autotest, false, false, test_no_hpet_flag); -REGISTER_FAST_TEST (eal_flags_no_huge_autotest, false, false, test_no_huge_flag); -REGISTER_FAST_TEST (eal_flags_a_opt_autotest, false, false, test_allow_flag); -REGISTER_FAST_TEST (eal_flags_b_opt_autotest, false, false, test_invalid_b_flag); -REGISTER_FAST_TEST (eal_flags_vdev_opt_autotest, false, false, test_invalid_vdev_flag); -REGISTER_FAST_TEST (eal_flags_r_opt_autotest, false, false, test_invalid_r_flag); -REGISTER_FAST_TEST (eal_flags_mem_autotest, false, false, test_memory_flags); -REGISTER_FAST_TEST (eal_flags_file_prefix_autotest, false, false, test_file_prefix); -REGISTER_FAST_TEST (eal_flags_misc_autotest, false, false, test_misc_flags); +static struct unit_test_suite eal_flags_test_suite = { + .suite_name ="EAL flags unit test suite" , + .unit_test_cases = { +TEST_CASE (test_missing_c_flag), +TEST_CASE (test_main_lcore_flag), +TEST_CASE (test_invalid_n_flag), +TEST_CASE (test_no_hpet_flag), +TEST_CASE (test_no_huge_flag), +TEST_CASE (test_allow_flag), +TEST_CASE (test_invalid_b_flag), +TEST_CASE (test_invalid_vdev_flag), +TEST_CASE (test_invalid_r_flag), +TEST_CASE (test_memory_flags), +TEST_CASE (test_file_prefix), +TEST_CASE (test_misc_flags), +TEST_CASES_END () + } +}; + +static int +test_eal_flags (void ) +{ +return unit_test_suite_runner (&eal_flags_test_suite); +} + +REGISTER_FAST_TEST (eal_flags_autotest, false, false, test_eal_flags);
Signature · 1 line
2.51.0
v2 cover enable format-overflow on tests
In reply to Stephen HemmingerChanges to allow building all tests with format-overflow warning enabled.
v2 - fix ACL test
Stephen Hemminger (5):
test: increase size of memzone name
test: refactor file prefix arg handling
test: use unit test runner for eal flags
test: fix format overflow warning in ACL test
test: re-enable format-truncation warnings
app/test/meson.build | 1 - app/test/test_eal_flags.c | 161 ++++++++++++++++---------------------- app/test/test_memzone.c | 2 +- app/test/test_table_acl.c | 4 +- 4 files changed, 69 insertions(+), 99 deletions(-)
Signature · 1 line
2.51.0
PATCH v2 1/5 test: increase size of memzone name
The tests were using a name buffer of 20 characters which could overflow if number of memory zones got large. The upper limit is defined as RTE_MEMZONE_NAMESIZE so use that.
In function ‘test_memzone_free’,
inlined from ‘test_memzone’ at ../app/test/test_memzone.c:1117:6:../app/test/test_memzone.c:52:35: warning: ‘%u’ directive output may be truncated writing between 1 and 10 bytes into a region of size 4 [-Wformat-truncation=]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:52:35: note: directive argument in the range [0, 2147483647]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:931:17: note: ‘snprintf’ output between 18 and 27 bytes into a destination of size 20
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
932 | i);
|--- app/test/test_memzone.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
app/test/test_memzone.c +1 -1
@@ -872,7 +872,7 @@ test_memzone_free(void) {const struct rte_memzone **mz;int i; -char name[20 ]; +char name[RTE_MEMZONE_NAMESIZE ];int rc =-1 ; mz = rte_calloc("memzone_test", rte_memzone_max_get() + 1,
Signature · 1 line
2.51.0
PATCH v2 2/5 test: refactor file prefix arg handling
In reply to Stephen HemmingerMake setting up --file-prefix arg logic into a function, and avoid impossible case of file prefix path causing overflow of string.
--- app/test/test_eal_flags.c | 123 +++++++++++++------------------------- 1 file changed, 40 insertions(+), 83 deletions(-)
app/test/test_eal_flags.c +40 -83
@@ -121,6 +121,8 @@ test_misc_flags(void)#define no_shconf "--no-shconf"#define allow "--allow"#define vdev "--vdev" +#define file_prefix "--file-prefix" +#define memtest "memtest"#define memtest1 "memtest1"#define memtest2 "memtest2"
@@ -312,6 +314,25 @@ get_number_of_sockets(void) }#endif +static const char * +get_file_prefix (void ) +{ +#ifdef RTE_EXEC_ENV_FREEBSD +/* BSD target doesn't support prefixes at this point */ +return "" ; +#else +static char prefix[PATH_MAX +sizeof (file_prefix)]; +char tmp[PATH_MAX ]; + +if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { +printf ("Error - unable to get current prefix!\n" ); +return NULL ; + } +snprintf (prefix,sizeof (prefix), file_prefix"=%s" , tmp); +return prefix; +#endif +} +/* * Test that the app doesn't run with invalid allow option. * Final tests ensures it does run with valid options as sanity check (one
@@ -320,18 +341,10 @@ get_number_of_sockets(void)static int test_allow_flag (void ) { -unsigned i; -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +unsigned int i; +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *wlinval[][7 ] = { {prgname, prefix, mp_flag,
@@ -387,17 +400,9 @@ test_allow_flag(void)static int test_invalid_b_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *blinval[][5 ] = { {prgname, prefix, mp_flag,"-b" ,"error" },
@@ -491,17 +496,9 @@ test_invalid_vdev_flag(void)static int test_invalid_r_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *rinval[][5 ] = { {prgname, prefix, mp_flag,"-r" ,"error" },
@@ -535,17 +532,9 @@ test_invalid_r_flag(void)static int test_missing_c_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* -c flag but no coremask value */ const char *argv1[] = { prgname, prefix, mp_flag,"-c" };
@@ -694,17 +683,9 @@ test_missing_c_flag(void)static int test_main_lcore_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char *prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif if (!rte_lcore_is_enabled (0 ) || !rte_lcore_is_enabled (1 ))return TEST_SKIPPED ;
@@ -751,17 +732,9 @@ test_main_lcore_flag(void)static int test_invalid_n_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* -n flag but no value */ const char *argv1[] = { prgname, prefix, no_huge, no_shconf,
@@ -803,17 +776,12 @@ test_invalid_n_flag(void)static int test_no_hpet_flag (void ) { -char prefix[PATH_MAX ] ="" ; -#ifdef RTE_EXEC_ENV_FREEBSD return 0 ;#else -char tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp);#endif /* With --no-hpet */
@@ -913,17 +881,14 @@ test_misc_flags(void)const char * prefix ="" ;const char * nosh_prefix ="" ;#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; +const char *prefix =get_file_prefix ();const char * nosh_prefix ="--file-prefix=noshconf" ;FILE * hugedir_handle =NULL ;char line[PATH_MAX ] = {0 };unsigned i, isempty =1 ; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp);/* * get first valid hugepage path
@@ -1525,17 +1490,9 @@ populate_socket_mem_param(int num_sockets, const char *mem,static int test_memory_flags (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* valid -m flag and mp flag */ const char *argv0[] = {prgname, prefix, mp_flag,
Signature · 1 line
2.51.0
PATCH v2 3/5 test: use unit test runner for eal flags
In reply to Stephen HemmingerMake the sub tests in eal flags suite into a group so that they are not individual tests.
--- app/test/test_eal_flags.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-)
app/test/test_eal_flags.c +26 -12
@@ -1649,15 +1649,29 @@ test_memory_flags(void)#endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST (eal_flags_c_opt_autotest, false, false, test_missing_c_flag); -REGISTER_FAST_TEST (eal_flags_main_opt_autotest, false, false, test_main_lcore_flag); -REGISTER_FAST_TEST (eal_flags_n_opt_autotest, false, false, test_invalid_n_flag); -REGISTER_FAST_TEST (eal_flags_hpet_autotest, false, false, test_no_hpet_flag); -REGISTER_FAST_TEST (eal_flags_no_huge_autotest, false, false, test_no_huge_flag); -REGISTER_FAST_TEST (eal_flags_a_opt_autotest, false, false, test_allow_flag); -REGISTER_FAST_TEST (eal_flags_b_opt_autotest, false, false, test_invalid_b_flag); -REGISTER_FAST_TEST (eal_flags_vdev_opt_autotest, false, false, test_invalid_vdev_flag); -REGISTER_FAST_TEST (eal_flags_r_opt_autotest, false, false, test_invalid_r_flag); -REGISTER_FAST_TEST (eal_flags_mem_autotest, false, false, test_memory_flags); -REGISTER_FAST_TEST (eal_flags_file_prefix_autotest, false, false, test_file_prefix); -REGISTER_FAST_TEST (eal_flags_misc_autotest, false, false, test_misc_flags); +static struct unit_test_suite eal_flags_test_suite = { + .suite_name ="EAL flags unit test suite" , + .unit_test_cases = { +TEST_CASE (test_missing_c_flag), +TEST_CASE (test_main_lcore_flag), +TEST_CASE (test_invalid_n_flag), +TEST_CASE (test_no_hpet_flag), +TEST_CASE (test_no_huge_flag), +TEST_CASE (test_allow_flag), +TEST_CASE (test_invalid_b_flag), +TEST_CASE (test_invalid_vdev_flag), +TEST_CASE (test_invalid_r_flag), +TEST_CASE (test_memory_flags), +TEST_CASE (test_file_prefix), +TEST_CASE (test_misc_flags), +TEST_CASES_END () + } +}; + +static int +test_eal_flags (void ) +{ +return unit_test_suite_runner (&eal_flags_test_suite); +} + +REGISTER_FAST_TEST (eal_flags_autotest, false, false, test_eal_flags);
Signature · 1 line
2.51.0
PATCH v2 4/5 test: fix format overflow warning in ACL test
In reply to Stephen HemmingerThis test has an array of input lines, but the two dimensional array confuses compiler length checks. Convert to an array of pointers to fixed strings which avoids the problem. Make both variables static since not shared with other code.
--- app/test/test_table_acl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
app/test/test_table_acl.c +2 -2
@@ -317,7 +317,7 @@ parse_cb_ipv4_rule_del(char *str, struct rte_table_acl_rule_delete_params *v)* separated by ' : ', just ':'. It's a lot more readable and * cleaner, IMO. */ -char lines[][128 ] = { +static const char *const lines[] = {"@0.0.0.0/0 0.0.0.0/0 0:65535 0:65535 2/0xff" ,/* Protocol check */ "@192.168.3.1/32 0.0.0.0/0 0:65535 0:65535 0/0" ,/* Src IP checl */ "@0.0.0.0/0 10.4.4.1/32 0:65535 0:65535 0/0" ,/* dst IP check */
@@ -325,7 +325,7 @@ char lines[][128] = { "@0.0.0.0/0 0.0.0.0/0 0:65535 206:206 0/0", /* dst port check */ }; -char line[128 ]; +static char line[128 ]; static int
Signature · 1 line
2.51.0
PATCH v2 5/5 test: re-enable format-truncation warnings
In reply to Stephen HemmingerTests should be built with warnings.
--- app/test/meson.build | 1 - 1 file changed, 1 deletion(-)
app/test/meson.build +0 -1
@@ -260,7 +260,6 @@ cflags += no_wvla_cflag extra_flags = [ # Strict-aliasing rules are violated by uint8_t[] to context size casts. '-fno-strict-aliasing', - '-Wno-format-truncation', ] foreach arg: extra_flags
Signature · 1 line
2.51.0
v3 cover test suite enable format overflow checks
In reply to Stephen HemmingerCleanup the standalone tests to allow enabling detection of format overflow.
v3 - fix build on FreeBSD
- add additional fixes for ACL and cfgfiles
Stephen Hemminger (6):
test: increase size of memzone name
test: refactor file prefix arg handling
test: use unit test runner for eal flags
test: fix format overflow warning in ACL test
test: fix impossible format-truncation in cfgfiles
test: re-enable format-truncation warnings
app/test/meson.build | 1 - app/test/test_cfgfile.c | 2 +- app/test/test_eal_flags.c | 168 ++++++++++++++++---------------------- app/test/test_memzone.c | 2 +- app/test/test_table_acl.c | 4 +- 5 files changed, 74 insertions(+), 103 deletions(-)
Signature · 1 line
2.51.0
PATCH v3 1/6 test: increase size of memzone name
The tests were using a name buffer of 20 characters which could overflow if number of memory zones got large. The upper limit is defined as RTE_MEMZONE_NAMESIZE so use that.
In function ‘test_memzone_free’,
inlined from ‘test_memzone’ at ../app/test/test_memzone.c:1117:6:../app/test/test_memzone.c:52:35: warning: ‘%u’ directive output may be truncated writing between 1 and 10 bytes into a region of size 4 [-Wformat-truncation=]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:52:35: note: directive argument in the range [0, 2147483647]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:931:17: note: ‘snprintf’ output between 18 and 27 bytes into a destination of size 20
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
932 | i);
|--- app/test/test_memzone.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
app/test/test_memzone.c +1 -1
@@ -872,7 +872,7 @@ test_memzone_free(void) {const struct rte_memzone **mz;int i; -char name[20 ]; +char name[RTE_MEMZONE_NAMESIZE ];int rc =-1 ; mz = rte_calloc("memzone_test", rte_memzone_max_get() + 1,
Signature · 1 line
2.51.0
PATCH v3 2/6 test: refactor file prefix arg handling
In reply to Stephen HemmingerMake setting up --file-prefix arg logic into a function, and avoid impossible case of file prefix path causing overflow of string.
--- app/test/test_eal_flags.c | 126 +++++++++++++------------------------- 1 file changed, 42 insertions(+), 84 deletions(-)
app/test/test_eal_flags.c +42 -84
@@ -121,6 +121,8 @@ test_misc_flags(void)#define no_shconf "--no-shconf"#define allow "--allow"#define vdev "--vdev" +#define file_prefix "--file-prefix" +#define memtest "memtest"#define memtest1 "memtest1"#define memtest2 "memtest2"
@@ -312,6 +314,25 @@ get_number_of_sockets(void) }#endif +static const char * +get_file_prefix (void ) +{ +#ifdef RTE_EXEC_ENV_FREEBSD +/* BSD target doesn't support prefixes at this point */ +return "" ; +#else +static char prefix[PATH_MAX +sizeof (file_prefix)]; +char tmp[PATH_MAX ]; + +if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { +printf ("Error - unable to get current prefix!\n" ); +return NULL ; + } +snprintf (prefix,sizeof (prefix), file_prefix"=%s" , tmp); +return prefix; +#endif +} +/* * Test that the app doesn't run with invalid allow option. * Final tests ensures it does run with valid options as sanity check (one
@@ -320,18 +341,10 @@ get_number_of_sockets(void)static int test_allow_flag (void ) { -unsigned i; -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +unsigned int i; +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *wlinval[][7 ] = { {prgname, prefix, mp_flag,
@@ -387,17 +400,9 @@ test_allow_flag(void)static int test_invalid_b_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *blinval[][5 ] = { {prgname, prefix, mp_flag,"-b" ,"error" },
@@ -491,17 +496,9 @@ test_invalid_vdev_flag(void)static int test_invalid_r_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif const char *rinval[][5 ] = { {prgname, prefix, mp_flag,"-r" ,"error" },
@@ -535,17 +532,9 @@ test_invalid_r_flag(void)static int test_missing_c_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* -c flag but no coremask value */ const char *argv1[] = { prgname, prefix, mp_flag,"-c" };
@@ -694,17 +683,9 @@ test_missing_c_flag(void)static int test_main_lcore_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char *prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif if (!rte_lcore_is_enabled (0 ) || !rte_lcore_is_enabled (1 ))return TEST_SKIPPED ;
@@ -751,17 +732,9 @@ test_main_lcore_flag(void)static int test_invalid_n_flag (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* -n flag but no value */ const char *argv1[] = { prgname, prefix, no_huge, no_shconf,
@@ -803,18 +776,12 @@ test_invalid_n_flag(void)static int test_no_hpet_flag (void ) { -char prefix[PATH_MAX ] ="" ; -#ifdef RTE_EXEC_ENV_FREEBSD return 0 ;#else -char tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* With --no-hpet */ const char *argv1[] = {prgname, prefix, mp_flag, no_hpet};
@@ -829,6 +796,7 @@ test_no_hpet_flag(void)printf ("Error - process did not run ok without --no-hpet flag\n" );return -1 ; } +#return 0 ; }
@@ -898,6 +866,7 @@ test_no_huge_flag(void)printf ("Error - process run ok with --no-huge and --huge-worker-stack=size flags" ); return -1; } +#endif return 0 ; }
@@ -913,17 +882,14 @@ test_misc_flags(void)const char * prefix ="" ;const char * nosh_prefix ="" ;#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; +const char *prefix =get_file_prefix ();const char * nosh_prefix ="--file-prefix=noshconf" ;FILE * hugedir_handle =NULL ;char line[PATH_MAX ] = {0 };unsigned i, isempty =1 ; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp);/* * get first valid hugepage path
@@ -1525,17 +1491,9 @@ populate_socket_mem_param(int num_sockets, const char *mem,static int test_memory_flags (void ) { -#ifdef RTE_EXEC_ENV_FREEBSD -/* BSD target doesn't support prefixes at this point */ -const char * prefix ="" ; -#else -char prefix[PATH_MAX ], tmp[PATH_MAX ]; -if (get_current_prefix (tmp,sizeof (tmp)) ==NULL ) { -printf ("Error - unable to get current prefix!\n" ); +const char *prefix =get_file_prefix (); +if (prefix ==NULL )return -1 ; - } -snprintf (prefix,sizeof (prefix),"--file-prefix=%s" , tmp); -#endif /* valid -m flag and mp flag */ const char *argv0[] = {prgname, prefix, mp_flag,
Signature · 1 line
2.51.0
PATCH v3 3/6 test: use unit test runner for eal flags
In reply to Stephen HemmingerMake the sub tests in eal flags suite into a group so that they are not individual tests.
--- app/test/test_eal_flags.c | 46 +++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 16 deletions(-)
app/test/test_eal_flags.c +30 -16
@@ -777,7 +777,7 @@ static inttest_no_hpet_flag (void) {#ifdef RTE_EXEC_ENV_FREEBSD -return 0 ; +return TEST_SKIPPED ;#else const char *prefix =get_file_prefix ();if (prefix ==NULL )
@@ -796,8 +796,8 @@ test_no_hpet_flag(void)printf ("Error - process did not run ok without --no-hpet flag\n" ); return -1; } -#return 0 ; +#endif }/*
@@ -866,7 +866,7 @@ test_no_huge_flag(void)printf ("Error - process run ok with --no-huge and --huge-worker-stack=size flags" );return -1 ; } -#endif +return 0 ; }
@@ -1208,7 +1208,7 @@ test_file_prefix(void)char prefix[PATH_MAX ] ="" ;#ifdef RTE_EXEC_ENV_FREEBSD -return 0 ; +return TEST_SKIPPED ;#else if (get_current_prefix (prefix,sizeof (prefix)) ==NULL ) {printf ("Error - unable to get current prefix!\n" );
@@ -1650,15 +1650,29 @@ test_memory_flags(void)#endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST (eal_flags_c_opt_autotest, false, false, test_missing_c_flag); -REGISTER_FAST_TEST (eal_flags_main_opt_autotest, false, false, test_main_lcore_flag); -REGISTER_FAST_TEST (eal_flags_n_opt_autotest, false, false, test_invalid_n_flag); -REGISTER_FAST_TEST (eal_flags_hpet_autotest, false, false, test_no_hpet_flag); -REGISTER_FAST_TEST (eal_flags_no_huge_autotest, false, false, test_no_huge_flag); -REGISTER_FAST_TEST (eal_flags_a_opt_autotest, false, false, test_allow_flag); -REGISTER_FAST_TEST (eal_flags_b_opt_autotest, false, false, test_invalid_b_flag); -REGISTER_FAST_TEST (eal_flags_vdev_opt_autotest, false, false, test_invalid_vdev_flag); -REGISTER_FAST_TEST (eal_flags_r_opt_autotest, false, false, test_invalid_r_flag); -REGISTER_FAST_TEST (eal_flags_mem_autotest, false, false, test_memory_flags); -REGISTER_FAST_TEST (eal_flags_file_prefix_autotest, false, false, test_file_prefix); -REGISTER_FAST_TEST (eal_flags_misc_autotest, false, false, test_misc_flags); +static struct unit_test_suite eal_flags_test_suite = { + .suite_name ="EAL flags unit test suite" , + .unit_test_cases = { +TEST_CASE (test_missing_c_flag), +TEST_CASE (test_main_lcore_flag), +TEST_CASE (test_invalid_n_flag), +TEST_CASE (test_no_hpet_flag), +TEST_CASE (test_no_huge_flag), +TEST_CASE (test_allow_flag), +TEST_CASE (test_invalid_b_flag), +TEST_CASE (test_invalid_vdev_flag), +TEST_CASE (test_invalid_r_flag), +TEST_CASE (test_memory_flags), +TEST_CASE (test_file_prefix), +TEST_CASE (test_misc_flags), +TEST_CASES_END () + } +}; + +static int +test_eal_flags (void ) +{ +return unit_test_suite_runner (&eal_flags_test_suite); +} + +REGISTER_FAST_TEST (eal_flags_autotest, false, false, test_eal_flags);
Signature · 1 line
2.51.0
Re: [PATCH v3 3/6] test: use unit test runner for eal flags
Quoted 71 lines · Stephen Hemminger
Make the sub tests in eal flags suite into a group so that they are not individual tests.
Signed-off-by Stephen Hemminger <[email protected]>--- app/test/test_eal_flags.c | 46 +++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 16 deletions(-)app/test/test_eal_flags.c +10
-16@@ -777,7 +777,7 @@ static inttest_no_hpet_flag (void) {#ifdef RTE_EXEC_ENV_FREEBSD -return 0 ; +return TEST_SKIPPED ;#else const char *prefix =get_file_prefix ();if (prefix ==NULL )@@ -796,8 +796,8 @@ test_no_hpet_flag(void)printf ("Error - process did not run ok without --no-hpet flag\n" ); return -1; } -#return 0 ; +#endif }/* @@ -866,7 +866,7 @@ test_no_huge_flag(void)printf ("Error - process run ok with --no-huge and --huge-worker-stack=size flags" );return -1 ; } -#endif +return 0 ; }@@ -1208,7 +1208,7 @@ test_file_prefix(void)char prefix[PATH_MAX ] ="" ;#ifdef RTE_EXEC_ENV_FREEBSD -return 0 ; +return TEST_SKIPPED ;#else if (get_current_prefix (prefix,sizeof (prefix)) ==NULL ) {printf ("Error - unable to get current prefix!\n" );@@ -1650,15 +1650,29 @@ test_memory_flags(void)#endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST (eal_flags_c_opt_autotest, false, false, test_missing_c_flag); -REGISTER_FAST_TEST (eal_flags_main_opt_autotest, false, false, test_main_lcore_flag); -REGISTER_FAST_TEST (eal_flags_n_opt_autotest, false, false, test_invalid_n_flag); -REGISTER_FAST_TEST (eal_flags_hpet_autotest, false, false, test_no_hpet_flag); -REGISTER_FAST_TEST (eal_flags_no_huge_autotest, false, false, test_no_huge_flag); -REGISTER_FAST_TEST (eal_flags_a_opt_autotest, false, false, test_allow_flag); -REGISTER_FAST_TEST (eal_flags_b_opt_autotest, false, false, test_invalid_b_flag); -REGISTER_FAST_TEST (eal_flags_vdev_opt_autotest, false, false, test_invalid_vdev_flag); -REGISTER_FAST_TEST (eal_flags_r_opt_autotest, false, false, test_invalid_r_flag); -REGISTER_FAST_TEST (eal_flags_mem_autotest, false, false, test_memory_flags); -REGISTER_FAST_TEST (eal_flags_file_prefix_autotest, false, false, test_file_prefix); -REGISTER_FAST_TEST (eal_flags_misc_autotest, false, false, test_misc_flags); +static struct unit_test_suite eal_flags_test_suite = { + .suite_name ="EAL flags unit test suite" , + .unit_test_cases = { +TEST_CASE (test_missing_c_flag), +TEST_CASE (test_main_lcore_flag), +TEST_CASE (test_invalid_n_flag),
app/test/test_eal_flags.c test_memory_flags(void) · line 1668
Quoted 10 lines
app/test/test_eal_flags.c +10
-0+TEST_CASE (test_no_hpet_flag), +TEST_CASE (test_no_huge_flag), +TEST_CASE (test_allow_flag), +TEST_CASE (test_invalid_b_flag), +TEST_CASE (test_invalid_vdev_flag), +TEST_CASE (test_invalid_r_flag), +TEST_CASE (test_memory_flags), +TEST_CASE (test_file_prefix), +TEST_CASE (test_misc_flags), +TEST_CASES_END ()
The judgement (whether supported this test) and implement is located in the same function, Suggest split them to different subfunction:
static intcheck_missing_runable(void)
{
#ifdef RTE_EXEC_ENV_WINDOWS return TEST_SKIPPED; #else return 0;
#endif
}
static struct unit_test_suite eal_flags_test_suite = {
.suite_name = "EAL flags unit test suite",
.unit_test_cases = {
TEST_CASE_NAMED_ST("missing_c_flag", check_missing_runable, NULL, test_missing_c_flag),
...In this file, we coud sort judgement to several case:
1. windows don't support
2. freebsd don't support
Note: this impl requirement all code compile-able in windows.
Quoted 10 lines
app/test/test_eal_flags.c +10
-0+ } +}; + +static int +test_eal_flags (void ) +{ +return unit_test_suite_runner (&eal_flags_test_suite); +} + +REGISTER_FAST_TEST (eal_flags_autotest, false, false, test_eal_flags);
PATCH v3 4/6 test: fix format overflow warning in ACL test
In reply to Stephen HemmingerThis test has an array of input lines, but the two dimensional array confuses compiler length checks. Convert to an array of pointers to fixed strings which avoids the problem. Make both variables static since not shared with other code.
--- app/test/test_table_acl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
app/test/test_table_acl.c +2 -2
@@ -317,7 +317,7 @@ parse_cb_ipv4_rule_del(char *str, struct rte_table_acl_rule_delete_params *v)* separated by ' : ', just ':'. It's a lot more readable and * cleaner, IMO. */ -char lines[][128 ] = { +static const char *const lines[] = {"@0.0.0.0/0 0.0.0.0/0 0:65535 0:65535 2/0xff" ,/* Protocol check */ "@192.168.3.1/32 0.0.0.0/0 0:65535 0:65535 0/0" ,/* Src IP checl */ "@0.0.0.0/0 10.4.4.1/32 0:65535 0:65535 0/0" ,/* dst IP check */
@@ -325,7 +325,7 @@ char lines[][128] = { "@0.0.0.0/0 0.0.0.0/0 0:65535 206:206 0/0", /* dst port check */ }; -char line[128 ]; +static char line[128 ]; static int
Signature · 1 line
2.51.0
PATCH v3 5/6 test: fix impossible format-truncation in cfgfiles
In reply to Stephen HemmingerAlthough, it is not possible on Linux (which always uses /tmp) the compiler complains about possible snprintf() truncation. Simplest fix is to just increase the size of the filename variable.
--- app/test/test_cfgfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
app/test/test_cfgfile.c +1 -1
@@ -148,7 +148,7 @@ static inttest_cfgfile_realloc_sections (void) {struct rte_cfgfile *cfgfile; -char filename[PATH_MAX ]; +char filename[PATH_MAX +NAME_MAX ];int ret;const char *value;
Signature · 1 line
2.51.0
Re: [PATCH v3 5/6] test: fix impossible format-truncation in cfgfiles
Quoted 17 lines · Stephen Hemminger
Although, it is not possible on Linux (which always uses /tmp) the compiler complains about possible
snprintf()truncation. Simplest fix is to just increase the size of the filename variable.Fixes be22019a58c4 ("test: restore cfgfile tests")Signed-off-by Stephen Hemminger <[email protected]>--- app/test/test_cfgfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)app/test/test_cfgfile.c +0
-0
app/test/test_cfgfile.c static int · line 151
Quoted 5 lines
app/test/test_cfgfile.c +1
-1@@ -148,7 +148,7 @@ static inttest_cfgfile_realloc_sections (void) {struct rte_cfgfile *cfgfile; -char filename[PATH_MAX ]; +char filename[PATH_MAX +NAME_MAX ];
there are many other function invoke make_tmp_file(), such as test_cfgfile_invalid_section_header.
I think we could modify make_tmp_file(): snprintf(filename, PATH_MAX - NAME_MAX, ...).
Quoted 3 lines
app/test/test_cfgfile.c +0
-0int ret;const char *value;
Re: [PATCH v3 5/6] test: fix impossible format-truncation in cfgfiles
Quoted 26 lines · On Tue, 18 Nov 2025 10:22:35 +0800 fengchengwen <[email protected]> wrote:
Quoted 17 lines · Stephen Hemminger
Although, it is not possible on Linux (which always uses /tmp) the compiler complains about possible
snprintf()truncation. Simplest fix is to just increase the size of the filename variable.Fixes be22019a58c4 ("test: restore cfgfile tests")Signed-off-by Stephen Hemminger <[email protected]>--- app/test/test_cfgfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)app/test/test_cfgfile.c +0
-0app/test/test_cfgfile.c static int · line 151
Quoted 5 lines
app/test/test_cfgfile.c +1
-1@@ -148,7 +148,7 @@ static inttest_cfgfile_realloc_sections (void) {struct rte_cfgfile *cfgfile; -char filename[PATH_MAX ]; +char filename[PATH_MAX +NAME_MAX ];there are many other function invoke
make_tmp_file(), such astest_cfgfile_invalid_section_header.
Quoted 6 lines
I think we could modify
make_tmp_file():snprintf(filename, PATH_MAX - NAME_MAX, ...).Quoted 3 lines
app/test/test_cfgfile.c +0
-0int ret;const char *value;
I think code can use existing make_tmp_file() function and avoid the problem of conflict on filename in /tmp.
PATCH v3 6/6 test: re-enable format-truncation warnings
In reply to Stephen HemmingerTests should be built with warnings.
--- app/test/meson.build | 1 - 1 file changed, 1 deletion(-)
app/test/meson.build +0 -1
@@ -260,7 +260,6 @@ cflags += no_wvla_cflag extra_flags = [ # Strict-aliasing rules are violated by uint8_t[] to context size casts. '-fno-strict-aliasing', - '-Wno-format-truncation', ] foreach arg: extra_flags
Signature · 1 line
2.51.0