* [LTP] [PATCH] syscalls/send02: Improve message @ 2020-10-16 7:45 Yang Xu 2020-10-16 12:30 ` Alexey Kodanev 0 siblings, 1 reply; 5+ messages in thread From: Yang Xu @ 2020-10-16 7:45 UTC (permalink / raw) To: ltp This case sometimes fails, output as below: tst_test.c:1250: TINFO: Timeout per run is 0h 05m 00s send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) From this output, we don't know which subcase fails(tcp,udp,send,sendto). So add some message and make this clear. Now this case fails as below: tst_test.c:1250: TINFO: Timeout per run is 0h 05m 00s send02.c:124: TINFO: Testing TCP send send02.c:87: TFAIL: recv() error at the 776 times(expsize 17): EAGAIN/EWOULDBLOCK (11) send02.c:124: TINFO: Testing UDP send send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) send02.c:124: TINFO: Testing UDP sendto send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) send02.c:124: TINFO: Testing UDP sendmsg send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> --- testcases/kernel/syscalls/send/send02.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/testcases/kernel/syscalls/send/send02.c b/testcases/kernel/syscalls/send/send02.c index 5630230fa..719e86a90 100644 --- a/testcases/kernel/syscalls/send/send02.c +++ b/testcases/kernel/syscalls/send/send02.c @@ -71,7 +71,7 @@ static void setup(void) memset(sendbuf, 0x42, SENDSIZE); } -static int check_recv(int sock, long expsize) +static int check_recv(int sock, long expsize, int loop) { char recvbuf[RECVSIZE] = {0}; @@ -83,19 +83,20 @@ static int check_recv(int sock, long expsize) return 1; /* unexpected error */ - tst_res(TFAIL | TTERRNO, "recv() error"); + tst_res(TFAIL | TTERRNO, "recv() error at the %d times(expsize" + " %ld)", loop, expsize); return 0; } if (TST_RET < 0) { - tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", - TST_RET); + tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld at" + " the %d times(expsize %ld)", TST_RET, loop, expsize); return 0; } if (TST_RET != expsize) { - tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, - expsize); + tst_res(TFAIL, "recv() read %ld bytes, expected %ld@the" + " %d times", TST_RET, expsize, loop); return 0; } @@ -120,6 +121,7 @@ static void run(unsigned int n) struct test_case *tc = testcase_list + n; socklen_t len = sizeof(addr); + tst_res(TINFO, "Testing %s", tc->name); tst_init_sockaddr_inet_bin(&addr, INADDR_LOOPBACK, 0); listen_sock = SAFE_SOCKET(tc->domain, tc->type, tc->protocol); dst_sock = listen_sock; @@ -139,19 +141,19 @@ static void run(unsigned int n) dst_sock = SAFE_ACCEPT(listen_sock, NULL, NULL); tc->send(sock, sendbuf, SENDSIZE, 0); - ret = check_recv(dst_sock, SENDSIZE); + ret = check_recv(dst_sock, SENDSIZE, i + 1); if (!ret) break; tc->send(sock, sendbuf, SENDSIZE, MSG_MORE); - ret = check_recv(dst_sock, 0); + ret = check_recv(dst_sock, 0, i + 1); if (!ret) break; tc->send(sock, sendbuf, 1, 0); - ret = check_recv(dst_sock, SENDSIZE + 1); + ret = check_recv(dst_sock, SENDSIZE + 1, i + 1); if (!ret) break; -- 2.23.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH] syscalls/send02: Improve message 2020-10-16 7:45 [LTP] [PATCH] syscalls/send02: Improve message Yang Xu @ 2020-10-16 12:30 ` Alexey Kodanev 2020-10-19 8:10 ` Yang Xu 2020-10-19 11:36 ` [LTP] [PATCH v2] syscalls/send02: Ensure recv() succeed when not using MSG_MORE flag Yang Xu 0 siblings, 2 replies; 5+ messages in thread From: Alexey Kodanev @ 2020-10-16 12:30 UTC (permalink / raw) To: ltp On 16.10.2020 10:45, Yang Xu wrote: > This case sometimes fails, output as below: > > tst_test.c:1250: TINFO: Timeout per run is 0h 05m 00s > send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) > send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) > send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) > send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) > > From this output, we don't know which subcase fails(tcp,udp,send,sendto). > So add some message and make this clear. > > Now this case fails as below: > tst_test.c:1250: TINFO: Timeout per run is 0h 05m 00s > send02.c:124: TINFO: Testing TCP send > send02.c:87: TFAIL: recv() error at the 776 times(expsize 17): EAGAIN/EWOULDBLOCK (11) recv(..., MSG_DONTWAIT) can fail with EAGAIN/EWOULDBLOCK at any time, so it should be a valid error... why it is a failure in the test? If we expect some message to receive, we should call recv() again for EAGAIN/EWOULDBLOCK errors. And with MSG_MORE case, just return immediately, i.e. something like this: while (1) { TEST(recv(sock, recvbuf, RECVSIZE, MSG_DONTWAIT)); if (TST_RET == -1) { if (TST_ERR == EAGAIN || TST_ERR == EWOULDBLOCK) { if (expsize) continue; else break; } /* unexpected error */ tst_res(TFAIL | TTERRNO, "recv() error, expsize %ld, it %d", expsize, i); return 0; } if (TST_RET < 0) { tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", TST_RET); return 0; } if (!expsize || TST_RET != expsize) { tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, expsize); return 0; } break; } > send02.c:124: TINFO: Testing UDP send > send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) > send02.c:124: TINFO: Testing UDP sendto > send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) > send02.c:124: TINFO: Testing UDP sendmsg > send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) > > Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> > --- > testcases/kernel/syscalls/send/send02.c | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/testcases/kernel/syscalls/send/send02.c b/testcases/kernel/syscalls/send/send02.c > index 5630230fa..719e86a90 100644 > --- a/testcases/kernel/syscalls/send/send02.c > +++ b/testcases/kernel/syscalls/send/send02.c > @@ -71,7 +71,7 @@ static void setup(void) > memset(sendbuf, 0x42, SENDSIZE); > } > > -static int check_recv(int sock, long expsize) > +static int check_recv(int sock, long expsize, int loop) > { > char recvbuf[RECVSIZE] = {0}; > > @@ -83,19 +83,20 @@ static int check_recv(int sock, long expsize) > return 1; > > /* unexpected error */ > - tst_res(TFAIL | TTERRNO, "recv() error"); > + tst_res(TFAIL | TTERRNO, "recv() error at the %d times(expsize" > + " %ld)", loop, expsize); It's better to have a single line message, and arguments on another one: tst_res(TFAIL | TTERRNO, "recv() error at step %d, expsize %ld", ...); > return 0; > } > > if (TST_RET < 0) { > - tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", > - TST_RET); > + tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld at" > + " the %d times(expsize %ld)", TST_RET, loop, expsize); > return 0; > } > > if (TST_RET != expsize) { > - tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, > - expsize); > + tst_res(TFAIL, "recv() read %ld bytes, expected %ld at the" > + " %d times", TST_RET, expsize, loop); > return 0; > } > > @@ -120,6 +121,7 @@ static void run(unsigned int n) > struct test_case *tc = testcase_list + n; > socklen_t len = sizeof(addr); > > + tst_res(TINFO, "Testing %s", tc->name); > tst_init_sockaddr_inet_bin(&addr, INADDR_LOOPBACK, 0); > listen_sock = SAFE_SOCKET(tc->domain, tc->type, tc->protocol); > dst_sock = listen_sock; > @@ -139,19 +141,19 @@ static void run(unsigned int n) > dst_sock = SAFE_ACCEPT(listen_sock, NULL, NULL); > > tc->send(sock, sendbuf, SENDSIZE, 0); > - ret = check_recv(dst_sock, SENDSIZE); > + ret = check_recv(dst_sock, SENDSIZE, i + 1); > > if (!ret) > break; > > tc->send(sock, sendbuf, SENDSIZE, MSG_MORE); > - ret = check_recv(dst_sock, 0); > + ret = check_recv(dst_sock, 0, i + 1); > > if (!ret) > break; > > tc->send(sock, sendbuf, 1, 0); > - ret = check_recv(dst_sock, SENDSIZE + 1); > + ret = check_recv(dst_sock, SENDSIZE + 1, i + 1); > > if (!ret) > break; > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH] syscalls/send02: Improve message 2020-10-16 12:30 ` Alexey Kodanev @ 2020-10-19 8:10 ` Yang Xu 2020-10-19 11:36 ` [LTP] [PATCH v2] syscalls/send02: Ensure recv() succeed when not using MSG_MORE flag Yang Xu 1 sibling, 0 replies; 5+ messages in thread From: Yang Xu @ 2020-10-19 8:10 UTC (permalink / raw) To: ltp Hi Alexey > On 16.10.2020 10:45, Yang Xu wrote: >> This case sometimes fails, output as below: >> >> tst_test.c:1250: TINFO: Timeout per run is 0h 05m 00s >> send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) >> send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) >> send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) >> send02.c:86: TFAIL: recv() error: EAGAIN/EWOULDBLOCK (11) >> >> From this output, we don't know which subcase fails(tcp,udp,send,sendto). >> So add some message and make this clear. >> >> Now this case fails as below: >> tst_test.c:1250: TINFO: Timeout per run is 0h 05m 00s >> send02.c:124: TINFO: Testing TCP send >> send02.c:87: TFAIL: recv() error at the 776 times(expsize 17): EAGAIN/EWOULDBLOCK (11) > > recv(..., MSG_DONTWAIT) can fail with EAGAIN/EWOULDBLOCK at any time, > so it should be a valid error... why it is a failure in the test? I guess it only sends a small data and works well on most machines, so we think it is a failure. > > If we expect some message to receive, we should call recv() again > for EAGAIN/EWOULDBLOCK errors. And with MSG_MORE case, just return > immediately, i.e. something like this: > > while (1) { > TEST(recv(sock, recvbuf, RECVSIZE, MSG_DONTWAIT)); > > if (TST_RET == -1) { > if (TST_ERR == EAGAIN || TST_ERR == EWOULDBLOCK) { > if (expsize) > continue; > else > break; > } > > /* unexpected error */ > tst_res(TFAIL | TTERRNO, "recv() error, expsize %ld, it %d", expsize, i); > return 0; > } > > if (TST_RET< 0) { > tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", > TST_RET); > return 0; > } > > if (!expsize || TST_RET != expsize) { > tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, > expsize); > return 0; > } > > break; > } It looks ok. This test only checks MSG_MORE whether can get EAGAIN/EWOULDBLOCK erro immediately, so for other situations, we just ensure it can receive message sucessfully. > > >> send02.c:124: TINFO: Testing UDP send >> send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) >> send02.c:124: TINFO: Testing UDP sendto >> send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) >> send02.c:124: TINFO: Testing UDP sendmsg >> send02.c:87: TFAIL: recv() error at the 1 times(expsize 16): EAGAIN/EWOULDBLOCK (11) >> >> Signed-off-by: Yang Xu<xuyang2018.jy@cn.fujitsu.com> >> --- >> testcases/kernel/syscalls/send/send02.c | 20 +++++++++++--------- >> 1 file changed, 11 insertions(+), 9 deletions(-) >> >> diff --git a/testcases/kernel/syscalls/send/send02.c b/testcases/kernel/syscalls/send/send02.c >> index 5630230fa..719e86a90 100644 >> --- a/testcases/kernel/syscalls/send/send02.c >> +++ b/testcases/kernel/syscalls/send/send02.c >> @@ -71,7 +71,7 @@ static void setup(void) >> memset(sendbuf, 0x42, SENDSIZE); >> } >> >> -static int check_recv(int sock, long expsize) >> +static int check_recv(int sock, long expsize, int loop) >> { >> char recvbuf[RECVSIZE] = {0}; >> >> @@ -83,19 +83,20 @@ static int check_recv(int sock, long expsize) >> return 1; >> >> /* unexpected error */ >> - tst_res(TFAIL | TTERRNO, "recv() error"); >> + tst_res(TFAIL | TTERRNO, "recv() error at the %d times(expsize" >> + " %ld)", loop, expsize); > > It's better to have a single line message, and arguments on another one: > tst_res(TFAIL | TTERRNO, "recv() error at step %d, expsize %ld", > ...); OK. Will do it in v2 patch Best Regards Yang Xu > >> return 0; >> } >> >> if (TST_RET< 0) { >> - tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", >> - TST_RET); >> + tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld at" >> + " the %d times(expsize %ld)", TST_RET, loop, expsize); >> return 0; >> } >> >> if (TST_RET != expsize) { >> - tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, >> - expsize); >> + tst_res(TFAIL, "recv() read %ld bytes, expected %ld at the" >> + " %d times", TST_RET, expsize, loop); >> return 0; >> } >> >> @@ -120,6 +121,7 @@ static void run(unsigned int n) >> struct test_case *tc = testcase_list + n; >> socklen_t len = sizeof(addr); >> >> + tst_res(TINFO, "Testing %s", tc->name); >> tst_init_sockaddr_inet_bin(&addr, INADDR_LOOPBACK, 0); >> listen_sock = SAFE_SOCKET(tc->domain, tc->type, tc->protocol); >> dst_sock = listen_sock; >> @@ -139,19 +141,19 @@ static void run(unsigned int n) >> dst_sock = SAFE_ACCEPT(listen_sock, NULL, NULL); >> >> tc->send(sock, sendbuf, SENDSIZE, 0); >> - ret = check_recv(dst_sock, SENDSIZE); >> + ret = check_recv(dst_sock, SENDSIZE, i + 1); >> >> if (!ret) >> break; >> >> tc->send(sock, sendbuf, SENDSIZE, MSG_MORE); >> - ret = check_recv(dst_sock, 0); >> + ret = check_recv(dst_sock, 0, i + 1); >> >> if (!ret) >> break; >> >> tc->send(sock, sendbuf, 1, 0); >> - ret = check_recv(dst_sock, SENDSIZE + 1); >> + ret = check_recv(dst_sock, SENDSIZE + 1, i + 1); >> >> if (!ret) >> break; >> > > > > . > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH v2] syscalls/send02: Ensure recv() succeed when not using MSG_MORE flag 2020-10-16 12:30 ` Alexey Kodanev 2020-10-19 8:10 ` Yang Xu @ 2020-10-19 11:36 ` Yang Xu 2020-10-19 15:31 ` Alexey Kodanev 1 sibling, 1 reply; 5+ messages in thread From: Yang Xu @ 2020-10-19 11:36 UTC (permalink / raw) To: ltp In this test, we only check send()/sendto()/sendmsg() calls with MSG_MORE flag whether get EAGAIN/EWOULDBLOCK error immediately. For other flag, we just call recv again when meeting EAGAIN/EWOULDBLOCK error. Also, improve message and make this case more clean when failed. Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> --- testcases/kernel/syscalls/send/send02.c | 65 +++++++++++++++---------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/testcases/kernel/syscalls/send/send02.c b/testcases/kernel/syscalls/send/send02.c index 5630230fa..b2ab3b79c 100644 --- a/testcases/kernel/syscalls/send/send02.c +++ b/testcases/kernel/syscalls/send/send02.c @@ -71,32 +71,41 @@ static void setup(void) memset(sendbuf, 0x42, SENDSIZE); } -static int check_recv(int sock, long expsize) +static int check_recv(int sock, long expsize, int loop) { char recvbuf[RECVSIZE] = {0}; - TEST(recv(sock, recvbuf, RECVSIZE, MSG_DONTWAIT)); - - if (TST_RET == -1) { - /* expected error immediately after send(MSG_MORE) */ - if (!expsize && (TST_ERR == EAGAIN || TST_ERR == EWOULDBLOCK)) - return 1; - - /* unexpected error */ - tst_res(TFAIL | TTERRNO, "recv() error"); - return 0; - } - - if (TST_RET < 0) { - tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", - TST_RET); - return 0; - } - - if (TST_RET != expsize) { - tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, - expsize); - return 0; + while (1) { + TEST(recv(sock, recvbuf, RECVSIZE, MSG_DONTWAIT)); + + if (TST_RET == -1) { + /* expected error immediately after send(MSG_MORE) */ + if (TST_ERR == EAGAIN || TST_ERR == EWOULDBLOCK) { + if (expsize) + continue; + else + break; + } + + /* unexpected error */ + tst_res(TFAIL | TTERRNO, "recv() error at step %d, expsize %ld", + loop, expsize); + return 0; + } + + if (TST_RET < 0) { + tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld" + " at step %d, expsize is %ld", + TST_RET, loop, expsize); + return 0; + } + + if (TST_RET != expsize) { + tst_res(TFAIL, "recv() read %ld bytes, expected %ld" + "@step %d ", TST_RET, expsize, loop); + return 0; + } + return 1; } return 1; @@ -120,6 +129,8 @@ static void run(unsigned int n) struct test_case *tc = testcase_list + n; socklen_t len = sizeof(addr); + tst_res(TINFO, "Tesing %s", tc->name); + tst_init_sockaddr_inet_bin(&addr, INADDR_LOOPBACK, 0); listen_sock = SAFE_SOCKET(tc->domain, tc->type, tc->protocol); dst_sock = listen_sock; @@ -139,19 +150,19 @@ static void run(unsigned int n) dst_sock = SAFE_ACCEPT(listen_sock, NULL, NULL); tc->send(sock, sendbuf, SENDSIZE, 0); - ret = check_recv(dst_sock, SENDSIZE); + ret = check_recv(dst_sock, SENDSIZE, i + 1); if (!ret) break; tc->send(sock, sendbuf, SENDSIZE, MSG_MORE); - ret = check_recv(dst_sock, 0); + ret = check_recv(dst_sock, 0, i + 1); if (!ret) break; tc->send(sock, sendbuf, 1, 0); - ret = check_recv(dst_sock, SENDSIZE + 1); + ret = check_recv(dst_sock, SENDSIZE + 1, i + 1); if (!ret) break; @@ -163,7 +174,7 @@ static void run(unsigned int n) } if (ret) - tst_res(TPASS, "%s(MSG_MORE) works correctly", tc->name); + tst_res(TPASS, "MSG_MORE works correctly"); cleanup(); dst_sock = -1; -- 2.23.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH v2] syscalls/send02: Ensure recv() succeed when not using MSG_MORE flag 2020-10-19 11:36 ` [LTP] [PATCH v2] syscalls/send02: Ensure recv() succeed when not using MSG_MORE flag Yang Xu @ 2020-10-19 15:31 ` Alexey Kodanev 0 siblings, 0 replies; 5+ messages in thread From: Alexey Kodanev @ 2020-10-19 15:31 UTC (permalink / raw) To: ltp On 19.10.2020 14:36, Yang Xu wrote: > In this test, we only check send()/sendto()/sendmsg() calls > with MSG_MORE flag whether get EAGAIN/EWOULDBLOCK error immediately. > > For other flag, we just call recv again when meeting EAGAIN/EWOULDBLOCK > error. > > Also, improve message and make this case more clean when failed. > Hi Yang, Fixed quoted strings and applied, thanks! > Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> > --- > testcases/kernel/syscalls/send/send02.c | 65 +++++++++++++++---------- > 1 file changed, 38 insertions(+), 27 deletions(-) > > diff --git a/testcases/kernel/syscalls/send/send02.c b/testcases/kernel/syscalls/send/send02.c > index 5630230fa..b2ab3b79c 100644 > --- a/testcases/kernel/syscalls/send/send02.c > +++ b/testcases/kernel/syscalls/send/send02.c > @@ -71,32 +71,41 @@ static void setup(void) > memset(sendbuf, 0x42, SENDSIZE); > } > > -static int check_recv(int sock, long expsize) > +static int check_recv(int sock, long expsize, int loop) > { > char recvbuf[RECVSIZE] = {0}; > > - TEST(recv(sock, recvbuf, RECVSIZE, MSG_DONTWAIT)); > - > - if (TST_RET == -1) { > - /* expected error immediately after send(MSG_MORE) */ > - if (!expsize && (TST_ERR == EAGAIN || TST_ERR == EWOULDBLOCK)) > - return 1; > - > - /* unexpected error */ > - tst_res(TFAIL | TTERRNO, "recv() error"); > - return 0; > - } > - > - if (TST_RET < 0) { > - tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld", > - TST_RET); > - return 0; > - } > - > - if (TST_RET != expsize) { > - tst_res(TFAIL, "recv() read %ld bytes, expected %ld", TST_RET, > - expsize); > - return 0; > + while (1) { > + TEST(recv(sock, recvbuf, RECVSIZE, MSG_DONTWAIT)); > + > + if (TST_RET == -1) { > + /* expected error immediately after send(MSG_MORE) */ > + if (TST_ERR == EAGAIN || TST_ERR == EWOULDBLOCK) { > + if (expsize) > + continue; > + else > + break; > + } > + > + /* unexpected error */ > + tst_res(TFAIL | TTERRNO, "recv() error at step %d, expsize %ld", > + loop, expsize); > + return 0; > + } > + > + if (TST_RET < 0) { > + tst_res(TFAIL | TTERRNO, "Invalid recv() return value %ld" > + " at step %d, expsize is %ld", > + TST_RET, loop, expsize); > + return 0; > + } > + > + if (TST_RET != expsize) { > + tst_res(TFAIL, "recv() read %ld bytes, expected %ld" > + " at step %d ", TST_RET, expsize, loop); > + return 0; > + } > + return 1; > } > > return 1; > @@ -120,6 +129,8 @@ static void run(unsigned int n) > struct test_case *tc = testcase_list + n; > socklen_t len = sizeof(addr); > > + tst_res(TINFO, "Tesing %s", tc->name); > + > tst_init_sockaddr_inet_bin(&addr, INADDR_LOOPBACK, 0); > listen_sock = SAFE_SOCKET(tc->domain, tc->type, tc->protocol); > dst_sock = listen_sock; > @@ -139,19 +150,19 @@ static void run(unsigned int n) > dst_sock = SAFE_ACCEPT(listen_sock, NULL, NULL); > > tc->send(sock, sendbuf, SENDSIZE, 0); > - ret = check_recv(dst_sock, SENDSIZE); > + ret = check_recv(dst_sock, SENDSIZE, i + 1); > > if (!ret) > break; > > tc->send(sock, sendbuf, SENDSIZE, MSG_MORE); > - ret = check_recv(dst_sock, 0); > + ret = check_recv(dst_sock, 0, i + 1); > > if (!ret) > break; > > tc->send(sock, sendbuf, 1, 0); > - ret = check_recv(dst_sock, SENDSIZE + 1); > + ret = check_recv(dst_sock, SENDSIZE + 1, i + 1); > > if (!ret) > break; > @@ -163,7 +174,7 @@ static void run(unsigned int n) > } > > if (ret) > - tst_res(TPASS, "%s(MSG_MORE) works correctly", tc->name); > + tst_res(TPASS, "MSG_MORE works correctly"); > > cleanup(); > dst_sock = -1; > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-10-19 15:31 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-10-16 7:45 [LTP] [PATCH] syscalls/send02: Improve message Yang Xu 2020-10-16 12:30 ` Alexey Kodanev 2020-10-19 8:10 ` Yang Xu 2020-10-19 11:36 ` [LTP] [PATCH v2] syscalls/send02: Ensure recv() succeed when not using MSG_MORE flag Yang Xu 2020-10-19 15:31 ` Alexey Kodanev
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.