All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH liburing 0/6] More wor on updating exit codes to use
@ 2022-07-06  3:40 Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 1/6] tests: do not report an error message when return ret that might be a skip Eli Schwartz
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

Eli Schwartz (6):
  tests: do not report an error message when return ret that might be a
    skip
  tests: handle some skips that used a goto to enter cleanup
  tests: more work on updating exit codes to use enum-based status
    reporting
  tests: mention in a status message that this is a skip
  tests: migrate a skip that used a goto to enter cleanup
  tests: correctly exit with failure in a looped test

 test/accept-reuse.c            |  2 +-
 test/accept-test.c             |  7 +++++--
 test/accept.c                  |  8 ++++----
 test/connect.c                 |  2 +-
 test/double-poll-crash.c       |  4 ++--
 test/fadvise.c                 |  2 +-
 test/fallocate.c               | 18 ++++++++++++------
 test/file-register.c           |  4 ++--
 test/file-update.c             |  8 +++++---
 test/files-exit-hang-poll.c    |  6 ++++--
 test/files-exit-hang-timeout.c | 10 ++++++----
 test/fixed-reuse.c             |  2 +-
 test/hardlink.c                |  9 ++++++---
 test/io-cancel.c               | 14 +++++++-------
 test/io_uring_enter.c          |  8 ++++----
 test/io_uring_register.c       |  6 +++---
 test/io_uring_setup.c          |  7 ++++---
 test/iopoll.c                  |  6 +++---
 test/lfs-openat-write.c        |  4 +++-
 test/link-timeout.c            |  7 ++++---
 test/link.c                    |  9 +++++----
 test/madvise.c                 |  4 ++--
 test/mkdir.c                   | 14 +++++++++-----
 test/msg-ring.c                | 13 +++++++------
 test/multicqes_drain.c         | 11 ++++++-----
 25 files changed, 107 insertions(+), 78 deletions(-)


base-commit: fa67f6aedcfdaffc14cbf0b631253477b2565ef0
-- 
2.35.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH liburing 1/6] tests: do not report an error message when return ret that might be a skip
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
@ 2022-07-06  3:40 ` Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 2/6] tests: handle some skips that used a goto to enter cleanup Eli Schwartz
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

We are going to update these functions to distinguish between pass/skip,
so ret might be nonzero but have handled its own non-error message.

Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
 test/fallocate.c   | 8 ++++++--
 test/file-update.c | 4 +++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/test/fallocate.c b/test/fallocate.c
index 6cb57e0..a9bf6fd 100644
--- a/test/fallocate.c
+++ b/test/fallocate.c
@@ -230,7 +230,9 @@ int main(int argc, char *argv[])
 
 	ret = test_fallocate(&ring);
 	if (ret) {
-		fprintf(stderr, "test_fallocate failed\n");
+		if (ret != T_EXIT_SKIP) {
+			fprintf(stderr, "test_fallocate failed\n");
+		}
 		return ret;
 	}
 
@@ -242,7 +244,9 @@ int main(int argc, char *argv[])
 
 	ret = test_fallocate_rlimit(&ring);
 	if (ret) {
-		fprintf(stderr, "test_fallocate_rlimit failed\n");
+		if (ret != T_EXIT_SKIP) {
+			fprintf(stderr, "test_fallocate_rlimit failed\n");
+		}
 		return ret;
 	}
 
diff --git a/test/file-update.c b/test/file-update.c
index 97db95a..b8039c9 100644
--- a/test/file-update.c
+++ b/test/file-update.c
@@ -165,7 +165,9 @@ int main(int argc, char *argv[])
 
 	ret = test_sqe_update(&r1);
 	if (ret) {
-		fprintf(stderr, "test_sqe_update failed\n");
+		if (ret != T_EXIT_SKIP) {
+			fprintf(stderr, "test_sqe_update failed\n");
+		}
 		return ret;
 	}
 
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH liburing 2/6] tests: handle some skips that used a goto to enter cleanup
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 1/6] tests: do not report an error message when return ret that might be a skip Eli Schwartz
@ 2022-07-06  3:40 ` Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 3/6] tests: more work on updating exit codes to use enum-based status reporting Eli Schwartz
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

We cannot use the general cleanup-and-succeed here. These were
improperly ported to the exitcode reporting.

Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
 test/accept-test.c             |  7 +++++--
 test/fallocate.c               | 10 ++++++----
 test/files-exit-hang-poll.c    |  6 ++++--
 test/files-exit-hang-timeout.c |  6 ++++--
 test/hardlink.c                |  9 ++++++---
 5 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/test/accept-test.c b/test/accept-test.c
