Thread (2 messages) 2 messages, 2 authors, 2021-06-23

Re: [LTP] [PATCH] fix rpc_suite/rpc:add check returned value

From: James Dong (董世江) <hidden>
Date: 2021-06-21 09:11:17
Also in: ltp

Hi Petr
I think this is just a simple test of some APIs, but some test cases are not standardized and cause errors like "Segmentation fault" during testing. I think it is necessary to fix these errors or delete these tests.

Kind regards,
Dong

-----邮件原件-----
发件人: Petr Vorel [mailto:pvorel@suse.cz] 
发送时间: 2021年6月21日 15:59
收件人: James Dong (董世江) [off-list ref]
抄送: ltp@lists.linux.it; Alexey Kodanev [off-list ref]; Steve Dickson [off-list ref]; libtirpc-devel@lists.sourceforge.net; linux-nfs@vger.kernel.org
主题: Re: [LTP] [PATCH] fix rpc_suite/rpc:add check returned value

Hi all,

[Cc libtirpc ML and Steve]
"Segmentation fault (core dumped)" due to the failure of svcfd_create 
during the rpc test, so you need to check the return value of the 
"svcfd_create" function
I'm not sure what is the value of TI-RPC tests. IMHO really messy code does not in the end cover much of libtirpc functionality. That's why I'm thinking to propose deleting whole testcases/network/rpc/rpc-tirpc/. libtirpc is being used in nfs-utils, thus it'd deserve to have some testing, but IMHO this should be libtirpc.

I'm not planning to dive into the technology to understand it enough be able to written the tests from scratch and I'm not aware of anybody else planning it.
Signed-off-by: dongshijiang <redacted>
---
 .../rpc/rpc_createdestroy_svc_destroy/rpc_svc_destroy.c      | 5 +++++
 .../rpc_createdestroy_svc_destroy/rpc_svc_destroy_stress.c   | 5 +++++
 .../rpc/rpc_regunreg_xprt_register/rpc_xprt_register.c       | 5 +++++
 .../rpc/rpc_regunreg_xprt_unregister/rpc_xprt_unregister.c   | 5 +++++
 4 files changed, 20 insertions(+)
quoted hunk
diff --git 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_created
estroy_svc_destroy/rpc_svc_destroy.c 
b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_created
estroy_svc_destroy/rpc_svc_destroy.c
index 60b96cec3..3557c0068 100644
--- 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_created
estroy_svc_destroy/rpc_svc_destroy.c
+++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_cre
+++ atedestroy_svc_destroy/rpc_svc_destroy.c
@@ -46,6 +46,11 @@ int main(void)
 	//First of all, create a server
 	svcr = svcfd_create(fd, 0, 0);
+
+	//check returned value
+	if ((SVCXPRT *) svcr == NULL) {
+		return test_status;
+	}
quoted hunk
 	//Then call destroy macro
 	svc_destroy(svcr);
diff --git 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_created
estroy_svc_destroy/rpc_svc_destroy_stress.c 
b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_created
estroy_svc_destroy/rpc_svc_destroy_stress.c
index ecd145393..5a4331f4d 100644
--- 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_created
estroy_svc_destroy/rpc_svc_destroy_stress.c
+++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_cre
+++ atedestroy_svc_destroy/rpc_svc_destroy_stress.c
@@ -55,6 +55,11 @@ int main(int argn, char *argc[])
 	//First of all, create a server
 	for (i = 0; i < nbCall; i++) {
 		svcr = svcfd_create(fd, 0, 0);
+
+		//check returned value
+		if ((SVCXPRT *) svcr == NULL)
+			continue;
+		svcr = NULL;
man svc_destroy(3) states that it deallocates private data structures, including xprt itself.

Kind regards,
Petr
quoted hunk
 		//Then call destroy macro
 		svc_destroy(svcr);
diff --git 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_regunre
g_xprt_register/rpc_xprt_register.c 
b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_regunre
g_xprt_register/rpc_xprt_register.c
index da3b93022..de4df15f1 100644
--- 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_regunre
g_xprt_register/rpc_xprt_register.c
+++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_reg
+++ unreg_xprt_register/rpc_xprt_register.c
@@ -48,6 +48,11 @@ int main(void)
 	//create a server
 	svcr = svcfd_create(fd, 1024, 1024);
+
+	//check returned value
+	if ((SVCXPRT *) svcr == NULL) {
+		return test_status;
+	}
quoted hunk
 	//call routine
 	xprt_register(svcr);
diff --git 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_regunre
g_xprt_unregister/rpc_xprt_unregister.c 
b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_regunre
g_xprt_unregister/rpc_xprt_unregister.c
index d0b7a20d4..fbaec25ad 100644
--- 
a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_regunre
g_xprt_unregister/rpc_xprt_unregister.c
+++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_reg
+++ unreg_xprt_unregister/rpc_xprt_unregister.c
@@ -52,6 +52,11 @@ int main(int argn, char *argc[])
 	//create a server
 	svcr = svcfd_create(fd, 1024, 1024);
+
+	//check returned value
+	if ((SVCXPRT *) svcr == NULL) {
+		return test_status;
+	}
 	xprt_register(svcr);
 	//call routine
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help