[LTP] [PATCH v3 3/4] tree: Use TST_EXP_PASS_OR_FAIL() and TST_EXP_FD_OR_FAIL()
Petr Vorel <[email protected]>
| Newsgroups | it.linux.lists.ltp |
|---|---|
| Message-ID | <[email protected]> |
Shorten code with test macros. Signed-off-by: Petr Vorel <[email protected]> --- testcases/kernel/syscalls/access/access01.c | 9 +- .../kernel/syscalls/arch_prctl/arch_prctl01.c | 9 +- testcases/kernel/syscalls/bind/bind01.c | 9 +- .../kernel/syscalls/epoll_ctl/epoll_ctl06.c | 12 +- .../syscalls/finit_module/finit_module01.c | 7 +- .../syscalls/init_module/init_module01.c | 7 +- .../kernel/syscalls/landlock/landlock08.c | 18 +-- .../kernel/syscalls/landlock/landlock09.c | 10 +- .../kernel/syscalls/landlock/landlock10.c | 8 +- .../syscalls/landlock/landlock_tester.h | 129 ++++++------------ 10 files changed, 66 insertions(+), 152 deletions(-) diff --git a/testcases/kernel/syscalls/access/access01.c b/testcases/kernel/syscalls/access/access01.c index 66907d1279..e8d81b392f 100644 --- a/testcases/kernel/syscalls/access/access01.c +++ b/testcases/kernel/syscalls/access/access01.c @@ -236,13 +236,8 @@ static struct tcase { static void access_test(struct tcase *tc, const char *user) { - if (tc->exp_errno) { - TST_EXP_FAIL(access(tc->fname, tc->mode), tc->exp_errno, - "access(%s, %s) as %s", tc->fname, tc->name, user); - } else { - TST_EXP_PASS(access(tc->fname, tc->mode), - "access(%s, %s) as %s", tc->fname, tc->name, user); - } + TST_EXP_PASS_OR_FAIL(access(tc->fname, tc->mode), tc->exp_errno, + "access(%s, %s) as %s", tc->fname, tc->name, user); } static void verify_access(unsigned int n) diff --git a/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c b/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c index 8ce905c6ce..851a5cf50a 100644 --- a/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c +++ b/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c @@ -50,10 +50,9 @@ static void setup(void) static void run(unsigned int index) { - if (tag) - TST_EXP_PASS(arch_prctl_set(ARCH_SET_CPUID, index)); - else - TST_EXP_FAIL(arch_prctl_set(ARCH_SET_CPUID, index), ENODEV); + int err = tag ? 0 : ENODEV; + + TST_EXP_PASS_OR_FAIL(arch_prctl_set(ARCH_SET_CPUID, index), err); // if cpu has cpuid_fault flag, ARCH_GET_CPUID returns what has been // set: index, otherwise, returns default status: 1 @@ -61,7 +60,7 @@ static void run(unsigned int index) TEST(arch_prctl_get(ARCH_GET_CPUID)); if (TST_RET == exp) - tst_res(TPASS, "get cpuid succeed."); + tst_res(TPASS, "get cpuid succeed"); else tst_res(TFAIL, "get wrong cpuid status"); } diff --git a/testcases/kernel/syscalls/bind/bind01.c b/testcases/kernel/syscalls/bind/bind01.c index 1bf55e898d..7f27bf3b7c 100644 --- a/testcases/kernel/syscalls/bind/bind01.c +++ b/testcases/kernel/syscalls/bind/bind01.c @@ -69,12 +69,9 @@ static void verify_bind(unsigned int nr) { struct test_case *tcase = &tcases[nr]; - if (tcase->experrno) { - TST_EXP_FAIL(bind(*tcase->socket_fd, tcase->sockaddr, tcase->salen), - tcase->experrno, "%s", tcase->desc); - } else { - TST_EXP_PASS(bind(*tcase->socket_fd, tcase->sockaddr, tcase->salen), - "%s", tcase->desc); + TST_EXP_PASS_OR_FAIL(bind(*tcase->socket_fd, tcase->sockaddr, tcase->salen), + tcase->experrno, "%s", tcase->desc); + if (TST_PASS) { SAFE_CLOSE(inet_socket); inet_socket = SAFE_SOCKET(PF_INET, SOCK_STREAM, 0); } diff --git a/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c b/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c index a06d996e02..69321582f1 100644 --- a/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c +++ b/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c @@ -52,15 +52,9 @@ static void run(void) ev.data.fd = fd.fd; err = exp_errno(fd.type); - if (err) { - TST_EXP_FAIL(epoll_ctl(efd, EPOLL_CTL_ADD, - fd.fd, &ev), err, - "epoll_ctl() on %s", tst_fd_desc(&fd)); - } else { - TST_EXP_PASS(epoll_ctl(efd, EPOLL_CTL_ADD, - fd.fd, &ev), - "epoll_ctl() on %s", tst_fd_desc(&fd)); - } + TST_EXP_PASS_OR_FAIL(epoll_ctl(efd, EPOLL_CTL_ADD, + fd.fd, &ev), err, + "epoll_ctl() on %s", tst_fd_desc(&fd)); SAFE_CLOSE(efd); } diff --git a/testcases/kernel/syscalls/finit_module/finit_module01.c b/testcases/kernel/syscalls/finit_module/finit_module01.c index 397d5a1ae4..ec14a42588 100644 --- a/testcases/kernel/syscalls/finit_module/finit_module01.c +++ b/testcases/kernel/syscalls/finit_module/finit_module01.c @@ -34,12 +34,9 @@ static void setup(void) static void run(void) { - if (sig_enforce == 1) { - TST_EXP_FAIL(finit_module(fd, "status=valid", 0), EKEYREJECTED); - return; - } + int err = sig_enforce == 1 ? EKEYREJECTED : 0; - TST_EXP_PASS(finit_module(fd, "status=valid", 0)); + TST_EXP_PASS_OR_FAIL(finit_module(fd, "status=valid", 0), err); if (!TST_PASS) return; diff --git a/testcases/kernel/syscalls/init_module/init_module01.c b/testcases/kernel/syscalls/init_module/init_module01.c index a0d4792c95..171e360f89 100644 --- a/testcases/kernel/syscalls/init_module/init_module01.c +++ b/testcases/kernel/syscalls/init_module/init_module01.c @@ -39,12 +39,9 @@ static void setup(void) static void run(void) { - if (sig_enforce == 1) { - TST_EXP_FAIL(init_module(buf, sb.st_size, "status=valid"), EKEYREJECTED); - return; - } + int err = sig_enforce == 1 ? EKEYREJECTED : 0; - TST_EXP_PASS(init_module(buf, sb.st_size, "status=valid")); + TST_EXP_PASS_OR_FAIL(init_module(buf, sb.st_size, "status=valid"), err); if (!TST_PASS) return; diff --git a/testcases/kernel/syscalls/landlock/landlock08.c b/testcases/kernel/syscalls/landlock/landlock08.c index 770061ba0b..052b016be6 100644 --- a/testcases/kernel/syscalls/landlock/landlock08.c +++ b/testcases/kernel/syscalls/landlock/landlock08.c @@ -102,13 +102,8 @@ static void test_bind(const struct tcase *tc, const in_port_t port, const int ex create_socket(&socket, tc->family, port, tc->type); getsocket_addr(&socket, tc->family, &addr); - if (exp_err) { - TST_EXP_FAIL(bind(socket.fd, addr, socket.address_size), - exp_err, "bind() access on port %u", port); - } else { - TST_EXP_PASS(bind(socket.fd, addr, socket.address_size), - "bind() access on port %u", port); - } + TST_EXP_PASS_OR_FAIL(bind(socket.fd, addr, socket.address_size), + exp_err, "bind() access on port %u", port); SAFE_CLOSE(socket.fd); } @@ -121,13 +116,8 @@ static void test_connect(const struct tcase *tc, const in_port_t port, const int create_socket(&socket, tc->family, port, tc->type); getsocket_addr(&socket, tc->family, &addr); - if (exp_err) { - TST_EXP_FAIL(connect(socket.fd, addr, socket.address_size), - exp_err, "connect() on port %u", port); - } else { - TST_EXP_PASS(connect(socket.fd, addr, socket.address_size), - "connect() on port %u", port); - } + TST_EXP_PASS_OR_FAIL(connect(socket.fd, addr, socket.address_size), + exp_err, "connect() on port %u", port); SAFE_CLOSE(socket.fd); } diff --git a/testcases/kernel/syscalls/landlock/landlock09.c b/testcases/kernel/syscalls/landlock/landlock09.c index 09a762bb1b..c2d73a7085 100644 --- a/testcases/kernel/syscalls/landlock/landlock09.c +++ b/testcases/kernel/syscalls/landlock/landlock09.c @@ -35,6 +35,8 @@ static void scoped_sandbox(const char *from) static void run_client(void) { + int err = tst_variant == DOMAIN_CLIENT ? EPERM : 0; + if (tst_variant == DOMAIN_CLIENT) scoped_sandbox("client"); @@ -47,14 +49,8 @@ static void run_client(void) TST_CHECKPOINT_WAIT(0); tst_res(TINFO, "Connecting to UNIX socket"); - sendsock = SAFE_SOCKET(AF_UNIX, SOCK_STREAM, 0); - - if (tst_variant != DOMAIN_CLIENT) - TST_EXP_PASS(connect(sendsock, (struct sockaddr *)&addr, SOCKET_LENGTH)); - else - TST_EXP_FAIL(connect(sendsock, (struct sockaddr *)&addr, SOCKET_LENGTH), EPERM); - + TST_EXP_PASS_OR_FAIL(connect(sendsock, (struct sockaddr *)&addr, SOCKET_LENGTH), err); SAFE_CLOSE(sendsock); TST_CHECKPOINT_WAKE(0); diff --git a/testcases/kernel/syscalls/landlock/landlock10.c b/testcases/kernel/syscalls/landlock/landlock10.c index a29e3bca82..96ee40bc79 100644 --- a/testcases/kernel/syscalls/landlock/landlock10.c +++ b/testcases/kernel/syscalls/landlock/landlock10.c @@ -30,6 +30,8 @@ static void scoped_sandbox(const char *from) static void run(void) { + int err = tst_variant == DOMAIN_KILLER ? EPERM : 0; + /* isolate test inside a process so we won't stack too many * layers (-E2BIG) when there are multiple test's iterations */ @@ -62,11 +64,7 @@ static void run(void) TST_CHECKPOINT_WAKE(0); - if (tst_variant == DOMAIN_KILLER) - TST_EXP_FAIL(kill(paused_pid, SIGKILL), EPERM); - else - TST_EXP_PASS(kill(paused_pid, SIGKILL)); - + TST_EXP_PASS_OR_FAIL(kill(paused_pid, SIGKILL), err); exit(0); } diff --git a/testcases/kernel/syscalls/landlock/landlock_tester.h b/testcases/kernel/syscalls/landlock/landlock_tester.h index 4e77e8a61f..3e2abd2e78 100644 --- a/testcases/kernel/syscalls/landlock/landlock_tester.h +++ b/testcases/kernel/syscalls/landlock/landlock_tester.h @@ -145,7 +145,7 @@ static void tester_cleanup_files(void) _remove_file(FILE_REGULAR); } -static void _test_exec(const int result) +static void _test_exec(const int exp_err) { int status; pid_t pid; @@ -155,16 +155,7 @@ static void _test_exec(const int result) pid = SAFE_FORK(); if (!pid) { - int rval; - - if (result == TPASS) { - rval = execve(FILE_EXEC, args, NULL); - if (rval == -1) - tst_res(TFAIL | TERRNO, "Failed to execute test binary"); - } else { - TST_EXP_FAIL(execve(FILE_EXEC, args, NULL), EACCES); - } - + TST_EXP_PASS_OR_FAIL(execve(FILE_EXEC, args, NULL), exp_err); _exit(1); } @@ -172,31 +163,23 @@ static void _test_exec(const int result) if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) return; - tst_res(result, "Test binary has been executed"); + tst_res(exp_err ? TFAIL : TPASS, "Test binary has been executed"); } -static void _test_write(const int result) +static void _test_write(const int exp_err) { tst_res(TINFO, "Test writing file"); - if (result == TPASS) - TST_EXP_FD(open(FILE_WRITE, O_WRONLY, PERM_MODE)); - else - TST_EXP_FAIL(open(FILE_WRITE, O_WRONLY, PERM_MODE), EACCES); - + TST_EXP_FD_OR_FAIL(open(FILE_WRITE, O_WRONLY, PERM_MODE), exp_err); if (TST_RET != -1) SAFE_CLOSE(TST_RET); } -static void _test_read(const int result) +static void _test_read(const int exp_err) { tst_res(TINFO, "Test reading file"); - if (result == TPASS) - TST_EXP_FD(open(FILE_READ, O_RDONLY, PERM_MODE)); - else - TST_EXP_FAIL(open(FILE_READ, O_RDONLY, PERM_MODE), EACCES); - + TST_EXP_FD_OR_FAIL(open(FILE_READ, O_RDONLY, PERM_MODE), exp_err); if (TST_RET != -1) SAFE_CLOSE(TST_RET); } @@ -239,122 +222,90 @@ static void _test_readdir(const int result) TST_EXP_EQ_LI(files_counted, ARRAY_SIZE(readdir_files)); } -static void _test_rmdir(const int result) +static void _test_rmdir(const int exp_err) { tst_res(TINFO, "Test removing directory"); - - if (result == TPASS) - TST_EXP_PASS(rmdir(DIR_RMDIR)); - else - TST_EXP_FAIL(rmdir(DIR_RMDIR), EACCES); + TST_EXP_PASS_OR_FAIL(rmdir(DIR_RMDIR), exp_err); } -static void _test_rmfile(const int result) +static void _test_rmfile(const int exp_err) { tst_res(TINFO, "Test removing file"); - - if (result == TPASS) { - TST_EXP_PASS(unlink(FILE_UNLINK)); - TST_EXP_PASS(remove(FILE_REMOVE)); - } else { - TST_EXP_FAIL(unlink(FILE_UNLINK), EACCES); - TST_EXP_FAIL(remove(FILE_REMOVE), EACCES); - } + TST_EXP_PASS_OR_FAIL(unlink(FILE_UNLINK), exp_err); + TST_EXP_PASS_OR_FAIL(remove(FILE_REMOVE), exp_err); } -static void _test_make(const char *path, const int type, const int dev, const int result) +static void _test_make(const char *path, const int type, const int dev, const int exp_err) { tst_res(TINFO, "Test normal or special files creation"); - - if (result == TPASS) - TST_EXP_PASS(mknod(path, type | 0400, dev)); - else - TST_EXP_FAIL(mknod(path, type | 0400, dev), EACCES); + TST_EXP_PASS_OR_FAIL(mknod(path, type | 0400, dev), exp_err); } -static void _test_symbolic(const int result) +static void _test_symbolic(const int exp_err) { tst_res(TINFO, "Test symbolic links"); - - if (result == TPASS) - TST_EXP_PASS(symlink(FILE_SYM0, FILE_SYM1)); - else - TST_EXP_FAIL(symlink(FILE_SYM0, FILE_SYM1), EACCES); + TST_EXP_PASS_OR_FAIL(symlink(FILE_SYM0, FILE_SYM1), exp_err); } -static void _test_truncate(const int result) +static void _test_truncate(const int exp_err) { int fd; tst_res(TINFO, "Test truncating file"); - if (result == TPASS) { - TST_EXP_PASS(truncate(FILE_TRUNCATE, 10)); - - fd = SAFE_OPEN(FILE_TRUNCATE, O_WRONLY, PERM_MODE); - if (fd != -1) { - TST_EXP_PASS(ftruncate(fd, 10)); - SAFE_CLOSE(fd); - } - - fd = TST_EXP_FD(open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE)); - if (fd != -1) - SAFE_CLOSE(fd); - } else { - TST_EXP_FAIL(truncate(FILE_TRUNCATE, 10), EACCES); - - fd = open(FILE_TRUNCATE, O_WRONLY, PERM_MODE); - if (fd != -1) { - TST_EXP_FAIL(ftruncate(fd, 10), EACCES); - SAFE_CLOSE(fd); - } - - TST_EXP_FAIL(open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE), EACCES); - - if (TST_RET != -1) - SAFE_CLOSE(TST_RET); + TST_EXP_PASS_OR_FAIL(truncate(FILE_TRUNCATE, 10), exp_err); + TST_EXP_FD_OR_FAIL(fd = open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE), exp_err); + if (fd != -1) { + TST_EXP_PASS_OR_FAIL(ftruncate(fd, 10), exp_err); + SAFE_CLOSE(fd); } + + TST_EXP_FD_OR_FAIL(fd = open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE), exp_err); + if (fd != -1) + SAFE_CLOSE(TST_RET); } static void tester_run_fs_rules(const int rules, const int result) { + int exp_err = result == TPASS ? 0 : EACCES; + if (rules & LANDLOCK_ACCESS_FS_EXECUTE) - _test_exec(result); + _test_exec(exp_err); if (rules & LANDLOCK_ACCESS_FS_WRITE_FILE) - _test_write(result); + _test_write(exp_err); if (rules & LANDLOCK_ACCESS_FS_READ_FILE) - _test_read(result); + _test_read(exp_err); if (rules & LANDLOCK_ACCESS_FS_READ_DIR) _test_readdir(result); if (rules & LANDLOCK_ACCESS_FS_REMOVE_DIR) - _test_rmdir(result); + _test_rmdir(exp_err); if (rules & LANDLOCK_ACCESS_FS_REMOVE_FILE) - _test_rmfile(result); + _test_rmfile(exp_err); if (rules & LANDLOCK_ACCESS_FS_MAKE_REG) - _test_make(FILE_REGULAR, S_IFREG, 0, result); + _test_make(FILE_REGULAR, S_IFREG, 0, exp_err); if (strcmp(tst_device->fs_type, "vfat") && strcmp(tst_device->fs_type, "exfat")) { if (rules & LANDLOCK_ACCESS_FS_MAKE_CHAR) - _test_make(DEV_CHAR0, S_IFCHR, dev_chr, result); + _test_make(DEV_CHAR0, S_IFCHR, dev_chr, exp_err); if (rules & LANDLOCK_ACCESS_FS_MAKE_BLOCK) - _test_make(DEV_BLK0, S_IFBLK, dev_blk, result); + _test_make(DEV_BLK0, S_IFBLK, dev_blk, exp_err); if (rules & LANDLOCK_ACCESS_FS_MAKE_SOCK) - _test_make(FILE_SOCKET, S_IFSOCK, 0, result); + _test_make(FILE_SOCKET, S_IFSOCK, 0, exp_err); if (rules & LANDLOCK_ACCESS_FS_MAKE_FIFO) - _test_make(FILE_FIFO, S_IFIFO, 0, result); + _test_make(FILE_FIFO, S_IFIFO, 0, exp_err); if (rules & LANDLOCK_ACCESS_FS_MAKE_SYM) - _test_symbolic(result); + _test_symbolic(exp_err); } if (rules & LANDLOCK_ACCESS_FS_TRUNCATE) { @@ -366,7 +317,7 @@ static void tester_run_fs_rules(const int rules, const int result) return; } - _test_truncate(result); + _test_truncate(exp_err); } } -- 2.55.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp