Skip to contentSkip to conversation

app/test: enable subset of tests on Windows

PATCH Superseded Jie Zhou 11 participants 245 messages Aug 18, 2021 – Feb 8, 2022 Page 4 of 4

Subsystems (3)
lore
Share & tools
lore
Acked-by on v14 2/11
#204 lore raw

Re: [PATCH v14 02/11] app/test: remove POSIX-specific code

In reply to Jie Zhou
Quoted 362 lines · Jie Zhou

- Replace POSIX-specific code with DPDK equivalents or conditionally disable it on Windows
- Use NUL on Windows as /dev/null for Unix
- Exclude tests not supported on Windows yet
* multi-process
* PMD performance statistics display on signal

---
 app/test/commands.c               |  2 --
 app/test/packet_burst_generator.c |  1 +
 app/test/process.h                |  4 +++-
 app/test/test.c                   |  5 ++++-
 app/test/test_byteorder.c         |  2 +-
 app/test/test_cmdline_ipaddr.c    | 13 ++++++-------
 app/test/test_cmdline_lib.c       | 13 +++++++++----
 app/test/test_crc.c               |  1 -
 app/test/test_memcpy_perf.c       | 29 +++++++++++++++--------------
 app/test/test_pmd_perf.c          |  6 +++++-
 app/test/test_ring_stress_impl.h  |  2 +-
 app/test/test_telemetry_data.c    |  2 ++
 12 files changed, 47 insertions(+), 33 deletions(-)
app/test/commands.c +0 -2
index 2dced3bc44..887cabad64 100644
@@ -8,8 +8,6 @@
 #include <stdint.h>
 #include <string.h>
 #include <stdlib.h>
-#include <netinet/in.h>
-#include <termios.h>
 #include <inttypes.h>
 #include <errno.h>
 #include <sys/queue.h>
app/test/packet_burst_generator.c +1 -0
index 8ac24577ba..6b42b9b83b 100644
@@ -5,6 +5,7 @@
 #include <rte_byteorder.h>
 #include <rte_mbuf.h>
 #include <rte_ip.h>
+#include <rte_os_shim.h>
 
 #include "packet_burst_generator.h"
 
app/test/process.h +3 -1
index 5b10cf64df..1f073b9c5c 100644
@@ -7,12 +7,14 @@
 
 #include <errno.h>  /* errno */
 #include <limits.h> /* PATH_MAX */
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <libgen.h> /* basename et al */
+#include <sys/wait.h>
+#endif
 #include <stdlib.h> /* NULL */
 #include <string.h> /* strerror */
 #include <unistd.h> /* readlink */
 #include <dirent.h>
-#include <sys/wait.h>
 
 #include <rte_string_fns.h> /* strlcpy */
 
app/test/test.c +4 -1
index 5194131026..e69cae3eea 100644
@@ -8,7 +8,6 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <errno.h>
-#include <termios.h>
 #include <ctype.h>
 #include <sys/queue.h>
 
@@ -63,7 +62,9 @@ do_recursive_call(void)
 		const char *env_var;
 		int (*action_fn)(void);
 	} actions[] =  {
+#ifndef RTE_EXEC_ENV_WINDOWS
 			{ "run_secondary_instances", test_mp_secondary },
+#endif
 #ifdef RTE_LIB_PDUMP
 #ifdef RTE_NET_RING
 			{ "run_pdump_server_tests", test_pdump },
@@ -82,7 +83,9 @@ do_recursive_call(void)
 			{ "test_file_prefix", no_action },
 			{ "test_no_huge_flag", no_action },
 #ifdef RTE_LIB_TIMER
+#ifndef RTE_EXEC_ENV_WINDOWS
 			{ "timer_secondary_spawn_wait", test_timer_secondary },
+#endif
 #endif
 	};
 
app/test/test_byteorder.c +1 -1
index 03c08d9abf..de14ed539e 100644
@@ -46,7 +46,7 @@ test_byteorder(void)
 		return -1;
 
 	res_u16 = rte_bswap16(0x1337);
-	printf("const %"PRIx16" -> %"PRIx16"\n", 0x1337, res_u16);
+	printf("const %"PRIx16" -> %"PRIx16"\n", (uint16_t)0x1337, res_u16);
 	if (res_u16 != 0x3713)
 		return -1;
 
app/test/test_cmdline_ipaddr.c +6 -7
index 2a1ee120fc..f540063508 100644
@@ -1,12 +1,9 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
-
 #include <stdio.h>
 #include <string.h>
 #include <inttypes.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
 
 #include <rte_string_fns.h>
 
@@ -15,7 +12,7 @@
 
 #include "test_cmdline.h"
 
-#define IP4(a,b,c,d) {((uint32_t)(((a) & 0xff)) | \
+#define IP4(a,b,c,d) {.s_addr = (uint32_t)(((a) & 0xff) | \
 					   (((b) & 0xff) << 8) | \
 					   (((c) & 0xff) << 16)  | \
 					   ((d) & 0xff)  << 24)}
@@ -25,7 +22,11 @@
 
 /* create IPv6 address, swapping bytes where needed */
 #ifndef s6_addr16
-# define s6_addr16      __u6_addr.__u6_addr16
+#ifdef RTE_EXEC_ENV_WINDOWS
+#define s6_addr16 u.Word
+#else
+#define s6_addr16 __u6_addr.__u6_addr16
+#endif
 #endif
 #define IP6(a,b,c,d,e,f,g,h) .ipv6 = \
 		{.s6_addr16 = \
@@ -166,8 +167,6 @@ const char * ipaddr_garbage_network6_strs[] = {
 };
 #define IPv6_GARBAGE_PREFIX 64
 
-
-
 const char * ipaddr_invalid_strs[] = {
 		/** IPv4 **/
 
app/test/test_cmdline_lib.c +9 -4
index f50ccdb599..fcd58cb76a 100644
@@ -8,7 +8,6 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <errno.h>
-#include <termios.h>
 #include <ctype.h>
 #include <sys/queue.h>
 
@@ -22,6 +21,12 @@
 
 #include "test_cmdline.h"
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+#define NULL_INPUT "/dev/null"
+#else
+#define NULL_INPUT "NUL"
+#endif
+
 /****************************************************************/
 /* static functions required for some tests */
 static void
@@ -156,10 +161,10 @@ test_cmdline_socket_fns(void)
 	cl = cmdline_stdin_new(&ctx, NULL);
 	if (cl != NULL)
 		goto error;
-	cl = cmdline_file_new(NULL, "prompt", "/dev/null");
+	cl = cmdline_file_new(NULL, "prompt", NULL_INPUT);
 	if (cl != NULL)
 		goto error;
-	cl = cmdline_file_new(&ctx, NULL, "/dev/null");
+	cl = cmdline_file_new(&ctx, NULL, NULL_INPUT);
 	if (cl != NULL)
 		goto error;
 	cl = cmdline_file_new(&ctx, "prompt", NULL);
@@ -171,7 +176,7 @@ test_cmdline_socket_fns(void)
 		cmdline_free(cl);
 		return -1;
 	}
-	cl = cmdline_file_new(&ctx, "prompt", "/dev/null");
+	cl = cmdline_file_new(&ctx, "prompt", NULL_INPUT);
 	if (cl == NULL) {
 		printf("Error: failed to open /dev/null for reading!");
 		return -1;
app/test/test_crc.c +0 -1
index bf1d344359..0ed080e482 100644
@@ -14,7 +14,6 @@
 #define CRC32_VEC_LEN2     348
 #define CRC16_VEC_LEN1     12
 #define CRC16_VEC_LEN2     2
-#define LINE_LEN           75
 
 /* CRC test vector */
 static const uint8_t crc_vec[CRC_VEC_LEN] = {
app/test/test_memcpy_perf.c +15 -14
index c711e36ba7..3727c160e6 100644
@@ -6,10 +6,11 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <sys/time.h>
+#include <time.h>
 
 #include <rte_common.h>
 #include <rte_cycles.h>
+#include <rte_os_shim.h>
 #include <rte_random.h>
 #include <rte_malloc.h>
 
@@ -271,7 +272,7 @@ static int
 perf_test(void)
 {
 	int ret;
-	struct timeval tv_begin, tv_end;
+	struct timespec tv_begin, tv_end;
 	double time_aligned, time_unaligned;
 	double time_aligned_const, time_unaligned_const;
 
@@ -298,32 +299,32 @@ perf_test(void)
 	printf("\n================================= %2dB aligned =================================",
 		ALIGNMENT_UNIT);
 	/* Do aligned tests where size is a variable */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_variable_aligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_aligned = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n------- ----------------- ----------------- ----------------- -----------------");
 	/* Do aligned tests where size is a compile-time constant */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_constant_aligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_aligned_const = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n================================== Unaligned ==================================");
 	/* Do unaligned tests where size is a variable */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_variable_unaligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_unaligned = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n------- ----------------- ----------------- ----------------- -----------------");
 	/* Do unaligned tests where size is a compile-time constant */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_constant_unaligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_unaligned_const = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n======= ================= ================= ================= =================\n\n");
 
 	printf("Test Execution Time (seconds):\n");
app/test/test_pmd_perf.c +5 -1
index 0aa9dc1b1c..25611bfe9b 100644
@@ -296,6 +296,7 @@ reset_count(void)
 	idle = 0;
 }
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 static void
 stats_display(uint16_t port_id)
 {
@@ -325,6 +326,7 @@ signal_handler(int signum)
 	if (signum == SIGUSR2)
 		stats_display(0);
 }
+#endif
 
 struct rte_mbuf **tx_burst;
 
@@ -638,7 +640,7 @@ exec_burst(uint32_t flags, int lcore)
 		i = (i >= conf->nb_ports - 1) ? 0 : (i + 1);
 	}
 
-	sleep(5);
+	rte_delay_us(5 * US_PER_S);
 
 	/* only when polling second  */
 	if (flags == SC_BURST_XMIT_FIRST)
@@ -669,8 +671,10 @@ test_pmd_perf(void)
 
 	printf("Start PMD RXTX cycles cost test.\n");
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	signal(SIGUSR1, signal_handler);
 	signal(SIGUSR2, signal_handler);
+#endif
 
 	nb_ports = rte_eth_dev_count_avail();
 	if (nb_ports < NB_ETHPORTS_USED) {
app/test/test_ring_stress_impl.h +1 -1
index 2825a9dce6..62f046a91a 100644
@@ -360,7 +360,7 @@ test_mt1(int (*test)(void *))
 	/* signal worker to start test */
 	__atomic_store_n(&wrk_cmd, WRK_CMD_RUN, __ATOMIC_RELEASE);
 
-	usleep(run_time * US_PER_S);
+	rte_delay_us(run_time * US_PER_S);
 
 	/* signal worker to start test */
 	__atomic_store_n(&wrk_cmd, WRK_CMD_STOP, __ATOMIC_RELEASE);
app/test/test_telemetry_data.c +2 -0
index 18b93db8ef..73eee293a1 100644
@@ -4,7 +4,9 @@
 
 #include <string.h>
 #include <sys/socket.h>
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <sys/un.h>
+#endif
 #include <unistd.h>
 #include <limits.h>
 
Signature · 1 line
2.31.0.vfs.0.1

lgtm

author
#205 lore raw

PATCH v14 3/11 app/test: fix incorrect errno variable

In reply to Jie Zhou

Fix incorrect errno variable used in memory autotest. Use rte_errno instead.

Fixes 086d426406bd ("app/test: fix memory autotests on FreeBSD")
---
 app/test/test_memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
app/test/test_memory.c +1 -1
index dbf6871e71..140ac3f3cf 100644
@@ -63,7 +63,7 @@ check_seg_fds(const struct rte_memseg_list *msl, const struct rte_memseg *ms,
 	/* we're able to get memseg fd - try getting its offset */
 	ret = rte_memseg_get_fd_offset_thread_unsafe(ms, &offset);
 	if (ret < 0) {
-		if (errno == ENOTSUP)
+		if (rte_errno == ENOTSUP)
 			return 1;
 		return -1;
 	}
Signature · 1 line
2.31.0.vfs.0.1
author
#206 lore raw

PATCH v14 4/11 app/test: skip interrupt tests on Windows

In reply to Jie Zhou

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
app/test/test_interrupts.c +10 -0
index 2a05399f96..eec9b2805b 100644
@@ -12,6 +12,15 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_interrupt(void)
+{
+	printf("Interrupt on Windows is not fully supported yet, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #define TEST_INTERRUPT_CHECK_INTERVAL 100 /* ms */
 
 /* predefined interrupt handle types */
@@ -590,5 +599,6 @@ test_interrupt(void)
 
 	return ret;
 }
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 
 REGISTER_TEST_COMMAND(interrupt_autotest, test_interrupt);
Signature · 1 line
2.31.0.vfs.0.1
#207 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

Quoted 17 lines · Jie Zhou

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
app/test/test_interrupts.c +0 -0
index 2a05399f96..eec9b2805b 100644

app/test/test_interrupts.c line 15

Quoted 4 lines
app/test/test_interrupts.c +1 -0
@@ -12,6 +12,15 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS

Across the series,
Instead of adding conditional compilation everywhere, Why not disable specific file
for compilation for windows?
Purpose of EAL to abstract the differences in execution environment and application
should not know that.

Quoted 21 lines
app/test/test_interrupts.c +9 -1
+static int
+test_interrupt(void)
+{
+       printf("Interrupt on Windows is not fully supported yet, skipping test\n");
+       return TEST_SKIPPED;
+}
+#else
+
 #define TEST_INTERRUPT_CHECK_INTERVAL 100 /* ms */
 
 /* predefined interrupt handle types */
@@ -590,5 +599,6 @@ test_interrupt(void)
 
        return ret;
 }
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 
 REGISTER_TEST_COMMAND(interrupt_autotest, test_interrupt);
--

2.31.0.vfs.0.1

#208 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

Quoted 21 lines · Jerin Jacob
Quoted 20 lines · Jie Zhou

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
app/test/test_interrupts.c +0 -0
index 2a05399f96..eec9b2805b 100644
@@ -12,6 +12,15 @@
 
 #include "test.h"
 
Quoted 9 lines

app/test/test_interrupts.c line 15

Quoted 1 line
app/test/test_interrupts.c +1 -0
+#ifdef RTE_EXEC_ENV_WINDOWS

Across the series,
Instead of adding conditional compilation everywhere, Why not disable specific file
for compilation for windows?
Purpose of EAL to abstract the differences in execution environment and application
should not know that.

I think this was done because there would be two test lists in the meson unit test file. But this is the second comment about these ifdef's, and maybe we should revisit that discussion. Is there a different way to accomplish not running the tests which are not appropriate for windows builds, while not having two overlapping lists of unit tests in the meson build file?

Quoted 21 lines
Quoted 21 lines
app/test/test_interrupts.c +9 -1
+static int
+test_interrupt(void)
+{
+       printf("Interrupt on Windows is not fully supported yet, skipping test\n");
+       return TEST_SKIPPED;
+}
+#else
+
 #define TEST_INTERRUPT_CHECK_INTERVAL 100 /* ms */
 
 /* predefined interrupt handle types */
@@ -590,5 +599,6 @@ test_interrupt(void)
 
        return ret;
 }
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 
 REGISTER_TEST_COMMAND(interrupt_autotest, test_interrupt);
--

2.31.0.vfs.0.1

#209 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

Quoted 33 lines · Aaron Conole
Quoted 21 lines · Jerin Jacob
Quoted 20 lines · Jie Zhou

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
app/test/test_interrupts.c +0 -0
index 2a05399f96..eec9b2805b 100644
@@ -12,6 +12,15 @@
 
 #include "test.h"
 
Quoted 9 lines

app/test/test_interrupts.c line 15

Quoted 1 line
app/test/test_interrupts.c +1 -0
+#ifdef RTE_EXEC_ENV_WINDOWS

Across the series,
Instead of adding conditional compilation everywhere, Why not disable specific file
for compilation for windows?
Purpose of EAL to abstract the differences in execution environment and application
should not know that.

Quoted 7 lines

I think this was done because there would be two test lists in the meson unit test file. But this is the second comment about these ifdef's, and maybe we should revisit that discussion. Is there a different way to accomplish not running the tests which are not appropriate for windows builds, while not having two overlapping lists of unit tests in the meson build file?

I'm wondering if a reasonable compromise solution might be to have the build system expose a usable RTE_EXEC_ENV symbol that can be used in C-code if statements rather than just in ifdefs. That would allow us to easily add e.g.

if (RTE_EXEC_ENV == rte_env_linux)

    return TEST_SKIPPED;

into each test function needing it. Two lines of C-code is a lot easier to add and manage than #ifdefs covering the whole file, or alternative lists in meson.

/Bruce

#210 lore raw

RE: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

Quoted 63 lines

-----Original Message-----
From: Bruce Richardson <[email protected]>
Sent: Thursday, December 9, 2021 4:17 PM
To: Aaron Conole <[email protected]>
Cc: Jerin Jacob <[email protected]>; Jie Zhou <[email protected]>; dpdk-dev <[email protected]>; Dmitry Kozlyuk <[email protected]>; [email protected]; Narcisa Ana Maria Vasile <[email protected]>; Dmitry Malloy (MESHCHANINOV) <[email protected]>; Kadam, Pallavi <[email protected]>; [email protected]; Thomas Monjalon <[email protected]>
Subject: Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

Quoted 3 lines · Aaron Conole
Quoted 1 line · Jerin Jacob

On Thu, Dec 9, 2021 at 12:30 AM Jie Zhou <[email protected]>

Quoted 30 lines · wrote:
Quoted 20 lines
Quoted 20 lines

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
app/test/test_interrupts.c +0 -0
index 2a05399f96..eec9b2805b 100644
@@ -12,6 +12,15 @@
 
 #include "test.h"
 
Quoted 9 lines

app/test/test_interrupts.c line 15

Quoted 1 line
app/test/test_interrupts.c +1 -0
+#ifdef RTE_EXEC_ENV_WINDOWS

Across the series,
Instead of adding conditional compilation everywhere, Why not disable specific file
for compilation for windows?
Purpose of EAL to abstract the differences in execution environment and application
should not know that.

Quoted 7 lines

I think this was done because there would be two test lists in the meson unit test file. But this is the second comment about these ifdef's, and maybe we should revisit that discussion. Is there a different way to accomplish not running the tests which are not appropriate for windows builds, while not having two overlapping lists of unit tests in the meson build file?

I'm wondering if a reasonable compromise solution might be to have the build system expose a usable RTE_EXEC_ENV symbol that can be used in C- code
if statements rather than just in ifdefs. That would allow us to easily add
e.g.

Quoted 2 lines

if (RTE_EXEC_ENV == rte_env_linux)

    return TEST_SKIPPED;

or even " == rte_env_windows" for this case! 😊

#211 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

In reply to Bruce Richardson
Quoted 46 lines · Bruce Richardson
Quoted 33 lines · Aaron Conole
Quoted 21 lines · Jerin Jacob
Quoted 20 lines · Jie Zhou

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
app/test/test_interrupts.c +0 -0
index 2a05399f96..eec9b2805b 100644
@@ -12,6 +12,15 @@
 
 #include "test.h"
 
Quoted 9 lines

app/test/test_interrupts.c line 15

Quoted 1 line
app/test/test_interrupts.c +1 -0
+#ifdef RTE_EXEC_ENV_WINDOWS

Across the series,
Instead of adding conditional compilation everywhere, Why not disable specific file
for compilation for windows?
Purpose of EAL to abstract the differences in execution environment and application
should not know that.

Quoted 7 lines

I think this was done because there would be two test lists in the meson unit test file. But this is the second comment about these ifdef's, and maybe we should revisit that discussion. Is there a different way to accomplish not running the tests which are not appropriate for windows builds, while not having two overlapping lists of unit tests in the meson build file?

I'm wondering if a reasonable compromise solution might be to have the build system expose a usable RTE_EXEC_ENV symbol that can be used in C-code if statements rather than just in ifdefs. That would allow us to easily add e.g.

Quoted 7 lines

if (RTE_EXEC_ENV == rte_env_linux)

    return TEST_SKIPPED;

into each test function needing it. Two lines of C-code is a lot easier to add and manage than #ifdefs covering the whole file, or alternative lists in meson.

Quick patch to allow C-code comparisons:

lib/eal/meson.build +6 -0
index 1722924f67..b5b9fa14b4 100644
@@ -10,6 +10,12 @@ if not is_windows
     subdir('unix')
 endif
 
+exec_envs = {'freebsd': 0, 'linux': 1, 'windows': 2}
+foreach env, id:exec_envs
+    dpdk_conf.set('RTE_ENV_' + env.to_upper(), id)
+endforeach
+dpdk_conf.set('RTE_EXEC_ENV', exec_envs[exec_env])
+
 dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1)
 subdir(exec_env)
 

A slightly simpler patch would just expose the environment as a string as e.g. "linux", but I think numeric ids just make the code better rather than having string comparisons. Alternatively, this could also be done via C-code with ifdefs in EAL, but as it stands this meson change allows:

if (RTE_EXEC_ENV == RTE_ENV_WINDOWS)

     ...

or:

  switch (RTE_EXEC_ENV) {
    case RTE_ENV_LINUX: ... ; break;
    case RTE_ENV_FREEBSD: ... ; break;
    case RTE_ENV_WINDOWS: ... ; break;
  }

Thoughts?

/Bruce

#212 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

2021-12-09 16:39 (UTC+0000), Bruce Richardson:

Quoted 43 lines · Bruce Richardson

[...]

Quoted 5 lines

I'm wondering if a reasonable compromise solution might be to have the build system expose a usable RTE_EXEC_ENV symbol that can be used in C-code if statements rather than just in ifdefs. That would allow us to easily add e.g.

Quoted 7 lines

if (RTE_EXEC_ENV == rte_env_linux)

    return TEST_SKIPPED;

into each test function needing it. Two lines of C-code is a lot easier to add and manage than #ifdefs covering the whole file, or alternative lists in meson.

Quick patch to allow C-code comparisons:

lib/eal/meson.build +6 -0
index 1722924f67..b5b9fa14b4 100644
@@ -10,6 +10,12 @@ if not is_windows
     subdir('unix')
 endif
 
+exec_envs = {'freebsd': 0, 'linux': 1, 'windows': 2}
+foreach env, id:exec_envs
+    dpdk_conf.set('RTE_ENV_' + env.to_upper(), id)
+endforeach
+dpdk_conf.set('RTE_EXEC_ENV', exec_envs[exec_env])
+
 dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1)
 subdir(exec_env)
 

A slightly simpler patch would just expose the environment as a string as e.g. "linux", but I think numeric ids just make the code better rather than having string comparisons. Alternatively, this could also be done via C-code with ifdefs in EAL, but as it stands this meson change allows:

if (RTE_EXEC_ENV == RTE_ENV_WINDOWS)

     ...

or:

Quoted 7 lines
  switch (RTE_EXEC_ENV) {
    case RTE_ENV_LINUX: ... ; break;
    case RTE_ENV_FREEBSD: ... ; break;
    case RTE_ENV_WINDOWS: ... ; break;
  }

Thoughts?

I like this.
Even outside of tests more code can be made to compile on all platforms (e.g. ixgbe_wait_for_link_up).
Alternative naming: RTE_EXEC_ENV_IS_* (similar to RTE_CC_IS_*), which does not allow switch statements, but shortens most practical cases. Will Coverity understand that if a condition is always false, variables beneath still may be used on another platform?

#213 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

Quoted 50 lines · Dmitry Kozlyuk

2021-12-09 16:39 (UTC+0000), Bruce Richardson:

Quoted 49 lines · Bruce Richardson

[...]

Quoted 5 lines

I'm wondering if a reasonable compromise solution might be to have the build system expose a usable RTE_EXEC_ENV symbol that can be used in C-code if statements rather than just in ifdefs. That would allow us to easily add e.g.

Quoted 7 lines

if (RTE_EXEC_ENV == rte_env_linux)

    return TEST_SKIPPED;

into each test function needing it. Two lines of C-code is a lot easier to add and manage than #ifdefs covering the whole file, or alternative lists in meson.

Quick patch to allow C-code comparisons:

lib/eal/meson.build +6 -0
index 1722924f67..b5b9fa14b4 100644
@@ -10,6 +10,12 @@ if not is_windows
     subdir('unix')
 endif
 
+exec_envs = {'freebsd': 0, 'linux': 1, 'windows': 2}
+foreach env, id:exec_envs
+    dpdk_conf.set('RTE_ENV_' + env.to_upper(), id)
+endforeach
+dpdk_conf.set('RTE_EXEC_ENV', exec_envs[exec_env])
+
 dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1)
 subdir(exec_env)
 

A slightly simpler patch would just expose the environment as a string as e.g. "linux", but I think numeric ids just make the code better rather than having string comparisons. Alternatively, this could also be done via C-code with ifdefs in EAL, but as it stands this meson change allows:

if (RTE_EXEC_ENV == RTE_ENV_WINDOWS)

     ...

or:

  switch (RTE_EXEC_ENV) {
    case RTE_ENV_LINUX: ... ; break;
    case RTE_ENV_FREEBSD: ... ; break;
    case RTE_ENV_WINDOWS: ... ; break;
  }
Quoted 7 lines
Quoted 1 line

Thoughts?

I like this.
Even outside of tests more code can be made to compile on all platforms (e.g. ixgbe_wait_for_link_up).
Alternative naming: RTE_EXEC_ENV_IS_* (similar to RTE_CC_IS_*), which does not allow switch statements, but shortens most practical cases.

Sure. I wonder if it is worthwhile implementing both, since it's not a large amount of code.

Quoted 2 lines

Will Coverity understand that if a condition is always false, variables beneath still may be used on another platform?

That I don't know, unfortunately. Perhaps some coverity experts can weigh in.

/Bruce

#214 lore raw

Re: [PATCH v14 04/11] app/test: skip interrupt tests on Windows

The proposal below is now merged.
Please Jie, use it in a v15 of this series.

10/12/2021 10:30, Bruce Richardson:

Quoted 67 lines · Dmitry Kozlyuk
Quoted 50 lines

2021-12-09 16:39 (UTC+0000), Bruce Richardson:

Quoted 49 lines · Bruce Richardson

[...]

Quoted 5 lines

I'm wondering if a reasonable compromise solution might be to have the build system expose a usable RTE_EXEC_ENV symbol that can be used in C-code if statements rather than just in ifdefs. That would allow us to easily add e.g.

Quoted 7 lines

if (RTE_EXEC_ENV == rte_env_linux)

    return TEST_SKIPPED;

into each test function needing it. Two lines of C-code is a lot easier to add and manage than #ifdefs covering the whole file, or alternative lists in meson.

Quick patch to allow C-code comparisons:

lib/eal/meson.build +6 -0
index 1722924f67..b5b9fa14b4 100644
@@ -10,6 +10,12 @@ if not is_windows
     subdir('unix')
 endif
 
+exec_envs = {'freebsd': 0, 'linux': 1, 'windows': 2}
+foreach env, id:exec_envs
+    dpdk_conf.set('RTE_ENV_' + env.to_upper(), id)
+endforeach
+dpdk_conf.set('RTE_EXEC_ENV', exec_envs[exec_env])
+
 dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1)
 subdir(exec_env)
 

A slightly simpler patch would just expose the environment as a string as e.g. "linux", but I think numeric ids just make the code better rather than having string comparisons. Alternatively, this could also be done via C-code with ifdefs in EAL, but as it stands this meson change allows:

if (RTE_EXEC_ENV == RTE_ENV_WINDOWS)

     ...

or:

  switch (RTE_EXEC_ENV) {
    case RTE_ENV_LINUX: ... ; break;
    case RTE_ENV_FREEBSD: ... ; break;
    case RTE_ENV_WINDOWS: ... ; break;
  }
Quoted 7 lines
Quoted 1 line

Thoughts?

I like this.
Even outside of tests more code can be made to compile on all platforms (e.g. ixgbe_wait_for_link_up).
Alternative naming: RTE_EXEC_ENV_IS_* (similar to RTE_CC_IS_*), which does not allow switch statements, but shortens most practical cases.

Sure. I wonder if it is worthwhile implementing both, since it's not a large amount of code.

Quoted 2 lines

Will Coverity understand that if a condition is always false, variables beneath still may be used on another platform?

That I don't know, unfortunately. Perhaps some coverity experts can weigh in.

author
#215 lore raw

PATCH v14 5/11 app/test: skip two logs_autotest cases on Windows

In reply to Jie Zhou

DPDK logs_autotest on Windows failed at "dynamic log types" tests. The failures are on 2 test cases for rte_log_set_level_regexp API, due to regular expression is not supported on Windows in DPDK yet and regcomp/regexec are just stubs on Windows (in regex.h).

In app\test\test_logs.c, ifndef these two test cases, and for the rte_log_set_level_pattern validation case following these two cases, differentiate the expected log level passed into macro CHECK_LEVELS