index a898360..99f6080 100644
--- a/test/accept-test.c
+++ b/test/accept-test.c
@@ -61,7 +61,7 @@ int main(int argc, char *argv[])
 	if (!ret) {
 		if (cqe->res == -EBADF || cqe->res == -EINVAL) {
 			fprintf(stdout, "Accept not supported, skipping\n");
-			goto out;
+			goto skip;
 		} else if (cqe->res < 0) {
 			fprintf(stderr, "cqe error %d\n", cqe->res);
 			goto err;
@@ -71,9 +71,12 @@ int main(int argc, char *argv[])
 		return T_EXIT_FAIL;
 	}
 
-out:
 	io_uring_queue_exit(&ring);
 	return T_EXIT_PASS;
+
+skip:
+	io_uring_queue_exit(&ring);
+	return T_EXIT_SKIP;
 err:
 	io_uring_queue_exit(&ring);
 	return T_EXIT_FAIL;
diff --git a/test/fallocate.c b/test/fallocate.c
index a9bf6fd..e804ca5 100644
--- a/test/fallocate.c
+++ b/test/fallocate.c
@@ -67,14 +67,15 @@ static int test_fallocate_rlimit(struct io_uring *ring)
 	if (cqe->res == -EINVAL) {
 		fprintf(stdout, "Fallocate not supported, skipping\n");
 		no_fallocate = 1;
-		goto out;
+		goto skip;
 	} else if (cqe->res != -EFBIG) {
 		fprintf(stderr, "Expected -EFBIG: %d\n", cqe->res);
 		goto err;
 	}
 	io_uring_cqe_seen(ring, cqe);
-out:
 	return 0;
+skip:
+	return T_EXIT_SKIP;
 err:
 	return 1;
 }
@@ -117,7 +118,7 @@ static int test_fallocate(struct io_uring *ring)
 	if (cqe->res == -EINVAL) {
 		fprintf(stdout, "Fallocate not supported, skipping\n");
 		no_fallocate = 1;
-		goto out;
+		goto skip;
 	}
 	if (cqe->res) {
 		fprintf(stderr, "cqe->res=%d\n", cqe->res);
@@ -136,8 +137,9 @@ static int test_fallocate(struct io_uring *ring)
 		goto err;
 	}
 
-out:
 	return 0;
+skip:
+	return T_EXIT_SKIP;
 err:
 	return 1;
 }
diff --git a/test/files-exit-hang-poll.c b/test/files-exit-hang-poll.c
index 432d89f..0c609f1 100644
--- a/test/files-exit-hang-poll.c
+++ b/test/files-exit-hang-poll.c
@@ -93,7 +93,7 @@ int main(int argc, char *argv[])
 		}
 		if (i == 99) {
 			printf("Gave up on finding a port, skipping\n");
-			goto out;
+			goto skip;
 		}
 	}
 
@@ -123,7 +123,9 @@ int main(int argc, char *argv[])
 		return T_EXIT_FAIL;
 	}
 
-out:
 	io_uring_queue_exit(&ring);
 	return T_EXIT_PASS;
+skip:
+	io_uring_queue_exit(&ring);
+	return T_EXIT_SKIP;
 }
diff --git a/test/files-exit-hang-timeout.c b/test/files-exit-hang-timeout.c
index a19afc6..318f0e1 100644
--- a/test/files-exit-hang-timeout.c
+++ b/test/files-exit-hang-timeout.c
@@ -99,7 +99,7 @@ int main(int argc, char *argv[])
 		}
 		if (i == 99) {
 			printf("Gave up on finding a port, skipping\n");
-			goto out;
+			goto skip;
 		}
 	}
 
@@ -129,7 +129,9 @@ int main(int argc, char *argv[])
 		return T_EXIT_FAIL;
 	}
 
-out:
 	io_uring_queue_exit(&ring);
 	return T_EXIT_PASS;
+skip:
+	io_uring_queue_exit(&ring);
+	return T_EXIT_SKIP;
 }
