[igt-dev] [PATCH i-g-t 1/1] lib/igt_core.h: Introduce igt_subtest_group_named

janga.rahul.kumar at intel.com janga.rahul.kumar at intel.com
Mon Sep 5 12:53:20 UTC 2022


From: Janga Rahul Kumar <janga.rahul.kumar at intel.com>

igt_subtest_group_named will check for requirements only
when the subtest inside igt_subtest_group_named are executed.

This will help in avoiding the logging related to requirements of
subgroup tests when tests outside the subgroup are executed
individually.

Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
Signed-off-by: Janga Rahul Kumar <janga.rahul.kumar at intel.com>
---
 lib/igt_core.c | 23 +++++++++++++++++++++++
 lib/igt_core.h | 20 ++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index e7425326..7d84e145 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -658,6 +658,29 @@ void __igt_fixture_end(void)
 	siglongjmp(igt_subtest_jmpbuf, 1);
 }
 
+bool __igt_check_subtest_list(const char *subtest_name, ...)
+{
+	va_list valist;
+	bool match = false;
+	char *next_subtest_name = (char *)subtest_name;
+
+	if (!run_single_subtest)
+		return true;
+
+	va_start(valist, *subtest_name);
+
+	while (next_subtest_name != NULL) {
+		if (uwildmat(run_single_subtest, next_subtest_name) != 0)
+			match = true;
+
+		next_subtest_name = va_arg(valist, char *);
+	}
+
+	va_end(valist);
+
+	return match;
+}
+
 /*
  * If the test takes out the machine, in addition to the usual dmesg
  * spam, the kernel may also emit a "death rattle" -- extra debug
diff --git a/lib/igt_core.h b/lib/igt_core.h
index aa98e8ed..774e1893 100644
--- a/lib/igt_core.h
+++ b/lib/igt_core.h
@@ -138,6 +138,7 @@ struct _GKeyFile *igt_load_igtrc(void);
 bool __igt_fixture(void);
 void __igt_fixture_complete(void);
 __noreturn void __igt_fixture_end(void);
+bool __igt_check_subtest_list(const char *subtest_name, ...);
 /**
  * igt_fixture:
  *
@@ -401,6 +402,25 @@ void __igt_subtest_group_restore(int, int);
 			       __igt_subtest_group_restore(igt_unique(__save), \
 							   igt_unique(__desc)))
 
+/**
+ * igt_subtest_group_named:
+ *
+ * Group a set of subtests together with their common setup code
+ *
+ * This macro will execute common setup only when subtests under the
+ * group are ran.
+ */
+#define igt_subtest_group_named(...) for (int igt_unique(__tmpint) = 0, \
+					  igt_unique(__save) = 0, \
+					  igt_unique(__desc) = 0; \
+					  __igt_check_subtest_list(__VA_ARGS__, NULL) && \
+					  igt_unique(__tmpint) < 1 && \
+					  (__igt_subtest_group_save(&igt_unique(__save), \
+								    &igt_unique(__desc)), true); \
+					  igt_unique(__tmpint) ++, \
+					  __igt_subtest_group_restore(igt_unique(__save), \
+								      igt_unique(__desc)))
+
 /**
  * igt_main_args:
  * @extra_short_opts: getopt_long() compliant list with additional short options
-- 
2.25.1



More information about the igt-dev mailing list