summaryrefslogtreecommitdiff
path: root/tests/sw_sync.c
diff options
context:
space:
mode:
authorRobert Foss <robert.foss@collabora.com>2016-12-07 15:07:52 -0500
committerTomeu Vizoso <tomeu.vizoso@collabora.com>2016-12-14 09:24:11 +0100
commit5a2c2f80947c94cfc4a829eaeb9175274a2a16ee (patch)
tree4c9eb326c802c1cf7ded40b3eb9e05500a82bb3d /tests/sw_sync.c
parenta9c7f552e8717609e9bf26b781a54172837a2148 (diff)
tests/sw_sync: Add subtest test_sync_merge_invalid
Add subtest test_sync_merge_invalid that tests merging invalid fences. Signed-off-by: Robert Foss <robert.foss@collabora.com> Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Diffstat (limited to 'tests/sw_sync.c')
-rw-r--r--tests/sw_sync.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/sw_sync.c b/tests/sw_sync.c
index ac17e447..44ddab78 100644
--- a/tests/sw_sync.c
+++ b/tests/sw_sync.c
@@ -172,6 +172,44 @@ static void test_sync_busy(void)
close(timeline);
}
+static void test_sync_merge_invalid(void)
+{
+ int in_fence;
+ int fence_invalid;
+ int fence_merge;
+ int timeline;
+ char tmppath[] = "/tmp/igt-XXXXXX";
+ int skip = 0;
+
+ timeline = sw_sync_timeline_create();
+ in_fence = sw_sync_fence_create(timeline, 1);
+
+ fence_invalid = -1;
+ fence_merge = sync_merge(in_fence, fence_invalid);
+ igt_assert_f(fence_merge < 0, "Verify invalid fd (-1) handling");
+
+ fence_invalid = drm_open_driver(DRIVER_ANY);
+ fence_merge = sync_merge(in_fence, fence_invalid);
+ igt_assert_f(fence_merge < 0, "Verify invalid fd (device fd) handling");
+
+ fence_invalid = mkstemp(tmppath);
+ if (fence_invalid == -1) {
+ skip = 1;
+ goto out;
+ }
+ unlink(tmppath);
+ fence_invalid = drm_open_driver(DRIVER_ANY);
+ fence_merge = sync_merge(in_fence, fence_invalid);
+ close(fence_invalid);
+ igt_assert_f(fence_merge < 0, "Verify invalid fd (file fd) handling");
+
+out:
+ close(in_fence);
+ close(fence_merge);
+ close(timeline);
+ igt_require(skip == 0);
+}
+
static void test_sync_merge(void)
{
int in_fence[3];
@@ -746,6 +784,9 @@ igt_main
igt_subtest("sync_busy")
test_sync_busy();
+ igt_subtest("sync_merge_invalid")
+ test_sync_merge_invalid();
+
igt_subtest("sync_merge")
test_sync_merge();