int handle;
igt_skip_on_simulation();
+ igt_subtest_init(argc, argv);
fd = drm_open_any();
handle = gem_create(fd, OBJECT_SIZE);
- printf("Testing contents of newly created object.\n");
- ret = do_read(fd, handle, buf, 0, OBJECT_SIZE);
- igt_assert(ret == 0);
- memset(&expected, 0, sizeof(expected));
- igt_assert(memcmp(expected, buf, sizeof(expected)) == 0);
-
- printf("Testing read beyond end of buffer.\n");
- ret = do_read(fd, handle, buf, OBJECT_SIZE / 2, OBJECT_SIZE);
- igt_assert(ret == -1 && errno == EINVAL);
-
- printf("Testing full write of buffer\n");
- memset(buf, 0, sizeof(buf));
- memset(buf + 1024, 0x01, 1024);
- memset(expected + 1024, 0x01, 1024);
- ret = do_write(fd, handle, buf, 0, OBJECT_SIZE);
- igt_assert(ret == 0);
- ret = do_read(fd, handle, buf, 0, OBJECT_SIZE);
- igt_assert(ret == 0);
- igt_assert(memcmp(buf, expected, sizeof(buf)) == 0);
-
- printf("Testing partial write of buffer\n");
- memset(buf + 4096, 0x02, 1024);
- memset(expected + 4096, 0x02, 1024);
- ret = do_write(fd, handle, buf + 4096, 4096, 1024);
- igt_assert(ret == 0);
- ret = do_read(fd, handle, buf, 0, OBJECT_SIZE);
- igt_assert(ret == 0);
- igt_assert(memcmp(buf, expected, sizeof(buf)) == 0);
-
- printf("Testing partial read of buffer\n");
- ret = do_read(fd, handle, buf, 512, 1024);
- igt_assert(ret == 0);
- igt_assert(memcmp(buf, expected + 512, 1024) == 0);
-
- printf("Testing read of bad buffer handle\n");
- ret = do_read(fd, 1234, buf, 0, 1024);
- igt_assert(ret == -1 && errno == ENOENT);
-
- printf("Testing write of bad buffer handle\n");
- ret = do_write(fd, 1234, buf, 0, 1024);
- igt_assert(ret == -1 && errno == ENOENT);
+ igt_subtest("new-obj") {
+ printf("Testing contents of newly created object.\n");
+ ret = do_read(fd, handle, buf, 0, OBJECT_SIZE);
+ igt_assert(ret == 0);
+ memset(&expected, 0, sizeof(expected));
+ igt_assert(memcmp(expected, buf, sizeof(expected)) == 0);
+ }
+
+ igt_subtest("beyond-EOB") {
+ printf("Testing read beyond end of buffer.\n");
+ ret = do_read(fd, handle, buf, OBJECT_SIZE / 2, OBJECT_SIZE);
+ igt_assert(ret == -1 && errno == EINVAL);
+ }
+
+ igt_subtest("read-write") {
+ printf("Testing full write of buffer\n");
+ memset(buf, 0, sizeof(buf));
+ memset(buf + 1024, 0x01, 1024);
+ memset(expected + 1024, 0x01, 1024);
+ ret = do_write(fd, handle, buf, 0, OBJECT_SIZE);
+ igt_assert(ret == 0);
+ ret = do_read(fd, handle, buf, 0, OBJECT_SIZE);
+ igt_assert(ret == 0);
+ igt_assert(memcmp(buf, expected, sizeof(buf)) == 0);
+
+ printf("Testing partial write of buffer\n");
+ memset(buf + 4096, 0x02, 1024);
+ memset(expected + 4096, 0x02, 1024);
+ ret = do_write(fd, handle, buf + 4096, 4096, 1024);
+ igt_assert(ret == 0);
+ ret = do_read(fd, handle, buf, 0, OBJECT_SIZE);
+ igt_assert(ret == 0);
+ igt_assert(memcmp(buf, expected, sizeof(buf)) == 0);
+
+ printf("Testing partial read of buffer\n");
+ ret = do_read(fd, handle, buf, 512, 1024);
+ igt_assert(ret == 0);
+ igt_assert(memcmp(buf, expected + 512, 1024) == 0);
+ }
+
+ igt_subtest("read-bad-handle") {
+ printf("Testing read of bad buffer handle\n");
+ ret = do_read(fd, 1234, buf, 0, 1024);
+ igt_assert(ret == -1 && errno == ENOENT);
+ }
+
+ igt_subtest("write-bad-handle") {
+ printf("Testing write of bad buffer handle\n");
+ ret = do_write(fd, 1234, buf, 0, 1024);
+ igt_assert(ret == -1 && errno == ENOENT);
+ }
close(fd);