diff --git a/test/hardlink.c b/test/hardlink.c
index f2b8182..29395c3 100644
--- a/test/hardlink.c
+++ b/test/hardlink.c
@@ -98,7 +98,7 @@ int main(int argc, char *argv[])
 	if (ret < 0) {
 		if (ret == -EBADF || ret == -EINVAL) {
 			fprintf(stdout, "linkat not supported, skipping\n");
-			goto out;
+			goto skip;
 		}
 		fprintf(stderr, "linkat: %s\n", strerror(-ret));
 		goto err1;
@@ -121,7 +121,11 @@ int main(int argc, char *argv[])
 		goto err2;
 	}
 
-out:
+	unlinkat(AT_FDCWD, linkname, 0);
+	unlinkat(AT_FDCWD, target, 0);
+	io_uring_queue_exit(&ring);
+	return T_EXIT_SKIP;
+skip:
 	unlinkat(AT_FDCWD, linkname, 0);
 	unlinkat(AT_FDCWD, target, 0);
 	io_uring_queue_exit(&ring);
@@ -134,4 +138,3 @@ err:
 	io_uring_queue_exit(&ring);
 	return T_EXIT_FAIL;
 }
-
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH liburing 3/6] tests: more work on updating exit codes to use enum-based status reporting
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 1/6] tests: do not report an error message when return ret that might be a skip Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 2/6] tests: handle some skips that used a goto to enter cleanup Eli Schwartz
@ 2022-07-06  3:40 ` Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 4/6] tests: mention in a status message that this is a skip Eli Schwartz
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
 test/accept-reuse.c            |  2 +-
 test/accept.c                  |  8 ++++----
 test/connect.c                 |  2 +-
 test/double-poll-crash.c       |  4 ++--
 test/fadvise.c                 |  2 +-
 test/file-register.c           |  2 +-
 test/file-update.c             |  4 ++--
 test/files-exit-hang-timeout.c |  4 ++--
 test/fixed-reuse.c             |  2 +-
 test/io-cancel.c               | 14 +++++++-------
 test/io_uring_enter.c          |  8 ++++----
 test/io_uring_register.c       |  6 +++---
 test/io_uring_setup.c          |  7 ++++---
 test/iopoll.c                  |  6 +++---
 test/lfs-openat-write.c        |  4 +++-
 test/link-timeout.c            |  7 ++++---
 test/link.c                    |  9 +++++----
 test/madvise.c                 |  4 ++--
 test/mkdir.c                   |  5 +++--
 test/msg-ring.c                | 13 +++++++------
 test/multicqes_drain.c         |  5 +++--
 21 files changed, 63 insertions(+), 55 deletions(-)

diff --git a/test/accept-reuse.c b/test/accept-reuse.c
index ff99da8..7822433 100644
--- a/test/accept-reuse.c
+++ b/test/accept-reuse.c
@@ -103,7 +103,7 @@ int main(int argc, char **argv)
 	ret = listen(listen_fd, SOMAXCONN);
 	if (ret < 0) {
 		perror("listen");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	memset(&sa, 0, sizeof(sa));
diff --git a/test/accept.c b/test/accept.c
index 0463173..f0d84f4 100644
--- a/test/accept.c
+++ b/test/accept.c
@@ -510,7 +510,7 @@ static int test_accept_cancel(unsigned usecs, unsigned int nr, bool multishot)
 	int fd, i, ret;
 
 	if (multishot && no_accept_multi)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(32, &m_io_uring, 0);
 	assert(ret >= 0);
@@ -605,7 +605,7 @@ static int test_multishot_accept(int count, bool before, bool overflow)
 	};
 
 	if (no_accept_multi)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(MAX_FDS + 10, &m_io_uring, 0);
 	assert(ret >= 0);
@@ -695,7 +695,7 @@ static int test_multishot_fixed_accept(void)
 	};
 
 	if (no_accept_multi)
-		return 0;
+		return T_EXIT_SKIP;
 
 	memset(fd, -1, sizeof(fd));
 	ret = io_uring_queue_init(MAX_FDS + 10, &m_io_uring, 0);
@@ -742,7 +742,7 @@ int main(int argc, char *argv[])
 		return ret;
 	}
 	if (no_accept)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = test_accept(2, false);
 	if (ret) {
diff --git a/test/connect.c b/test/connect.c
index d31bd05..b8f8f22 100644
--- a/test/connect.c
+++ b/test/connect.c
@@ -380,7 +380,7 @@ int main(int argc, char *argv[])
 		return T_EXIT_FAIL;
 	}
 	if (no_connect)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = test_connect(&ring);
 	if (ret == -1) {
diff --git a/test/double-poll-crash.c b/test/double-poll-crash.c
index 0d6154b..a0cc985 100644
--- a/test/double-poll-crash.c
+++ b/test/double-poll-crash.c
@@ -123,10 +123,10 @@ int main(int argc, char *argv[])
 
   mmap_ret = mmap((void *)0x20000000ul, 0x1000000ul, 7ul, 0x32ul, -1, 0ul);
   if (mmap_ret == MAP_FAILED)
-    return 0;
+    return T_EXIT_SKIP;
   mmap_ret = mmap((void *)0x21000000ul, 0x1000ul, 0ul, 0x32ul, -1, 0ul);
   if (mmap_ret == MAP_FAILED)
-    return 0;
+    return T_EXIT_SKIP;
   intptr_t res = 0;
   *(uint32_t*)0x20000484 = 0;
   *(uint32_t*)0x20000488 = 0;
diff --git a/test/fadvise.c b/test/fadvise.c
index d259223..889f447 100644
--- a/test/fadvise.c
+++ b/test/fadvise.c
@@ -73,7 +73,7 @@ static int do_fadvise(struct io_uring *ring, int fd, off_t offset, off_t len,
 	if (ret == -EINVAL || ret == -EBADF) {
 		fprintf(stdout, "Fadvise not supported, skipping\n");
 		unlink(".fadvise.tmp");
-		exit(0);
+		exit(T_EXIT_SKIP);
 	} else if (ret) {
 		fprintf(stderr, "cqe->res=%d\n", cqe->res);
 	}
diff --git a/test/file-register.c b/test/file-register.c
index e713233..ae35c37 100644
--- a/test/file-register.c
+++ b/test/file-register.c
@@ -1034,7 +1034,7 @@ int main(int argc, char *argv[])
 	}
 
 	if (no_update)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = test_additions(&ring);
 	if (ret) {
diff --git a/test/file-update.c b/test/file-update.c
index b8039c9..57355ed 100644
--- a/test/file-update.c
+++ b/test/file-update.c
@@ -131,7 +131,7 @@ static int test_sqe_update(struct io_uring *ring)
 	free(fds);
 	if (ret == -EINVAL) {
 		fprintf(stdout, "IORING_OP_FILES_UPDATE not supported, skipping\n");
-		return 0;
+		return T_EXIT_SKIP;
 	}
 	return ret != 10;
 }
@@ -171,5 +171,5 @@ int main(int argc, char *argv[])
 		return ret;
 	}
 
-	return 0;
+	return T_EXIT_PASS;
 }
diff --git a/test/files-exit-hang-timeout.c b/test/files-exit-hang-timeout.c
index 318f0e1..45f01ea 100644
--- a/test/files-exit-hang-timeout.c
+++ b/test/files-exit-hang-timeout.c
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
 			break;
 		if (errno != EADDRINUSE) {
 			fprintf(stderr, "bind: %s\n", strerror(errno));
-			return 1;
+			return T_EXIT_FAIL;
 		}
 		if (i == 99) {
 			printf("Gave up on finding a port, skipping\n");
@@ -105,7 +105,7 @@ int main(int argc, char *argv[])
 
 	if (listen(sock_listen_fd, BACKLOG) < 0) {
 		perror("Error listening on socket\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	if (setup_io_uring())
diff --git a/test/fixed-reuse.c b/test/fixed-reuse.c
index 8bcda4b..401251a 100644
--- a/test/fixed-reuse.c
+++ b/test/fixed-reuse.c
@@ -132,7 +132,7 @@ int main(int argc, char *argv[])
 		return T_EXIT_FAIL;
 	}
 	if (!(p.features & IORING_FEAT_CQE_SKIP))
-		return 0;
+		return T_EXIT_SKIP;
 
 	memset(files, -1, sizeof(files));
 	ret = io_uring_register_files(&ring, files, ARRAY_SIZE(files));
diff --git a/test/io-cancel.c b/test/io-cancel.c
index 13bf84f..dfe4e43 100644
--- a/test/io-cancel.c
+++ b/test/io-cancel.c
@@ -508,26 +508,26 @@ int main(int argc, char *argv[])
 	int i, ret;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	if (test_dont_cancel_another_ring()) {
 		fprintf(stderr, "test_dont_cancel_another_ring() failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	if (test_cancel_req_across_fork()) {
 		fprintf(stderr, "test_cancel_req_across_fork() failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	if (test_cancel_inflight_exit()) {
 		fprintf(stderr, "test_cancel_inflight_exit() failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	if (test_sqpoll_cancel_iowq_requests()) {
 		fprintf(stderr, "test_sqpoll_cancel_iowq_requests() failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	t_create_file(fname, FILE_SIZE);
@@ -548,8 +548,8 @@ int main(int argc, char *argv[])
 	}
 
 	unlink(fname);
-	return 0;
+	return T_EXIT_PASS;
 err:
 	unlink(fname);
-	return 1;
+	return T_EXIT_FAIL;
 }
diff --git a/test/io_uring_enter.c b/test/io_uring_enter.c
index ef00bf6..941c5b7 100644
--- a/test/io_uring_enter.c
+++ b/test/io_uring_enter.c
@@ -185,14 +185,14 @@ int main(int argc, char **argv)
 	unsigned completed, dropped;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(IORING_MAX_ENTRIES, &ring, 0);
 	if (ret == -ENOMEM)
 		ret = io_uring_queue_init(IORING_MAX_ENTRIES_FALLBACK, &ring, 0);
 	if (ret < 0) {
 		perror("io_uring_queue_init");
-		exit(1);
+		exit(T_EXIT_FAIL);
 	}
 	mask = *sq->kring_mask;
 
@@ -254,8 +254,8 @@ int main(int argc, char **argv)
 	}
 
 	if (!status)
-		return 0;
+		return T_EXIT_PASS;
 
 	fprintf(stderr, "FAIL\n");
-	return -1;
+	return T_EXIT_FAIL;
 }
diff --git a/test/io_uring_register.c b/test/io_uring_register.c
index 05868e1..311bfdf 100644
--- a/test/io_uring_register.c
+++ b/test/io_uring_register.c
@@ -459,20 +459,20 @@ int main(int argc, char **argv)
 	struct rlimit rlim;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	/* setup globals */
 	pagesize = getpagesize();
 	ret = getrlimit(RLIMIT_MEMLOCK, &rlim);
 	if (ret < 0) {
 		perror("getrlimit");
-		return 1;
+		return T_EXIT_PASS;
 	}
 	mlock_limit = rlim.rlim_cur;
 	devnull = open("/dev/null", O_RDWR);
 	if (devnull < 0) {
 		perror("open /dev/null");
-		exit(1);
+		exit(T_EXIT_FAIL);
 	}
 
 	/* invalid fd */
diff --git a/test/io_uring_setup.c b/test/io_uring_setup.c
index 7752c97..3c50e2a 100644
--- a/test/io_uring_setup.c
+++ b/test/io_uring_setup.c
@@ -15,6 +15,7 @@
 #include <errno.h>
 #include <sys/sysinfo.h>
 #include "liburing.h"
+#include "helpers.h"
 
 #include "../syscall.h"
 
@@ -130,7 +131,7 @@ main(int argc, char **argv)
 	struct io_uring_params p;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	memset(&p, 0, sizeof(p));
 	status |= try_io_uring_setup(0, &p, -1, EINVAL);
@@ -179,8 +180,8 @@ main(int argc, char **argv)
 	}
 
 	if (!status)
-		return 0;
+		return T_EXIT_PASS;
 
 	fprintf(stderr, "FAIL\n");
-	return -1;
+	return T_EXIT_FAIL;
 }
diff --git a/test/iopoll.c b/test/iopoll.c
index f3c22d6..51b192f 100644
--- a/test/iopoll.c
+++ b/test/iopoll.c
@@ -323,7 +323,7 @@ int main(int argc, char *argv[])
 	char *fname;
 
 	if (probe_buf_select())
-		return 1;
+		return T_EXIT_FAIL;
 
 	if (argc > 1) {
 		fname = argv[1];
@@ -364,9 +364,9 @@ int main(int argc, char *argv[])
 
 	if (fname != argv[1])
 		unlink(fname);
-	return 0;
+	return T_EXIT_PASS;
 err:
 	if (fname != argv[1])
 		unlink(fname);
-	return 1;
+	return T_EXIT_FAIL;
 }
diff --git a/test/lfs-openat-write.c b/test/lfs-openat-write.c
index 6bbf78d..b413a11 100644
--- a/test/lfs-openat-write.c
+++ b/test/lfs-openat-write.c
@@ -14,6 +14,8 @@
 #include <sys/resource.h>
 #include <unistd.h>
 
+#include "helpers.h"
+
 static const int RSIZE = 2;
 static const int OPEN_FLAGS = O_RDWR | O_CREAT;
 static const mode_t OPEN_MODE = S_IRUSR | S_IWUSR;
@@ -100,7 +102,7 @@ int main(int argc, char *argv[])
 	int dfd, ret;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	dfd = open("/tmp", O_RDONLY | O_DIRECTORY);
 	if (dfd < 0)
diff --git a/test/link-timeout.c b/test/link-timeout.c
index ad638e9..5e56d5a 100644
--- a/test/link-timeout.c
+++ b/test/link-timeout.c
@@ -12,6 +12,7 @@
 #include <poll.h>
 
 #include "liburing.h"
+#include "helpers.h"
 
 static int test_fail_lone_link_timeouts(struct io_uring *ring)
 {
@@ -1011,12 +1012,12 @@ int main(int argc, char *argv[])
 	int ret;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(8, &ring, 0);
 	if (ret) {
 		printf("ring setup failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	ret = test_timeout_link_chain1(&ring);
@@ -1103,5 +1104,5 @@ int main(int argc, char *argv[])
 		return ret;
 	}
 
-	return 0;
+	return T_EXIT_PASS;
 }
diff --git a/test/link.c b/test/link.c
index 41d3899..3c8d991 100644
--- a/test/link.c
+++ b/test/link.c
@@ -11,6 +11,7 @@
 #include <fcntl.h>
 
 #include "liburing.h"
+#include "helpers.h"
 
 static int no_hardlink;
 
@@ -435,19 +436,19 @@ int main(int argc, char *argv[])
 	int ret;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(8, &ring, 0);
 	if (ret) {
 		printf("ring setup failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 
 	}
 
 	ret = io_uring_queue_init(8, &poll_ring, IORING_SETUP_IOPOLL);
 	if (ret) {
 		printf("poll_ring setup failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	ret = test_single_link(&ring);
@@ -492,5 +493,5 @@ int main(int argc, char *argv[])
 		return ret;
 	}
 
-	return 0;
+	return T_EXIT_PASS;
 }
diff --git a/test/madvise.c b/test/madvise.c
index b85aba8..8848143 100644
--- a/test/madvise.c
+++ b/test/madvise.c
@@ -187,9 +187,9 @@ int main(int argc, char *argv[])
 	if (fname != argv[1])
 		unlink(fname);
 	io_uring_queue_exit(&ring);
-	return 0;
+	return T_EXIT_PASS;
 err:
 	if (fname != argv[1])
 		unlink(fname);
-	return 1;
+	return T_EXIT_FAIL;
 }
diff --git a/test/mkdir.c b/test/mkdir.c
index 363fe1e..6b3497c 100644
--- a/test/mkdir.c
+++ b/test/mkdir.c
@@ -10,6 +10,7 @@
 #include <unistd.h>
 
 #include "liburing.h"
+#include "helpers.h"
 
 static int do_mkdirat(struct io_uring *ring, const char *fn)
 {
@@ -59,7 +60,7 @@ int main(int argc, char *argv[])
 	struct io_uring ring;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(8, &ring, 0);
 	if (ret) {
@@ -104,5 +105,5 @@ err1:
 	unlinkat(AT_FDCWD, fn, AT_REMOVEDIR);
 err:
 	io_uring_queue_exit(&ring);
-	return 1;
+	return T_EXIT_FAIL;
 }
diff --git a/test/msg-ring.c b/test/msg-ring.c
index 48c4a64..aec498d 100644
--- a/test/msg-ring.c
+++ b/test/msg-ring.c
@@ -12,6 +12,7 @@
 #include <pthread.h>
 
 #include "liburing.h"
+#include "helpers.h"
 
 static int no_msg;
 
@@ -183,22 +184,22 @@ int main(int argc, char *argv[])
 	int ret;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(8, &ring, 0);
 	if (ret) {
 		fprintf(stderr, "ring setup failed: %d\n", ret);
-		return 1;
+		return T_EXIT_FAIL;
 	}
 	ret = io_uring_queue_init(8, &ring2, 0);
 	if (ret) {
 		fprintf(stderr, "ring setup failed: %d\n", ret);
-		return 1;
+		return T_EXIT_FAIL;
 	}
 	ret = io_uring_queue_init(8, &pring, IORING_SETUP_IOPOLL);
 	if (ret) {
 		fprintf(stderr, "ring setup failed: %d\n", ret);
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	ret = test_own(&ring);
@@ -208,7 +209,7 @@ int main(int argc, char *argv[])
 	}
 	if (no_msg) {
 		fprintf(stdout, "Skipped\n");
-		return 0;
+		return T_EXIT_SKIP;
 	}
 	ret = test_own(&pring);
 	if (ret) {
@@ -232,5 +233,5 @@ int main(int argc, char *argv[])
 
 	pthread_join(thread, &tret);
 
-	return 0;
+	return T_EXIT_PASS;
 }
diff --git a/test/multicqes_drain.c b/test/multicqes_drain.c
index b16dc52..b7448ac 100644
--- a/test/multicqes_drain.c
+++ b/test/multicqes_drain.c
@@ -17,6 +17,7 @@
 #include <poll.h>
 
 #include "liburing.h"
+#include "helpers.h"
 
 enum {
 	multi,
@@ -360,12 +361,12 @@ int main(int argc, char *argv[])
 	int i, ret;
 
 	if (argc > 1)
-		return 0;
+		return T_EXIT_SKIP;
 
 	ret = io_uring_queue_init(1024, &ring, 0);
 	if (ret) {
 		printf("ring setup failed\n");
-		return 1;
+		return T_EXIT_FAIL;
 	}
 
 	for (i = 0; i < 5; i++) {
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH liburing 4/6] tests: mention in a status message that this is a skip
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
                   ` (2 preceding siblings ...)
  2022-07-06  3:40 ` [PATCH liburing 3/6] tests: more work on updating exit codes to use enum-based status reporting Eli Schwartz
@ 2022-07-06  3:40 ` Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 5/6] tests: migrate a skip that used a goto to enter cleanup Eli Schwartz
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

