DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] test: allow taking test names from commandline
@ 2021-01-27 17:42 Bruce Richardson
  2021-01-29 20:22 ` Aaron Conole
  2021-04-09 13:27 ` David Marchand
  0 siblings, 2 replies; 8+ messages in thread
From: Bruce Richardson @ 2021-01-27 17:42 UTC (permalink / raw)
  To: dev; +Cc: aconole, Bruce Richardson

While having the ability to run a test based off the DPDK_TEST environment
variable is useful, it's often easier to specify the test name as a
commandline parameter to a test binary. This also allows the test runs to
be saved as part of the shell cmdline history.

This patch adds support for checking all parameters after the EAL ones, and
running all valid autotests requested - either from DPDK_TEST or on the
commandline. This also allows multiple tests to be run in a single
automated session, which is useful for working with components which have
multiple test suites.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 app/test/commands.c | 11 +++++++++++
 app/test/test.c     | 40 +++++++++++++++++++++++++++++++++-------
 app/test/test.h     |  1 +
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/app/test/commands.c b/app/test/commands.c
index d48dd513d7..76f6ee5d23 100644
--- a/app/test/commands.c
+++ b/app/test/commands.c
@@ -381,3 +381,14 @@ int commands_init(void)
 	cmd_autotest_autotest.string_data.str = commands;
 	return 0;
 }
+
+int command_valid(const char *cmd)
+{
+	struct test_command *t;
+
+	TAILQ_FOREACH(t, &commands_list, next) {
+		if (strcmp(t->command, cmd) == 0)
+			return 1;
+	}
+	return 0;
+}
diff --git a/app/test/test.c b/app/test/test.c
index 624dd48042..b4ef2bf22b 100644
--- a/app/test/test.c
+++ b/app/test/test.c
@@ -93,6 +93,9 @@ main(int argc, char **argv)
 {
 #ifdef RTE_LIB_CMDLINE
 	struct cmdline *cl;
+	char *tests[argc]; /* store an array of tests to run */
+	int test_count = 0;
+	int i;
 #endif
 	char *extra_args;
 	int ret;
@@ -147,6 +150,7 @@ main(int argc, char **argv)
 	}

 	argv += ret;
+	argc -= ret;

 	prgname = argv[0];

@@ -165,7 +169,25 @@ main(int argc, char **argv)

 #ifdef RTE_LIB_CMDLINE
 	char *dpdk_test = getenv("DPDK_TEST");
-	if (dpdk_test && strlen(dpdk_test)) {
+
+	if (dpdk_test && strlen(dpdk_test) == 0)
+		dpdk_test = NULL;
+
+	if (dpdk_test && !command_valid(dpdk_test)) {
+		RTE_LOG(WARNING, APP, "Invalid DPDK_TEST value '%s'\n", dpdk_test);
+		dpdk_test = NULL;
+	}
+
+	if (dpdk_test)
+		tests[test_count++] = dpdk_test;
+	for (i = 1; i < argc; i++) {
+		if (!command_valid(argv[i]))
+			RTE_LOG(WARNING, APP, "Invalid test requested: '%s'\n", argv[i]);
+		else
+			tests[test_count++] = argv[i];
+	}
+
+	if (test_count > 0) {
 		char buf[1024];

 		cl = cmdline_new(main_ctx, "RTE>>", 0, 1);
@@ -174,13 +196,17 @@ main(int argc, char **argv)
 			goto out;
 		}

-		snprintf(buf, sizeof(buf), "%s\n", dpdk_test);
-		if (cmdline_in(cl, buf, strlen(buf)) < 0) {
-			printf("error on cmdline input\n");
+		for (i = 0; i < test_count; i++) {
+			snprintf(buf, sizeof(buf), "%s\n", tests[i]);
+			if (cmdline_in(cl, buf, strlen(buf)) < 0) {
+				printf("error on cmdline input\n");

-			ret = -1;
-		} else {
-			ret = last_test_result;
+				ret = -1;
+			} else
+				ret = last_test_result;
+
+			if (ret != 0)
+				break;
 		}
 		cmdline_free(cl);
 		goto out;
diff --git a/app/test/test.h b/app/test/test.h
index b07f6c1ef0..cd047eb26c 100644
--- a/app/test/test.h
+++ b/app/test/test.h
@@ -152,6 +152,7 @@ extern int last_test_result;
 extern const char *prgname;

 int commands_init(void);
+int command_valid(const char *cmd);

 int test_mp_secondary(void);
 int test_timer_secondary(void);
--
2.27.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-04-14 13:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-27 17:42 [dpdk-dev] [PATCH] test: allow taking test names from commandline Bruce Richardson
2021-01-29 20:22 ` Aaron Conole
2021-04-14 13:25   ` David Marchand
2021-04-09 13:27 ` David Marchand
2021-04-09 13:41   ` Bruce Richardson
2021-04-13 16:48     ` Bruce Richardson
2021-04-14  6:12       ` David Marchand
2021-04-14 10:02         ` Bruce Richardson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).