[Intel-gfx] [PATCH i-g-t 14/15] lib/igt_core: introduce --loop.
Rodrigo Vivi
rodrigo.vivi at intel.com
Mon Jan 12 10:22:06 PST 2015
This loop option can help intensive tests everywhere.
The only caveat is that tests reimplementing main function has to implement his own loop.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
lib/igt_core.c | 11 +++++++++++
lib/igt_core.h | 18 ++++++++++++------
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/lib/igt_core.c b/lib/igt_core.c
index bd655be..3724348 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -234,6 +234,7 @@ enum {
OPT_DESCRIPTION,
OPT_DEBUG,
OPT_INTERACTIVE_DEBUG,
+ OPT_LOOP,
OPT_HELP = 'h'
};
@@ -405,6 +406,7 @@ static void print_usage(const char *help_str, bool output_on_stderr)
" --run-subtest <pattern>\n"
" --debug[=log-domain]\n"
" --interactive-debug[=domain]\n"
+ " --loop[=times]\n"
" --help-description\n"
" --help\n");
if (help_str)
@@ -438,6 +440,7 @@ static int common_init(int argc, char **argv,
{"help-description", 0, 0, OPT_DESCRIPTION},
{"debug", optional_argument, 0, OPT_DEBUG},
{"interactive-debug", optional_argument, 0, OPT_INTERACTIVE_DEBUG},
+ {"loop", optional_argument, 0, OPT_LOOP},
{"help", 0, 0, OPT_HELP},
{0, 0, 0, 0}
};
@@ -520,9 +523,17 @@ static int common_init(int argc, char **argv,
std_short_opts);
assert(ret >= 0);
+ igt_loop = 0;
+
while ((c = getopt_long(argc, argv, short_opts, combined_opts,
&option_index)) != -1) {
switch(c) {
+ case OPT_LOOP:
+ if (optarg && strlen(optarg) > 0)
+ igt_loop = atoi(optarg);
+ else
+ igt_loop = -1;
+ break;
case OPT_INTERACTIVE_DEBUG:
if (optarg && strlen(optarg) > 0)
igt_interactive_debug = strdup(optarg);
diff --git a/lib/igt_core.h b/lib/igt_core.h
index 32041f6..4dbe893 100644
--- a/lib/igt_core.h
+++ b/lib/igt_core.h
@@ -175,9 +175,11 @@ bool igt_only_list_subtests(void);
#define igt_main \
static void igt_tokencat(__real_main, __LINE__)(void); \
int main(int argc, char **argv) { \
- igt_subtest_init(argc, argv); \
- igt_tokencat(__real_main, __LINE__)(); \
- igt_exit(); \
+ do { \
+ igt_subtest_init(argc, argv); \
+ igt_tokencat(__real_main, __LINE__)(); \
+ igt_exit(); \
+ } while (igt_loop == -1 || --igt_loop); \
} \
static void igt_tokencat(__real_main, __LINE__)(void) \
@@ -198,9 +200,11 @@ void igt_simple_init_parse_opts(int argc, char **argv,
#define igt_simple_main \
static void igt_tokencat(__real_main, __LINE__)(void); \
int main(int argc, char **argv) { \
- igt_simple_init(argc, argv); \
- igt_tokencat(__real_main, __LINE__)(); \
- igt_exit(); \
+ do { \
+ igt_simple_init(argc, argv); \
+ igt_tokencat(__real_main, __LINE__)(); \
+ igt_exit(); \
+ } while (igt_loop == -1 || --igt_loop); \
} \
static void igt_tokencat(__real_main, __LINE__)(void) \
@@ -511,6 +515,8 @@ bool igt_run_in_simulation(void);
void igt_skip_on_simulation(void);
+int igt_loop;
+
const char *igt_interactive_debug;
/* structured logging */
--
2.1.0
More information about the Intel-gfx
mailing list