It didn't specify that it's an error, and ultimately either returned an
early 0 or, now, T_EXIT_SKIP. Clarify in the logging what it actually
is.

Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
 test/file-register.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/file-register.c b/test/file-register.c
index ae35c37..634ef81 100644
--- a/test/file-register.c
+++ b/test/file-register.c
@@ -306,7 +306,7 @@ static int test_sparse(struct io_uring *ring)
 	ret = io_uring_register_files(ring, files, 200);
 	if (ret) {
 		if (ret == -EBADF) {
-			fprintf(stdout, "Sparse files not supported\n");
+			fprintf(stdout, "Sparse files not supported, skipping\n");
 			no_update = 1;
 			goto done;
 		}
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH liburing 5/6] tests: migrate a skip that used a goto to enter cleanup
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
                   ` (3 preceding siblings ...)
  2022-07-06  3:40 ` [PATCH liburing 4/6] tests: mention in a status message that this is a skip Eli Schwartz
@ 2022-07-06  3:40 ` Eli Schwartz
  2022-07-06  3:40 ` [PATCH liburing 6/6] tests: correctly exit with failure in a looped test Eli Schwartz
  2022-07-06 12:45 ` [PATCH liburing 0/6] More wor on updating exit codes to use Jens Axboe
  6 siblings, 0 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

We cannot use the general cleanup-and-succeed here. Migrate this to use
exitcode reporting via a new "skip" goto.

Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
 test/mkdir.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/test/mkdir.c b/test/mkdir.c
index 6b3497c..0a6d16f 100644
--- a/test/mkdir.c
+++ b/test/mkdir.c
@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
 	if (ret < 0) {
 		if (ret == -EBADF || ret == -EINVAL) {
 			fprintf(stdout, "mkdirat not supported, skipping\n");
-			goto out;
+			goto skip;
 		}
 		fprintf(stderr, "mkdirat: %s\n", strerror(-ret));
 		goto err;
@@ -97,10 +97,13 @@ int main(int argc, char *argv[])
 		goto err1;
 	}
 
-out:
 	unlinkat(AT_FDCWD, fn, AT_REMOVEDIR);
 	io_uring_queue_exit(&ring);
-	return 0;
+	return T_EXIT_PASS;
+skip:
+	unlinkat(AT_FDCWD, fn, AT_REMOVEDIR);
+	io_uring_queue_exit(&ring);
+	return T_EXIT_SKIP;
 err1:
 	unlinkat(AT_FDCWD, fn, AT_REMOVEDIR);
 err:
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH liburing 6/6] tests: correctly exit with failure in a looped test
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
                   ` (4 preceding siblings ...)
  2022-07-06  3:40 ` [PATCH liburing 5/6] tests: migrate a skip that used a goto to enter cleanup Eli Schwartz
@ 2022-07-06  3:40 ` Eli Schwartz
  2022-07-06 12:45 ` [PATCH liburing 0/6] More wor on updating exit codes to use Jens Axboe
  6 siblings, 0 replies; 8+ messages in thread
From: Eli Schwartz @ 2022-07-06  3:40 UTC (permalink / raw)
  To: io-uring

A common test pattern in this project is to test a couple related things
in a single test binary, and return failure on the first one that fails,
if any. Tracking subtest failures cannot be done well with simple exit()
statuses, though it can using something like TAP and parsing a generated
report.

However, this test simply set the value of `ret`, then proceeded to
another test. If the first failed and the second succeeded, we would log
a failure but then return a success.

Just return immediately on failure as is done elsewhere.

Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
 test/multicqes_drain.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/test/multicqes_drain.c b/test/multicqes_drain.c
index b7448ac..1423f92 100644
--- a/test/multicqes_drain.c
+++ b/test/multicqes_drain.c
@@ -373,7 +373,7 @@ int main(int argc, char *argv[])
 		ret = test_simple_drain(&ring);
 		if (ret) {
 			fprintf(stderr, "test_simple_drain failed\n");
-			break;
+			return T_EXIT_FAIL;
 		}
 	}
 
@@ -381,8 +381,8 @@ int main(int argc, char *argv[])
 		ret = test_generic_drain(&ring);
 		if (ret) {
 			fprintf(stderr, "test_generic_drain failed\n");
-			break;
+			return T_EXIT_FAIL;
 		}
 	}
-	return ret;
+	return T_EXIT_PASS;
 }
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH liburing 0/6] More wor on updating exit codes to use
  2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
                   ` (5 preceding siblings ...)
  2022-07-06  3:40 ` [PATCH liburing 6/6] tests: correctly exit with failure in a looped test Eli Schwartz
@ 2022-07-06 12:45 ` Jens Axboe
  6 siblings, 0 replies; 8+ messages in thread
