[dpdk-dev] [PATCH v2 1/2] test: use env variable to run test if set

Harry van Haaren harry.van.haaren at intel.com
Wed Dec 20 12:16:31 CET 2017


This commit paves the way for the meson tests in the next
patch. With this patch the test binary checks the DPDK_TEST
environment variable and if set, the contents of the var
are inserted on the test app command line, and run.

This allows testing of various different unit tests without
manual interaction with the RTE>> test prompt, instead automating
it using the DPDK_TEST environment variable.

If the DPDK_TEST env variable is not set, or has zero lenght,
the test app behaves as normal.

Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>
---
 test/test/test.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/test/test/test.c b/test/test/test.c
index 0e6ff7c..fb4d475 100644
--- a/test/test/test.c
+++ b/test/test/test.c
@@ -102,6 +102,8 @@ do_recursive_call(void)
 	return -1;
 }
 
+static int last_test_result;
+
 int
 main(int argc, char **argv)
 {
@@ -140,7 +142,27 @@ main(int argc, char **argv)
 	if (cl == NULL) {
 		return -1;
 	}
-	cmdline_interact(cl);
+
+	char *dpdk_test = getenv("DPDK_TEST");
+	if (dpdk_test && strlen(dpdk_test)) {
+		char buf[1024];
+		snprintf(buf, sizeof(buf), "%s\n", dpdk_test);
+		if (cmdline_in(cl, buf, strlen(buf)) < 0) {
+			printf("error on cmdline input\n");
+			return -1;
+		}
+
+		/* check the last unit test suite return, and error out if
+		 * it failed - this causes Meson to pick up the failure.
+		 */
+		if (last_test_result) {
+			cmdline_stdin_exit(cl);
+			exit(-1);
+		}
+
+	} else {
+		cmdline_interact(cl);
+	}
 	cmdline_stdin_exit(cl);
 #endif
 
@@ -231,6 +253,8 @@ unit_test_suite_runner(struct unit_test_suite *suite)
 	printf(" + Tests Failed :      %2d\n", failed);
 	printf(" + ------------------------------------------------------- +\n");
 
+	last_test_result = failed;
+
 	if (failed)
 		return -1;
 
-- 
2.7.4



More information about the dev mailing list