Now logs_autotest completes for all dynamic log types and static log types.

---
 app/test/test_logs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
app/test/test_logs.c +5 -1
index 7abb6eeca2..7c001c1ab3 100644
@@ -113,6 +113,7 @@ test_logs(void)
 	rte_log_set_level(logtype1, RTE_LOG_ERR);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	rte_log_set_level_regexp("type$", RTE_LOG_EMERG);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
 
@@ -121,7 +122,10 @@ test_logs(void)
 
 	rte_log_set_level_pattern("logtype", RTE_LOG_DEBUG);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_EMERG, RTE_LOG_EMERG);
-
+#else
+	ret = rte_log_set_level_pattern("logtype", RTE_LOG_DEBUG);
+	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
+#endif
 	/* set logtype level low to so we can test global level */
 	rte_log_set_level_pattern("logtype*", RTE_LOG_DEBUG);
 	CHECK_LEVELS(RTE_LOG_DEBUG, RTE_LOG_DEBUG, RTE_LOG_DEBUG);
Signature · 1 line
2.31.0.vfs.0.1
author
#216 lore raw

PATCH v14 6/11 app/test: differentiate a strerror on different OS

In reply to Jie Zhou

On Windows, strerror returns just "Unknown error" for errnum greater than MAX_ERRNO, while linux and freebsd returns "Unknown error <num>", which is the current expectation for errno_autotest. Differentiate the error string on Windows to remove a "duplicate error code" failure.

---
 app/test/test_errno.c             | 12 +++++++++++-
 lib/eal/common/eal_common_errno.c |  4 ++++
 2 files changed, 15 insertions(+), 1 deletion(-)
app/test/test_errno.c +11 -1
index 3ff0456a58..0db4fbc8b3 100644
@@ -18,13 +18,19 @@ test_errno(void)
 {
 	const char *rte_retval;
 	const char *libc_retval;
+
+#ifndef RTE_EXEC_ENV_WINDOWS
 #ifdef RTE_EXEC_ENV_FREEBSD
 	/* BSD has a colon in the string, unlike linux */
 	const char unknown_code_result[] = "Unknown error: %d";
 #else
 	const char unknown_code_result[] = "Unknown error %d";
 #endif
-	char expected_libc_retval[sizeof(unknown_code_result)+3];
+	char expected_libc_retval[sizeof(unknown_code_result) + 3];
+#else
+	/* Windows doesn't return error number for error greater than MAX_errno*/
+	static const char expected_libc_retval[] = "Unknown error";
+#endif
 
 	/* use a small selection of standard errors for testing */
 	int std_errs[] = {EAGAIN, EBADF, EACCES, EINTR, EINVAL};
@@ -54,11 +60,13 @@ test_errno(void)
 				rte_retval, libc_retval);
 		if (strcmp(rte_retval, libc_retval) == 0)
 			return -1;
+#ifndef RTE_EXEC_ENV_WINDOWS
 		/* generate appropriate error string for unknown error number
 		 * and then check that this is what we got back. If not, we have
 		 * a duplicate error number that conflicts with errno.h */
 		snprintf(expected_libc_retval, sizeof(expected_libc_retval),
 				unknown_code_result, rte_errs[i]);
+#endif
 		if ((strcmp(expected_libc_retval, libc_retval) != 0) &&
 				(strcmp("", libc_retval) != 0)){
 			printf("Error, duplicate error code %d\n", rte_errs[i]);
@@ -69,8 +77,10 @@ test_errno(void)
 	/* ensure that beyond RTE_MAX_ERRNO, we always get an unknown code */
 	rte_retval = rte_strerror(RTE_MAX_ERRNO + 1);
 	libc_retval = strerror(RTE_MAX_ERRNO + 1);
+#ifndef RTE_EXEC_ENV_WINDOWS
 	snprintf(expected_libc_retval, sizeof(expected_libc_retval),
 			unknown_code_result, RTE_MAX_ERRNO + 1);
+#endif
 	printf("rte_strerror: '%s', strerror: '%s'\n",
 			rte_retval, libc_retval);
 	if ((strcmp(rte_retval, libc_retval) != 0) ||
lib/eal/common/eal_common_errno.c +4 -0
index f86802705a..7507c746ec 100644
@@ -37,7 +37,11 @@ rte_strerror(int errnum)
 	/* since some implementations of strerror_r throw an error
 	 * themselves if errnum is too big, we handle that case here */
 	if (errnum >= RTE_MAX_ERRNO)
+#ifdef RTE_EXEC_ENV_WINDOWS
+		snprintf(ret, RETVAL_SZ, "Unknown error");
+#else
 		snprintf(ret, RETVAL_SZ, "Unknown error%s %d", sep, errnum);
+#endif
 	else
 		switch (errnum){
 		case E_RTE_SECONDARY:
Signature · 1 line
2.31.0.vfs.0.1
Acked-by on v14 6/11
#217 lore raw

Re: [PATCH v14 06/11] app/test: differentiate a strerror on different OS

2021-12-08 10:59 (UTC-0800), Jie Zhou:

Quoted 6 lines

On Windows, strerror returns just "Unknown error" for errnum greater than MAX_ERRNO, while linux and freebsd returns "Unknown error <num>", which is the current expectation for errno_autotest. Differentiate the error string on Windows to remove a "duplicate error code" failure.

author
#218 lore raw

PATCH v14 7/11 app/test: remove two alarm_autotest cases

In reply to Jie Zhou

Remove two alarm_autotest test cases which do bogus range check on Windows.

---
 app/test/test_alarm.c | 4 ++++
 1 file changed, 4 insertions(+)
app/test/test_alarm.c +4 -0
index b4034339b8..70e97a3109 100644
@@ -10,6 +10,7 @@
 
 #include "test.h"
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 static volatile int flag;
 
 static void
@@ -18,6 +19,7 @@ test_alarm_callback(void *cb_arg)
 	flag = 1;
 	printf("Callback setting flag - OK. [cb_arg = %p]\n", cb_arg);
 }
+#endif
 
 static int
 test_alarm(void)
@@ -27,6 +29,7 @@ test_alarm(void)
 	return 0;
 #endif
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	/* check if it will fail to set alarm with wrong us value */
 	printf("check if it will fail to set alarm with wrong ms values\n");
 	if (rte_eal_alarm_set(0, test_alarm_callback,
@@ -39,6 +42,7 @@ test_alarm(void)
 		printf("should not be successful with (UINT64_MAX-1) us value\n");
 		return -1;
 	}
+#endif
 
 	/* check if it will fail to set alarm with null callback parameter */
 	printf("check if it will fail to set alarm with null callback parameter\n");
Signature · 1 line
2.31.0.vfs.0.1
author
#219 lore raw

PATCH v14 8/11 app/test: resolve name collision

In reply to Jie Zhou

Add OP_ prefix to resolve name collision to enable hash_perf test

---
 app/test/test_hash_perf.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
app/test/test_hash_perf.c +8 -8
index 76cdac5d53..7e98ec3964 100644
@@ -30,10 +30,10 @@
 #define BURST_SIZE 16
 
 enum operations {
-	ADD = 0,
-	LOOKUP,
-	LOOKUP_MULTI,
-	DELETE,
+	OP_ADD = 0,
+	OP_LOOKUP,
+	OP_LOOKUP_MULTI,
+	OP_DELETE,
 	NUM_OPERATIONS
 };
 
@@ -308,7 +308,7 @@ timed_adds(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][ADD][with_hash][with_data] = time_taken/keys_to_add;
+	cycles[table_index][OP_ADD][with_hash][with_data] = time_taken/keys_to_add;
 
 	return 0;
 }
@@ -385,7 +385,7 @@ timed_lookups(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][LOOKUP][with_hash][with_data] = time_taken/num_lookups;
+	cycles[table_index][OP_LOOKUP][with_hash][with_data] = time_taken/num_lookups;
 
 	return 0;
 }
@@ -511,7 +511,7 @@ timed_lookups_multi(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][LOOKUP_MULTI][with_hash][with_data] =
+	cycles[table_index][OP_LOOKUP_MULTI][with_hash][with_data] =
 		time_taken/num_lookups;
 
 	return 0;
@@ -550,7 +550,7 @@ timed_deletes(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][DELETE][with_hash][with_data] = time_taken/keys_to_add;
+	cycles[table_index][OP_DELETE][with_hash][with_data] = time_taken/keys_to_add;
 
 	return 0;
 }
Signature · 1 line
2.31.0.vfs.0.1
author
#221 lore raw

PATCH v14 9/11 app/test: add test stubs for not supported ones

In reply to Jie Zhou

Add test stubs for tests which are not yet supported for Windows:
- The libraries that tests depend on are not enabled on Windows yet
- The tests can compile but with issue still under investigation
* test_func_reentrancy:
Windows EAL has no protection against repeated calls.
* test_lcores:
Execution enters an infinite loops, requires investigation.
* test_rcu_qsbr_perf:
Execution hangs on Windows, requires investigation.

---
 app/test/test_acl.c                      | 12 ++++
 app/test/test_bpf.c                      | 15 +++-
 app/test/test_cryptodev.c                |  4 ++
 app/test/test_cryptodev_asym.c           |  4 ++
 app/test/test_cryptodev_blockcipher.c    |  4 ++
 app/test/test_cryptodev_security_ipsec.c |  4 ++
 app/test/test_cryptodev_security_pdcp.c  |  4 ++
 app/test/test_debug.c                    | 17 ++++-
 app/test/test_distributor.c              | 13 ++++
 app/test/test_distributor_perf.c         | 13 ++++
 app/test/test_eal_flags.c                | 90 ++++++++++++++++++++++++
 app/test/test_eal_fs.c                   | 12 ++++
 app/test/test_efd.c                      | 15 +++-
 app/test/test_efd_perf.c                 | 16 ++++-
 app/test/test_event_crypto_adapter.c     | 15 +++-
 app/test/test_event_eth_rx_adapter.c     | 25 ++++++-
 app/test/test_event_eth_tx_adapter.c     | 12 ++++
 app/test/test_event_ring.c               | 16 ++++-
 app/test/test_event_timer_adapter.c      | 16 ++++-
 app/test/test_eventdev.c                 | 20 +++++-
 app/test/test_external_mem.c             | 18 ++++-
 app/test/test_fib.c                      | 22 +++++-
 app/test/test_fib6.c                     | 24 ++++++-
 app/test/test_fib6_perf.c                | 16 ++++-
 app/test/test_fib_perf.c                 | 15 +++-
 app/test/test_flow_classify.c            | 13 ++++
 app/test/test_func_reentrancy.c          | 12 ++++
 app/test/test_graph.c                    | 18 ++++-
 app/test/test_graph_perf.c               | 16 ++++-
 app/test/test_hash_perf.c                | 12 ++++
 app/test/test_ipfrag.c                   | 16 ++++-
 app/test/test_ipsec.c                    | 15 +++-
 app/test/test_ipsec_perf.c               | 15 +++-
 app/test/test_ipsec_sad.c                | 14 +++-
 app/test/test_kni.c                      | 10 +--
 app/test/test_lcores.c                   | 12 ++++
 app/test/test_lpm.c                      | 14 +++-
 app/test/test_lpm6.c                     | 14 +++-
 app/test/test_lpm6_perf.c                | 14 +++-
 app/test/test_lpm_perf.c                 | 13 +++-
 app/test/test_malloc.c                   | 20 ++++--
 app/test/test_mbuf.c                     | 15 +++-
 app/test/test_member.c                   | 16 ++++-
 app/test/test_member_perf.c              | 16 ++++-
 app/test/test_memcpy_perf.c              |  1 -
 app/test/test_mp_secondary.c             | 12 ++++
 app/test/test_pie.c                      | 30 +++++++-
 app/test/test_rawdev.c                   | 17 ++++-
 app/test/test_rcu_qsbr_perf.c            | 12 ++++
 app/test/test_red.c                      | 29 +++++++-
 app/test/test_reorder.c                  | 15 +++-
 app/test/test_rib.c                      | 22 +++++-
 app/test/test_rib6.c                     | 22 +++++-
 app/test/test_sched.c                    | 14 +++-
 app/test/test_security.c                 |  4 +-
 app/test/test_table.c                    | 13 ++++
 app/test/test_table_acl.c                |  3 +
 app/test/test_table_combined.c           |  4 ++
 app/test/test_table_pipeline.c           |  4 ++
 app/test/test_table_ports.c              |  4 ++
 app/test/test_table_tables.c             |  4 ++
 app/test/test_timer_secondary.c          | 13 ++++
 app/test/test_trace.c                    | 32 +++++++--
 63 files changed, 880 insertions(+), 72 deletions(-)
app/test/test_acl.c +12 -0
index 5b32347954..7814e25a53 100644
@@ -11,6 +11,16 @@
 #include <rte_mbuf.h>
 #include <rte_byteorder.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_acl(void)