From: Jens Axboe @ 2022-07-06 12:45 UTC (permalink / raw)
  To: eschwartz93, io-uring

On Tue, 5 Jul 2022 23:40:52 -0400, Eli Schwartz wrote:
> Eli Schwartz (6):
>   tests: do not report an error message when return ret that might be a
>     skip
>   tests: handle some skips that used a goto to enter cleanup
>   tests: more work on updating exit codes to use enum-based status
>     reporting
>   tests: mention in a status message that this is a skip
>   tests: migrate a skip that used a goto to enter cleanup
>   tests: correctly exit with failure in a looped test
> 
> [...]

Applied, thanks!

[1/6] tests: do not report an error message when return ret that might be a skip
      commit: 6165251b85b6d431a7e2aea2c74e8a96f2ee6fbc
[2/6] tests: handle some skips that used a goto to enter cleanup
      commit: 32dee00eac664d4e59431fdbdb86301ed742feda
[3/6] tests: more work on updating exit codes to use enum-based status reporting
      commit: f955f102a9e62ee1b4c1b0eb9163f35433b85063
[4/6] tests: mention in a status message that this is a skip
      commit: 8780732115ece2d0a687df9d825bd0e8dd9e8643
[5/6] tests: migrate a skip that used a goto to enter cleanup
      commit: 80677160b2e634714412ba79d0faed326d29ae4d
[6/6] tests: correctly exit with failure in a looped test
      commit: 5d0e33f50a06db768b1891972daab40732400778

Best regards,
-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-07-06 12:45 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-06  3:40 [PATCH liburing 0/6] More wor on updating exit codes to use Eli Schwartz
2022-07-06  3:40 ` [PATCH liburing 1/6] tests: do not report an error message when return ret that might be a skip Eli Schwartz
2022-07-06  3:40 ` [PATCH liburing 2/6] tests: handle some skips that used a goto to enter cleanup Eli Schwartz
2022-07-06  3:40 ` [PATCH liburing 3/6] tests: more work on updating exit codes to use enum-based status reporting Eli Schwartz
2022-07-06  3:40 ` [PATCH liburing 4/6] tests: mention in a status message that this is a skip Eli Schwartz
2022-07-06  3:40 ` [PATCH liburing 5/6] tests: migrate a skip that used a goto to enter cleanup Eli Schwartz
2022-07-06  3:40 ` [PATCH liburing 6/6] tests: correctly exit with failure in a looped test Eli Schwartz
2022-07-06 12:45 ` [PATCH liburing 0/6] More wor on updating exit codes to use Jens Axboe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.