[LTP] [PATCH 2/3] openposix/aio_cancel: Use setup helper functions in tests 5 and 7
Martin Doucha
mdoucha@suse.cz
Tue Feb 3 13:50:25 CET 2026
Simplify setup and cleanup in recently rewritten tests.
Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---
.../conformance/interfaces/aio_cancel/5-1.c | 79 +++----------------
.../conformance/interfaces/aio_cancel/7-1.c | 79 +++----------------
2 files changed, 23 insertions(+), 135 deletions(-)
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/5-1.c b/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/5-1.c
index 559625b13..e7dfca124 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/5-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/5-1.c
@@ -25,18 +25,13 @@
*
*/
-#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
#include <time.h>
-#include <aio.h>
-#include <sys/socket.h>
#include "posixtest.h"
+#include "aio_test.h"
#define TNAME "aio_cancel/5-1.c"
@@ -46,29 +41,6 @@
static int fds[2];
static struct aiocb aiocb[BUF_NB];
-static void cleanup(void)
-{
- int i, ret;
-
- for (i = 0; i < BUF_NB; i++) {
- if (!aiocb[i].aio_buf)
- break;
-
- ret = aio_error(&aiocb[i]);
-
- /* flush written data from the socket */
- if (ret == 0 || ret == EINPROGRESS) {
- read(fds[1], (void *)aiocb[i].aio_buf,
- aiocb[i].aio_nbytes);
- }
-
- free((void *)aiocb[i].aio_buf);
- }
-
- close(fds[0]);
- close(fds[1]);
-}
-
int main(void)
{
char *buf[BUF_NB];
@@ -76,49 +48,24 @@ int main(void)
int ret;
int bufsize;
int exp_ret;
- socklen_t argsize = sizeof(bufsize);
const struct timespec sleep_ts = { .tv_sec = 0, .tv_nsec = 10000000 };
if (sysconf(_SC_ASYNCHRONOUS_IO) < 200112L)
return PTS_UNSUPPORTED;
- ret = socketpair(AF_UNIX, SOCK_DGRAM, 0, fds);
- if (ret == -1) {
- printf(TNAME " Error creating sockets(): %s\n",
- strerror(errno));
+ if (setup_aio(TNAME, fds, aiocb, BUF_NB))
return PTS_UNRESOLVED;
- }
- ret = getsockopt(fds[0], SOL_SOCKET, SO_SNDBUF, &bufsize, &argsize);
- if (ret == -1) {
- printf(TNAME " Error reading socket buffer size: %s\n",
- strerror(errno));
- cleanup();
- return PTS_UNRESOLVED;
- }
+ bufsize = aiocb[0].aio_nbytes;
- /* Socket buffer size is twice the maximum message size */
- bufsize /= 2;
-
- /* create AIO req */
+ /* submit AIO req */
for (i = 0; i < BUF_NB; i++) {
- buf[i] = malloc(bufsize);
- if (buf[i] == NULL) {
- printf(TNAME " Error at malloc(): %s\n",
- strerror(errno));
- cleanup();
- return PTS_UNRESOLVED;
- }
- aiocb[i].aio_fildes = fds[0];
- aiocb[i].aio_buf = buf[i];
- aiocb[i].aio_nbytes = bufsize;
- aiocb[i].aio_offset = 0;
- aiocb[i].aio_sigevent.sigev_notify = SIGEV_NONE;
+ buf[i] = (char *)aiocb[i].aio_buf;
if (aio_write(&aiocb[i]) == -1) {
printf(TNAME " loop %d: Error at aio_write(): %s\n",
i, strerror(errno));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
}
@@ -135,7 +82,7 @@ int main(void)
if (ret) {
printf(TNAME " Task #%d failed to complete: %s\n",
BLOCKED_TASK - 1, strerror(ret == -1 ? errno : ret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
@@ -143,14 +90,14 @@ int main(void)
ret = aio_cancel(fds[0], NULL);
if (ret == -1) {
printf(TNAME " Error at aio_cancel(): %s\n", strerror(errno));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
if (ret != AIO_NOTCANCELED) {
printf(TNAME " Unexpected aio_cancel() return value: %s\n",
strerror(ret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
@@ -162,7 +109,7 @@ int main(void)
printf(TNAME " Bad task #%d result: %s "
"(expected EINPROGRESS)\n",
i, strerror(ret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
@@ -175,7 +122,7 @@ int main(void)
SIGEV_NONE)) {
printf(TNAME " aiocbp modified\n");
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
@@ -186,12 +133,12 @@ int main(void)
if (ret != exp_ret) {
printf(TNAME " Bad task #%d result: %s (expected %s)\n",
i, strerror(ret), strerror(exp_ret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
}
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
printf("Test PASSED\n");
return PTS_PASS;
}
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/7-1.c b/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/7-1.c
index 75cd838a3..9fb584656 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/7-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/aio_cancel/7-1.c
@@ -27,16 +27,11 @@
* Otherwise pass.
*/
-#include <stdio.h>
#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
#include <time.h>
-#include <aio.h>
-#include <sys/socket.h>
#include "posixtest.h"
+#include "aio_test.h"
#define TNAME "aio_cancel/7-1.c"
@@ -46,79 +41,25 @@
static int fds[2];
static struct aiocb aiocb[BUF_NB];
-static void cleanup(void)
-{
- int i, ret;
-
- for (i = 0; i < BUF_NB; i++) {
- if (!aiocb[i].aio_buf)
- break;
-
- ret = aio_error(&aiocb[i]);
-
- /* flush written data from the socket */
- if (ret == 0 || ret == EINPROGRESS) {
- read(fds[1], (void *)aiocb[i].aio_buf,
- aiocb[i].aio_nbytes);
- }
-
- free((void *)aiocb[i].aio_buf);
- }
-
- close(fds[0]);
- close(fds[1]);
-}
-
int main(void)
{
int i;
int gret;
- int bufsize;
int exp_ret;
- socklen_t argsize = sizeof(bufsize);
const struct timespec sleep_ts = { .tv_sec = 0, .tv_nsec = 10000000 };
if (sysconf(_SC_ASYNCHRONOUS_IO) < 200112L)
return PTS_UNSUPPORTED;
- gret = socketpair(AF_UNIX, SOCK_DGRAM, 0, fds);
- if (gret == -1) {
- printf(TNAME " Error creating sockets(): %s\n",
- strerror(errno));
+ if (setup_aio(TNAME, fds, aiocb, BUF_NB))
return PTS_UNRESOLVED;
- }
- gret = getsockopt(fds[0], SOL_SOCKET, SO_SNDBUF, &bufsize, &argsize);
- if (gret == -1) {
- printf(TNAME " Error reading socket buffer size: %s\n",
- strerror(errno));
- cleanup();
- return PTS_UNRESOLVED;
- }
-
- /* Socket buffer size is twice the maximum message size */
- bufsize /= 2;
-
- /* create AIO req */
+ /* submit AIO req */
for (i = 0; i < BUF_NB; i++) {
- aiocb[i].aio_fildes = fds[0];
- aiocb[i].aio_buf = malloc(bufsize);
-
- if (aiocb[i].aio_buf == NULL) {
- printf(TNAME " Error at malloc(): %s\n",
- strerror(errno));
- cleanup();
- return PTS_UNRESOLVED;
- }
-
- aiocb[i].aio_nbytes = bufsize;
- aiocb[i].aio_offset = 0;
- aiocb[i].aio_sigevent.sigev_notify = SIGEV_NONE;
-
if (aio_write(&aiocb[i]) == -1) {
printf(TNAME " loop %d: Error at aio_write(): %s\n",
i, strerror(errno));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
}
@@ -135,7 +76,7 @@ int main(void)
if (gret) {
printf(TNAME " Task #%d failed to complete: %s\n",
BLOCKED_TASK - 1, strerror(gret == -1 ? errno : gret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
@@ -143,14 +84,14 @@ int main(void)
gret = aio_cancel(fds[0], NULL);
if (gret == -1) {
printf(TNAME " Error at aio_cancel(): %s\n", strerror(errno));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
if (gret != AIO_NOTCANCELED) {
printf(TNAME " Unexpected aio_cancel() return value: %s\n",
strerror(gret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
@@ -172,19 +113,19 @@ int main(void)
printf(TNAME " Bad task #%d result: %s "
"(expected EINPROGRESS)\n",
i, strerror(ret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
if (ret != exp_ret) {
printf(TNAME " Bad task #%d result: %s (expected %s)\n",
i, strerror(ret), strerror(exp_ret));
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
return PTS_FAIL;
}
}
- cleanup();
+ cleanup_aio(fds, aiocb, BUF_NB);
printf("Test PASSED\n");
return PTS_PASS;
}
--
2.52.0
More information about the ltp
mailing list