+{
+	printf("acl not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <rte_acl.h>
 #include <rte_common.h>
 
@@ -1741,4 +1751,6 @@ test_acl(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(acl_autotest, test_acl);
app/test/test_bpf.c +14 -1
index 46bcb51f86..055df252ba 100644
@@ -14,11 +14,22 @@
 #include <rte_random.h>
 #include <rte_byteorder.h>
 #include <rte_errno.h>
+#include "test.h"
+
+#if !defined(RTE_LIB_BPF)
+
+static int
+test_bpf(void)
+{
+	printf("BPF not supported, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <rte_bpf.h>
 #include <rte_ether.h>
 #include <rte_ip.h>
 
-#include "test.h"
 
 /*
  * Basic functional tests for librte_bpf.
@@ -3248,6 +3259,8 @@ test_bpf(void)
 	return rc;
 }
 
+#endif
+
 REGISTER_TEST_COMMAND(bpf_autotest, test_bpf);
 
 #ifdef RTE_HAS_LIBPCAP
app/test/test_cryptodev.c +4 -0
index 10b48cdadb..f83c844e42 100644
@@ -3,6 +3,8 @@
  * Copyright 2020 NXP
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <time.h>
 
 #include <rte_common.h>
@@ -15739,3 +15741,5 @@ REGISTER_TEST_COMMAND(cryptodev_nitrox_autotest, test_cryptodev_nitrox);
 REGISTER_TEST_COMMAND(cryptodev_bcmfs_autotest, test_cryptodev_bcmfs);
 REGISTER_TEST_COMMAND(cryptodev_cn9k_autotest, test_cryptodev_cn9k);
 REGISTER_TEST_COMMAND(cryptodev_cn10k_autotest, test_cryptodev_cn10k);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_asym.c +4 -0
index 9d19a6d6d9..680ced4dbe 100644
@@ -3,6 +3,8 @@
  * Copyright (c) 2019 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_bus_vdev.h>
 #include <rte_common.h>
 #include <rte_hexdump.h>
@@ -2429,3 +2431,5 @@ REGISTER_TEST_COMMAND(cryptodev_octeontx2_asym_autotest,
 					  test_cryptodev_octeontx2_asym);
 REGISTER_TEST_COMMAND(cryptodev_cn9k_asym_autotest, test_cryptodev_cn9k_asym);
 REGISTER_TEST_COMMAND(cryptodev_cn10k_asym_autotest, test_cryptodev_cn10k_asym);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_blockcipher.c +4 -0
index 5688a45377..3860433ffd 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2015-2017 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_common.h>
 #include <rte_hexdump.h>
 #include <rte_mbuf.h>
@@ -1221,3 +1223,5 @@ free_blockcipher_test_suite(struct unit_test_suite *ts)
 {
 	free(ts);
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_security_ipsec.c +4 -0
index 4708803bd2..a84afae7f5 100644
@@ -2,6 +2,8 @@
  * Copyright(C) 2021 Marvell.
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_common.h>
 #include <rte_cryptodev.h>
 #include <rte_esp.h>
@@ -672,3 +674,5 @@ test_ipsec_status_check(struct rte_crypto_op *op,
 
 	return ret;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_security_pdcp.c +4 -0
index a7641bab7a..3409add715 100644
@@ -4,6 +4,8 @@
  * Copyright 2018-2019 NXP
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <time.h>
 
 #include <rte_common.h>
@@ -587,3 +589,5 @@ test_PDCP_PROTO_uplane_decap_all(void)
 
 	return n - i;
 };
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_debug.c +15 -2
index 23b24db177..c4038a4ed1 100644
@@ -2,8 +2,21 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_debug(void)
+{
+	printf("debug not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <sys/resource.h>
 #include <sys/time.h>
 #include <sys/wait.h>
@@ -14,8 +27,6 @@
 #include <rte_eal.h>
 #include <rte_service_component.h>
 
-#include "test.h"
-
 /*
  * Debug test
  * ==========
@@ -127,4 +138,6 @@ test_debug(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(debug_autotest, test_debug);
app/test/test_distributor.c +13 -0
index 961f326cd5..0ecd5ba232 100644
@@ -11,6 +11,17 @@
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_mbuf_dyn.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_distributor(void)
+{
+	printf("distributor not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_distributor.h>
 #include <rte_string_fns.h>
 
@@ -939,4 +950,6 @@ test_distributor(void)
 	return -1;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(distributor_autotest, test_distributor);
app/test/test_distributor_perf.c +13 -0
index 92e330f194..650a0317ef 100644
@@ -10,6 +10,17 @@
 #include <rte_cycles.h>
 #include <rte_common.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_distributor_perf(void)
+{
+	printf("distributor perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_distributor.h>
 #include <rte_pause.h>
 
@@ -264,4 +275,6 @@ test_distributor_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(distributor_perf_autotest, test_distributor_perf);
app/test/test_eal_flags.c +90 -0

102 lines not on this page · raw message

app/test/test_eal_fs.c +12 -0
index 39ac6961b3..5d24ae3d32 100644
@@ -10,6 +10,16 @@
 
 #include "eal_filesystem.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_eal_fs(void)
+{
+	printf("eal_fs not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 static int
 test_parse_sysfs_value(void)
 {
@@ -173,4 +183,6 @@ test_eal_fs(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eal_fs_autotest, test_eal_fs);
app/test/test_efd.c +13 -2
index 1b249e0447..f8f356dcd9 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2016-2017 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_efd(void)
+{
+	printf("efd not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <rte_memcpy.h>
 #include <rte_malloc.h>
@@ -10,8 +21,6 @@
 #include <rte_debug.h>
 #include <rte_ip.h>
 
-#include "test.h"
-
 #define EFD_TEST_KEY_LEN 8
 #define TABLE_SIZE (1 << 21)
 #define ITERATIONS 3
@@ -462,4 +471,6 @@ test_efd(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(efd_autotest, test_efd);
app/test/test_efd_perf.c +14 -2
index f3fe3b1736..1bf6bcb0ca 100644
@@ -2,6 +2,18 @@
  * Copyright(c) 2016-2017 Intel Corporation
  */
 
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_efd_perf(void)
+{
+	printf("efd_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <stdio.h>
 #include <inttypes.h>
 
@@ -13,8 +25,6 @@
 #include <rte_memcpy.h>
 #include <rte_thash.h>
 
-#include "test.h"
-
 #define NUM_KEYSIZES 10
 #define NUM_SHUFFLES 10
 #define MAX_KEYSIZE 64
@@ -382,4 +392,6 @@ test_efd_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(efd_perf_autotest, test_efd_perf);
app/test/test_event_crypto_adapter.c +14 -1
index 3d7e9fb93c..8f5fd78723 100644
@@ -3,16 +3,27 @@
  * All rights reserved.
  */
 
+#include "test.h"
 #include <string.h>
 #include <rte_common.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_crypto_adapter(void)
+{
+	printf("event_crypto_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_cryptodev.h>
 #include <rte_eventdev.h>
 #include <rte_bus_vdev.h>
 #include <rte_service.h>
 #include <rte_event_crypto_adapter.h>
-#include "test.h"
 
 #define PKT_TRACE                  0
 #define NUM                        1
@@ -1011,5 +1022,7 @@ test_event_crypto_adapter(void)
 	return unit_test_suite_runner(&functional_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_crypto_adapter_autotest,
 		test_event_crypto_adapter);
app/test/test_event_eth_rx_adapter.c +23 -2
index 7cb91b152f..1df24fdce2 100644
@@ -1,18 +1,37 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2017 Intel Corporation
  */
+
+#include "test.h"
+
 #include <string.h>
 #include <rte_common.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_ethdev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_eth_rx_adapter_common(void)
+{
+	printf("event_eth_rx_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_event_eth_rx_intr_adapter_common(void)
+{
+	printf("event_eth_rx_intr_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_bus_vdev.h>
 
 #include <rte_event_eth_rx_adapter.h>
 
-#include "test.h"
-
 #define MAX_NUM_RX_QUEUE	64
 #define NB_MBUFS		(8192 * num_ports * MAX_NUM_RX_QUEUE)
 #define MBUF_CACHE_SIZE		512
@@ -1027,6 +1046,8 @@ test_event_eth_rx_intr_adapter_common(void)
 	return unit_test_suite_runner(&event_eth_rx_intr_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_eth_rx_adapter_autotest,
 		test_event_eth_rx_adapter_common);
 REGISTER_TEST_COMMAND(event_eth_rx_intr_adapter_autotest,
app/test/test_event_eth_tx_adapter.c +12 -0
index cfcc784351..c1c9732dd4 100644
@@ -16,6 +16,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_eth_tx_adapter_common(void)
+{
+	printf("event_eth_tx_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #define MAX_NUM_QUEUE		RTE_PMD_RING_MAX_RX_RINGS
 #define TEST_INST_ID		0
 #define TEST_DEV_ID		0
@@ -696,5 +706,7 @@ test_event_eth_tx_adapter_common(void)
 	return unit_test_suite_runner(&event_eth_tx_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_eth_tx_adapter_autotest,
 		test_event_eth_tx_adapter_common);
app/test/test_event_ring.c +14 -2
index 70eb9845e1..9c5e28fb81 100644
@@ -2,11 +2,21 @@
  * Copyright(c) 2010-2017 Intel Corporation
  */
 
+#include "test.h"
+
 #include <string.h>
 
-#include <rte_event_ring.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_ring(void)
+{
+	printf("event_ring not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
 
-#include "test.h"
+#else
+
+#include <rte_event_ring.h>
 
 /*
  * Event Ring
@@ -244,4 +254,6 @@ test_event_ring(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_ring_autotest, test_event_ring);
app/test/test_event_timer_adapter.c +14 -2
index 25bac2d155..6f7145ef76 100644
@@ -2,6 +2,7 @@
  * Copyright(c) 2017 Cavium, Inc
  * Copyright(c) 2017-2018 Intel Corporation.
  */
+#include "test.h"
 
 #include <math.h>
 
@@ -10,6 +11,17 @@
 #include <rte_debug.h>
 #include <rte_eal.h>
 #include <rte_ethdev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_timer_adapter_func(void)
+{
+	printf("event_timer_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_event_timer_adapter.h>
 #include <rte_mempool.h>
@@ -21,8 +33,6 @@
 #include <rte_service.h>
 #include <stdbool.h>
 
-#include "test.h"
-
 /* 4K timers corresponds to sw evdev max inflight events */
 #define MAX_TIMERS  (4 * 1024)
 #define BKT_TCK_NSEC
@@ -1950,4 +1960,6 @@ test_event_timer_adapter_func(void)
 	return unit_test_suite_runner(&event_timer_adptr_functional_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_timer_adapter_test, test_event_timer_adapter_func);
app/test/test_eventdev.c +18 -2
index 843d9766b0..fee2ecaa22 100644
@@ -1,18 +1,28 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2016 Cavium, Inc
  */
+#include "test.h"
 
 #include <rte_common.h>
 #include <rte_hexdump.h>
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_eventdev_common(void)
+{
+	printf("eventdev_common not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_dev.h>
 #include <rte_bus_vdev.h>
 
-#include "test.h"
-
 #define TEST_DEV_ID   0
 
 static int
@@ -1048,7 +1058,11 @@ test_eventdev_selftest_cn10k(void)
 	return test_eventdev_selftest_impl("event_cn10k", "");
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eventdev_common_autotest, test_eventdev_common);
+
+#ifndef RTE_EXEC_ENV_WINDOWS
 REGISTER_TEST_COMMAND(eventdev_selftest_sw, test_eventdev_selftest_sw);
 REGISTER_TEST_COMMAND(eventdev_selftest_octeontx,
 		test_eventdev_selftest_octeontx);
@@ -1058,3 +1072,5 @@ REGISTER_TEST_COMMAND(eventdev_selftest_dpaa2, test_eventdev_selftest_dpaa2);
 REGISTER_TEST_COMMAND(eventdev_selftest_dlb2, test_eventdev_selftest_dlb2);
 REGISTER_TEST_COMMAND(eventdev_selftest_cn9k, test_eventdev_selftest_cn9k);
 REGISTER_TEST_COMMAND(eventdev_selftest_cn10k, test_eventdev_selftest_cn10k);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_external_mem.c +16 -2
index 5edf88b9f6..759f4fce6b 100644
@@ -2,11 +2,25 @@
  * Copyright(c) 2018 Intel Corporation
  */
 
+#include "test.h"
+
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <fcntl.h>
+
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_external_mem(void)
+{
+	printf("external_mem not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <sys/mman.h>
 #include <sys/wait.h>
 
@@ -19,8 +33,6 @@
 #include <rte_ring.h>
 #include <rte_string_fns.h>
 
-#include "test.h"
-
 #define EXTERNAL_MEM_SZ (RTE_PGSIZE_4K << 10) /* 4M of data */
 
 static int
@@ -574,4 +586,6 @@ test_external_mem(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(external_mem_autotest, test_external_mem);
app/test/test_fib.c +21 -1
index eb69d6e2fd..50b3fa760c 100644
@@ -9,10 +9,28 @@
 
 #include <rte_ip.h>
 #include <rte_log.h>
-#include <rte_fib.h>
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib(void)
+{
+	printf("fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_fib(void)
+{
+	printf("slow_fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib.h>
+
 typedef int32_t (*rte_fib_test)(void);
 
 static int32_t test_create_invalid(void);
@@ -415,5 +433,7 @@ test_slow_fib(void)
 	return unit_test_suite_runner(&fib_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib_autotest, test_fib);
 REGISTER_TEST_COMMAND(fib_slow_autotest, test_slow_fib);
app/test/test_fib6.c +22 -2
index 15ad09178a..53cca26ff1 100644
@@ -9,11 +9,29 @@
 
 #include <rte_memory.h>
 #include <rte_log.h>
-#include <rte_rib6.h>
-#include <rte_fib6.h>
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib6(void)
+{
+	printf("fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_fib6(void)
+{
+	printf("slow_fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_rib6.h>
+#include <rte_fib6.h>
+
 typedef int32_t (*rte_fib6_test)(void);
 
 static int32_t test_create_invalid(void);
@@ -424,5 +442,7 @@ test_slow_fib6(void)
 	return unit_test_suite_runner(&fib6_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib6_autotest, test_fib6);
 REGISTER_TEST_COMMAND(fib6_slow_autotest, test_slow_fib6);
app/test/test_fib6_perf.c +15 -1
index e565799155..21d2b65318 100644
@@ -10,9 +10,21 @@
 #include <rte_cycles.h>
 #include <rte_random.h>
 #include <rte_memory.h>
-#include <rte_fib6.h>
 
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib6_perf(void)
+{
+	printf("fib6_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib6.h>
+
 #include "test_lpm6_data.h"
 
 #define TEST_FIB_ASSERT(cond) do {				\
@@ -155,4 +167,6 @@ test_fib6_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib6_perf_autotest, test_fib6_perf);
app/test/test_fib_perf.c +14 -1
index 86b2f832b8..ec7f20e102 100644
@@ -12,11 +12,22 @@
 #include <rte_random.h>
 #include <rte_branch_prediction.h>
 #include <rte_ip.h>
-#include <rte_fib.h>
 
 #include "test.h"
 #include "test_xmmt_ops.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib_perf(void)
+{
+	printf("fib_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib.h>
+
 #define TEST_FIB_ASSERT(cond) do {				\
 	if (!(cond)) {						\
 		printf("Error at line %d:\n", __LINE__);	\
@@ -409,4 +420,6 @@ test_fib_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib_perf_autotest, test_fib_perf);
app/test/test_flow_classify.c +13 -0
index 4f64be5357..d9893766d1 100644
@@ -11,6 +11,17 @@
 #include <rte_mbuf.h>
 #include <rte_byteorder.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_flow_classify(void)
+{
+	printf("flow_classify not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_acl.h>
 #include <rte_common.h>
 #include <rte_table_acl.h>
@@ -879,4 +890,6 @@ test_flow_classify(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(flow_classify_autotest, test_flow_classify);
app/test/test_func_reentrancy.c +12 -0
index ce40c3ce96..2924308dda 100644
@@ -40,6 +40,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_func_reentrancy(void)
+{
+	printf("reentrancy not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 typedef int (*case_func_t)(void* arg);
 typedef void (*case_clean_t)(unsigned lcore_id);
 
@@ -511,4 +521,6 @@ test_func_reentrancy(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(func_reentrancy_autotest, test_func_reentrancy);
app/test/test_graph.c +16 -2
index 81bdcb9bea..ce4cdecd34 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(C) 2020 Marvell International Ltd.
  */
+#include "test.h"
+
 #include <assert.h>
 #include <inttypes.h>
 #include <signal.h>
@@ -9,14 +11,23 @@
 #include <unistd.h>
 
 #include <rte_errno.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_node_list_dump(void)
+{
+	printf("node_list_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_graph.h>
 #include <rte_graph_worker.h>
 #include <rte_mbuf.h>
 #include <rte_mbuf_dyn.h>
 #include <rte_random.h>
 
-#include "test.h"
-
 static uint16_t test_node_worker_source(struct rte_graph *graph,
 					struct rte_node *node, void **objs,
 					uint16_t nb_objs);
@@ -841,4 +852,7 @@ test_node_list_dump(void)
 
 	return TEST_SUCCESS;
 }
+
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(node_list_dump, test_node_list_dump);
app/test/test_graph_perf.c +14 -2
index 296d99a9d3..a58cde1f22 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(C) 2020 Marvell International Ltd.
  */
+#include "test.h"
+
 #include <inttypes.h>
 #include <signal.h>
 #include <stdio.h>
@@ -9,14 +11,22 @@
 #include <rte_common.h>
 #include <rte_cycles.h>
 #include <rte_errno.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_graph_perf_func(void)
+{
+	printf("graph_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_graph.h>
 #include <rte_graph_worker.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 #include <rte_mbuf.h>
 
-#include "test.h"
-
 #define TEST_GRAPH_PERF_MZ	     "graph_perf_data"
 #define TEST_GRAPH_SRC_NAME	     "test_graph_perf_source"
 #define TEST_GRAPH_SRC_BRST_ONE_NAME "test_graph_perf_source_one"
@@ -1060,4 +1070,6 @@ test_graph_perf_func(void)
 	return unit_test_suite_runner(&graph_perf_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(graph_perf_autotest, test_graph_perf_func);
app/test/test_hash_perf.c +12 -0
index 7e98ec3964..a3e9f43967 100644
@@ -17,6 +17,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_hash_perf(void)
+{
+	printf("hash_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #define MAX_ENTRIES (1 << 19)
 #define KEYS_TO_ADD (MAX_ENTRIES)
 #define ADD_PERCENT 0.75 /* 75% table utilization */
@@ -749,4 +759,6 @@ test_hash_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(hash_perf_autotest, test_hash_perf);
app/test/test_ipfrag.c +14 -2
index 1ced25a123..52987b6de7 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2020 Red Hat, Inc.
  */
+#include "test.h"
 
 #include <time.h>
 
@@ -8,13 +9,22 @@
 #include <rte_cycles.h>
 #include <rte_hexdump.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipfrag(void)
+{
+	printf("ipfrag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ip_frag.h>
 #include <rte_mbuf.h>
 #include <rte_memcpy.h>
 #include <rte_random.h>
 
-#include "test.h"
-
 #define NUM_MBUFS 128
 #define BURST 32
 
@@ -322,4 +332,6 @@ test_ipfrag(void)
 	return unit_test_suite_runner(&ipfrag_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipfrag_autotest, test_ipfrag);
app/test/test_ipsec.c +14 -1
index bc2a3dbc2e..ed4d166f0d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2018 Intel Corporation
  */
+#include "test.h"
 
 #include <time.h>
 
@@ -13,15 +14,25 @@
 #include <rte_bus_vdev.h>
 #include <rte_ip.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipsec(void)
+{
+	printf("ipsec not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_crypto.h>
 #include <rte_cryptodev.h>
 #include <rte_lcore.h>
+
 #include <rte_ipsec.h>
 #include <rte_random.h>
 #include <rte_esp.h>
 #include <rte_security_driver.h>
 
-#include "test.h"
 #include "test_cryptodev.h"
 
 #define VDEV_ARGS_SIZE	100
@@ -2536,4 +2547,6 @@ test_ipsec(void)
 	return unit_test_suite_runner(&ipsec_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_autotest, test_ipsec);
app/test/test_ipsec_perf.c +14 -1
index 92106bf374..5ebb61ce18 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2020 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <rte_ip.h>
@@ -8,10 +9,20 @@
 #include <rte_ring.h>
 #include <rte_mbuf.h>
 #include <rte_cycles.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_libipsec_perf(void)
+{
+	printf("ipsec_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec.h>
 #include <rte_random.h>
 
-#include "test.h"
 #include "test_cryptodev.h"
 
 #define RING_SIZE	4096
@@ -611,4 +622,6 @@ test_libipsec_perf(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_perf_autotest, test_libipsec_perf);
app/test/test_ipsec_sad.c +13 -1
index 491164689e..07f3ed245b 100644
@@ -1,16 +1,26 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipsec_sad(void)
+{
+	printf("ipsec_sad not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec_sad.h>
 #include <rte_memory.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 typedef int32_t (*rte_ipsec_sad_test)(void);
@@ -884,4 +894,6 @@ test_ipsec_sad(void)
 	return unit_test_suite_runner(&ipsec_sad_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_sad_autotest, test_ipsec_sad);
app/test/test_kni.c +5 -5
index 40ab0d5c4c..8f4e92f6ca 100644
@@ -2,15 +2,12 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
 #include <unistd.h>
 #include <string.h>
-#include <sys/wait.h>
-#include <dirent.h>
-
-#include "test.h"
-
 #if !defined(RTE_EXEC_ENV_LINUX) || !defined(RTE_LIB_KNI)
 
 static int
@@ -22,6 +19,9 @@ test_kni(void)
 
 #else
 
+#include <sys/wait.h>
+#include <dirent.h>
+
 #include <rte_string_fns.h>
 #include <rte_mempool.h>
 #include <rte_ethdev.h>
app/test/test_lcores.c +12 -0
index 35c47d5372..2277ae597f 100644
@@ -11,6 +11,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lcores(void)
+{
+	printf("lcore not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 struct thread_context {
 	enum { INIT, ERROR, DONE } state;
 	bool lcore_id_any;
@@ -411,4 +421,6 @@ test_lcores(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lcores_autotest, test_lcores);
app/test/test_lpm.c +13 -1
index 37b460af3a..55ae46207a 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm(void)
+{
+	printf("lpm not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <stdio.h>
 #include <stdint.h>
@@ -10,7 +21,6 @@
 #include <rte_lpm.h>
 #include <rte_malloc.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -1584,4 +1594,6 @@ test_lpm(void)
 	return global_status;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm_autotest, test_lpm);
app/test/test_lpm6.c +13 -1
index 17221f992a..a4d8eda62d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -8,9 +9,18 @@
 #include <string.h>
 
 #include <rte_memory.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm6(void)
+{
+	printf("lpm6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_lpm6.h>
 
-#include "test.h"
 #include "test_lpm6_data.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -1792,4 +1802,6 @@ test_lpm6(void)
 	return global_status;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm6_autotest, test_lpm6);
app/test/test_lpm6_perf.c +13 -1
index 0b43ad824a..622418ddfe 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm6_perf(void)
+{
+	printf("lpm6_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <stdio.h>
 #include <stdint.h>
@@ -12,7 +23,6 @@
 #include <rte_memory.h>
 #include <rte_lpm6.h>
 
-#include "test.h"
 #include "test_lpm6_data.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -160,4 +170,6 @@ test_lpm6_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm6_perf_autotest, test_lpm6_perf);
app/test/test_lpm_perf.c +12 -1
index 2bed00d064..d49bce5d36 100644
@@ -2,7 +2,17 @@
  * Copyright(c) 2010-2014 Intel Corporation
  * Copyright(c) 2020 Arm Limited
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm_perf(void)
+{
+	printf("lpm_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
 
+#else
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -15,7 +25,6 @@
 #include <rte_ip.h>
 #include <rte_lpm.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 struct rte_lpm *lpm;
@@ -763,4 +772,6 @@ test_lpm_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm_perf_autotest, test_lpm_perf);
app/test/test_malloc.c +14 -6
index 6d9249f831..fe6b83271b 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2019 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -8,7 +9,9 @@
 #include <stdarg.h>
 #include <errno.h>
 #include <stdlib.h>
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <sys/mman.h>
+#endif
 #include <sys/queue.h>
 #include <unistd.h>
 
@@ -23,11 +26,8 @@
 #include <rte_random.h>
 #include <rte_string_fns.h>
 
-#include "test.h"
-
 #define N 10000
 
-
 static int
 is_mem_on_socket(int32_t socket);
 
@@ -47,8 +47,8 @@ addr_to_socket(void *addr);
 static int
 is_memory_overlap(void *p1, size_t len1, void *p2, size_t len2)
 {
-	unsigned long ptr1 = (unsigned long)p1;
-	unsigned long ptr2 = (unsigned long)p2;
+	uintptr_t ptr1 = (uintptr_t)p1;
+	uintptr_t ptr2 = (uintptr_t)p2;
 
 	if (ptr2 >= ptr1 && (ptr2 - ptr1) < len1)
 		return 1;
@@ -60,7 +60,7 @@ is_memory_overlap(void *p1, size_t len1, void *p2, size_t len2)
 static int
 is_aligned(void *p, int align)
 {
-	unsigned long addr = (unsigned long)p;
+	uintptr_t addr = (uintptr_t)p;
 	unsigned mask = align - 1;
 
 	if (addr & mask)
@@ -373,6 +373,13 @@ test_multi_alloc_statistics(void)
 	return 0;
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_realloc(void)
+{
+	return TEST_SKIPPED;
+}
+#else
 static int
 test_realloc_socket(int socket)
 {
@@ -670,6 +677,7 @@ test_realloc(void)
 end:
 	return ret;
 }
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 
 static int
 test_random_alloc_free(void *_ __rte_unused)
app/test/test_mbuf.c +13 -2
index f54d1d7c00..662b988480 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <string.h>
 #include <stdarg.h>
@@ -33,8 +34,6 @@
 #include <rte_tcp.h>
 #include <rte_mbuf_dyn.h>
 
-#include "test.h"
-
 #define MEMPOOL_CACHE_SIZE      32
 #define MBUF_DATA_SIZE          2048
 #define NB_MBUF                 128
@@ -1172,6 +1171,16 @@ test_refcnt_mbuf(void)
 #endif
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+
+static int
+test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
+{
+	RTE_SET_USED(pktmbuf_pool);
+	return TEST_SKIPPED;
+}
+#else
+
 #include <unistd.h>
 #include <sys/resource.h>
 #include <sys/time.h>
@@ -1267,6 +1276,8 @@ test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
 	return 0;
 }
 
+#endif /*!defined RTE_EXEC_ENV_WINDOWS*/
+
 static int
 test_mbuf_linearize(struct rte_mempool *pktmbuf_pool, int pkt_len,
 		    int nb_segs)
app/test/test_member.c +14 -2
index 40aa4c8627..85f3a126b9 100644
@@ -3,17 +3,27 @@
  */
 
 /* This test is for membership library's simple feature test */
+#include "test.h"
 
 #include <rte_memcpy.h>
 #include <rte_malloc.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_member(void)
+{
+	printf("member not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_member.h>
 #include <rte_byteorder.h>
 #include <rte_random.h>
 #include <rte_debug.h>
 #include <rte_ip.h>
 
-#include "test.h"
-
 struct rte_member_setsum *setsum_ht;
 struct rte_member_setsum *setsum_cache;
 struct rte_member_setsum *setsum_vbf;
@@ -712,4 +722,6 @@ test_member(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(member_autotest, test_member);
app/test/test_member_perf.c +14 -2
index e2840f12d3..1cc9c3e4d8 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2017 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <inttypes.h>
@@ -11,9 +12,18 @@
 #include <rte_random.h>
 #include <rte_memcpy.h>
 #include <rte_thash.h>
-#include <rte_member.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_member_perf(void)
+{
+	printf("member_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_member.h>
 
 #define NUM_KEYSIZES 10
 #define NUM_SHUFFLES 10
@@ -622,4 +632,6 @@ test_member_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(member_perf_autotest, test_member_perf);
app/test/test_memcpy_perf.c +0 -1
index 3727c160e6..9147c0aec6 100644
@@ -13,7 +13,6 @@
 #include <rte_os_shim.h>
 #include <rte_random.h>
 #include <rte_malloc.h>
-
 #include <rte_memcpy.h>
 
 #include "test.h"
app/test/test_mp_secondary.c +12 -0
index 021ca0547f..54b0f72645 100644
@@ -14,6 +14,16 @@
 #include <errno.h>
 #include <string.h>
 #include <unistd.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_mp_secondary(void)
+{
+	printf("mp_secondary not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <sys/wait.h>
 #include <libgen.h>
 #include <dirent.h>
@@ -211,4 +221,6 @@ test_mp_secondary(void)
 	return run_object_creation_tests();
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(multiprocess_autotest, test_mp_secondary);
app/test/test_pie.c +28 -2
index 632d4b014d..edd1aa3d86 100644
@@ -2,6 +2,32 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_pie(void)
+{
+	printf("pie not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_pie_perf(void)
+{
+	printf("pie_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_pie_all(void)
+{
+	printf("pie_all not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -12,8 +38,6 @@
 #include <time.h>
 #include <math.h>
 
-#include "test.h"
-
 #include <rte_pie.h>
 
 #ifdef __INTEL_COMPILER
@@ -1060,6 +1084,8 @@ test_pie_all(void)
 	return tell_the_result(num_tests, num_pass);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(pie_autotest, test_pie);
 REGISTER_TEST_COMMAND(pie_perf, test_pie_perf);
 REGISTER_TEST_COMMAND(pie_all, test_pie_all);
app/test/test_rawdev.c +15 -2
index 081fab969b..561b0e0300 100644
@@ -1,16 +1,27 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright 2017 NXP
  */
+#include "test.h"
+
 #include <rte_common.h>
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
 #include <rte_dev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rawdev_selftests(void)
+{
+	printf("rawdev not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_rawdev.h>
 #include <rte_bus_vdev.h>
 
-#include "test.h"
-
 static int
 test_rawdev_selftest_impl(const char *pmd, const char *opts)
 {
@@ -54,4 +65,6 @@ test_rawdev_selftests(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rawdev_autotest, test_rawdev_selftests);
app/test/test_rcu_qsbr_perf.c +12 -0
index cf7b158d22..9209fb2658 100644
@@ -15,6 +15,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rcu_qsbr_main(void)
+{
+	printf("rcu_qsbr_main not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 /* Check condition and return an error if true. */
 static uint16_t enabled_core_ids[RTE_MAX_LCORE];
 static unsigned int num_cores;
@@ -687,4 +697,6 @@ test_rcu_qsbr_main(void)
 	return -1;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rcu_qsbr_perf_autotest, test_rcu_qsbr_main);
app/test/test_red.c +27 -2
index 05936cfee8..524f9c9b6d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -8,12 +9,34 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <inttypes.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_red(void)
+{
+	printf("red not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_red_perf(void)
+{
+	printf("red_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_red_all(void)
+{
+	printf("red_all not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #include <sys/time.h>
 #include <time.h>
 #include <math.h>
 
-#include "test.h"
-
 #include <rte_red.h>
 
 #ifdef __INTEL_COMPILER
@@ -1851,6 +1874,8 @@ test_red_all(void)
 	return tell_the_result(num_tests, num_pass);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(red_autotest, test_red);
 REGISTER_TEST_COMMAND(red_perf, test_red_perf);
 REGISTER_TEST_COMMAND(red_all, test_red_all);
app/test/test_reorder.c +13 -2
index 1c4226da65..c73cbdefe6 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <unistd.h>
@@ -9,12 +10,20 @@
 #include <rte_cycles.h>
 #include <rte_errno.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_reorder(void)
+{
+	printf("reorder not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #include <rte_reorder.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 
-#include "test.h"
-
 #define BURST 32
 #define REORDER_BUFFER_SIZE 16384
 #define NUM_MBUFS (2*REORDER_BUFFER_SIZE)
@@ -390,4 +399,6 @@ test_reorder(void)
 	return unit_test_suite_runner(&reorder_test_suite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(reorder_autotest, test_reorder);
app/test/test_rib.c +20 -2
index 3dc48fe1f2..ad7c79ca78 100644
@@ -2,15 +2,31 @@
  * Copyright(c) 2018 Vladimir Medvedkin <[email protected]>
  * Copyright(c) 2019 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 
 #include <rte_ip.h>
-#include <rte_rib.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rib(void)
+{
+	printf("rib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_rib(void)
+{
+	printf("slow_rib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
+#include <rte_rib.h>
 
 typedef int32_t (*rte_rib_test)(void);
 
@@ -363,5 +379,7 @@ test_slow_rib(void)
 	return unit_test_suite_runner(&rib_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rib_autotest, test_rib);
 REGISTER_TEST_COMMAND(rib_slow_autotest, test_slow_rib);
app/test/test_rib6.c +20 -2
index c77df11298..9d0e3cb55e 100644
@@ -3,14 +3,31 @@
  * Copyright(c) 2019 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 
 #include <rte_ip.h>
-#include <rte_rib6.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rib6(void)
+{
+	printf("rib6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_rib6(void)
+{
+	printf("slow_rib6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
+#include <rte_rib6.h>
 
 typedef int32_t (*rte_rib6_test)(void);
 
@@ -368,5 +385,6 @@ test_slow_rib6(void)
 	return unit_test_suite_runner(&rib6_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 REGISTER_TEST_COMMAND(rib6_autotest, test_rib6);
 REGISTER_TEST_COMMAND(rib6_slow_autotest, test_slow_rib6);
app/test/test_sched.c +13 -1
index 958b631144..ad3e978ea6 100644
@@ -14,8 +14,18 @@
 #include <rte_ether.h>
 #include <rte_ip.h>
 #include <rte_byteorder.h>
-#include <rte_sched.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_sched(void)
+{
+	printf("sched not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_sched.h>
 
 #define SUBPORT         0
 #define PIPE            1
@@ -204,4 +214,6 @@ test_sched(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(sched_autotest, test_sched);
app/test/test_security.c +3 -1
index 060cf1ffa8..6c1d8602d2 100644
@@ -1,12 +1,14 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
  */
+#include "test.h"
 
 #include <rte_errno.h>
 #include <rte_log.h>
 #include <rte_memory.h>
 #include <rte_mempool.h>
 #include <rte_ether.h>
+
 #include <rte_security.h>
 #include <rte_security_driver.h>
 
@@ -20,7 +22,7 @@
 #endif
 
 #include <rte_test.h>
-#include "test.h"
+
 
 /**
  * Security
app/test/test_table.c +13 -0
index 95034148cb..2e18e49ba4 100644
@@ -7,6 +7,17 @@
 #include <rte_string_fns.h>
 #include <string.h>
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_table(void)
+{
+	printf("table not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include "test_table.h"
 #include "test_table_pipeline.h"
 #include "test_table_ports.h"
@@ -194,4 +205,6 @@ test_table(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(table_autotest, test_table);
app/test/test_table_acl.c +3 -0
index 0bdf76ab70..83bef0ea57 100644
@@ -2,6 +2,7 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <rte_ip.h>
 #include <rte_string_fns.h>
 #include <rte_hexdump.h>
@@ -728,3 +729,5 @@ test_table_acl(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_combined.c +4 -0
index f72b634bff..0abc5e45c5 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2016 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include "test_table_combined.h"
 #include "test_table.h"
@@ -840,3 +842,5 @@ test_table_hash_cuckoo_combined(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_pipeline.c +4 -0
index aabf4375db..45dc7682d8 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include <rte_pipeline.h>
 #include <rte_log.h>
@@ -569,3 +571,5 @@ test_table_pipeline(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_ports.c +4 -0
index d921b2e207..f3b5693609 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include "test_table_ports.h"
 #include "test_table.h"
 
@@ -189,3 +191,5 @@ test_port_ring_writer(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_tables.c +4 -0
index 4ff6ab16aa..2901490e61 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2016 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include <rte_byteorder.h>
 #include <rte_table_lpm_ipv6.h>
@@ -1052,3 +1054,5 @@ test_table_hash_cuckoo(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_timer_secondary.c +13 -0
index 5795c97f07..234a7ec425 100644
@@ -15,6 +15,17 @@
 #include <rte_random.h>
 
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_timer_secondary(void)
+{
+	printf("timer_secondary not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include "process.h"
 
 #define NUM_TIMERS		(1 << 20) /* ~1M timers */
@@ -212,4 +223,6 @@ test_timer_secondary(void)
 	return TEST_FAILED;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(timer_secondary_autotest, test_timer_secondary);
app/test/test_trace.c +28 -4
index 0f9df83c40..e62f9ca10e 100644
@@ -9,6 +9,30 @@
 #include "test.h"
 #include "test_trace.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_trace(void)
+{
+	printf("trace not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_trace_dump(void)
+{
+	printf("trace_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_trace_metadata_dump(void)
+{
+	printf("trace_metadata_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 static int32_t
 test_trace_point_globbing(void)
 {
@@ -194,8 +218,6 @@ test_trace(void)
 	return unit_test_suite_runner(&trace_tests);
 }
 
-REGISTER_TEST_COMMAND(trace_autotest, test_trace);
-
 static int
 test_trace_dump(void)
 {
@@ -203,12 +225,14 @@ test_trace_dump(void)
 	return 0;
 }
 
-REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
-
 static int
 test_trace_metadata_dump(void)
 {
 	return rte_trace_metadata_dump(stdout);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
+REGISTER_TEST_COMMAND(trace_autotest, test_trace);
+REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
 REGISTER_TEST_COMMAND(trace_metadata_dump, test_trace_metadata_dump);
Signature · 1 line
2.31.0.vfs.0.1
Acked-by on v14 9/11
#222 lore raw

Re: [PATCH v14 09/11] app/test: add test stubs for not supported ones

Quoted 2,400 lines · Jie Zhou

Add test stubs for tests which are not yet supported for Windows:
- The libraries that tests depend on are not enabled on Windows yet
- The tests can compile but with issue still under investigation
* test_func_reentrancy:
Windows EAL has no protection against repeated calls.
* test_lcores:
Execution enters an infinite loops, requires investigation.
* test_rcu_qsbr_perf:
Execution hangs on Windows, requires investigation.

---
 app/test/test_acl.c                      | 12 ++++
 app/test/test_bpf.c                      | 15 +++-
 app/test/test_cryptodev.c                |  4 ++
 app/test/test_cryptodev_asym.c           |  4 ++
 app/test/test_cryptodev_blockcipher.c    |  4 ++
 app/test/test_cryptodev_security_ipsec.c |  4 ++
 app/test/test_cryptodev_security_pdcp.c  |  4 ++
 app/test/test_debug.c                    | 17 ++++-
 app/test/test_distributor.c              | 13 ++++
 app/test/test_distributor_perf.c         | 13 ++++
 app/test/test_eal_flags.c                | 90 ++++++++++++++++++++++++
 app/test/test_eal_fs.c                   | 12 ++++
 app/test/test_efd.c                      | 15 +++-
 app/test/test_efd_perf.c                 | 16 ++++-
 app/test/test_event_crypto_adapter.c     | 15 +++-
 app/test/test_event_eth_rx_adapter.c     | 25 ++++++-
 app/test/test_event_eth_tx_adapter.c     | 12 ++++
 app/test/test_event_ring.c               | 16 ++++-
 app/test/test_event_timer_adapter.c      | 16 ++++-
 app/test/test_eventdev.c                 | 20 +++++-
 app/test/test_external_mem.c             | 18 ++++-
 app/test/test_fib.c                      | 22 +++++-
 app/test/test_fib6.c                     | 24 ++++++-
 app/test/test_fib6_perf.c                | 16 ++++-
 app/test/test_fib_perf.c                 | 15 +++-
 app/test/test_flow_classify.c            | 13 ++++
 app/test/test_func_reentrancy.c          | 12 ++++
 app/test/test_graph.c                    | 18 ++++-
 app/test/test_graph_perf.c               | 16 ++++-
 app/test/test_hash_perf.c                | 12 ++++
 app/test/test_ipfrag.c                   | 16 ++++-
 app/test/test_ipsec.c                    | 15 +++-
 app/test/test_ipsec_perf.c               | 15 +++-
 app/test/test_ipsec_sad.c                | 14 +++-
 app/test/test_kni.c                      | 10 +--
 app/test/test_lcores.c                   | 12 ++++
 app/test/test_lpm.c                      | 14 +++-
 app/test/test_lpm6.c                     | 14 +++-
 app/test/test_lpm6_perf.c                | 14 +++-
 app/test/test_lpm_perf.c                 | 13 +++-
 app/test/test_malloc.c                   | 20 ++++--
 app/test/test_mbuf.c                     | 15 +++-
 app/test/test_member.c                   | 16 ++++-
 app/test/test_member_perf.c              | 16 ++++-
 app/test/test_memcpy_perf.c              |  1 -
 app/test/test_mp_secondary.c             | 12 ++++
 app/test/test_pie.c                      | 30 +++++++-
 app/test/test_rawdev.c                   | 17 ++++-
 app/test/test_rcu_qsbr_perf.c            | 12 ++++
 app/test/test_red.c                      | 29 +++++++-
 app/test/test_reorder.c                  | 15 +++-
 app/test/test_rib.c                      | 22 +++++-
 app/test/test_rib6.c                     | 22 +++++-
 app/test/test_sched.c                    | 14 +++-
 app/test/test_security.c                 |  4 +-
 app/test/test_table.c                    | 13 ++++
 app/test/test_table_acl.c                |  3 +
 app/test/test_table_combined.c           |  4 ++
 app/test/test_table_pipeline.c           |  4 ++
 app/test/test_table_ports.c              |  4 ++
 app/test/test_table_tables.c             |  4 ++
 app/test/test_timer_secondary.c          | 13 ++++
 app/test/test_trace.c                    | 32 +++++++--
 63 files changed, 880 insertions(+), 72 deletions(-)
app/test/test_acl.c +12 -0
index 5b32347954..7814e25a53 100644
@@ -11,6 +11,16 @@
 #include <rte_mbuf.h>
 #include <rte_byteorder.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_acl(void)
+{
+	printf("acl not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <rte_acl.h>
 #include <rte_common.h>
 
@@ -1741,4 +1751,6 @@ test_acl(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(acl_autotest, test_acl);
app/test/test_bpf.c +14 -1
index 46bcb51f86..055df252ba 100644
@@ -14,11 +14,22 @@
 #include <rte_random.h>
 #include <rte_byteorder.h>
 #include <rte_errno.h>
+#include "test.h"
+
+#if !defined(RTE_LIB_BPF)
+
+static int
+test_bpf(void)
+{
+	printf("BPF not supported, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <rte_bpf.h>
 #include <rte_ether.h>
 #include <rte_ip.h>
 
-#include "test.h"
 
 /*
  * Basic functional tests for librte_bpf.
@@ -3248,6 +3259,8 @@ test_bpf(void)
 	return rc;
 }
 
+#endif
+
 REGISTER_TEST_COMMAND(bpf_autotest, test_bpf);
 
 #ifdef RTE_HAS_LIBPCAP
app/test/test_cryptodev.c +4 -0
index 10b48cdadb..f83c844e42 100644
@@ -3,6 +3,8 @@
  * Copyright 2020 NXP
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <time.h>
 
 #include <rte_common.h>
@@ -15739,3 +15741,5 @@ REGISTER_TEST_COMMAND(cryptodev_nitrox_autotest, test_cryptodev_nitrox);
 REGISTER_TEST_COMMAND(cryptodev_bcmfs_autotest, test_cryptodev_bcmfs);
 REGISTER_TEST_COMMAND(cryptodev_cn9k_autotest, test_cryptodev_cn9k);
 REGISTER_TEST_COMMAND(cryptodev_cn10k_autotest, test_cryptodev_cn10k);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_asym.c +4 -0
index 9d19a6d6d9..680ced4dbe 100644
@@ -3,6 +3,8 @@
  * Copyright (c) 2019 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_bus_vdev.h>
 #include <rte_common.h>
 #include <rte_hexdump.h>
@@ -2429,3 +2431,5 @@ REGISTER_TEST_COMMAND(cryptodev_octeontx2_asym_autotest,
 					  test_cryptodev_octeontx2_asym);
 REGISTER_TEST_COMMAND(cryptodev_cn9k_asym_autotest, test_cryptodev_cn9k_asym);
 REGISTER_TEST_COMMAND(cryptodev_cn10k_asym_autotest, test_cryptodev_cn10k_asym);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_blockcipher.c +4 -0
index 5688a45377..3860433ffd 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2015-2017 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_common.h>
 #include <rte_hexdump.h>
 #include <rte_mbuf.h>
@@ -1221,3 +1223,5 @@ free_blockcipher_test_suite(struct unit_test_suite *ts)
 {
 	free(ts);
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_security_ipsec.c +4 -0
index 4708803bd2..a84afae7f5 100644
@@ -2,6 +2,8 @@
  * Copyright(C) 2021 Marvell.
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_common.h>
 #include <rte_cryptodev.h>
 #include <rte_esp.h>
@@ -672,3 +674,5 @@ test_ipsec_status_check(struct rte_crypto_op *op,
 
 	return ret;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_security_pdcp.c +4 -0
index a7641bab7a..3409add715 100644
@@ -4,6 +4,8 @@
  * Copyright 2018-2019 NXP
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <time.h>
 
 #include <rte_common.h>
@@ -587,3 +589,5 @@ test_PDCP_PROTO_uplane_decap_all(void)
 
 	return n - i;
 };
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_debug.c +15 -2
index 23b24db177..c4038a4ed1 100644
@@ -2,8 +2,21 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_debug(void)
+{
+	printf("debug not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <sys/resource.h>
 #include <sys/time.h>
 #include <sys/wait.h>
@@ -14,8 +27,6 @@
 #include <rte_eal.h>
 #include <rte_service_component.h>
 
-#include "test.h"
-
 /*
  * Debug test
  * ==========
@@ -127,4 +138,6 @@ test_debug(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(debug_autotest, test_debug);
app/test/test_distributor.c +13 -0
index 961f326cd5..0ecd5ba232 100644
@@ -11,6 +11,17 @@
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_mbuf_dyn.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_distributor(void)
+{
+	printf("distributor not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_distributor.h>
 #include <rte_string_fns.h>
 
@@ -939,4 +950,6 @@ test_distributor(void)
 	return -1;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(distributor_autotest, test_distributor);
app/test/test_distributor_perf.c +13 -0
index 92e330f194..650a0317ef 100644
@@ -10,6 +10,17 @@
 #include <rte_cycles.h>
 #include <rte_common.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_distributor_perf(void)
+{
+	printf("distributor perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_distributor.h>
 #include <rte_pause.h>
 
@@ -264,4 +275,6 @@ test_distributor_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(distributor_perf_autotest, test_distributor_perf);
app/test/test_eal_flags.c +90 -0
index d7f4c2cd47..5e7e391881 100644
@@ -9,6 +9,94 @@
 
 #include <string.h>
 #include <stdarg.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_missing_c_flag(void)
+{
+	printf("emissing_c_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_main_lcore_flag(void)
+{
+	printf("main_lcore_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_invalid_n_flag(void)
+{
+	printf("invalid_n_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_no_hpet_flag(void)
+{
+	printf("no_hpet_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_no_huge_flag(void)
+{
+	printf("no_huge_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_allow_flag(void)
+{
+	printf("allow_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_invalid_b_flag(void)
+{
+	printf("invalid_b_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_invalid_vdev_flag(void)
+{
+	printf("invalid_vdev_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_invalid_r_flag(void)
+{
+	printf("invalid_r_flag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_memory_flags(void)
+{
+	printf("memory_flags not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_file_prefix(void)
+{
+	printf("file_prefix not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_misc_flags(void)
+{
+	printf("misc_flags not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <libgen.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -1498,6 +1586,8 @@ test_memory_flags(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eal_flags_c_opt_autotest, test_missing_c_flag);
 REGISTER_TEST_COMMAND(eal_flags_main_opt_autotest, test_main_lcore_flag);
 REGISTER_TEST_COMMAND(eal_flags_n_opt_autotest, test_invalid_n_flag);
app/test/test_eal_fs.c +12 -0
index 39ac6961b3..5d24ae3d32 100644
@@ -10,6 +10,16 @@
 
 #include "eal_filesystem.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_eal_fs(void)
+{
+	printf("eal_fs not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 static int
 test_parse_sysfs_value(void)
 {
@@ -173,4 +183,6 @@ test_eal_fs(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eal_fs_autotest, test_eal_fs);
app/test/test_efd.c +13 -2
index 1b249e0447..f8f356dcd9 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2016-2017 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_efd(void)
+{
+	printf("efd not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <rte_memcpy.h>
 #include <rte_malloc.h>
@@ -10,8 +21,6 @@
 #include <rte_debug.h>
 #include <rte_ip.h>
 
-#include "test.h"
-
 #define EFD_TEST_KEY_LEN 8
 #define TABLE_SIZE (1 << 21)
 #define ITERATIONS 3
@@ -462,4 +471,6 @@ test_efd(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(efd_autotest, test_efd);
app/test/test_efd_perf.c +14 -2
index f3fe3b1736..1bf6bcb0ca 100644
@@ -2,6 +2,18 @@
  * Copyright(c) 2016-2017 Intel Corporation
  */
 
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_efd_perf(void)
+{
+	printf("efd_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <stdio.h>
 #include <inttypes.h>
 
@@ -13,8 +25,6 @@
 #include <rte_memcpy.h>
 #include <rte_thash.h>
 
-#include "test.h"
-
 #define NUM_KEYSIZES 10
 #define NUM_SHUFFLES 10
 #define MAX_KEYSIZE 64
@@ -382,4 +392,6 @@ test_efd_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(efd_perf_autotest, test_efd_perf);
app/test/test_event_crypto_adapter.c +14 -1
index 3d7e9fb93c..8f5fd78723 100644
@@ -3,16 +3,27 @@
  * All rights reserved.
  */
 
+#include "test.h"
 #include <string.h>
 #include <rte_common.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_crypto_adapter(void)
+{
+	printf("event_crypto_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_cryptodev.h>
 #include <rte_eventdev.h>
 #include <rte_bus_vdev.h>
 #include <rte_service.h>
 #include <rte_event_crypto_adapter.h>
-#include "test.h"
 
 #define PKT_TRACE                  0
 #define NUM                        1
@@ -1011,5 +1022,7 @@ test_event_crypto_adapter(void)
 	return unit_test_suite_runner(&functional_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_crypto_adapter_autotest,
 		test_event_crypto_adapter);
app/test/test_event_eth_rx_adapter.c +23 -2
index 7cb91b152f..1df24fdce2 100644
@@ -1,18 +1,37 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2017 Intel Corporation
  */
+
+#include "test.h"
+
 #include <string.h>
 #include <rte_common.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_ethdev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_eth_rx_adapter_common(void)
+{
+	printf("event_eth_rx_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_event_eth_rx_intr_adapter_common(void)
+{
+	printf("event_eth_rx_intr_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_bus_vdev.h>
 
 #include <rte_event_eth_rx_adapter.h>
 
-#include "test.h"
-
 #define MAX_NUM_RX_QUEUE	64
 #define NB_MBUFS		(8192 * num_ports * MAX_NUM_RX_QUEUE)
 #define MBUF_CACHE_SIZE		512
@@ -1027,6 +1046,8 @@ test_event_eth_rx_intr_adapter_common(void)
 	return unit_test_suite_runner(&event_eth_rx_intr_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_eth_rx_adapter_autotest,
 		test_event_eth_rx_adapter_common);
 REGISTER_TEST_COMMAND(event_eth_rx_intr_adapter_autotest,
app/test/test_event_eth_tx_adapter.c +12 -0
index cfcc784351..c1c9732dd4 100644
@@ -16,6 +16,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_eth_tx_adapter_common(void)
+{
+	printf("event_eth_tx_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #define MAX_NUM_QUEUE		RTE_PMD_RING_MAX_RX_RINGS
 #define TEST_INST_ID		0
 #define TEST_DEV_ID		0
@@ -696,5 +706,7 @@ test_event_eth_tx_adapter_common(void)
 	return unit_test_suite_runner(&event_eth_tx_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_eth_tx_adapter_autotest,
 		test_event_eth_tx_adapter_common);
app/test/test_event_ring.c +14 -2
index 70eb9845e1..9c5e28fb81 100644
@@ -2,11 +2,21 @@
  * Copyright(c) 2010-2017 Intel Corporation
  */
 
+#include "test.h"
+
 #include <string.h>
 
-#include <rte_event_ring.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_ring(void)
+{
+	printf("event_ring not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
 
-#include "test.h"
+#else
+
+#include <rte_event_ring.h>
 
 /*
  * Event Ring
@@ -244,4 +254,6 @@ test_event_ring(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_ring_autotest, test_event_ring);
app/test/test_event_timer_adapter.c +14 -2
index 25bac2d155..6f7145ef76 100644
@@ -2,6 +2,7 @@
  * Copyright(c) 2017 Cavium, Inc
  * Copyright(c) 2017-2018 Intel Corporation.
  */
+#include "test.h"
 
 #include <math.h>
 
@@ -10,6 +11,17 @@
 #include <rte_debug.h>
 #include <rte_eal.h>
 #include <rte_ethdev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_timer_adapter_func(void)
+{
+	printf("event_timer_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_event_timer_adapter.h>
 #include <rte_mempool.h>
@@ -21,8 +33,6 @@
 #include <rte_service.h>
 #include <stdbool.h>
 
-#include "test.h"
-
 /* 4K timers corresponds to sw evdev max inflight events */
 #define MAX_TIMERS  (4 * 1024)
 #define BKT_TCK_NSEC
@@ -1950,4 +1960,6 @@ test_event_timer_adapter_func(void)
 	return unit_test_suite_runner(&event_timer_adptr_functional_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_timer_adapter_test, test_event_timer_adapter_func);
app/test/test_eventdev.c +18 -2
index 843d9766b0..fee2ecaa22 100644
@@ -1,18 +1,28 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2016 Cavium, Inc
  */
+#include "test.h"
 
 #include <rte_common.h>
 #include <rte_hexdump.h>
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_eventdev_common(void)
+{
+	printf("eventdev_common not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_dev.h>
 #include <rte_bus_vdev.h>
 
-#include "test.h"
-
 #define TEST_DEV_ID   0
 
 static int
@@ -1048,7 +1058,11 @@ test_eventdev_selftest_cn10k(void)
 	return test_eventdev_selftest_impl("event_cn10k", "");
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eventdev_common_autotest, test_eventdev_common);
+
+#ifndef RTE_EXEC_ENV_WINDOWS
 REGISTER_TEST_COMMAND(eventdev_selftest_sw, test_eventdev_selftest_sw);
 REGISTER_TEST_COMMAND(eventdev_selftest_octeontx,
 		test_eventdev_selftest_octeontx);
@@ -1058,3 +1072,5 @@ REGISTER_TEST_COMMAND(eventdev_selftest_dpaa2, test_eventdev_selftest_dpaa2);
 REGISTER_TEST_COMMAND(eventdev_selftest_dlb2, test_eventdev_selftest_dlb2);
 REGISTER_TEST_COMMAND(eventdev_selftest_cn9k, test_eventdev_selftest_cn9k);
 REGISTER_TEST_COMMAND(eventdev_selftest_cn10k, test_eventdev_selftest_cn10k);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_external_mem.c +16 -2
index 5edf88b9f6..759f4fce6b 100644
@@ -2,11 +2,25 @@
  * Copyright(c) 2018 Intel Corporation
  */
 
+#include "test.h"
+
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <fcntl.h>
+
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_external_mem(void)
+{
+	printf("external_mem not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <sys/mman.h>
 #include <sys/wait.h>
 
@@ -19,8 +33,6 @@
 #include <rte_ring.h>
 #include <rte_string_fns.h>
 
-#include "test.h"
-
 #define EXTERNAL_MEM_SZ (RTE_PGSIZE_4K << 10) /* 4M of data */
 
 static int
@@ -574,4 +586,6 @@ test_external_mem(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(external_mem_autotest, test_external_mem);
app/test/test_fib.c +21 -1
index eb69d6e2fd..50b3fa760c 100644
@@ -9,10 +9,28 @@
 
 #include <rte_ip.h>
 #include <rte_log.h>
-#include <rte_fib.h>
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib(void)
+{
+	printf("fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_fib(void)
+{
+	printf("slow_fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib.h>
+
 typedef int32_t (*rte_fib_test)(void);
 
 static int32_t test_create_invalid(void);
@@ -415,5 +433,7 @@ test_slow_fib(void)
 	return unit_test_suite_runner(&fib_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib_autotest, test_fib);
 REGISTER_TEST_COMMAND(fib_slow_autotest, test_slow_fib);
app/test/test_fib6.c +22 -2
index 15ad09178a..53cca26ff1 100644
@@ -9,11 +9,29 @@
 
 #include <rte_memory.h>
 #include <rte_log.h>
-#include <rte_rib6.h>
-#include <rte_fib6.h>
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib6(void)
+{
+	printf("fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_fib6(void)
+{
+	printf("slow_fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_rib6.h>
+#include <rte_fib6.h>
+
 typedef int32_t (*rte_fib6_test)(void);
 
 static int32_t test_create_invalid(void);
@@ -424,5 +442,7 @@ test_slow_fib6(void)
 	return unit_test_suite_runner(&fib6_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib6_autotest, test_fib6);
 REGISTER_TEST_COMMAND(fib6_slow_autotest, test_slow_fib6);
app/test/test_fib6_perf.c +15 -1
index e565799155..21d2b65318 100644
@@ -10,9 +10,21 @@
 #include <rte_cycles.h>
 #include <rte_random.h>
 #include <rte_memory.h>
-#include <rte_fib6.h>
 
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib6_perf(void)
+{
+	printf("fib6_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib6.h>
+
 #include "test_lpm6_data.h"
 
 #define TEST_FIB_ASSERT(cond) do {				\
@@ -155,4 +167,6 @@ test_fib6_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib6_perf_autotest, test_fib6_perf);
app/test/test_fib_perf.c +14 -1
index 86b2f832b8..ec7f20e102 100644
@@ -12,11 +12,22 @@
 #include <rte_random.h>
 #include <rte_branch_prediction.h>
 #include <rte_ip.h>
-#include <rte_fib.h>
 
 #include "test.h"
 #include "test_xmmt_ops.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib_perf(void)
+{
+	printf("fib_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib.h>
+
 #define TEST_FIB_ASSERT(cond) do {				\
 	if (!(cond)) {						\
 		printf("Error at line %d:\n", __LINE__);	\
@@ -409,4 +420,6 @@ test_fib_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib_perf_autotest, test_fib_perf);
app/test/test_flow_classify.c +13 -0
index 4f64be5357..d9893766d1 100644
@@ -11,6 +11,17 @@
 #include <rte_mbuf.h>
 #include <rte_byteorder.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_flow_classify(void)
+{
+	printf("flow_classify not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_acl.h>
 #include <rte_common.h>
 #include <rte_table_acl.h>
@@ -879,4 +890,6 @@ test_flow_classify(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(flow_classify_autotest, test_flow_classify);
app/test/test_func_reentrancy.c +12 -0
index ce40c3ce96..2924308dda 100644
@@ -40,6 +40,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_func_reentrancy(void)
+{
+	printf("reentrancy not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 typedef int (*case_func_t)(void* arg);
 typedef void (*case_clean_t)(unsigned lcore_id);
 
@@ -511,4 +521,6 @@ test_func_reentrancy(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(func_reentrancy_autotest, test_func_reentrancy);
app/test/test_graph.c +16 -2
index 81bdcb9bea..ce4cdecd34 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(C) 2020 Marvell International Ltd.
  */
+#include "test.h"
+
 #include <assert.h>
 #include <inttypes.h>
 #include <signal.h>
@@ -9,14 +11,23 @@
 #include <unistd.h>
 
 #include <rte_errno.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_node_list_dump(void)
+{
+	printf("node_list_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_graph.h>
 #include <rte_graph_worker.h>
 #include <rte_mbuf.h>
 #include <rte_mbuf_dyn.h>
 #include <rte_random.h>
 
-#include "test.h"
-
 static uint16_t test_node_worker_source(struct rte_graph *graph,
 					struct rte_node *node, void **objs,
 					uint16_t nb_objs);
@@ -841,4 +852,7 @@ test_node_list_dump(void)
 
 	return TEST_SUCCESS;
 }
+
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(node_list_dump, test_node_list_dump);
app/test/test_graph_perf.c +14 -2
index 296d99a9d3..a58cde1f22 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(C) 2020 Marvell International Ltd.
  */
+#include "test.h"
+
 #include <inttypes.h>
 #include <signal.h>
 #include <stdio.h>
@@ -9,14 +11,22 @@
 #include <rte_common.h>
 #include <rte_cycles.h>
 #include <rte_errno.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_graph_perf_func(void)
+{
+	printf("graph_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_graph.h>
 #include <rte_graph_worker.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 #include <rte_mbuf.h>
 
-#include "test.h"
-
 #define TEST_GRAPH_PERF_MZ	     "graph_perf_data"
 #define TEST_GRAPH_SRC_NAME	     "test_graph_perf_source"
 #define TEST_GRAPH_SRC_BRST_ONE_NAME "test_graph_perf_source_one"
@@ -1060,4 +1070,6 @@ test_graph_perf_func(void)
 	return unit_test_suite_runner(&graph_perf_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(graph_perf_autotest, test_graph_perf_func);
app/test/test_hash_perf.c +12 -0
index 7e98ec3964..a3e9f43967 100644
@@ -17,6 +17,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_hash_perf(void)
+{
+	printf("hash_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #define MAX_ENTRIES (1 << 19)
 #define KEYS_TO_ADD (MAX_ENTRIES)
 #define ADD_PERCENT 0.75 /* 75% table utilization */
@@ -749,4 +759,6 @@ test_hash_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(hash_perf_autotest, test_hash_perf);
app/test/test_ipfrag.c +14 -2
index 1ced25a123..52987b6de7 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2020 Red Hat, Inc.
  */
+#include "test.h"
 
 #include <time.h>
 
@@ -8,13 +9,22 @@
 #include <rte_cycles.h>
 #include <rte_hexdump.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipfrag(void)
+{
+	printf("ipfrag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ip_frag.h>
 #include <rte_mbuf.h>
 #include <rte_memcpy.h>
 #include <rte_random.h>
 
-#include "test.h"
-
 #define NUM_MBUFS 128
 #define BURST 32
 
@@ -322,4 +332,6 @@ test_ipfrag(void)
 	return unit_test_suite_runner(&ipfrag_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipfrag_autotest, test_ipfrag);
app/test/test_ipsec.c +14 -1
index bc2a3dbc2e..ed4d166f0d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2018 Intel Corporation
  */
+#include "test.h"
 
 #include <time.h>
 
@@ -13,15 +14,25 @@
 #include <rte_bus_vdev.h>
 #include <rte_ip.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipsec(void)
+{
+	printf("ipsec not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_crypto.h>
 #include <rte_cryptodev.h>
 #include <rte_lcore.h>
+
 #include <rte_ipsec.h>
 #include <rte_random.h>
 #include <rte_esp.h>
 #include <rte_security_driver.h>
 
-#include "test.h"
 #include "test_cryptodev.h"
 
 #define VDEV_ARGS_SIZE	100
@@ -2536,4 +2547,6 @@ test_ipsec(void)
 	return unit_test_suite_runner(&ipsec_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_autotest, test_ipsec);
app/test/test_ipsec_perf.c +14 -1
index 92106bf374..5ebb61ce18 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2020 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <rte_ip.h>
@@ -8,10 +9,20 @@
 #include <rte_ring.h>
 #include <rte_mbuf.h>
 #include <rte_cycles.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_libipsec_perf(void)
+{
+	printf("ipsec_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec.h>
 #include <rte_random.h>
 
-#include "test.h"
 #include "test_cryptodev.h"
 
 #define RING_SIZE	4096
@@ -611,4 +622,6 @@ test_libipsec_perf(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_perf_autotest, test_libipsec_perf);
app/test/test_ipsec_sad.c +13 -1
index 491164689e..07f3ed245b 100644
@@ -1,16 +1,26 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipsec_sad(void)
+{
+	printf("ipsec_sad not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec_sad.h>
 #include <rte_memory.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 typedef int32_t (*rte_ipsec_sad_test)(void);
@@ -884,4 +894,6 @@ test_ipsec_sad(void)
 	return unit_test_suite_runner(&ipsec_sad_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_sad_autotest, test_ipsec_sad);
app/test/test_kni.c +5 -5
index 40ab0d5c4c..8f4e92f6ca 100644
@@ -2,15 +2,12 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
 #include <unistd.h>
 #include <string.h>
-#include <sys/wait.h>
-#include <dirent.h>
-
-#include "test.h"
-
 #if !defined(RTE_EXEC_ENV_LINUX) || !defined(RTE_LIB_KNI)
 
 static int
@@ -22,6 +19,9 @@ test_kni(void)
 
 #else
 
+#include <sys/wait.h>
+#include <dirent.h>
+
 #include <rte_string_fns.h>
 #include <rte_mempool.h>
 #include <rte_ethdev.h>
app/test/test_lcores.c +12 -0
index 35c47d5372..2277ae597f 100644
@@ -11,6 +11,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lcores(void)
+{
+	printf("lcore not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 struct thread_context {
 	enum { INIT, ERROR, DONE } state;
 	bool lcore_id_any;
@@ -411,4 +421,6 @@ test_lcores(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lcores_autotest, test_lcores);
app/test/test_lpm.c +13 -1
index 37b460af3a..55ae46207a 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm(void)
+{
+	printf("lpm not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <stdio.h>
 #include <stdint.h>
@@ -10,7 +21,6 @@
 #include <rte_lpm.h>
 #include <rte_malloc.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -1584,4 +1594,6 @@ test_lpm(void)
 	return global_status;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm_autotest, test_lpm);
app/test/test_lpm6.c +13 -1
index 17221f992a..a4d8eda62d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -8,9 +9,18 @@
 #include <string.h>
 
 #include <rte_memory.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm6(void)
+{
+	printf("lpm6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_lpm6.h>
 
-#include "test.h"
 #include "test_lpm6_data.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -1792,4 +1802,6 @@ test_lpm6(void)
 	return global_status;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm6_autotest, test_lpm6);
app/test/test_lpm6_perf.c +13 -1
index 0b43ad824a..622418ddfe 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm6_perf(void)
+{
+	printf("lpm6_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <stdio.h>
 #include <stdint.h>
@@ -12,7 +23,6 @@
 #include <rte_memory.h>
 #include <rte_lpm6.h>
 
-#include "test.h"
 #include "test_lpm6_data.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -160,4 +170,6 @@ test_lpm6_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm6_perf_autotest, test_lpm6_perf);
app/test/test_lpm_perf.c +12 -1
index 2bed00d064..d49bce5d36 100644
@@ -2,7 +2,17 @@
  * Copyright(c) 2010-2014 Intel Corporation
  * Copyright(c) 2020 Arm Limited
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm_perf(void)
+{
+	printf("lpm_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
 
+#else
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -15,7 +25,6 @@
 #include <rte_ip.h>
 #include <rte_lpm.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 struct rte_lpm *lpm;
@@ -763,4 +772,6 @@ test_lpm_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm_perf_autotest, test_lpm_perf);
app/test/test_malloc.c +14 -6
index 6d9249f831..fe6b83271b 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2019 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -8,7 +9,9 @@
 #include <stdarg.h>
 #include <errno.h>
 #include <stdlib.h>
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <sys/mman.h>
+#endif
 #include <sys/queue.h>
 #include <unistd.h>
 
@@ -23,11 +26,8 @@
 #include <rte_random.h>
 #include <rte_string_fns.h>
 
-#include "test.h"
-
 #define N 10000
 
-
 static int
 is_mem_on_socket(int32_t socket);
 
@@ -47,8 +47,8 @@ addr_to_socket(void *addr);
 static int
 is_memory_overlap(void *p1, size_t len1, void *p2, size_t len2)
 {
-	unsigned long ptr1 = (unsigned long)p1;
-	unsigned long ptr2 = (unsigned long)p2;
+	uintptr_t ptr1 = (uintptr_t)p1;
+	uintptr_t ptr2 = (uintptr_t)p2;
 
 	if (ptr2 >= ptr1 && (ptr2 - ptr1) < len1)
 		return 1;
@@ -60,7 +60,7 @@ is_memory_overlap(void *p1, size_t len1, void *p2, size_t len2)
 static int
 is_aligned(void *p, int align)
 {
-	unsigned long addr = (unsigned long)p;
+	uintptr_t addr = (uintptr_t)p;
 	unsigned mask = align - 1;
 
 	if (addr & mask)
@@ -373,6 +373,13 @@ test_multi_alloc_statistics(void)
 	return 0;
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_realloc(void)
+{
+	return TEST_SKIPPED;
+}
+#else
 static int
 test_realloc_socket(int socket)
 {
@@ -670,6 +677,7 @@ test_realloc(void)
 end:
 	return ret;
 }
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 
 static int
 test_random_alloc_free(void *_ __rte_unused)
app/test/test_mbuf.c +13 -2
index f54d1d7c00..662b988480 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <string.h>
 #include <stdarg.h>
@@ -33,8 +34,6 @@
 #include <rte_tcp.h>
 #include <rte_mbuf_dyn.h>
 
-#include "test.h"
-
 #define MEMPOOL_CACHE_SIZE      32
 #define MBUF_DATA_SIZE          2048
 #define NB_MBUF                 128
@@ -1172,6 +1171,16 @@ test_refcnt_mbuf(void)
 #endif
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+
+static int
+test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
+{
+	RTE_SET_USED(pktmbuf_pool);
+	return TEST_SKIPPED;
+}
+#else
+
 #include <unistd.h>
 #include <sys/resource.h>
 #include <sys/time.h>
@@ -1267,6 +1276,8 @@ test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
 	return 0;
 }
 
+#endif /*!defined RTE_EXEC_ENV_WINDOWS*/
+
 static int
 test_mbuf_linearize(struct rte_mempool *pktmbuf_pool, int pkt_len,
 		    int nb_segs)
app/test/test_member.c +14 -2
index 40aa4c8627..85f3a126b9 100644
@@ -3,17 +3,27 @@
  */
 
 /* This test is for membership library's simple feature test */
+#include "test.h"
 
 #include <rte_memcpy.h>
 #include <rte_malloc.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_member(void)
+{
+	printf("member not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_member.h>
 #include <rte_byteorder.h>
 #include <rte_random.h>
 #include <rte_debug.h>
 #include <rte_ip.h>
 
-#include "test.h"
-
 struct rte_member_setsum *setsum_ht;
 struct rte_member_setsum *setsum_cache;
 struct rte_member_setsum *setsum_vbf;
@@ -712,4 +722,6 @@ test_member(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(member_autotest, test_member);
app/test/test_member_perf.c +14 -2
index e2840f12d3..1cc9c3e4d8 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2017 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <inttypes.h>
@@ -11,9 +12,18 @@
 #include <rte_random.h>
 #include <rte_memcpy.h>
 #include <rte_thash.h>
-#include <rte_member.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_member_perf(void)
+{
+	printf("member_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_member.h>
 
 #define NUM_KEYSIZES 10
 #define NUM_SHUFFLES 10
@@ -622,4 +632,6 @@ test_member_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(member_perf_autotest, test_member_perf);
app/test/test_memcpy_perf.c +0 -1
index 3727c160e6..9147c0aec6 100644
@@ -13,7 +13,6 @@
 #include <rte_os_shim.h>
 #include <rte_random.h>
 #include <rte_malloc.h>
-
 #include <rte_memcpy.h>
 
 #include "test.h"
app/test/test_mp_secondary.c +12 -0
index 021ca0547f..54b0f72645 100644
@@ -14,6 +14,16 @@
 #include <errno.h>
 #include <string.h>
 #include <unistd.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_mp_secondary(void)
+{
+	printf("mp_secondary not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <sys/wait.h>
 #include <libgen.h>
 #include <dirent.h>
@@ -211,4 +221,6 @@ test_mp_secondary(void)
 	return run_object_creation_tests();
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(multiprocess_autotest, test_mp_secondary);
app/test/test_pie.c +28 -2
index 632d4b014d..edd1aa3d86 100644
@@ -2,6 +2,32 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_pie(void)
+{
+	printf("pie not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_pie_perf(void)
+{
+	printf("pie_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_pie_all(void)
+{
+	printf("pie_all not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -12,8 +38,6 @@
 #include <time.h>
 #include <math.h>
 
-#include "test.h"
-
 #include <rte_pie.h>
 
 #ifdef __INTEL_COMPILER
@@ -1060,6 +1084,8 @@ test_pie_all(void)
 	return tell_the_result(num_tests, num_pass);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(pie_autotest, test_pie);
 REGISTER_TEST_COMMAND(pie_perf, test_pie_perf);
 REGISTER_TEST_COMMAND(pie_all, test_pie_all);
app/test/test_rawdev.c +15 -2
index 081fab969b..561b0e0300 100644
@@ -1,16 +1,27 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright 2017 NXP
  */
+#include "test.h"
+
 #include <rte_common.h>
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
 #include <rte_dev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rawdev_selftests(void)
+{
+	printf("rawdev not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_rawdev.h>
 #include <rte_bus_vdev.h>
 
-#include "test.h"
-
 static int
 test_rawdev_selftest_impl(const char *pmd, const char *opts)
 {
@@ -54,4 +65,6 @@ test_rawdev_selftests(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rawdev_autotest, test_rawdev_selftests);
app/test/test_rcu_qsbr_perf.c +12 -0
index cf7b158d22..9209fb2658 100644
@@ -15,6 +15,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rcu_qsbr_main(void)
+{
+	printf("rcu_qsbr_main not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 /* Check condition and return an error if true. */
 static uint16_t enabled_core_ids[RTE_MAX_LCORE];
 static unsigned int num_cores;
@@ -687,4 +697,6 @@ test_rcu_qsbr_main(void)
 	return -1;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rcu_qsbr_perf_autotest, test_rcu_qsbr_main);
app/test/test_red.c +27 -2
index 05936cfee8..524f9c9b6d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -8,12 +9,34 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <inttypes.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_red(void)
+{
+	printf("red not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_red_perf(void)
+{
+	printf("red_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_red_all(void)
+{
+	printf("red_all not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #include <sys/time.h>
 #include <time.h>
 #include <math.h>
 
-#include "test.h"
-
 #include <rte_red.h>
 
 #ifdef __INTEL_COMPILER
@@ -1851,6 +1874,8 @@ test_red_all(void)
 	return tell_the_result(num_tests, num_pass);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(red_autotest, test_red);
 REGISTER_TEST_COMMAND(red_perf, test_red_perf);
 REGISTER_TEST_COMMAND(red_all, test_red_all);
app/test/test_reorder.c +13 -2
index 1c4226da65..c73cbdefe6 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <unistd.h>
@@ -9,12 +10,20 @@
 #include <rte_cycles.h>
 #include <rte_errno.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_reorder(void)
+{
+	printf("reorder not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #include <rte_reorder.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 
-#include "test.h"
-
 #define BURST 32
 #define REORDER_BUFFER_SIZE 16384
 #define NUM_MBUFS (2*REORDER_BUFFER_SIZE)
@@ -390,4 +399,6 @@ test_reorder(void)
 	return unit_test_suite_runner(&reorder_test_suite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(reorder_autotest, test_reorder);
app/test/test_rib.c +20 -2
index 3dc48fe1f2..ad7c79ca78 100644
@@ -2,15 +2,31 @@
  * Copyright(c) 2018 Vladimir Medvedkin <[email protected]>
  * Copyright(c) 2019 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 
 #include <rte_ip.h>
-#include <rte_rib.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rib(void)
+{
+	printf("rib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_rib(void)
+{
+	printf("slow_rib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
+#include <rte_rib.h>
 
 typedef int32_t (*rte_rib_test)(void);
 
@@ -363,5 +379,7 @@ test_slow_rib(void)
 	return unit_test_suite_runner(&rib_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rib_autotest, test_rib);
 REGISTER_TEST_COMMAND(rib_slow_autotest, test_slow_rib);
app/test/test_rib6.c +20 -2
index c77df11298..9d0e3cb55e 100644
@@ -3,14 +3,31 @@
  * Copyright(c) 2019 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 
 #include <rte_ip.h>
-#include <rte_rib6.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rib6(void)
+{
+	printf("rib6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_rib6(void)
+{
+	printf("slow_rib6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
+#include <rte_rib6.h>
 
 typedef int32_t (*rte_rib6_test)(void);
 
@@ -368,5 +385,6 @@ test_slow_rib6(void)
 	return unit_test_suite_runner(&rib6_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 REGISTER_TEST_COMMAND(rib6_autotest, test_rib6);
 REGISTER_TEST_COMMAND(rib6_slow_autotest, test_slow_rib6);
app/test/test_sched.c +13 -1
index 958b631144..ad3e978ea6 100644
@@ -14,8 +14,18 @@
 #include <rte_ether.h>
 #include <rte_ip.h>
 #include <rte_byteorder.h>
-#include <rte_sched.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_sched(void)
+{
+	printf("sched not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_sched.h>
 
 #define SUBPORT         0
 #define PIPE            1
@@ -204,4 +214,6 @@ test_sched(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(sched_autotest, test_sched);
app/test/test_security.c +3 -1
index 060cf1ffa8..6c1d8602d2 100644
@@ -1,12 +1,14 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
  */
+#include "test.h"
 
 #include <rte_errno.h>
 #include <rte_log.h>
 #include <rte_memory.h>
 #include <rte_mempool.h>
 #include <rte_ether.h>
+
 #include <rte_security.h>
 #include <rte_security_driver.h>
 
@@ -20,7 +22,7 @@
 #endif
 
 #include <rte_test.h>
-#include "test.h"
+
 
 /**
  * Security
app/test/test_table.c +13 -0
index 95034148cb..2e18e49ba4 100644
@@ -7,6 +7,17 @@
 #include <rte_string_fns.h>
 #include <string.h>
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_table(void)
+{
+	printf("table not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include "test_table.h"
 #include "test_table_pipeline.h"
 #include "test_table_ports.h"
@@ -194,4 +205,6 @@ test_table(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(table_autotest, test_table);
app/test/test_table_acl.c +3 -0
index 0bdf76ab70..83bef0ea57 100644
@@ -2,6 +2,7 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <rte_ip.h>
 #include <rte_string_fns.h>
 #include <rte_hexdump.h>
@@ -728,3 +729,5 @@ test_table_acl(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_combined.c +4 -0
index f72b634bff..0abc5e45c5 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2016 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include "test_table_combined.h"
 #include "test_table.h"
@@ -840,3 +842,5 @@ test_table_hash_cuckoo_combined(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_pipeline.c +4 -0
index aabf4375db..45dc7682d8 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include <rte_pipeline.h>
 #include <rte_log.h>
@@ -569,3 +571,5 @@ test_table_pipeline(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_ports.c +4 -0
index d921b2e207..f3b5693609 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include "test_table_ports.h"
 #include "test_table.h"
 
@@ -189,3 +191,5 @@ test_port_ring_writer(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_tables.c +4 -0
index 4ff6ab16aa..2901490e61 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2016 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include <rte_byteorder.h>
 #include <rte_table_lpm_ipv6.h>
@@ -1052,3 +1054,5 @@ test_table_hash_cuckoo(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_timer_secondary.c +13 -0
index 5795c97f07..234a7ec425 100644
@@ -15,6 +15,17 @@
 #include <rte_random.h>
 
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_timer_secondary(void)
+{
+	printf("timer_secondary not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include "process.h"
 
 #define NUM_TIMERS		(1 << 20) /* ~1M timers */
@@ -212,4 +223,6 @@ test_timer_secondary(void)
 	return TEST_FAILED;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(timer_secondary_autotest, test_timer_secondary);
app/test/test_trace.c +28 -4
index 0f9df83c40..e62f9ca10e 100644
@@ -9,6 +9,30 @@
 #include "test.h"
 #include "test_trace.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_trace(void)
+{
+	printf("trace not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_trace_dump(void)
+{
+	printf("trace_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_trace_metadata_dump(void)
+{
+	printf("trace_metadata_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 static int32_t
 test_trace_point_globbing(void)
 {
@@ -194,8 +218,6 @@ test_trace(void)
 	return unit_test_suite_runner(&trace_tests);
 }
 
-REGISTER_TEST_COMMAND(trace_autotest, test_trace);
-
 static int
 test_trace_dump(void)
 {
@@ -203,12 +225,14 @@ test_trace_dump(void)
 	return 0;
 }
 
-REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
-
 static int
 test_trace_metadata_dump(void)
 {
 	return rte_trace_metadata_dump(stdout);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
+REGISTER_TEST_COMMAND(trace_autotest, test_trace);
+REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
 REGISTER_TEST_COMMAND(trace_metadata_dump, test_trace_metadata_dump);
Signature · 1 line
2.31.0.vfs.0.1
author
#223 lore raw

PATCH v14 10/11 app/test: replace .sh script with .py script

In reply to Jie Zhou

- Add python script to check if system supports hugepages
- Remove corresponding .sh script
- Replace calling of .sh with corresponding .py in meson.build

---
 app/test/has-hugepage.sh | 11 -----------
 app/test/has_hugepage.py | 26 ++++++++++++++++++++++++++
 app/test/meson.build     |  2 +-
 3 files changed, 27 insertions(+), 12 deletions(-)
 delete mode 100755 app/test/has-hugepage.sh
 create mode 100644 app/test/has_hugepage.py
app/test/has-hugepage.sh deleted +0 -11
deleted file mode 100755
index d600fad319..0000000000
@@ -1,11 +0,0 @@
-#! /bin/sh
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright 2020 Mellanox Technologies, Ltd
-
-if [ "$(uname)" = "Linux" ] ; then
-	cat /proc/sys/vm/nr_hugepages || echo 0
-elif [ "$(uname)" = "FreeBSD" ] ; then
-	echo 1 # assume FreeBSD always has hugepages
-else
-	echo 0
-fi
app/test/has_hugepage.py new file +26 -0
new file mode 100644
index 0000000000..f8e7087d1c
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2021 Microsoft Corporation
+"""This script checks if the system supports huge pages"""
+
+import platform
+import ctypes
+
+os_name = platform.system()
+if os_name == "Linux":
+    try:
+        with open("/proc/sys/vm/nr_hugepages") as file_o:
+            content = file_o.read()
+            print(content)
+    except:
+            print("0")
+
+elif os_name == "FreeBSD":
+    # Assume FreeBSD always has hugepages enabled
+    print("1")
+elif os_name == "Windows":
+    if ctypes.windll.kernel32.GetLargePageMinimum() > 0:
+        print("1")
+    else:
+        print("0")
+else:
+    print("0")
app/test/meson.build +1 -1
index 2b480adfba..97ee83029e 100644
@@ -492,7 +492,7 @@ dpdk_test = executable('dpdk-test',
              driver_install_path),
         install: true)
 
-has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
+has_hugepage = run_command(py3, 'has_hugepage.py').stdout().strip() != '0'
 message('hugepage availability: @0@'.format(has_hugepage))
 
 # some perf tests (eg: memcpy perf autotest)take very long
Signature · 1 line
2.31.0.vfs.0.1
author
#224 lore raw

PATCH v14 11/11 app/test: enable unit test on Windows

In reply to Jie Zhou

Enable a subset of unit tests for Windows CI

- For driver tests, driver owners should enable corresponding tests when enabling driver for Windows. For example, the cryptodev tests will be enabled by "patch-18949: app/test: enable crypto unit tests on Windows" (which depends on this patchset to be merged).
- For dump tests, currently the tests hang on Windows which require further investigation.
- For telemetry tests, it has POSIX socket specific codes which require replacement for Windows. Will investigate and work on a separate patch.

---
 app/test/meson.build | 111 ++++++++++++++++++++++---------------------
 1 file changed, 58 insertions(+), 53 deletions(-)
app/test/meson.build +58 -53
index 97ee83029e..fcf38729e7 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 if not get_option('tests')
     subdir_done()
 endif
@@ -158,32 +152,14 @@ test_sources = files(
 )
 
 test_deps = [
-        'acl',
         'bus_pci',
         'bus_vdev',
-        'bpf',
         'cfgfile',
         'cmdline',
-        'cryptodev',
-        'distributor',
         'dmadev',
-        'efd',
         'ethdev',
-        'eventdev',
-        'fib',
-        'flow_classify',
-        'graph',
         'hash',
-        'ipsec',
-        'lpm',
-        'member',
-        'node',
-        'pipeline',
-        'port',
-        'rawdev',
         'rcu',
-        'reorder',
-        'rib',
         'ring',
         'security',
         'stack',
@@ -334,39 +310,68 @@ perf_test_names = [
 ]
 
 driver_test_names = [
-        'cryptodev_aesni_mb_autotest',
-        'cryptodev_aesni_gcm_autotest',
-        'cryptodev_cn9k_autotest',
-        'cryptodev_cn10k_autotest',
-        'cryptodev_dpaa_sec_autotest',
-        'cryptodev_dpaa2_sec_autotest',
-        'cryptodev_null_autotest',
-        'cryptodev_octeontx2_autotest',
-        'cryptodev_openssl_autotest',
-        'cryptodev_openssl_asym_autotest',
-        'cryptodev_qat_autotest',
-        'cryptodev_sw_armv8_autotest',
-        'cryptodev_sw_kasumi_autotest',
-        'cryptodev_sw_mvsam_autotest',
-        'cryptodev_sw_snow3g_autotest',
-        'cryptodev_sw_zuc_autotest',
-        'dmadev_autotest',
-        'eventdev_selftest_octeontx',
-        'eventdev_selftest_sw',
-        'rawdev_autotest',
 ]
 
 dump_test_names = [
-        'dump_struct_sizes',
-        'dump_mempool',
-        'dump_malloc_stats',
-        'dump_devargs',
-        'dump_log_types',
-        'dump_ring',
-        'dump_physmem',
-        'dump_memzone',
 ]
 
+if not is_windows
+    test_deps += [
+            'acl',
+            'bpf',
+            'cryptodev',
+            'distributor',
+            'efd',
+            'eventdev',
+            'fib',
+            'flow_classify',
+            'graph',
+            'ipsec',
+            'lpm',
+            'member',
+            'node',
+            'pipeline',
+            'port',
+            'rawdev',
+            'reorder',
+            'rib',
+    ]
+
+    driver_test_names += [
+            'cryptodev_aesni_mb_autotest',
+            'cryptodev_aesni_gcm_autotest',
+            'cryptodev_cn9k_autotest',
+            'cryptodev_cn10k_autotest',
+            'cryptodev_dpaa_sec_autotest',
+            'cryptodev_dpaa2_sec_autotest',
+            'cryptodev_null_autotest',
+            'cryptodev_octeontx2_autotest',
+            'cryptodev_openssl_autotest',
+            'cryptodev_openssl_asym_autotest',
+            'cryptodev_qat_autotest',
+            'cryptodev_sw_armv8_autotest',
+            'cryptodev_sw_kasumi_autotest',
+            'cryptodev_sw_mvsam_autotest',
+            'cryptodev_sw_snow3g_autotest',
+            'cryptodev_sw_zuc_autotest',
+            'dmadev_autotest',
+            'eventdev_selftest_octeontx',
+            'eventdev_selftest_sw',
+            'rawdev_autotest',
+    ]
+
+    dump_test_names += [
+            'dump_struct_sizes',
+            'dump_mempool',
+            'dump_malloc_stats',
+            'dump_devargs',
+            'dump_log_types',
+            'dump_ring',
+            'dump_physmem',
+            'dump_memzone',
+    ]
+endif
+
 # The following linkages are an exception to allow running the
 # unit tests without requiring that the developer install the
 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
@@ -385,7 +390,7 @@ if dpdk_conf.has('RTE_LIB_METRICS')
     test_sources += ['test_metrics.c']
     fast_tests += [['metrics_autotest', true]]
 endif
-if dpdk_conf.has('RTE_LIB_TELEMETRY')
+if not is_windows and dpdk_conf.has('RTE_LIB_TELEMETRY')
     test_sources += ['test_telemetry_json.c', 'test_telemetry_data.c']
     fast_tests += [['telemetry_json_autotest', true], ['telemetry_data_autotest', true]]
 endif
Signature · 1 line
2.31.0.vfs.0.1
Acked-by on the v14 series
#225 lore raw
In reply to Jie Zhou
Quoted 97 lines · Jie Zhou

The goal of this patchset is to enable unit tests in CI for Windows. It mainly contains:
- Replace POSIX specific codes
- Fix some lib and tests per failures investigation
- Add test stubs for not yet supported ones on Windows
- Replace .sh script with .py script for meson.build
- Enable build and run subset of unit tests on Windows

Future work:
- Work with CI lab to onboard unit tests for Windows to catch regression
- Investigate issues hit at CI onboarding
- Enable more tests

---
V2 changes:
- Fix compilation error on FreeBSD
- Fix email mismatch issue
- Add a missing space around "*"

---
V3 changes:
- Fix a misc c coding style issue
- Revise some commit title and message body
- Fix violations of PEP8 in new added Python scripts
- Add error handling in get_coremask.py
- Fix has_hugepage.py to check system support of hugepages instead of checking privileges
- Fix test meson.build to run Python scripts using py3
- Consolidate lists of source files, test dep, etc. across all platforms, with conditional extending on some platform(s)

---
V4 changes:
- Remove building of ip_frag, rib, and reorder libraries on Windows. These three libs usually can be built on Windows without change. However, in between the time of V3 and V4, there is regression in upstream caused build failures of these three libs. Will separately investigate and enable these libraries.

- Remove previous patch#2 (Enable mempool/stack on Windows) from this patchset as it was separated out and merged as patch-19314.

- Consolidate the source files, deps, tests lists across platforms as much as possible.

---
V5 changes:
- Remove a space between function name and open parenthesis '('
- Add back a header mistakenly deleted

---
V6 changes:
- Fix inconsistent static vs. non-static declarations

---
V7 changes:
- Remove get_coremask.py as it is not needed any more in meson.build
- Remove enablement of efd and lpm and their corresponding unit tests. The enablement of these two libs and their UTs will be in separate patches after this patch set.

V8 changes:
- Fix coding style issue of using C99 // comments

---
V9 changes:
- Fix has_hugepage.py with adding failure handling on Linux, using proper variable name to follow Python convention, and removing unnecessary comment.
- Enable previously skipped test_cmdline_socket_fns test cases
- Revise title and message, and add Fixes info for current Patch#3
- Combine 2 patches (previous #2 and #3 in V8) into one and with more detailed message

---
V10 changes:
- Fix indentation

---
V11 changes:
- Remove mandatory dependency on bitratestats, latencystats, and metrics libs in test meson.build, which was reintroduced at rebase in V9.

---
V12 changes:
- Remove unnecessary print of a null string
- Enable several previous disabled tests
- Split Patch#9 in V11 into two patches for better structure
- Reorder some of the patches for better structure
- Document more details in commit message for issue tracking

---
V13 changes:
- Fix misc coding style issue
- Fix build issue on Ubuntu 18.04

Quoted 6 lines

---
V14 changes:
- Explain the reason of skipping telemetry tests in commit log

the set looks good to me, let's get it in and if we need to make further changes we can. integration of the set is blocking porting of other tests.

author
#226 lore raw

v15 cover app/test: enable subset of tests on Windows

In reply to Jie Zhou

The goal of this patchset is to enable unit tests in CI for Windows. It mainly contains:
- Replace POSIX specific codes
- Fix some lib and tests per failures investigation
- Add test stubs for not yet supported ones on Windows
- Replace .sh script with .py script for meson.build
- Enable build and run subset of unit tests on Windows

Future work:
- Work with CI lab to onboard unit tests for Windows to catch regression
- Investigate issues hit at CI onboarding
- Enable more tests

---
V2 changes:
- Fix compilation error on FreeBSD
- Fix email mismatch issue
- Add a missing space around "*"

---
V3 changes:
- Fix a misc c coding style issue
- Revise some commit title and message body
- Fix violations of PEP8 in new added Python scripts
- Add error handling in get_coremask.py
- Fix has_hugepage.py to check system support of hugepages instead of checking privileges
- Fix test meson.build to run Python scripts using py3
- Consolidate lists of source files, test dep, etc. across all platforms, with conditional extending on some platform(s)

---
V4 changes:
- Remove building of ip_frag, rib, and reorder libraries on Windows. These three libs usually can be built on Windows without change. However, in between the time of V3 and V4, there is regression in upstream caused build failures of these three libs. Will separately investigate and enable these libraries.

- Remove previous patch#2 (Enable mempool/stack on Windows) from this patchset as it was separated out and merged as patch-19314.

- Consolidate the source files, deps, tests lists across platforms as much as possible.

---
V5 changes:
- Remove a space between function name and open parenthesis '('
- Add back a header mistakenly deleted

---
V6 changes:
- Fix inconsistent static vs. non-static declarations

---
V7 changes:
- Remove get_coremask.py as it is not needed any more in meson.build
- Remove enablement of efd and lpm and their corresponding unit tests. The enablement of these two libs and their UTs will be in separate patches after this patch set.

---
V8 changes:
- Fix coding style issue of using C99 // comments

---
V9 changes:
- Fix has_hugepage.py with adding failure handling on Linux, using proper variable name to follow Python convention, and removing unnecessary comment.
- Enable previously skipped test_cmdline_socket_fns test cases
- Revise title and message, and add Fixes info for current Patch#3
- Combine 2 patches (previous #2 and #3 in V8) into one and with more detailed message

---
V10 changes:
- Fix indentation

---
V11 changes:
- Remove mandatory dependency on bitratestats, latencystats, and metrics libs in test meson.build, which was reintroduced at rebase in V9.

---
V12 changes:
- Remove unnecessary print of a null string
- Enable several previous disabled tests
- Split Patch#9 in V11 into two patches for better structure
- Reorder some of the patches for better structure
- Document more details in commit message for issue tracking

---
V13 changes:
- Fix misc coding style issue
- Fix build issue on Ubuntu 18.04

---
V14 changes:
- Explain the reason of skipping telemetry tests in commit log

---
V15 changes:
- Resolve rebase conflicts
- Leverage the new mechanism introduced by cadb255e25d6 ("eal: add OS defines for C conditional checks"), which uses regular if statement to skip tests on Windows, to avoid using #ifdef conditional compilation directive as much as possible. This part of change is mainly in Patch#4 and Patch#9.

Note: for the tests skipped in Patch#9, majority still use #ifdef conditional compilation directive. The reason is that those tests depend on libraries not supported on Windows yet, thus no corresponding header files, and undefined APIs used in test helper functions. Just adding the regular if statement in the test main function is not sufficient.

Jie Zhou (11):
eal/windows: return ENOTSUP for not supported API app/test: remove POSIX-specific code app/test: fix incorrect errno variable app/test: skip interrupt tests on Windows app/test: skip two logs_autotest cases on Windows app/test: differentiate a strerror on different OS app/test: remove two alarm_autotest cases app/test: resolve name collision
app/test: skip tests that are not supported yet app/test: replace .sh script with .py script app/test: enable unit test on Windows

 app/test/commands.c                      |  2 -
 app/test/has-hugepage.sh                 | 11 ---
 app/test/has_hugepage.py                 | 26 +++++++
 app/test/meson.build                     | 78 ++++++++++----------
 app/test/packet_burst_generator.c        |  1 +
 app/test/process.h                       |  4 +-
 app/test/test.c                          |  5 +-
 app/test/test_acl.c                      | 12 ++++
 app/test/test_alarm.c                    |  4 ++
 app/test/test_bpf.c                      | 15 +++-
 app/test/test_byteorder.c                |  2 +-
 app/test/test_cmdline_ipaddr.c           | 13 ++--
 app/test/test_cmdline_lib.c              | 13 ++--
 app/test/test_crc.c                      |  1 -
 app/test/test_cryptodev.c                |  4 ++
 app/test/test_cryptodev_asym.c           |  4 ++
 app/test/test_cryptodev_blockcipher.c    |  4 ++
 app/test/test_cryptodev_security_ipsec.c |  4 ++
 app/test/test_cryptodev_security_pdcp.c  |  4 ++
 app/test/test_debug.c                    | 17 ++++-
 app/test/test_distributor.c              | 13 ++++
 app/test/test_distributor_perf.c         | 13 ++++
 app/test/test_eal_flags.c                | 90 ++++++++++++++++++++++++
 app/test/test_eal_fs.c                   | 12 ++++
 app/test/test_efd.c                      | 15 +++-
 app/test/test_efd_perf.c                 | 16 ++++-
 app/test/test_errno.c                    | 12 +++-
 app/test/test_event_crypto_adapter.c     | 15 +++-
 app/test/test_event_eth_rx_adapter.c     | 25 ++++++-
 app/test/test_event_eth_tx_adapter.c     | 12 ++++
 app/test/test_event_ring.c               | 16 ++++-
 app/test/test_event_timer_adapter.c      | 16 ++++-
 app/test/test_eventdev.c                 | 20 +++++-
 app/test/test_external_mem.c             | 18 ++++-
 app/test/test_fib.c                      | 22 +++++-
 app/test/test_fib6.c                     | 24 ++++++-
 app/test/test_fib6_perf.c                | 16 ++++-
 app/test/test_fib_perf.c                 | 15 +++-
 app/test/test_flow_classify.c            | 13 ++++
 app/test/test_func_reentrancy.c          |  3 +
 app/test/test_graph.c                    | 18 ++++-
 app/test/test_graph_perf.c               | 16 ++++-
 app/test/test_hash_perf.c                | 20 +++---
 app/test/test_interrupts.c               |  3 +
 app/test/test_ipfrag.c                   | 16 ++++-
 app/test/test_ipsec.c                    | 16 ++++-
 app/test/test_ipsec_perf.c               | 15 +++-
 app/test/test_ipsec_sad.c                | 14 +++-
 app/test/test_kni.c                      | 10 +--
 app/test/test_lcores.c                   | 33 +++++----
 app/test/test_logs.c                     |  6 +-
 app/test/test_lpm.c                      | 14 +++-
 app/test/test_lpm6.c                     | 14 +++-
 app/test/test_lpm6_perf.c                | 14 +++-
 app/test/test_lpm_perf.c                 | 13 +++-
 app/test/test_malloc.c                   | 20 ++++--
 app/test/test_mbuf.c                     | 15 +++-
 app/test/test_member.c                   | 16 ++++-
 app/test/test_member_perf.c              | 16 ++++-
 app/test/test_memcpy_perf.c              | 30 ++++----
 app/test/test_memory.c                   |  2 +-
 app/test/test_mp_secondary.c             | 12 ++++
 app/test/test_pie.c                      | 30 +++++++-
 app/test/test_pmd_perf.c                 |  6 +-
 app/test/test_rawdev.c                   | 17 ++++-
 app/test/test_rcu_qsbr_perf.c            |  3 +
 app/test/test_red.c                      | 29 +++++++-
 app/test/test_reorder.c                  | 15 +++-
 app/test/test_rib.c                      | 22 +++++-
 app/test/test_rib6.c                     | 22 +++++-
 app/test/test_ring_stress_impl.h         |  2 +-
 app/test/test_sched.c                    | 14 +++-
 app/test/test_security.c                 |  2 +-
 app/test/test_table.c                    | 13 ++++
 app/test/test_table_acl.c                |  3 +
 app/test/test_table_combined.c           |  4 ++
 app/test/test_table_pipeline.c           |  4 ++
 app/test/test_table_ports.c              |  4 ++
 app/test/test_table_tables.c             |  4 ++
 app/test/test_telemetry_data.c           |  2 +
 app/test/test_timer_secondary.c          | 13 ++++
 app/test/test_trace.c                    | 32 +++++++--
 lib/eal/common/eal_common_errno.c        |  4 ++
 lib/eal/windows/eal_memalloc.c           |  6 +-
 84 files changed, 1009 insertions(+), 185 deletions(-)
 delete mode 100755 app/test/has-hugepage.sh
 create mode 100644 app/test/has_hugepage.py
Signature · 1 line
2.34.1.windows.1
author
#227 lore raw

PATCH v15 1/11 eal/windows: return ENOTSUP for not supported API

UT memory_autotest on Windows has 2 failed cases on eal APIs eal_memalloc_get_seg_fd and eal_memalloc_get_seg_fd_offset. These 2 APIs are not supported on Windows yet. Should return ENOTSUP such that in test_memory.c these 2 ENOTSUP cases will not be marked as failures, same as other ENOTSUP cases.

---
 lib/eal/windows/eal_memalloc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
lib/eal/windows/eal_memalloc.c +3 -3
index 55d6dcc71c..aa7589b81d 100644
@@ -17,7 +17,7 @@ eal_memalloc_get_seg_fd(int list_idx, int seg_idx)
 	RTE_SET_USED(list_idx);
 	RTE_SET_USED(seg_idx);
 	EAL_LOG_NOT_IMPLEMENTED();
-	return -1;
+	return -ENOTSUP;
 }
 
 int
@@ -28,7 +28,7 @@ eal_memalloc_get_seg_fd_offset(int list_idx, int seg_idx, size_t *offset)
 	RTE_SET_USED(seg_idx);
 	RTE_SET_USED(offset);
 	EAL_LOG_NOT_IMPLEMENTED();
-	return -1;
+	return -ENOTSUP;
 }
 
 static int
@@ -428,7 +428,7 @@ eal_memalloc_sync_with_primary(void)
 {
 	/* No multi-process support. */
 	EAL_LOG_NOT_IMPLEMENTED();
-	return -1;
+	return -ENOTSUP;
 }
 
 int
Signature · 1 line
2.34.1.windows.1
author
#228 lore raw

PATCH v15 2/11 app/test: remove POSIX-specific code

In reply to Jie Zhou

- Replace POSIX-specific code with DPDK equivalents or conditionally disable it on Windows
- Use NUL on Windows as /dev/null for Unix
- Exclude tests not supported on Windows yet
* multi-process
* PMD performance statistics display on signal

---
 app/test/commands.c               |  2 --
 app/test/packet_burst_generator.c |  1 +
 app/test/process.h                |  4 +++-
 app/test/test.c                   |  5 ++++-
 app/test/test_byteorder.c         |  2 +-
 app/test/test_cmdline_ipaddr.c    | 13 ++++++-------
 app/test/test_cmdline_lib.c       | 13 +++++++++----
 app/test/test_crc.c               |  1 -
 app/test/test_memcpy_perf.c       | 29 +++++++++++++++--------------
 app/test/test_pmd_perf.c          |  6 +++++-
 app/test/test_ring_stress_impl.h  |  2 +-
 app/test/test_telemetry_data.c    |  2 ++
 12 files changed, 47 insertions(+), 33 deletions(-)
app/test/commands.c +0 -2
index 2dced3bc44..887cabad64 100644
@@ -8,8 +8,6 @@
 #include <stdint.h>
 #include <string.h>
 #include <stdlib.h>
-#include <netinet/in.h>
-#include <termios.h>
 #include <inttypes.h>
 #include <errno.h>
 #include <sys/queue.h>
app/test/packet_burst_generator.c +1 -0
index 8ac24577ba..6b42b9b83b 100644
@@ -5,6 +5,7 @@
 #include <rte_byteorder.h>
 #include <rte_mbuf.h>
 #include <rte_ip.h>
+#include <rte_os_shim.h>
 
 #include "packet_burst_generator.h"
 
app/test/process.h +3 -1
index 5b10cf64df..1f073b9c5c 100644
@@ -7,12 +7,14 @@
 
 #include <errno.h>  /* errno */
 #include <limits.h> /* PATH_MAX */
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <libgen.h> /* basename et al */
+#include <sys/wait.h>
+#endif
 #include <stdlib.h> /* NULL */
 #include <string.h> /* strerror */
 #include <unistd.h> /* readlink */
 #include <dirent.h>
-#include <sys/wait.h>
 
 #include <rte_string_fns.h> /* strlcpy */
 
app/test/test.c +4 -1
index 5194131026..e69cae3eea 100644
@@ -8,7 +8,6 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <errno.h>
-#include <termios.h>
 #include <ctype.h>
 #include <sys/queue.h>
 
@@ -63,7 +62,9 @@ do_recursive_call(void)
 		const char *env_var;
 		int (*action_fn)(void);
 	} actions[] =  {
+#ifndef RTE_EXEC_ENV_WINDOWS
 			{ "run_secondary_instances", test_mp_secondary },
+#endif
 #ifdef RTE_LIB_PDUMP
 #ifdef RTE_NET_RING
 			{ "run_pdump_server_tests", test_pdump },
@@ -82,7 +83,9 @@ do_recursive_call(void)
 			{ "test_file_prefix", no_action },
 			{ "test_no_huge_flag", no_action },
 #ifdef RTE_LIB_TIMER
+#ifndef RTE_EXEC_ENV_WINDOWS
 			{ "timer_secondary_spawn_wait", test_timer_secondary },
+#endif
 #endif
 	};
 
app/test/test_byteorder.c +1 -1
index 03c08d9abf..de14ed539e 100644
@@ -46,7 +46,7 @@ test_byteorder(void)
 		return -1;
 
 	res_u16 = rte_bswap16(0x1337);
-	printf("const %"PRIx16" -> %"PRIx16"\n", 0x1337, res_u16);
+	printf("const %"PRIx16" -> %"PRIx16"\n", (uint16_t)0x1337, res_u16);
 	if (res_u16 != 0x3713)
 		return -1;
 
app/test/test_cmdline_ipaddr.c +6 -7
index 2a1ee120fc..f540063508 100644
@@ -1,12 +1,9 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
-
 #include <stdio.h>
 #include <string.h>
 #include <inttypes.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
 
 #include <rte_string_fns.h>
 
@@ -15,7 +12,7 @@
 
 #include "test_cmdline.h"
 
-#define IP4(a,b,c,d) {((uint32_t)(((a) & 0xff)) | \
+#define IP4(a,b,c,d) {.s_addr = (uint32_t)(((a) & 0xff) | \
 					   (((b) & 0xff) << 8) | \
 					   (((c) & 0xff) << 16)  | \
 					   ((d) & 0xff)  << 24)}
@@ -25,7 +22,11 @@
 
 /* create IPv6 address, swapping bytes where needed */
 #ifndef s6_addr16
-# define s6_addr16      __u6_addr.__u6_addr16
+#ifdef RTE_EXEC_ENV_WINDOWS
+#define s6_addr16 u.Word
+#else
+#define s6_addr16 __u6_addr.__u6_addr16
+#endif
 #endif
 #define IP6(a,b,c,d,e,f,g,h) .ipv6 = \
 		{.s6_addr16 = \
@@ -166,8 +167,6 @@ const char * ipaddr_garbage_network6_strs[] = {
 };
 #define IPv6_GARBAGE_PREFIX 64
 
-
-
 const char * ipaddr_invalid_strs[] = {
 		/** IPv4 **/
 
app/test/test_cmdline_lib.c +9 -4
index f50ccdb599..fcd58cb76a 100644
@@ -8,7 +8,6 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <errno.h>
-#include <termios.h>
 #include <ctype.h>
 #include <sys/queue.h>
 
@@ -22,6 +21,12 @@
 
 #include "test_cmdline.h"
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+#define NULL_INPUT "/dev/null"
+#else
+#define NULL_INPUT "NUL"
+#endif
+
 /****************************************************************/
 /* static functions required for some tests */
 static void
@@ -156,10 +161,10 @@ test_cmdline_socket_fns(void)
 	cl = cmdline_stdin_new(&ctx, NULL);
 	if (cl != NULL)
 		goto error;
-	cl = cmdline_file_new(NULL, "prompt", "/dev/null");
+	cl = cmdline_file_new(NULL, "prompt", NULL_INPUT);
 	if (cl != NULL)
 		goto error;
-	cl = cmdline_file_new(&ctx, NULL, "/dev/null");
+	cl = cmdline_file_new(&ctx, NULL, NULL_INPUT);
 	if (cl != NULL)
 		goto error;
 	cl = cmdline_file_new(&ctx, "prompt", NULL);
@@ -171,7 +176,7 @@ test_cmdline_socket_fns(void)
 		cmdline_free(cl);
 		return -1;
 	}
-	cl = cmdline_file_new(&ctx, "prompt", "/dev/null");
+	cl = cmdline_file_new(&ctx, "prompt", NULL_INPUT);
 	if (cl == NULL) {
 		printf("Error: failed to open /dev/null for reading!");
 		return -1;
app/test/test_crc.c +0 -1
index bf1d344359..0ed080e482 100644
@@ -14,7 +14,6 @@
 #define CRC32_VEC_LEN2     348
 #define CRC16_VEC_LEN1     12
 #define CRC16_VEC_LEN2     2
-#define LINE_LEN           75
 
 /* CRC test vector */
 static const uint8_t crc_vec[CRC_VEC_LEN] = {
app/test/test_memcpy_perf.c +15 -14
index c711e36ba7..3727c160e6 100644
@@ -6,10 +6,11 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <sys/time.h>
+#include <time.h>
 
 #include <rte_common.h>
 #include <rte_cycles.h>
+#include <rte_os_shim.h>
 #include <rte_random.h>
 #include <rte_malloc.h>
 
@@ -271,7 +272,7 @@ static int
 perf_test(void)
 {
 	int ret;
-	struct timeval tv_begin, tv_end;
+	struct timespec tv_begin, tv_end;
 	double time_aligned, time_unaligned;
 	double time_aligned_const, time_unaligned_const;
 
@@ -298,32 +299,32 @@ perf_test(void)
 	printf("\n================================= %2dB aligned =================================",
 		ALIGNMENT_UNIT);
 	/* Do aligned tests where size is a variable */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_variable_aligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_aligned = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n------- ----------------- ----------------- ----------------- -----------------");
 	/* Do aligned tests where size is a compile-time constant */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_constant_aligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_aligned_const = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n================================== Unaligned ==================================");
 	/* Do unaligned tests where size is a variable */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_variable_unaligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_unaligned = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n------- ----------------- ----------------- ----------------- -----------------");
 	/* Do unaligned tests where size is a compile-time constant */
-	gettimeofday(&tv_begin, NULL);
+	timespec_get(&tv_begin, TIME_UTC);
 	perf_test_constant_unaligned();
-	gettimeofday(&tv_end, NULL);
+	timespec_get(&tv_end, TIME_UTC);
 	time_unaligned_const = (double)(tv_end.tv_sec - tv_begin.tv_sec)
-		+ ((double)tv_end.tv_usec - tv_begin.tv_usec)/1000000;
+		+ ((double)tv_end.tv_nsec - tv_begin.tv_nsec) / NS_PER_S;
 	printf("\n======= ================= ================= ================= =================\n\n");
 
 	printf("Test Execution Time (seconds):\n");
app/test/test_pmd_perf.c +5 -1
index 0aa9dc1b1c..25611bfe9b 100644
@@ -296,6 +296,7 @@ reset_count(void)
 	idle = 0;
 }
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 static void
 stats_display(uint16_t port_id)
 {
@@ -325,6 +326,7 @@ signal_handler(int signum)
 	if (signum == SIGUSR2)
 		stats_display(0);
 }
+#endif
 
 struct rte_mbuf **tx_burst;
 
@@ -638,7 +640,7 @@ exec_burst(uint32_t flags, int lcore)
 		i = (i >= conf->nb_ports - 1) ? 0 : (i + 1);
 	}
 
-	sleep(5);
+	rte_delay_us(5 * US_PER_S);
 
 	/* only when polling second  */
 	if (flags == SC_BURST_XMIT_FIRST)
@@ -669,8 +671,10 @@ test_pmd_perf(void)
 
 	printf("Start PMD RXTX cycles cost test.\n");
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	signal(SIGUSR1, signal_handler);
 	signal(SIGUSR2, signal_handler);
+#endif
 
 	nb_ports = rte_eth_dev_count_avail();
 	if (nb_ports < NB_ETHPORTS_USED) {
app/test/test_ring_stress_impl.h +1 -1
index 2825a9dce6..62f046a91a 100644
@@ -360,7 +360,7 @@ test_mt1(int (*test)(void *))
 	/* signal worker to start test */
 	__atomic_store_n(&wrk_cmd, WRK_CMD_RUN, __ATOMIC_RELEASE);
 
-	usleep(run_time * US_PER_S);
+	rte_delay_us(run_time * US_PER_S);
 
 	/* signal worker to start test */
 	__atomic_store_n(&wrk_cmd, WRK_CMD_STOP, __ATOMIC_RELEASE);
app/test/test_telemetry_data.c +2 -0
index 18b93db8ef..73eee293a1 100644
@@ -4,7 +4,9 @@
 
 #include <string.h>
 #include <sys/socket.h>
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <sys/un.h>
+#endif
 #include <unistd.h>
 #include <limits.h>
 
Signature · 1 line
2.34.1.windows.1
author
#229 lore raw

PATCH v15 3/11 app/test: fix incorrect errno variable

In reply to Jie Zhou

Fix incorrect errno variable used in memory autotest. Use rte_errno instead.

Fixes 086d426406bd ("app/test: fix memory autotests on FreeBSD")
---
 app/test/test_memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
app/test/test_memory.c +1 -1
index dbf6871e71..140ac3f3cf 100644
@@ -63,7 +63,7 @@ check_seg_fds(const struct rte_memseg_list *msl, const struct rte_memseg *ms,
 	/* we're able to get memseg fd - try getting its offset */
 	ret = rte_memseg_get_fd_offset_thread_unsafe(ms, &offset);
 	if (ret < 0) {
-		if (errno == ENOTSUP)
+		if (rte_errno == ENOTSUP)
 			return 1;
 		return -1;
 	}
Signature · 1 line
2.34.1.windows.1
author
#230 lore raw

PATCH v15 4/11 app/test: skip interrupt tests on Windows

In reply to Jie Zhou

Even though test_interrupts.c can compile on Windows, skip interrupt tests for now since majority of eal_interrupt on Windows are stubs. Will remove the skip after interrupt being fully enabled on Windows.

---
 app/test/test_interrupts.c | 3 +++
 1 file changed, 3 insertions(+)
app/test/test_interrupts.c +3 -0
index 2a05399f96..e47a786b36 100644
@@ -429,6 +429,9 @@ test_interrupt(void)
 	int ret = -1;
 	struct rte_intr_handle *test_intr_handle;
 
+	if (RTE_EXEC_ENV_IS_WINDOWS)
+	    return TEST_SKIPPED;
+
 	if (test_interrupt_init() < 0) {
 		printf("fail to initialize for testing interrupt\n");
 		goto out;
Signature · 1 line
2.34.1.windows.1
author
#231 lore raw

PATCH v15 5/11 app/test: skip two logs_autotest cases on Windows

In reply to Jie Zhou

DPDK logs_autotest on Windows failed at "dynamic log types" tests. The failures are on 2 test cases for rte_log_set_level_regexp API, due to regular expression is not supported on Windows in DPDK yet and regcomp/regexec are just stubs on Windows (in regex.h).

In app\test\test_logs.c, ifndef these two test cases, and for the rte_log_set_level_pattern validation case following these two cases, differentiate the expected log level passed into macro CHECK_LEVELS

Now logs_autotest completes for all dynamic log types and static log types.

---
 app/test/test_logs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
app/test/test_logs.c +5 -1
index 7abb6eeca2..7c001c1ab3 100644
@@ -113,6 +113,7 @@ test_logs(void)
 	rte_log_set_level(logtype1, RTE_LOG_ERR);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	rte_log_set_level_regexp("type$", RTE_LOG_EMERG);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
 
@@ -121,7 +122,10 @@ test_logs(void)
 
 	rte_log_set_level_pattern("logtype", RTE_LOG_DEBUG);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_EMERG, RTE_LOG_EMERG);
-
+#else
+	ret = rte_log_set_level_pattern("logtype", RTE_LOG_DEBUG);
+	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
+#endif
 	/* set logtype level low to so we can test global level */
 	rte_log_set_level_pattern("logtype*", RTE_LOG_DEBUG);
 	CHECK_LEVELS(RTE_LOG_DEBUG, RTE_LOG_DEBUG, RTE_LOG_DEBUG);
Signature · 1 line
2.34.1.windows.1
#232 lore raw

Re: [PATCH v15 05/11] app/test: skip two logs_autotest cases on Windows

26/01/2022 06:10, Jie Zhou:

app/test/test_logs.c test_logs(void) · line 128

Quoted 11 lines
app/test/test_logs.c +4 -1
@@ -121,7 +122,10 @@ test_logs(void)
 
 	rte_log_set_level_pattern("logtype", RTE_LOG_DEBUG);
 	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_EMERG, RTE_LOG_EMERG);
-
+#else
+	ret = rte_log_set_level_pattern("logtype", RTE_LOG_DEBUG);
+	CHECK_LEVELS(RTE_LOG_ERR, RTE_LOG_INFO, RTE_LOG_ERR);
+#endif

ret is not used, I'll remove it.

author
#233 lore raw

PATCH v15 6/11 app/test: differentiate a strerror on different OS

In reply to Jie Zhou

On Windows, strerror returns just "Unknown error" for errnum greater than MAX_ERRNO, while linux and freebsd returns "Unknown error <num>", which is the current expectation for errno_autotest. Differentiate the error string on Windows to remove a "duplicate error code" failure.

---
 app/test/test_errno.c             | 12 +++++++++++-
 lib/eal/common/eal_common_errno.c |  4 ++++
 2 files changed, 15 insertions(+), 1 deletion(-)
app/test/test_errno.c +11 -1
index 3ff0456a58..0db4fbc8b3 100644
@@ -18,13 +18,19 @@ test_errno(void)
 {
 	const char *rte_retval;
 	const char *libc_retval;
+
+#ifndef RTE_EXEC_ENV_WINDOWS
 #ifdef RTE_EXEC_ENV_FREEBSD
 	/* BSD has a colon in the string, unlike linux */
 	const char unknown_code_result[] = "Unknown error: %d";
 #else
 	const char unknown_code_result[] = "Unknown error %d";
 #endif
-	char expected_libc_retval[sizeof(unknown_code_result)+3];
+	char expected_libc_retval[sizeof(unknown_code_result) + 3];
+#else
+	/* Windows doesn't return error number for error greater than MAX_errno*/
+	static const char expected_libc_retval[] = "Unknown error";
+#endif
 
 	/* use a small selection of standard errors for testing */
 	int std_errs[] = {EAGAIN, EBADF, EACCES, EINTR, EINVAL};
@@ -54,11 +60,13 @@ test_errno(void)
 				rte_retval, libc_retval);
 		if (strcmp(rte_retval, libc_retval) == 0)
 			return -1;
+#ifndef RTE_EXEC_ENV_WINDOWS
 		/* generate appropriate error string for unknown error number
 		 * and then check that this is what we got back. If not, we have
 		 * a duplicate error number that conflicts with errno.h */
 		snprintf(expected_libc_retval, sizeof(expected_libc_retval),
 				unknown_code_result, rte_errs[i]);
+#endif
 		if ((strcmp(expected_libc_retval, libc_retval) != 0) &&
 				(strcmp("", libc_retval) != 0)){
 			printf("Error, duplicate error code %d\n", rte_errs[i]);
@@ -69,8 +77,10 @@ test_errno(void)
 	/* ensure that beyond RTE_MAX_ERRNO, we always get an unknown code */
 	rte_retval = rte_strerror(RTE_MAX_ERRNO + 1);
 	libc_retval = strerror(RTE_MAX_ERRNO + 1);
+#ifndef RTE_EXEC_ENV_WINDOWS
 	snprintf(expected_libc_retval, sizeof(expected_libc_retval),
 			unknown_code_result, RTE_MAX_ERRNO + 1);
+#endif
 	printf("rte_strerror: '%s', strerror: '%s'\n",
 			rte_retval, libc_retval);
 	if ((strcmp(rte_retval, libc_retval) != 0) ||
lib/eal/common/eal_common_errno.c +4 -0
index f86802705a..7507c746ec 100644
@@ -37,7 +37,11 @@ rte_strerror(int errnum)
 	/* since some implementations of strerror_r throw an error
 	 * themselves if errnum is too big, we handle that case here */
 	if (errnum >= RTE_MAX_ERRNO)
+#ifdef RTE_EXEC_ENV_WINDOWS
+		snprintf(ret, RETVAL_SZ, "Unknown error");
+#else
 		snprintf(ret, RETVAL_SZ, "Unknown error%s %d", sep, errnum);
+#endif
 	else
 		switch (errnum){
 		case E_RTE_SECONDARY:
Signature · 1 line
2.34.1.windows.1
author
#234 lore raw

PATCH v15 7/11 app/test: remove two alarm_autotest cases

In reply to Jie Zhou

Remove two alarm_autotest test cases which do bogus range check on Windows.

---
 app/test/test_alarm.c | 4 ++++
 1 file changed, 4 insertions(+)
app/test/test_alarm.c +4 -0
index b4034339b8..70e97a3109 100644
@@ -10,6 +10,7 @@
 
 #include "test.h"
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 static volatile int flag;
 
 static void
@@ -18,6 +19,7 @@ test_alarm_callback(void *cb_arg)
 	flag = 1;
 	printf("Callback setting flag - OK. [cb_arg = %p]\n", cb_arg);
 }
+#endif
 
 static int
 test_alarm(void)
@@ -27,6 +29,7 @@ test_alarm(void)
 	return 0;
 #endif
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	/* check if it will fail to set alarm with wrong us value */
 	printf("check if it will fail to set alarm with wrong ms values\n");
 	if (rte_eal_alarm_set(0, test_alarm_callback,
@@ -39,6 +42,7 @@ test_alarm(void)
 		printf("should not be successful with (UINT64_MAX-1) us value\n");
 		return -1;
 	}
+#endif
 
 	/* check if it will fail to set alarm with null callback parameter */
 	printf("check if it will fail to set alarm with null callback parameter\n");
Signature · 1 line
2.34.1.windows.1
author
#235 lore raw

PATCH v15 8/11 app/test: resolve name collision

In reply to Jie Zhou

Add OP_ prefix to resolve name collision to enable hash_perf test

---
 app/test/test_hash_perf.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
app/test/test_hash_perf.c +8 -8
index 76cdac5d53..7e98ec3964 100644
@@ -30,10 +30,10 @@
 #define BURST_SIZE 16
 
 enum operations {
-	ADD = 0,
-	LOOKUP,
-	LOOKUP_MULTI,
-	DELETE,
+	OP_ADD = 0,
+	OP_LOOKUP,
+	OP_LOOKUP_MULTI,
+	OP_DELETE,
 	NUM_OPERATIONS
 };
 
@@ -308,7 +308,7 @@ timed_adds(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][ADD][with_hash][with_data] = time_taken/keys_to_add;
+	cycles[table_index][OP_ADD][with_hash][with_data] = time_taken/keys_to_add;
 
 	return 0;
 }
@@ -385,7 +385,7 @@ timed_lookups(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][LOOKUP][with_hash][with_data] = time_taken/num_lookups;
+	cycles[table_index][OP_LOOKUP][with_hash][with_data] = time_taken/num_lookups;
 
 	return 0;
 }
@@ -511,7 +511,7 @@ timed_lookups_multi(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][LOOKUP_MULTI][with_hash][with_data] =
+	cycles[table_index][OP_LOOKUP_MULTI][with_hash][with_data] =
 		time_taken/num_lookups;
 
 	return 0;
@@ -550,7 +550,7 @@ timed_deletes(unsigned int with_hash, unsigned int with_data,
 	const uint64_t end_tsc = rte_rdtsc();
 	const uint64_t time_taken = end_tsc - start_tsc;
 
-	cycles[table_index][DELETE][with_hash][with_data] = time_taken/keys_to_add;
+	cycles[table_index][OP_DELETE][with_hash][with_data] = time_taken/keys_to_add;
 
 	return 0;
 }
Signature · 1 line
2.34.1.windows.1
author
#236 lore raw

PATCH v15 9/11 app/test: skip tests that are not supported yet

In reply to Jie Zhou

Skip tests which are not yet supported for Windows:
- The libraries that tests depend on are not enabled on Windows yet
- The tests can compile but with issue still under investigation
* test_func_reentrancy:
Windows EAL has no protection against repeated calls.
* test_lcores:
Execution enters an infinite loops, requires investigation.
* test_rcu_qsbr_perf:
Execution hangs on Windows, requires investigation.

---
 app/test/test_acl.c                      | 12 ++++
 app/test/test_bpf.c                      | 15 +++-
 app/test/test_cryptodev.c                |  4 ++
 app/test/test_cryptodev_asym.c           |  4 ++
 app/test/test_cryptodev_blockcipher.c    |  4 ++
 app/test/test_cryptodev_security_ipsec.c |  4 ++
 app/test/test_cryptodev_security_pdcp.c  |  4 ++
 app/test/test_debug.c                    | 17 ++++-
 app/test/test_distributor.c              | 13 ++++
 app/test/test_distributor_perf.c         | 13 ++++
 app/test/test_eal_flags.c                | 90 ++++++++++++++++++++++++
 app/test/test_eal_fs.c                   | 12 ++++
 app/test/test_efd.c                      | 15 +++-
 app/test/test_efd_perf.c                 | 16 ++++-
 app/test/test_event_crypto_adapter.c     | 15 +++-
 app/test/test_event_eth_rx_adapter.c     | 25 ++++++-
 app/test/test_event_eth_tx_adapter.c     | 12 ++++
 app/test/test_event_ring.c               | 16 ++++-
 app/test/test_event_timer_adapter.c      | 16 ++++-
 app/test/test_eventdev.c                 | 20 +++++-
 app/test/test_external_mem.c             | 18 ++++-
 app/test/test_fib.c                      | 22 +++++-
 app/test/test_fib6.c                     | 24 ++++++-
 app/test/test_fib6_perf.c                | 16 ++++-
 app/test/test_fib_perf.c                 | 15 +++-
 app/test/test_flow_classify.c            | 13 ++++
 app/test/test_func_reentrancy.c          |  3 +
 app/test/test_graph.c                    | 18 ++++-
 app/test/test_graph_perf.c               | 16 ++++-
 app/test/test_hash_perf.c                |  4 ++
 app/test/test_ipfrag.c                   | 16 ++++-
 app/test/test_ipsec.c                    | 16 ++++-
 app/test/test_ipsec_perf.c               | 15 +++-
 app/test/test_ipsec_sad.c                | 14 +++-
 app/test/test_kni.c                      | 10 +--
 app/test/test_lcores.c                   | 33 +++++----
 app/test/test_lpm.c                      | 14 +++-
 app/test/test_lpm6.c                     | 14 +++-
 app/test/test_lpm6_perf.c                | 14 +++-
 app/test/test_lpm_perf.c                 | 13 +++-
 app/test/test_malloc.c                   | 20 ++++--
 app/test/test_mbuf.c                     | 15 +++-
 app/test/test_member.c                   | 16 ++++-
 app/test/test_member_perf.c              | 16 ++++-
 app/test/test_memcpy_perf.c              |  1 -
 app/test/test_mp_secondary.c             | 12 ++++
 app/test/test_pie.c                      | 30 +++++++-
 app/test/test_rawdev.c                   | 17 ++++-
 app/test/test_rcu_qsbr_perf.c            |  3 +
 app/test/test_red.c                      | 29 +++++++-
 app/test/test_reorder.c                  | 15 +++-
 app/test/test_rib.c                      | 22 +++++-
 app/test/test_rib6.c                     | 22 +++++-
 app/test/test_sched.c                    | 14 +++-
 app/test/test_security.c                 |  2 +-
 app/test/test_table.c                    | 13 ++++
 app/test/test_table_acl.c                |  3 +
 app/test/test_table_combined.c           |  4 ++
 app/test/test_table_pipeline.c           |  4 ++
 app/test/test_table_ports.c              |  4 ++
 app/test/test_table_tables.c             |  4 ++
 app/test/test_timer_secondary.c          | 13 ++++
 app/test/test_trace.c                    | 32 +++++++--
 63 files changed, 858 insertions(+), 88 deletions(-)
app/test/test_acl.c +12 -0
index 5b32347954..7814e25a53 100644
@@ -11,6 +11,16 @@
 #include <rte_mbuf.h>
 #include <rte_byteorder.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_acl(void)
+{
+	printf("acl not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <rte_acl.h>
 #include <rte_common.h>
 
@@ -1741,4 +1751,6 @@ test_acl(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(acl_autotest, test_acl);
app/test/test_bpf.c +14 -1
index 2d755a872f..4ae6ac1823 100644
@@ -14,11 +14,22 @@
 #include <rte_random.h>
 #include <rte_byteorder.h>
 #include <rte_errno.h>
+#include "test.h"
+
+#if !defined(RTE_LIB_BPF)
+
+static int
+test_bpf(void)
+{
+	printf("BPF not supported, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <rte_bpf.h>
 #include <rte_ether.h>
 #include <rte_ip.h>
 
-#include "test.h"
 
 /*
  * Basic functional tests for librte_bpf.
@@ -3248,6 +3259,8 @@ test_bpf(void)
 	return rc;
 }
 
+#endif
+
 REGISTER_TEST_COMMAND(bpf_autotest, test_bpf);
 
 #ifdef RTE_HAS_LIBPCAP
app/test/test_cryptodev.c +4 -0
index 801c0c7998..f32f30aed0 100644
@@ -3,6 +3,8 @@
  * Copyright 2020 NXP
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <time.h>
 
 #include <rte_common.h>
@@ -15732,3 +15734,5 @@ REGISTER_TEST_COMMAND(cryptodev_nitrox_autotest, test_cryptodev_nitrox);
 REGISTER_TEST_COMMAND(cryptodev_bcmfs_autotest, test_cryptodev_bcmfs);
 REGISTER_TEST_COMMAND(cryptodev_cn9k_autotest, test_cryptodev_cn9k);
 REGISTER_TEST_COMMAND(cryptodev_cn10k_autotest, test_cryptodev_cn10k);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_asym.c +4 -0
index 68f4d8e7a6..dc153cbc90 100644
@@ -3,6 +3,8 @@
  * Copyright (c) 2019 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_bus_vdev.h>
 #include <rte_common.h>
 #include <rte_hexdump.h>
@@ -2412,3 +2414,5 @@ REGISTER_TEST_COMMAND(cryptodev_octeontx_asym_autotest,
 					  test_cryptodev_octeontx_asym);
 REGISTER_TEST_COMMAND(cryptodev_cn9k_asym_autotest, test_cryptodev_cn9k_asym);
 REGISTER_TEST_COMMAND(cryptodev_cn10k_asym_autotest, test_cryptodev_cn10k_asym);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_blockcipher.c +4 -0
index 5688a45377..3860433ffd 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2015-2017 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_common.h>
 #include <rte_hexdump.h>
 #include <rte_mbuf.h>
@@ -1221,3 +1223,5 @@ free_blockcipher_test_suite(struct unit_test_suite *ts)
 {
 	free(ts);
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_security_ipsec.c +4 -0
index 4708803bd2..a84afae7f5 100644
@@ -2,6 +2,8 @@
  * Copyright(C) 2021 Marvell.
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <rte_common.h>
 #include <rte_cryptodev.h>
 #include <rte_esp.h>
@@ -672,3 +674,5 @@ test_ipsec_status_check(struct rte_crypto_op *op,
 
 	return ret;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_cryptodev_security_pdcp.c +4 -0
index a7641bab7a..3409add715 100644
@@ -4,6 +4,8 @@
  * Copyright 2018-2019 NXP
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <time.h>
 
 #include <rte_common.h>
@@ -587,3 +589,5 @@ test_PDCP_PROTO_uplane_decap_all(void)
 
 	return n - i;
 };
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_debug.c +15 -2
index 23b24db177..c4038a4ed1 100644
@@ -2,8 +2,21 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_debug(void)
+{
+	printf("debug not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <sys/resource.h>
 #include <sys/time.h>
 #include <sys/wait.h>
@@ -14,8 +27,6 @@
 #include <rte_eal.h>
 #include <rte_service_component.h>
 
-#include "test.h"
-
 /*
  * Debug test
  * ==========
@@ -127,4 +138,6 @@ test_debug(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(debug_autotest, test_debug);
app/test/test_distributor.c +13 -0
index 961f326cd5..0ecd5ba232 100644
@@ -11,6 +11,17 @@
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_mbuf_dyn.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_distributor(void)
+{
+	printf("distributor not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_distributor.h>
 #include <rte_string_fns.h>
 
@@ -939,4 +950,6 @@ test_distributor(void)
 	return -1;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(distributor_autotest, test_distributor);
app/test/test_distributor_perf.c +13 -0
index 92e330f194..650a0317ef 100644
@@ -10,6 +10,17 @@
 #include <rte_cycles.h>
 #include <rte_common.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_distributor_perf(void)
+{
+	printf("distributor perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_distributor.h>
 #include <rte_pause.h>
 
@@ -264,4 +275,6 @@ test_distributor_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(distributor_perf_autotest, test_distributor_perf);
app/test/test_eal_flags.c +90 -0

102 lines not on this page · raw message

app/test/test_eal_fs.c +12 -0
index 39ac6961b3..5d24ae3d32 100644
@@ -10,6 +10,16 @@
 
 #include "eal_filesystem.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_eal_fs(void)
+{
+	printf("eal_fs not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 static int
 test_parse_sysfs_value(void)
 {
@@ -173,4 +183,6 @@ test_eal_fs(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eal_fs_autotest, test_eal_fs);
app/test/test_efd.c +13 -2
index 1b249e0447..f8f356dcd9 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2016-2017 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_efd(void)
+{
+	printf("efd not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <rte_memcpy.h>
 #include <rte_malloc.h>
@@ -10,8 +21,6 @@
 #include <rte_debug.h>
 #include <rte_ip.h>
 
-#include "test.h"
-
 #define EFD_TEST_KEY_LEN 8
 #define TABLE_SIZE (1 << 21)
 #define ITERATIONS 3
@@ -462,4 +471,6 @@ test_efd(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(efd_autotest, test_efd);
app/test/test_efd_perf.c +14 -2
index f3fe3b1736..1bf6bcb0ca 100644
@@ -2,6 +2,18 @@
  * Copyright(c) 2016-2017 Intel Corporation
  */
 
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_efd_perf(void)
+{
+	printf("efd_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <stdio.h>
 #include <inttypes.h>
 
@@ -13,8 +25,6 @@
 #include <rte_memcpy.h>
 #include <rte_thash.h>
 
-#include "test.h"
-
 #define NUM_KEYSIZES 10
 #define NUM_SHUFFLES 10
 #define MAX_KEYSIZE 64
@@ -382,4 +392,6 @@ test_efd_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(efd_perf_autotest, test_efd_perf);
app/test/test_event_crypto_adapter.c +14 -1
index 3d7e9fb93c..47b0e128e9 100644
@@ -3,16 +3,27 @@
  * All rights reserved.
  */
 
+#include "test.h"
 #include <string.h>
 #include <rte_common.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_cryptodev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_crypto_adapter(void)
+{
+	printf("event_crypto_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_bus_vdev.h>
 #include <rte_service.h>
 #include <rte_event_crypto_adapter.h>
-#include "test.h"
 
 #define PKT_TRACE                  0
 #define NUM                        1
@@ -1011,5 +1022,7 @@ test_event_crypto_adapter(void)
 	return unit_test_suite_runner(&functional_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_crypto_adapter_autotest,
 		test_event_crypto_adapter);
app/test/test_event_eth_rx_adapter.c +23 -2
index 7cb91b152f..1df24fdce2 100644
@@ -1,18 +1,37 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2017 Intel Corporation
  */
+
+#include "test.h"
+
 #include <string.h>
 #include <rte_common.h>
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
 #include <rte_ethdev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_eth_rx_adapter_common(void)
+{
+	printf("event_eth_rx_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_event_eth_rx_intr_adapter_common(void)
+{
+	printf("event_eth_rx_intr_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_bus_vdev.h>
 
 #include <rte_event_eth_rx_adapter.h>
 
-#include "test.h"
-
 #define MAX_NUM_RX_QUEUE	64
 #define NB_MBUFS		(8192 * num_ports * MAX_NUM_RX_QUEUE)
 #define MBUF_CACHE_SIZE		512
@@ -1027,6 +1046,8 @@ test_event_eth_rx_intr_adapter_common(void)
 	return unit_test_suite_runner(&event_eth_rx_intr_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_eth_rx_adapter_autotest,
 		test_event_eth_rx_adapter_common);
 REGISTER_TEST_COMMAND(event_eth_rx_intr_adapter_autotest,
app/test/test_event_eth_tx_adapter.c +12 -0
index cfcc784351..c1c9732dd4 100644
@@ -16,6 +16,16 @@
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_eth_tx_adapter_common(void)
+{
+	printf("event_eth_tx_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #define MAX_NUM_QUEUE		RTE_PMD_RING_MAX_RX_RINGS
 #define TEST_INST_ID		0
 #define TEST_DEV_ID		0
@@ -696,5 +706,7 @@ test_event_eth_tx_adapter_common(void)
 	return unit_test_suite_runner(&event_eth_tx_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_eth_tx_adapter_autotest,
 		test_event_eth_tx_adapter_common);
app/test/test_event_ring.c +14 -2
index 70eb9845e1..9c5e28fb81 100644
@@ -2,11 +2,21 @@
  * Copyright(c) 2010-2017 Intel Corporation
  */
 
+#include "test.h"
+
 #include <string.h>
 
-#include <rte_event_ring.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_ring(void)
+{
+	printf("event_ring not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
 
-#include "test.h"
+#else
+
+#include <rte_event_ring.h>
 
 /*
  * Event Ring
@@ -244,4 +254,6 @@ test_event_ring(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_ring_autotest, test_event_ring);
app/test/test_event_timer_adapter.c +14 -2
index 25bac2d155..6f7145ef76 100644
@@ -2,6 +2,7 @@
  * Copyright(c) 2017 Cavium, Inc
  * Copyright(c) 2017-2018 Intel Corporation.
  */
+#include "test.h"
 
 #include <math.h>
 
@@ -10,6 +11,17 @@
 #include <rte_debug.h>
 #include <rte_eal.h>
 #include <rte_ethdev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_event_timer_adapter_func(void)
+{
+	printf("event_timer_adapter not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_event_timer_adapter.h>
 #include <rte_mempool.h>
@@ -21,8 +33,6 @@
 #include <rte_service.h>
 #include <stdbool.h>
 
-#include "test.h"
-
 /* 4K timers corresponds to sw evdev max inflight events */
 #define MAX_TIMERS  (4 * 1024)
 #define BKT_TCK_NSEC
@@ -1950,4 +1960,6 @@ test_event_timer_adapter_func(void)
 	return unit_test_suite_runner(&event_timer_adptr_functional_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(event_timer_adapter_test, test_event_timer_adapter_func);
app/test/test_eventdev.c +18 -2
index 10028fe11d..1664df3680 100644
@@ -1,18 +1,28 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2016 Cavium, Inc
  */
+#include "test.h"
 
 #include <rte_common.h>
 #include <rte_hexdump.h>
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_eventdev_common(void)
+{
+	printf("eventdev_common not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_eventdev.h>
 #include <rte_dev.h>
 #include <rte_bus_vdev.h>
 
-#include "test.h"
-
 #define TEST_DEV_ID   0
 
 static int
@@ -1042,7 +1052,11 @@ test_eventdev_selftest_cn10k(void)
 	return test_eventdev_selftest_impl("event_cn10k", "");
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(eventdev_common_autotest, test_eventdev_common);
+
+#ifndef RTE_EXEC_ENV_WINDOWS
 REGISTER_TEST_COMMAND(eventdev_selftest_sw, test_eventdev_selftest_sw);
 REGISTER_TEST_COMMAND(eventdev_selftest_octeontx,
 		test_eventdev_selftest_octeontx);
@@ -1050,3 +1064,5 @@ REGISTER_TEST_COMMAND(eventdev_selftest_dpaa2, test_eventdev_selftest_dpaa2);
 REGISTER_TEST_COMMAND(eventdev_selftest_dlb2, test_eventdev_selftest_dlb2);
 REGISTER_TEST_COMMAND(eventdev_selftest_cn9k, test_eventdev_selftest_cn9k);
 REGISTER_TEST_COMMAND(eventdev_selftest_cn10k, test_eventdev_selftest_cn10k);
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_external_mem.c +16 -2
index 5edf88b9f6..759f4fce6b 100644
@@ -2,11 +2,25 @@
  * Copyright(c) 2018 Intel Corporation
  */
 
+#include "test.h"
+
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <fcntl.h>
+
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_external_mem(void)
+{
+	printf("external_mem not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <sys/mman.h>
 #include <sys/wait.h>
 
@@ -19,8 +33,6 @@
 #include <rte_ring.h>
 #include <rte_string_fns.h>
 
-#include "test.h"
-
 #define EXTERNAL_MEM_SZ (RTE_PGSIZE_4K << 10) /* 4M of data */
 
 static int
@@ -574,4 +586,6 @@ test_external_mem(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(external_mem_autotest, test_external_mem);
app/test/test_fib.c +21 -1
index eb69d6e2fd..50b3fa760c 100644
@@ -9,10 +9,28 @@
 
 #include <rte_ip.h>
 #include <rte_log.h>
-#include <rte_fib.h>
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib(void)
+{
+	printf("fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_fib(void)
+{
+	printf("slow_fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib.h>
+
 typedef int32_t (*rte_fib_test)(void);
 
 static int32_t test_create_invalid(void);
@@ -415,5 +433,7 @@ test_slow_fib(void)
 	return unit_test_suite_runner(&fib_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib_autotest, test_fib);
 REGISTER_TEST_COMMAND(fib_slow_autotest, test_slow_fib);
app/test/test_fib6.c +22 -2
index 15ad09178a..53cca26ff1 100644
@@ -9,11 +9,29 @@
 
 #include <rte_memory.h>
 #include <rte_log.h>
-#include <rte_rib6.h>
-#include <rte_fib6.h>
 
 #include "test.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib6(void)
+{
+	printf("fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_fib6(void)
+{
+	printf("slow_fib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_rib6.h>
+#include <rte_fib6.h>
+
 typedef int32_t (*rte_fib6_test)(void);
 
 static int32_t test_create_invalid(void);
@@ -424,5 +442,7 @@ test_slow_fib6(void)
 	return unit_test_suite_runner(&fib6_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib6_autotest, test_fib6);
 REGISTER_TEST_COMMAND(fib6_slow_autotest, test_slow_fib6);
app/test/test_fib6_perf.c +15 -1
index e565799155..21d2b65318 100644
@@ -10,9 +10,21 @@
 #include <rte_cycles.h>
 #include <rte_random.h>
 #include <rte_memory.h>
-#include <rte_fib6.h>
 
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib6_perf(void)
+{
+	printf("fib6_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib6.h>
+
 #include "test_lpm6_data.h"
 
 #define TEST_FIB_ASSERT(cond) do {				\
@@ -155,4 +167,6 @@ test_fib6_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib6_perf_autotest, test_fib6_perf);
app/test/test_fib_perf.c +14 -1
index 7a25fe8df7..29391b5b27 100644
@@ -12,11 +12,22 @@
 #include <rte_random.h>
 #include <rte_branch_prediction.h>
 #include <rte_ip.h>
-#include <rte_fib.h>
 
 #include "test.h"
 #include "test_xmmt_ops.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_fib_perf(void)
+{
+	printf("fib_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_fib.h>
+
 #define TEST_FIB_ASSERT(cond) do {				\
 	if (!(cond)) {						\
 		printf("Error at line %d:\n", __LINE__);	\
@@ -409,4 +420,6 @@ test_fib_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(fib_perf_autotest, test_fib_perf);
app/test/test_flow_classify.c +13 -0
index 4f64be5357..d9893766d1 100644
@@ -11,6 +11,17 @@
 #include <rte_mbuf.h>
 #include <rte_byteorder.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_flow_classify(void)
+{
+	printf("flow_classify not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_acl.h>
 #include <rte_common.h>
 #include <rte_table_acl.h>
@@ -879,4 +890,6 @@ test_flow_classify(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(flow_classify_autotest, test_flow_classify);
app/test/test_func_reentrancy.c +3 -0
index ce40c3ce96..a52325dd7e 100644
@@ -489,6 +489,9 @@ test_func_reentrancy(void)
 	uint32_t case_id;
 	struct test_case *pt_case = NULL;
 
+	if (RTE_EXEC_ENV_IS_WINDOWS)
+	    return TEST_SKIPPED;
+
 	if (rte_lcore_count() < 2) {
 		printf("Not enough cores for func_reentrancy_autotest, expecting at least 2\n");
 		return TEST_SKIPPED;
app/test/test_graph.c +16 -2
index 81bdcb9bea..ce4cdecd34 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(C) 2020 Marvell International Ltd.
  */
+#include "test.h"
+
 #include <assert.h>
 #include <inttypes.h>
 #include <signal.h>
@@ -9,14 +11,23 @@
 #include <unistd.h>
 
 #include <rte_errno.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_node_list_dump(void)
+{
+	printf("node_list_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_graph.h>
 #include <rte_graph_worker.h>
 #include <rte_mbuf.h>
 #include <rte_mbuf_dyn.h>
 #include <rte_random.h>
 
-#include "test.h"
-
 static uint16_t test_node_worker_source(struct rte_graph *graph,
 					struct rte_node *node, void **objs,
 					uint16_t nb_objs);
@@ -841,4 +852,7 @@ test_node_list_dump(void)
 
 	return TEST_SUCCESS;
 }
+
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(node_list_dump, test_node_list_dump);
app/test/test_graph_perf.c +14 -2
index 296d99a9d3..a58cde1f22 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(C) 2020 Marvell International Ltd.
  */
+#include "test.h"
+
 #include <inttypes.h>
 #include <signal.h>
 #include <stdio.h>
@@ -9,14 +11,22 @@
 #include <rte_common.h>
 #include <rte_cycles.h>
 #include <rte_errno.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_graph_perf_func(void)
+{
+	printf("graph_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_graph.h>
 #include <rte_graph_worker.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 #include <rte_mbuf.h>
 
-#include "test.h"
-
 #define TEST_GRAPH_PERF_MZ	     "graph_perf_data"
 #define TEST_GRAPH_SRC_NAME	     "test_graph_perf_source"
 #define TEST_GRAPH_SRC_BRST_ONE_NAME "test_graph_perf_source_one"
@@ -1060,4 +1070,6 @@ test_graph_perf_func(void)
 	return unit_test_suite_runner(&graph_perf_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(graph_perf_autotest, test_graph_perf_func);
app/test/test_hash_perf.c +4 -0
index 7e98ec3964..a55a42c584 100644
@@ -723,6 +723,10 @@ static int
 test_hash_perf(void)
 {
 	unsigned int with_pushes, with_locks;
+
+	if (RTE_EXEC_ENV_IS_WINDOWS)
+	    return TEST_SKIPPED;
+
 	for (with_locks = 0; with_locks <= 1; with_locks++) {
 		if (with_locks)
 			printf("\nWith locks in the code\n");
app/test/test_ipfrag.c +14 -2
index 1ced25a123..52987b6de7 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2020 Red Hat, Inc.
  */
+#include "test.h"
 
 #include <time.h>
 
@@ -8,13 +9,22 @@
 #include <rte_cycles.h>
 #include <rte_hexdump.h>
 #include <rte_ip.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipfrag(void)
+{
+	printf("ipfrag not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ip_frag.h>
 #include <rte_mbuf.h>
 #include <rte_memcpy.h>
 #include <rte_random.h>
 
-#include "test.h"
-
 #define NUM_MBUFS 128
 #define BURST 32
 
@@ -322,4 +332,6 @@ test_ipfrag(void)
 	return unit_test_suite_runner(&ipfrag_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipfrag_autotest, test_ipfrag);
app/test/test_ipsec.c +14 -2
index bc2a3dbc2e..7a36504532 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2018 Intel Corporation
  */
+#include "test.h"
 
 #include <time.h>
 
@@ -12,16 +13,25 @@
 #include <rte_cycles.h>
 #include <rte_bus_vdev.h>
 #include <rte_ip.h>
-
 #include <rte_crypto.h>
 #include <rte_cryptodev.h>
 #include <rte_lcore.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipsec(void)
+{
+	printf("ipsec not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec.h>
 #include <rte_random.h>
 #include <rte_esp.h>
 #include <rte_security_driver.h>
 
-#include "test.h"
 #include "test_cryptodev.h"
 
 #define VDEV_ARGS_SIZE	100
@@ -2536,4 +2546,6 @@ test_ipsec(void)
 	return unit_test_suite_runner(&ipsec_testsuite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_autotest, test_ipsec);
app/test/test_ipsec_perf.c +14 -1
index 92106bf374..5ebb61ce18 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2020 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <rte_ip.h>
@@ -8,10 +9,20 @@
 #include <rte_ring.h>
 #include <rte_mbuf.h>
 #include <rte_cycles.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_libipsec_perf(void)
+{
+	printf("ipsec_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec.h>
 #include <rte_random.h>
 
-#include "test.h"
 #include "test_cryptodev.h"
 
 #define RING_SIZE	4096
@@ -611,4 +622,6 @@ test_libipsec_perf(void)
 	return TEST_SUCCESS;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_perf_autotest, test_libipsec_perf);
app/test/test_ipsec_sad.c +13 -1
index 491164689e..07f3ed245b 100644
@@ -1,16 +1,26 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_ipsec_sad(void)
+{
+	printf("ipsec_sad not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_ipsec_sad.h>
 #include <rte_memory.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 typedef int32_t (*rte_ipsec_sad_test)(void);
@@ -884,4 +894,6 @@ test_ipsec_sad(void)
 	return unit_test_suite_runner(&ipsec_sad_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(ipsec_sad_autotest, test_ipsec_sad);
app/test/test_kni.c +5 -5
index 2761de9b07..622315c8b1 100644
@@ -2,15 +2,12 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
 #include <unistd.h>
 #include <string.h>
-#include <sys/wait.h>
-#include <dirent.h>
-
-#include "test.h"
-
 #if !defined(RTE_EXEC_ENV_LINUX) || !defined(RTE_LIB_KNI)
 
 static int
@@ -22,6 +19,9 @@ test_kni(void)
 
 #else
 
+#include <sys/wait.h>
+#include <dirent.h>
+
 #include <rte_string_fns.h>
 #include <rte_mempool.h>
 #include <rte_ethdev.h>
app/test/test_lcores.c +18 -15
index 35c47d5372..af6ef12609 100644
@@ -12,7 +12,7 @@
 #include "test.h"
 
 struct thread_context {
-	enum { INIT, ERROR, DONE } state;
+	enum { Thread_INIT, Thread_ERROR, Thread_DONE } state;
 	bool lcore_id_any;
 	pthread_t id;
 	unsigned int *registered_count;
@@ -26,7 +26,7 @@ static void *thread_loop(void *arg)
 	lcore_id = rte_lcore_id();
 	if (lcore_id != LCORE_ID_ANY) {
 		printf("Error: incorrect lcore id for new thread %u\n", lcore_id);
-		t->state = ERROR;
+		t->state = Thread_ERROR;
 	}
 	if (rte_thread_register() < 0)
 		printf("Warning: could not register new thread (this might be expected during this test), reason %s\n",
@@ -36,7 +36,7 @@ static void *thread_loop(void *arg)
 			(!t->lcore_id_any && lcore_id == LCORE_ID_ANY)) {
 		printf("Error: could not register new thread, got %u while %sexpecting %u\n",
 			lcore_id, t->lcore_id_any ? "" : "not ", LCORE_ID_ANY);
-		t->state = ERROR;
+		t->state = Thread_ERROR;
 	}
 	/* Report register happened to the control thread. */
 	__atomic_add_fetch(t->registered_count, 1, __ATOMIC_RELEASE);
@@ -49,11 +49,11 @@ static void *thread_loop(void *arg)
 	if (lcore_id != LCORE_ID_ANY) {
 		printf("Error: could not unregister new thread, %u still assigned\n",
 			lcore_id);
-		t->state = ERROR;
+		t->state = Thread_ERROR;
 	}
 
-	if (t->state != ERROR)
-		t->state = DONE;
+	if (t->state != Thread_ERROR)
+		t->state = Thread_DONE;
 
 	return NULL;
 }
@@ -74,7 +74,7 @@ test_non_eal_lcores(unsigned int eal_threads_count)
 	/* Try to create as many threads as possible. */
 	for (i = 0; i < RTE_MAX_LCORE - eal_threads_count; i++) {
 		t = &thread_contexts[i];
-		t->state = INIT;
+		t->state = Thread_INIT;
 		t->registered_count = &registered_count;
 		t->lcore_id_any = false;
 		if (pthread_create(&t->id, NULL, thread_loop, t) != 0)
@@ -93,7 +93,7 @@ test_non_eal_lcores(unsigned int eal_threads_count)
 	if (eal_threads_count + non_eal_threads_count < RTE_MAX_LCORE)
 		goto skip_lcore_any;
 	t = &thread_contexts[non_eal_threads_count];
-	t->state = INIT;
+	t->state = Thread_INIT;
 	t->registered_count = &registered_count;
 	t->lcore_id_any = true;
 	if (pthread_create(&t->id, NULL, thread_loop, t) == 0) {
@@ -111,7 +111,7 @@ test_non_eal_lcores(unsigned int eal_threads_count)
 	for (i = 0; i < non_eal_threads_count; i++) {
 		t = &thread_contexts[i];
 		pthread_join(t->id, NULL);
-		if (t->state != DONE)
+		if (t->state != Thread_DONE)
 			ret = -1;
 	}
 
@@ -259,7 +259,7 @@ test_non_eal_lcores_callback(unsigned int eal_threads_count)
 	}
 	/* First thread that expects a valid lcore id. */
 	t = &thread_contexts[0];
-	t->state = INIT;
+	t->state = Thread_INIT;
 	t->registered_count = &registered_count;
 	t->lcore_id_any = false;
 	if (pthread_create(&t->id, NULL, thread_loop, t) != 0)
@@ -282,7 +282,7 @@ test_non_eal_lcores_callback(unsigned int eal_threads_count)
 	}
 	/* Second thread, that expects LCORE_ID_ANY because of init refusal. */
 	t = &thread_contexts[1];
-	t->state = INIT;
+	t->state = Thread_INIT;
 	t->registered_count = &registered_count;
 	t->lcore_id_any = true;
 	if (pthread_create(&t->id, NULL, thread_loop, t) != 0)
@@ -310,7 +310,7 @@ test_non_eal_lcores_callback(unsigned int eal_threads_count)
 	for (i = 0; i < non_eal_threads_count; i++) {
 		t = &thread_contexts[i];
 		pthread_join(t->id, NULL);
-		if (t->state != DONE)
+		if (t->state != Thread_DONE)
 			ret = -1;
 	}
 	if (ret < 0)
@@ -347,7 +347,7 @@ static void *ctrl_thread_loop(void *arg)
 	printf("Control thread running successfully\n");
 
 	/* Set the thread state to DONE */
-	t->state = DONE;
+	t->state = Thread_DONE;
 
 	return NULL;
 }
@@ -360,7 +360,7 @@ test_ctrl_thread(void)
 
 	/* Create one control thread */
 	t = &ctrl_thread_context;
-	t->state = INIT;
+	t->state = Thread_INIT;
 	if (rte_ctrl_thread_create(&t->id, "test_ctrl_threads",
 					NULL, ctrl_thread_loop, t) != 0)
 		return -1;
@@ -372,7 +372,7 @@ test_ctrl_thread(void)
 	pthread_join(t->id, NULL);
 
 	/* Check if the control thread set the correct state */
-	if (t->state != DONE)
+	if (t->state != Thread_DONE)
 		return -1;
 
 	return 0;
@@ -384,6 +384,9 @@ test_lcores(void)
 	unsigned int eal_threads_count = 0;
 	unsigned int i;
 
+	if (RTE_EXEC_ENV_IS_WINDOWS)
+	    return TEST_SKIPPED;
+
 	for (i = 0; i < RTE_MAX_LCORE; i++) {
 		if (!rte_lcore_has_role(i, ROLE_OFF))
 			eal_threads_count++;
app/test/test_lpm.c +13 -1
index 37b460af3a..55ae46207a 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm(void)
+{
+	printf("lpm not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <stdio.h>
 #include <stdint.h>
@@ -10,7 +21,6 @@
 #include <rte_lpm.h>
 #include <rte_malloc.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -1584,4 +1594,6 @@ test_lpm(void)
 	return global_status;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm_autotest, test_lpm);
app/test/test_lpm6.c +13 -1
index 17221f992a..a4d8eda62d 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -8,9 +9,18 @@
 #include <string.h>
 
 #include <rte_memory.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm6(void)
+{
+	printf("lpm6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_lpm6.h>
 
-#include "test.h"
 #include "test_lpm6_data.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -1792,4 +1802,6 @@ test_lpm6(void)
 	return global_status;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm6_autotest, test_lpm6);
app/test/test_lpm6_perf.c +13 -1
index 0b43ad824a..622418ddfe 100644
@@ -1,6 +1,17 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm6_perf(void)
+{
+	printf("lpm6_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 
 #include <stdio.h>
 #include <stdint.h>
@@ -12,7 +23,6 @@
 #include <rte_memory.h>
 #include <rte_lpm6.h>
 
-#include "test.h"
 #include "test_lpm6_data.h"
 
 #define TEST_LPM_ASSERT(cond) do {                                            \
@@ -160,4 +170,6 @@ test_lpm6_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm6_perf_autotest, test_lpm6_perf);
app/test/test_lpm_perf.c +12 -1
index 2bed00d064..d49bce5d36 100644
@@ -2,7 +2,17 @@
  * Copyright(c) 2010-2014 Intel Corporation
  * Copyright(c) 2020 Arm Limited
  */
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_lpm_perf(void)
+{
+	printf("lpm_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
 
+#else
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -15,7 +25,6 @@
 #include <rte_ip.h>
 #include <rte_lpm.h>
 
-#include "test.h"
 #include "test_xmmt_ops.h"
 
 struct rte_lpm *lpm;
@@ -763,4 +772,6 @@ test_lpm_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(lpm_perf_autotest, test_lpm_perf);
app/test/test_malloc.c +14 -6
index 6d9249f831..fe6b83271b 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2019 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
@@ -8,7 +9,9 @@
 #include <stdarg.h>
 #include <errno.h>
 #include <stdlib.h>
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <sys/mman.h>
+#endif
 #include <sys/queue.h>
 #include <unistd.h>
 
@@ -23,11 +26,8 @@
 #include <rte_random.h>
 #include <rte_string_fns.h>
 
-#include "test.h"
-
 #define N 10000
 
-
 static int
 is_mem_on_socket(int32_t socket);
 
@@ -47,8 +47,8 @@ addr_to_socket(void *addr);
 static int
 is_memory_overlap(void *p1, size_t len1, void *p2, size_t len2)
 {
-	unsigned long ptr1 = (unsigned long)p1;
-	unsigned long ptr2 = (unsigned long)p2;
+	uintptr_t ptr1 = (uintptr_t)p1;
+	uintptr_t ptr2 = (uintptr_t)p2;
 
 	if (ptr2 >= ptr1 && (ptr2 - ptr1) < len1)
 		return 1;
@@ -60,7 +60,7 @@ is_memory_overlap(void *p1, size_t len1, void *p2, size_t len2)
 static int
 is_aligned(void *p, int align)
 {
-	unsigned long addr = (unsigned long)p;
+	uintptr_t addr = (uintptr_t)p;
 	unsigned mask = align - 1;
 
 	if (addr & mask)
@@ -373,6 +373,13 @@ test_multi_alloc_statistics(void)
 	return 0;
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_realloc(void)
+{
+	return TEST_SKIPPED;
+}
+#else
 static int
 test_realloc_socket(int socket)
 {
@@ -670,6 +677,7 @@ test_realloc(void)
 end:
 	return ret;
 }
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 
 static int
 test_random_alloc_free(void *_ __rte_unused)
app/test/test_mbuf.c +13 -2
index f54d1d7c00..662b988480 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <string.h>
 #include <stdarg.h>
@@ -33,8 +34,6 @@
 #include <rte_tcp.h>
 #include <rte_mbuf_dyn.h>
 
-#include "test.h"
-
 #define MEMPOOL_CACHE_SIZE      32
 #define MBUF_DATA_SIZE          2048
 #define NB_MBUF                 128
@@ -1172,6 +1171,16 @@ test_refcnt_mbuf(void)
 #endif
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+
+static int
+test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
+{
+	RTE_SET_USED(pktmbuf_pool);
+	return TEST_SKIPPED;
+}
+#else
+
 #include <unistd.h>
 #include <sys/resource.h>
 #include <sys/time.h>
@@ -1267,6 +1276,8 @@ test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
 	return 0;
 }
 
+#endif /*!defined RTE_EXEC_ENV_WINDOWS*/
+
 static int
 test_mbuf_linearize(struct rte_mempool *pktmbuf_pool, int pkt_len,
 		    int nb_segs)
app/test/test_member.c +14 -2
index af9d50915c..8a6be71238 100644
@@ -3,17 +3,27 @@
  */
 
 /* This test is for membership library's simple feature test */
+#include "test.h"
 
 #include <rte_memcpy.h>
 #include <rte_malloc.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_member(void)
+{
+	printf("member not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_member.h>
 #include <rte_byteorder.h>
 #include <rte_random.h>
 #include <rte_debug.h>
 #include <rte_ip.h>
 
-#include "test.h"
-
 struct rte_member_setsum *setsum_ht;
 struct rte_member_setsum *setsum_cache;
 struct rte_member_setsum *setsum_vbf;
@@ -712,4 +722,6 @@ test_member(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(member_autotest, test_member);
app/test/test_member_perf.c +14 -2
index e2840f12d3..1cc9c3e4d8 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2017 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <inttypes.h>
@@ -11,9 +12,18 @@
 #include <rte_random.h>
 #include <rte_memcpy.h>
 #include <rte_thash.h>
-#include <rte_member.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_member_perf(void)
+{
+	printf("member_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_member.h>
 
 #define NUM_KEYSIZES 10
 #define NUM_SHUFFLES 10
@@ -622,4 +632,6 @@ test_member_perf(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(member_perf_autotest, test_member_perf);
app/test/test_memcpy_perf.c +0 -1
index 3727c160e6..9147c0aec6 100644
@@ -13,7 +13,6 @@
 #include <rte_os_shim.h>
 #include <rte_random.h>
 #include <rte_malloc.h>
-
 #include <rte_memcpy.h>
 
 #include "test.h"
app/test/test_mp_secondary.c +12 -0
index 021ca0547f..54b0f72645 100644
@@ -14,6 +14,16 @@
 #include <errno.h>
 #include <string.h>
 #include <unistd.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_mp_secondary(void)
+{
+	printf("mp_secondary not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
 #include <sys/wait.h>
 #include <libgen.h>
 #include <dirent.h>
@@ -211,4 +221,6 @@ test_mp_secondary(void)
 	return run_object_creation_tests();
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(multiprocess_autotest, test_mp_secondary);
app/test/test_pie.c +28 -2
index 632d4b014d..edd1aa3d86 100644
@@ -2,6 +2,32 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_pie(void)
+{
+	printf("pie not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_pie_perf(void)
+{
+	printf("pie_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_pie_all(void)
+{
+	printf("pie_all not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -12,8 +38,6 @@
 #include <time.h>
 #include <math.h>
 
-#include "test.h"
-
 #include <rte_pie.h>
 
 #ifdef __INTEL_COMPILER
@@ -1060,6 +1084,8 @@ test_pie_all(void)
 	return tell_the_result(num_tests, num_pass);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(pie_autotest, test_pie);
 REGISTER_TEST_COMMAND(pie_perf, test_pie_perf);
 REGISTER_TEST_COMMAND(pie_all, test_pie_all);
app/test/test_rawdev.c +15 -2
index 081fab969b..561b0e0300 100644
@@ -1,16 +1,27 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright 2017 NXP
  */
+#include "test.h"
+
 #include <rte_common.h>
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
 #include <rte_dev.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rawdev_selftests(void)
+{
+	printf("rawdev not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include <rte_rawdev.h>
 #include <rte_bus_vdev.h>
 
-#include "test.h"
-
 static int
 test_rawdev_selftest_impl(const char *pmd, const char *opts)
 {
@@ -54,4 +65,6 @@ test_rawdev_selftests(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rawdev_autotest, test_rawdev_selftests);
app/test/test_rcu_qsbr_perf.c +3 -0
index cf7b158d22..0f4dbcb017 100644
@@ -614,6 +614,9 @@ test_rcu_qsbr_main(void)
 {
 	uint16_t core_id;
 
+	if (RTE_EXEC_ENV_IS_WINDOWS)
+	    return TEST_SKIPPED;
+
 	if (rte_lcore_count() < 3) {
 		printf("Not enough cores for rcu_qsbr_perf_autotest, expecting at least 3\n");
 		return TEST_SKIPPED;
app/test/test_red.c +27 -2
index 33a9f4ebb7..49d62de36e 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -8,12 +9,34 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <inttypes.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_red(void)
+{
+	printf("red not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_red_perf(void)
+{
+	printf("red_perf not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_red_all(void)
+{
+	printf("red_all not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #include <sys/time.h>
 #include <time.h>
 #include <math.h>
 
-#include "test.h"
-
 #include <rte_red.h>
 
 #ifdef __INTEL_COMPILER
@@ -1851,6 +1874,8 @@ test_red_all(void)
 	return tell_the_result(num_tests, num_pass);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(red_autotest, test_red);
 REGISTER_TEST_COMMAND(red_perf, test_red_perf);
 REGISTER_TEST_COMMAND(red_all, test_red_all);
app/test/test_reorder.c +13 -2
index 1c4226da65..c73cbdefe6 100644
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright(c) 2010-2014 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <unistd.h>
@@ -9,12 +10,20 @@
 #include <rte_cycles.h>
 #include <rte_errno.h>
 #include <rte_mbuf.h>
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_reorder(void)
+{
+	printf("reorder not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
 #include <rte_reorder.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 
-#include "test.h"
-
 #define BURST 32
 #define REORDER_BUFFER_SIZE 16384
 #define NUM_MBUFS (2*REORDER_BUFFER_SIZE)
@@ -390,4 +399,6 @@ test_reorder(void)
 	return unit_test_suite_runner(&reorder_test_suite);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(reorder_autotest, test_reorder);
app/test/test_rib.c +20 -2
index 3dc48fe1f2..ad7c79ca78 100644
@@ -2,15 +2,31 @@
  * Copyright(c) 2018 Vladimir Medvedkin <[email protected]>
  * Copyright(c) 2019 Intel Corporation
  */
+#include "test.h"
 
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 
 #include <rte_ip.h>
-#include <rte_rib.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rib(void)
+{
+	printf("rib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_rib(void)
+{
+	printf("slow_rib not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
+#include <rte_rib.h>
 
 typedef int32_t (*rte_rib_test)(void);
 
@@ -363,5 +379,7 @@ test_slow_rib(void)
 	return unit_test_suite_runner(&rib_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(rib_autotest, test_rib);
 REGISTER_TEST_COMMAND(rib_slow_autotest, test_slow_rib);
app/test/test_rib6.c +20 -2
index c77df11298..9d0e3cb55e 100644
@@ -3,14 +3,31 @@
  * Copyright(c) 2019 Intel Corporation
  */
 
+#include "test.h"
+
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 
 #include <rte_ip.h>
-#include <rte_rib6.h>
 
-#include "test.h"
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_rib6(void)
+{
+	printf("rib6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_slow_rib6(void)
+{
+	printf("slow_rib6 not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+#else
+
+#include <rte_rib6.h>
 
 typedef int32_t (*rte_rib6_test)(void);
 
@@ -368,5 +385,6 @@ test_slow_rib6(void)
 	return unit_test_suite_runner(&rib6_slow_tests);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
 REGISTER_TEST_COMMAND(rib6_autotest, test_rib6);
 REGISTER_TEST_COMMAND(rib6_slow_autotest, test_slow_rib6);
app/test/test_sched.c +13 -1
index 958b631144..ad3e978ea6 100644
@@ -14,8 +14,18 @@
 #include <rte_ether.h>
 #include <rte_ip.h>
 #include <rte_byteorder.h>
-#include <rte_sched.h>
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_sched(void)
+{
+	printf("sched not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
+#include <rte_sched.h>
 
 #define SUBPORT         0
 #define PIPE            1
@@ -204,4 +214,6 @@ test_sched(void)
 	return 0;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(sched_autotest, test_sched);
app/test/test_security.c +1 -1
index 059731b65d..71b11aaa75 100644
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
  */
-
 #include <rte_errno.h>
 #include <rte_log.h>
 #include <rte_memory.h>
 #include <rte_mempool.h>
 #include <rte_ether.h>
+
 #include <rte_security.h>
 #include <rte_security_driver.h>
 
app/test/test_table.c +13 -0
index 95034148cb..2e18e49ba4 100644
@@ -7,6 +7,17 @@
 #include <rte_string_fns.h>
 #include <string.h>
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_table(void)
+{
+	printf("table not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include "test_table.h"
 #include "test_table_pipeline.h"
 #include "test_table_ports.h"
@@ -194,4 +205,6 @@ test_table(void)
 	return ret;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(table_autotest, test_table);
app/test/test_table_acl.c +3 -0
index 0bdf76ab70..83bef0ea57 100644
@@ -2,6 +2,7 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <rte_ip.h>
 #include <rte_string_fns.h>
 #include <rte_hexdump.h>
@@ -728,3 +729,5 @@ test_table_acl(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_combined.c +4 -0
index f72b634bff..0abc5e45c5 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2016 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include "test_table_combined.h"
 #include "test_table.h"
@@ -840,3 +842,5 @@ test_table_hash_cuckoo_combined(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_pipeline.c +4 -0
index 915c451fed..47ae35d2f4 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include <rte_pipeline.h>
 #include <rte_log.h>
@@ -569,3 +571,5 @@ test_table_pipeline(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_ports.c +4 -0
index d921b2e207..f3b5693609 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include "test_table_ports.h"
 #include "test_table.h"
 
@@ -189,3 +191,5 @@ test_port_ring_writer(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_table_tables.c +4 -0
index 4ff6ab16aa..2901490e61 100644
@@ -2,6 +2,8 @@
  * Copyright(c) 2010-2016 Intel Corporation
  */
 
+#ifndef RTE_EXEC_ENV_WINDOWS
+
 #include <string.h>
 #include <rte_byteorder.h>
 #include <rte_table_lpm_ipv6.h>
@@ -1052,3 +1054,5 @@ test_table_hash_cuckoo(void)
 
 	return 0;
 }
+
+#endif /*ifndef RTE_EXEC_ENV_WINDOWS*/
app/test/test_timer_secondary.c +13 -0
index 5795c97f07..234a7ec425 100644
@@ -15,6 +15,17 @@
 #include <rte_random.h>
 
 #include "test.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_timer_secondary(void)
+{
+	printf("timer_secondary not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 #include "process.h"
 
 #define NUM_TIMERS		(1 << 20) /* ~1M timers */
@@ -212,4 +223,6 @@ test_timer_secondary(void)
 	return TEST_FAILED;
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
 REGISTER_TEST_COMMAND(timer_secondary_autotest, test_timer_secondary);
app/test/test_trace.c +28 -4
index 0f9df83c40..e62f9ca10e 100644
@@ -9,6 +9,30 @@
 #include "test.h"
 #include "test_trace.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_trace(void)
+{
+	printf("trace not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_trace_dump(void)
+{
+	printf("trace_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+static int
+test_trace_metadata_dump(void)
+{
+	printf("trace_metadata_dump not supported on Windows, skipping test\n");
+	return TEST_SKIPPED;
+}
+
+#else
+
 static int32_t
 test_trace_point_globbing(void)
 {
@@ -194,8 +218,6 @@ test_trace(void)
 	return unit_test_suite_runner(&trace_tests);
 }
 
-REGISTER_TEST_COMMAND(trace_autotest, test_trace);
-
 static int
 test_trace_dump(void)
 {
@@ -203,12 +225,14 @@ test_trace_dump(void)
 	return 0;
 }
 
-REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
-
 static int
 test_trace_metadata_dump(void)
 {
 	return rte_trace_metadata_dump(stdout);
 }
 
+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/
+
+REGISTER_TEST_COMMAND(trace_autotest, test_trace);
+REGISTER_TEST_COMMAND(trace_dump, test_trace_dump);
 REGISTER_TEST_COMMAND(trace_metadata_dump, test_trace_metadata_dump);
Signature · 1 line
2.34.1.windows.1
#237 lore raw

Re: [PATCH v15 09/11] app/test: skip tests that are not supported yet

26/01/2022 06:10, Jie Zhou:

app/test/test_eal_flags.c line 17

Quoted 5 lines
app/test/test_eal_flags.c +5 -0
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+test_missing_c_flag(void)
+{
+       printf("emissing_c_flag not supported on Windows, skipping test\n");

Typo here, will change to missing_c_flag

[...]

Quoted 1 line

+#endif /*ifdef RTE_EXEC_ENV_WINDOWS*/

I think such comment would be more explicit as /* !RTE_EXEC_ENV_WINDOWS */ when closing a block which is not compiled on Windows.
I will change accordingly.

#238 lore raw

Re: [PATCH v15 09/11] app/test: skip tests that are not supported yet

In reply to Jie Zhou

The changes below are not for skipping test. I guess I can squash it in the name collision patch.

26/01/2022 06:10, Jie Zhou:

Quoted 125 lines
app/test/test_lcores.c +15 -15
@@ -12,7 +12,7 @@
 #include "test.h"
 
 struct thread_context {
-       enum { INIT, ERROR, DONE } state;
+       enum { Thread_INIT, Thread_ERROR, Thread_DONE } state;
        bool lcore_id_any;
        pthread_t id;
        unsigned int *registered_count;
@@ -26,7 +26,7 @@ static void *thread_loop(void *arg)
        lcore_id = rte_lcore_id();
        if (lcore_id != LCORE_ID_ANY) {
                printf("Error: incorrect lcore id for new thread %u\n", lcore_id);
-               t->state = ERROR;
+               t->state = Thread_ERROR;
        }
        if (rte_thread_register() < 0)
                printf("Warning: could not register new thread (this might be expected during this test), reason %s\n",
@@ -36,7 +36,7 @@ static void *thread_loop(void *arg)
                        (!t->lcore_id_any && lcore_id == LCORE_ID_ANY)) {
                printf("Error: could not register new thread, got %u while %sexpecting %u\n",
                        lcore_id, t->lcore_id_any ? "" : "not ", LCORE_ID_ANY);
-               t->state = ERROR;
+               t->state = Thread_ERROR;
        }
        /* Report register happened to the control thread. */
        __atomic_add_fetch(t->registered_count, 1, __ATOMIC_RELEASE);
@@ -49,11 +49,11 @@ static void *thread_loop(void *arg)
        if (lcore_id != LCORE_ID_ANY) {
                printf("Error: could not unregister new thread, %u still assigned\n",
                        lcore_id);
-               t->state = ERROR;
+               t->state = Thread_ERROR;
        }
 
-       if (t->state != ERROR)
-               t->state = DONE;
+       if (t->state != Thread_ERROR)
+               t->state = Thread_DONE;
 
        return NULL;
 }
@@ -74,7 +74,7 @@ test_non_eal_lcores(unsigned int eal_threads_count)
        /* Try to create as many threads as possible. */
        for (i = 0; i < RTE_MAX_LCORE - eal_threads_count; i++) {
                t = &thread_contexts[i];
-               t->state = INIT;
+               t->state = Thread_INIT;
                t->registered_count = &registered_count;
                t->lcore_id_any = false;
                if (pthread_create(&t->id, NULL, thread_loop, t) != 0)
@@ -93,7 +93,7 @@ test_non_eal_lcores(unsigned int eal_threads_count)
        if (eal_threads_count + non_eal_threads_count < RTE_MAX_LCORE)
                goto skip_lcore_any;
        t = &thread_contexts[non_eal_threads_count];
-       t->state = INIT;
+       t->state = Thread_INIT;
        t->registered_count = &registered_count;
        t->lcore_id_any = true;
        if (pthread_create(&t->id, NULL, thread_loop, t) == 0) {
@@ -111,7 +111,7 @@ test_non_eal_lcores(unsigned int eal_threads_count)
        for (i = 0; i < non_eal_threads_count; i++) {
                t = &thread_contexts[i];
                pthread_join(t->id, NULL);
-               if (t->state != DONE)
+               if (t->state != Thread_DONE)
                        ret = -1;
        }
 
@@ -259,7 +259,7 @@ test_non_eal_lcores_callback(unsigned int eal_threads_count)
        }
        /* First thread that expects a valid lcore id. */
        t = &thread_contexts[0];
-       t->state = INIT;
+       t->state = Thread_INIT;
        t->registered_count = &registered_count;
        t->lcore_id_any = false;
        if (pthread_create(&t->id, NULL, thread_loop, t) != 0)
@@ -282,7 +282,7 @@ test_non_eal_lcores_callback(unsigned int eal_threads_count)
        }
        /* Second thread, that expects LCORE_ID_ANY because of init refusal. */
        t = &thread_contexts[1];
-       t->state = INIT;
+       t->state = Thread_INIT;
        t->registered_count = &registered_count;
        t->lcore_id_any = true;
        if (pthread_create(&t->id, NULL, thread_loop, t) != 0)
@@ -310,7 +310,7 @@ test_non_eal_lcores_callback(unsigned int eal_threads_count)
        for (i = 0; i < non_eal_threads_count; i++) {
                t = &thread_contexts[i];
                pthread_join(t->id, NULL);
-               if (t->state != DONE)
+               if (t->state != Thread_DONE)
                        ret = -1;
        }
        if (ret < 0)
@@ -347,7 +347,7 @@ static void *ctrl_thread_loop(void *arg)
        printf("Control thread running successfully\n");
 
        /* Set the thread state to DONE */
-       t->state = DONE;
+       t->state = Thread_DONE;
 
        return NULL;
 }
@@ -360,7 +360,7 @@ test_ctrl_thread(void)
 
        /* Create one control thread */
        t = &ctrl_thread_context;
-       t->state = INIT;
+       t->state = Thread_INIT;
        if (rte_ctrl_thread_create(&t->id, "test_ctrl_threads",
                                        NULL, ctrl_thread_loop, t) != 0)
                return -1;
@@ -372,7 +372,7 @@ test_ctrl_thread(void)
        pthread_join(t->id, NULL);
 
        /* Check if the control thread set the correct state */
-       if (t->state != DONE)
+       if (t->state != Thread_DONE)
                return -1;
 
        return 0;
author
#239 lore raw

PATCH v15 10/11 app/test: replace .sh script with .py script

In reply to Jie Zhou

- Add python script to check if system supports hugepages
- Remove corresponding .sh script
- Replace calling of .sh with corresponding .py in meson.build

---
 app/test/has-hugepage.sh | 11 -----------
 app/test/has_hugepage.py | 26 ++++++++++++++++++++++++++
 app/test/meson.build     |  2 +-
 3 files changed, 27 insertions(+), 12 deletions(-)
 delete mode 100755 app/test/has-hugepage.sh
 create mode 100644 app/test/has_hugepage.py
app/test/has-hugepage.sh deleted +0 -11
deleted file mode 100755
index d600fad319..0000000000
@@ -1,11 +0,0 @@
-#! /bin/sh
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright 2020 Mellanox Technologies, Ltd
-
-if [ "$(uname)" = "Linux" ] ; then
-	cat /proc/sys/vm/nr_hugepages || echo 0
-elif [ "$(uname)" = "FreeBSD" ] ; then
-	echo 1 # assume FreeBSD always has hugepages
-else
-	echo 0
-fi
app/test/has_hugepage.py new file +26 -0
new file mode 100644
index 0000000000..f8e7087d1c
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2021 Microsoft Corporation
+"""This script checks if the system supports huge pages"""
+
+import platform
+import ctypes
+
+os_name = platform.system()
+if os_name == "Linux":
+    try:
+        with open("/proc/sys/vm/nr_hugepages") as file_o:
+            content = file_o.read()
+            print(content)
+    except:
+            print("0")
+
+elif os_name == "FreeBSD":
+    # Assume FreeBSD always has hugepages enabled
+    print("1")
+elif os_name == "Windows":
+    if ctypes.windll.kernel32.GetLargePageMinimum() > 0:
+        print("1")
+    else:
+        print("0")
+else:
+    print("0")
app/test/meson.build +1 -1
index 725a218f4a..4de0dcd7a7 100644
@@ -457,7 +457,7 @@ dpdk_test = executable('dpdk-test',
              driver_install_path),
         install: true)
 
-has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
+has_hugepage = run_command(py3, 'has_hugepage.py').stdout().strip() != '0'
 message('hugepage availability: @0@'.format(has_hugepage))
 
 # some perf tests (eg: memcpy perf autotest)take very long
Signature · 1 line
2.34.1.windows.1
#240 lore raw

Re: [PATCH v15 10/11] app/test: replace .sh script with .py script

26/01/2022 06:10, Jie Zhou:

Quoted 9 lines

- Add python script to check if system supports hugepages
- Remove corresponding .sh script
- Replace calling of .sh with corresponding .py in meson.build

---
 app/test/has-hugepage.sh | 11 -----------
 app/test/has_hugepage.py | 26 ++++++++++++++++++++++++++

The file MAINTAINERS should be updated with the new file name. I will do it before merging if the rest is OK.

author
#241 lore raw

Re: [PATCH v15 10/11] app/test: replace .sh script with .py script

Quoted 5 lines · Thomas Monjalon

26/01/2022 06:10, Jie Zhou:

Quoted 4 lines

- Add python script to check if system supports hugepages
- Remove corresponding .sh script
- Replace calling of .sh with corresponding .py in meson.build

Quoted 9 lines
Quoted 5 lines
---
 app/test/has-hugepage.sh | 11 -----------
 app/test/has_hugepage.py | 26 ++++++++++++++++++++++++++

The file MAINTAINERS should be updated with the new file name. I will do it before merging if the rest is OK.

Thanks Thomas. If you prefer me to submit a follow up patch to update the maintainers file, just please let me know.

#242 lore raw

Re: [PATCH v15 10/11] app/test: replace .sh script with .py script

In reply to Jie Zhou

26/01/2022 06:10, Jie Zhou:

app/test/has_hugepage.py line 15

Quoted 6 lines
app/test/has_hugepage.py new file +6 -0
+    try:
+        with open("/proc/sys/vm/nr_hugepages") as file_o:
+            content = file_o.read()
+            print(content)
+    except:
+            print("0")

flake8 says this line is over-indented, I will fix.

There is another warning that I won't fix:
app/test/has_hugepage.py:14:5: E722 do not use bare 'except'

author
#243 lore raw

PATCH v15 11/11 app/test: enable unit test on Windows

In reply to Jie Zhou

Enable a subset of unit tests for Windows CI

- For driver tests, driver owners should enable corresponding tests when enabling driver for Windows. For example, the cryptodev tests will be enabled by "patch-18949: app/test: enable crypto unit tests on Windows" (which depends on this patchset to be merged).
- For dump tests, currently the tests hang on Windows which require further investigation.
- For telemetry tests, it has POSIX socket specific codes which require replacement for Windows. Will investigate and work on a separate patch.

---
 app/test/meson.build | 76 ++++++++++++++++++++++----------------------
 1 file changed, 38 insertions(+), 38 deletions(-)
app/test/meson.build +38 -38
index 4de0dcd7a7..9d12057f29 100644
@@ -1,12 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-if is_windows
-    build = false
-    reason = 'not supported on Windows'
-    subdir_done()
-endif
-
 if not get_option('tests')
     subdir_done()
 endif
@@ -294,38 +288,44 @@ perf_test_names = [
         'thash_perf_autotest',
 ]
 
-driver_test_names = [
-        'cryptodev_aesni_mb_autotest',
-        'cryptodev_aesni_gcm_autotest',
-        'cryptodev_cn9k_autotest',
-        'cryptodev_cn10k_autotest',
-        'cryptodev_dpaa_sec_autotest',
-        'cryptodev_dpaa2_sec_autotest',
-        'cryptodev_null_autotest',
-        'cryptodev_openssl_autotest',
-        'cryptodev_openssl_asym_autotest',
-        'cryptodev_qat_autotest',
-        'cryptodev_sw_armv8_autotest',
-        'cryptodev_sw_kasumi_autotest',
-        'cryptodev_sw_mvsam_autotest',
-        'cryptodev_sw_snow3g_autotest',
-        'cryptodev_sw_zuc_autotest',
-        'dmadev_autotest',
-        'eventdev_selftest_octeontx',
-        'eventdev_selftest_sw',
-        'rawdev_autotest',
-]
+driver_test_names = []
 
-dump_test_names = [
-        'dump_struct_sizes',
-        'dump_mempool',
-        'dump_malloc_stats',
-        'dump_devargs',
-        'dump_log_types',
-        'dump_ring',
-        'dump_physmem',
-        'dump_memzone',
-]
+dump_test_names = []
+
+if not is_windows
+    driver_test_names += [
+            'cryptodev_aesni_mb_autotest',
+            'cryptodev_aesni_gcm_autotest',
+            'cryptodev_cn9k_autotest',
+            'cryptodev_cn10k_autotest',
+            'cryptodev_dpaa_sec_autotest',
+            'cryptodev_dpaa2_sec_autotest',
+            'cryptodev_null_autotest',
+            'cryptodev_openssl_autotest',
+            'cryptodev_openssl_asym_autotest',
+            'cryptodev_qat_autotest',
+            'cryptodev_sw_armv8_autotest',
+            'cryptodev_sw_kasumi_autotest',
+            'cryptodev_sw_mvsam_autotest',
+            'cryptodev_sw_snow3g_autotest',
+            'cryptodev_sw_zuc_autotest',
+            'dmadev_autotest',
+            'eventdev_selftest_octeontx',
+            'eventdev_selftest_sw',
+            'rawdev_autotest',
+    ]
+
+    dump_test_names += [
+            'dump_struct_sizes',
+            'dump_mempool',
+            'dump_malloc_stats',
+            'dump_devargs',
+            'dump_log_types',
+            'dump_ring',
+            'dump_physmem',
+            'dump_memzone',
+    ]
+endif
 
 # The following linkages are an exception to allow running the
 # unit tests without requiring that the developer install the
@@ -349,7 +349,7 @@ if dpdk_conf.has('RTE_LIB_METRICS')
     test_sources += ['test_metrics.c']
     fast_tests += [['metrics_autotest', true]]
 endif
-if dpdk_conf.has('RTE_LIB_TELEMETRY')
+if not is_windows and dpdk_conf.has('RTE_LIB_TELEMETRY')
     test_sources += ['test_telemetry_json.c', 'test_telemetry_data.c']
     fast_tests += [['telemetry_json_autotest', true], ['telemetry_data_autotest', true]]
 endif
Signature · 1 line
2.34.1.windows.1
#244 lore raw
In reply to Jie Zhou

26/01/2022 06:10, Jie Zhou:

Quoted 7 lines

The goal of this patchset is to enable unit tests in CI for Windows. It mainly contains:
- Replace POSIX specific codes
- Fix some lib and tests per failures investigation
- Add test stubs for not yet supported ones on Windows
- Replace .sh script with .py script for meson.build
- Enable build and run subset of unit tests on Windows

Applied with some minor fixes, thanks.

Quoted 4 lines

Future work:
- Work with CI lab to onboard unit tests for Windows to catch regression
- Investigate issues hit at CI onboarding
- Enable more tests

Yes please follow-up to enable all tests, thank you.