summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-08-14 12:45:05 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-08-14 12:45:05 +0200
commitc8a963a94c19b6d965454d09810e6d6c6b3db7f7 (patch)
tree00092581e7d3a2004154b2a19e6d73dabfe06fc4
parent1532af19d9bf962412bb150393aa10d13fae91d6 (diff)
tests: add igt_subtest_f for snprintf'ing testnamessnprintf
Useful when stitching together combinatorial testnames. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--lib/drmtest.h7
-rw-r--r--tests/gem_partial_pwrite_pread.c11
-rw-r--r--tests/gem_write_read_ring_switch.c12
3 files changed, 14 insertions, 16 deletions
diff --git a/lib/drmtest.h b/lib/drmtest.h
index d9a11e18..fb447b89 100644
--- a/lib/drmtest.h
+++ b/lib/drmtest.h
@@ -100,6 +100,13 @@ void igt_progress(const char *header, uint64_t i, uint64_t total);
jmp_buf igt_subtest_jmpbuf;
void igt_subtest_init(int argc, char **argv);
bool __igt_run_subtest(const char *subtest_name);
+#define igt_subtest_f(format, args...) \
+ for (char __tmpchar ## __LINE__ [256]; \
+ snprintf(__tmpchar ## __LINE__, sizeof(__tmpchar ## __LINE__), \
+ format, args), \
+ __igt_run_subtest((__tmpchar ## __LINE__)) && \
+ (setjmp(igt_subtest_jmpbuf) == 0); \
+ igt_success())
#define igt_subtest(name) for (; __igt_run_subtest((name)) && \
(setjmp(igt_subtest_jmpbuf) == 0); \
igt_success())
diff --git a/tests/gem_partial_pwrite_pread.c b/tests/gem_partial_pwrite_pread.c
index ce2f1c81..814c552b 100644
--- a/tests/gem_partial_pwrite_pread.c
+++ b/tests/gem_partial_pwrite_pread.c
@@ -254,21 +254,16 @@ static void test_partial_read_writes(void)
static void do_tests(int cache_level, const char *suffix)
{
- char name[80];
-
if (cache_level != -1)
gem_set_caching(fd, scratch_bo->handle, cache_level);
- snprintf(name, sizeof(name), "reads%s", suffix);
- igt_subtest(name)
+ igt_subtest_f("reads%s", suffix)
test_partial_reads();
- snprintf(name, sizeof(name), "writes%s", suffix);
- igt_subtest(name)
+ igt_subtest_f("write%s", suffix)
test_partial_writes();
- snprintf(name, sizeof(name), "writes-after-reads%s", suffix);
- igt_subtest(name)
+ igt_subtest_f("writes-after-reads%s", suffix)
test_partial_read_writes();
}
diff --git a/tests/gem_write_read_ring_switch.c b/tests/gem_write_read_ring_switch.c
index 21eef64a..76644ea2 100644
--- a/tests/gem_write_read_ring_switch.c
+++ b/tests/gem_write_read_ring_switch.c
@@ -56,7 +56,7 @@ int fd;
*/
#define COLOR 0xffffffff
-static void run_test(int ring, const char *testname)
+static void run_test(int ring)
{
uint32_t *ptr;
int i;
@@ -66,8 +66,6 @@ static void run_test(int ring, const char *testname)
if (ring == I915_EXEC_RENDER)
gem_require_ring(fd, I915_EXEC_BLT);
- printf("running subtest %s\n", testname);
-
target_bo = drm_intel_bo_alloc(bufmgr, "target bo", 4096, 4096);
if (!target_bo) {
fprintf(stderr, "failed to alloc target buffer\n");
@@ -194,15 +192,13 @@ int main(int argc, char **argv)
for (i = 0; i < ARRAY_SIZE(tests); i++) {
igt_subtest(tests[i].name)
- run_test(tests[i].ring, tests[i].name);
+ run_test(tests[i].ring);
}
igt_fork_signal_helper();
for (i = 0; i < ARRAY_SIZE(tests); i++) {
- char name[180];
- snprintf(name, sizeof(name), "%s-interruptible", tests[i].name);
- igt_subtest(name)
- run_test(tests[i].ring, name);
+ igt_subtest_f("%s-interruptible", tests[i].name);
+ run_test(tests[i].ring);
}
igt_stop_signal_helper();