CVS commit: src/tests/lib/libc/rpc

2016-08-27 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Aug 27 14:36:22 UTC 2016

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
skip if we are not running rpcbind.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.9 src/tests/lib/libc/rpc/t_rpc.c:1.10
--- src/tests/lib/libc/rpc/t_rpc.c:1.9	Fri Nov 27 08:59:40 2015
+++ src/tests/lib/libc/rpc/t_rpc.c	Sat Aug 27 10:36:22 2016
@@ -1,7 +1,7 @@
-/*	$NetBSD: t_rpc.c,v 1.9 2015/11/27 13:59:40 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.10 2016/08/27 14:36:22 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.9 2015/11/27 13:59:40 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.10 2016/08/27 14:36:22 christos Exp $");
 
 #include 
 #include 
@@ -21,12 +21,12 @@ __RCSID("$NetBSD: t_rpc.c,v 1.9 2015/11/
 
 #define SKIPX(ev, msg, ...)	do {			\
 	atf_tc_skip(msg, __VA_ARGS__);			\
-	return;		\
+	return ev;	\
 } while(/*CONSTCOND*/0)
 
 #else
-#define ERRX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
-#define SKIPX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
+#define ERRX(ev, msg, ...)	errx(EXIT_FAILURE, msg, __VA_ARGS__)
+#define SKIPX(ev, msg, ...)	errx(EXIT_FAILURE, msg, __VA_ARGS__)
 #endif
 
 #ifdef DEBUG
@@ -72,13 +72,13 @@ onehost(const char *host, const char *tr
 	__rpc_control(CLCR_SET_RPCB_TIMEOUT, );
 
 	if ((clnt = clnt_create(host, RPCBPROG, RPCBVERS, transp)) == NULL)
-		SKIPX(EXIT_FAILURE, "clnt_create (%s)", clnt_spcreateerror(""));
+		SKIPX(, "clnt_create (%s)", clnt_spcreateerror(""));
 
 	tv.tv_sec = 1;
 	tv.tv_usec = 0;
 	if (clnt_call(clnt, RPCBPROC_NULL, xdr_void, NULL, xdr_void, NULL, tv)
 	!= RPC_SUCCESS)
-		ERRX(EXIT_FAILURE, "clnt_call (%s)", clnt_sperror(clnt, ""));
+		ERRX(, "clnt_call (%s)", clnt_sperror(clnt, ""));
 	clnt_control(clnt, CLGET_SVC_ADDR, (char *) );
 	reply(NULL, , NULL);
 }
@@ -100,13 +100,13 @@ server(struct svc_req *rqstp, SVCXPRT *t
 	switch (rqstp->rq_proc) {
 	case NULLPROC:
 		if (!svc_sendreply(transp, (xdrproc_t)xdr_void, NULL))
-			ERRX(EXIT_FAILURE, "svc_sendreply failed %d", 0);
+			ERRX(, "svc_sendreply failed %d", 0);
 		return;
 	case PLUSONE:
 		break;
 	case DESTROY:
 		if (!svc_sendreply(transp, (xdrproc_t)xdr_void, NULL))
-			ERRX(EXIT_FAILURE, "svc_sendreply failed %d", 0);
+			ERRX(, "svc_sendreply failed %d", 0);
 		svc_destroy(transp);
 		exit(0);
 	default:
@@ -121,7 +121,7 @@ server(struct svc_req *rqstp, SVCXPRT *t
 	DPRINTF("About to increment\n");
 	num++;
 	if (!svc_sendreply(transp, (xdrproc_t)xdr_int, (void *)))
-		ERRX(EXIT_FAILURE, "svc_sendreply failed %d", 1);
+		ERRX(, "svc_sendreply failed %d", 1);
 	DPRINTF("Leaving server procedure.\n");
 }
 
@@ -176,7 +176,7 @@ regtest(const char *hostname, const char
 
 	svc_fdset_init(p ? SVC_FDSET_POLL : 0);
 	if (!svc_create(server, PROGNUM, VERSNUM, transp))
-		ERRX(EXIT_FAILURE, "Cannot create server %d", num);
+		SKIPX(EXIT_FAILURE, "Cannot create server %d", num);
 
 	switch ((pid = fork())) {
 	case 0:



CVS commit: src/tests/lib/libc/rpc

2015-11-27 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Fri Nov 27 13:59:40 UTC 2015

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
fix double negation


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.8 src/tests/lib/libc/rpc/t_rpc.c:1.9
--- src/tests/lib/libc/rpc/t_rpc.c:1.8	Tue Nov 10 13:13:01 2015
+++ src/tests/lib/libc/rpc/t_rpc.c	Fri Nov 27 08:59:40 2015
@@ -1,7 +1,7 @@
-/*	$NetBSD: t_rpc.c,v 1.8 2015/11/10 18:13:01 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.9 2015/11/27 13:59:40 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.8 2015/11/10 18:13:01 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.9 2015/11/27 13:59:40 christos Exp $");
 
 #include 
 #include 
@@ -140,9 +140,9 @@ rawtest(const char *arg)
 
 	svc = svc_raw_create();
 	if (svc == NULL)
-		ERRX(EXIT_FAILURE, "Can't not create server %d", num);
+		ERRX(EXIT_FAILURE, "Cannot create server %d", num);
 	if (!svc_reg(svc, PROGNUM, VERSNUM, server, NULL))
-		ERRX(EXIT_FAILURE, "Can't not register server %d", num);
+		ERRX(EXIT_FAILURE, "Cannot register server %d", num);
 
 	clnt = clnt_raw_create(PROGNUM, VERSNUM);
 	if (clnt == NULL)
@@ -176,7 +176,7 @@ regtest(const char *hostname, const char
 
 	svc_fdset_init(p ? SVC_FDSET_POLL : 0);
 	if (!svc_create(server, PROGNUM, VERSNUM, transp))
-		ERRX(EXIT_FAILURE, "Can't not create server %d", num);
+		ERRX(EXIT_FAILURE, "Cannot create server %d", num);
 
 	switch ((pid = fork())) {
 	case 0:



CVS commit: src/tests/lib/libc/rpc

2015-11-10 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Nov 10 18:13:01 UTC 2015

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
CID 1338516: Handle svc_run() returning.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.7 src/tests/lib/libc/rpc/t_rpc.c:1.8
--- src/tests/lib/libc/rpc/t_rpc.c:1.7	Sun Nov  8 14:40:06 2015
+++ src/tests/lib/libc/rpc/t_rpc.c	Tue Nov 10 13:13:01 2015
@@ -1,7 +1,7 @@
-/*	$NetBSD: t_rpc.c,v 1.7 2015/11/08 19:40:06 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.8 2015/11/10 18:13:01 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.7 2015/11/08 19:40:06 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.8 2015/11/10 18:13:01 christos Exp $");
 
 #include 
 #include 
@@ -182,6 +182,7 @@ regtest(const char *hostname, const char
 	case 0:
 		DPRINTF("Calling svc_run\n");
 		svc_run();
+		ERRX(EXIT_FAILURE, "svc_run returned %d!", num);
 	case -1:
 		ERRX(EXIT_FAILURE, "Fork failed (%s)", strerror(errno));
 	default:



CVS commit: src/tests/lib/libc/rpc

2015-11-08 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Nov  8 19:38:04 UTC 2015

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
Add more rpc tests. XXX: Need rpcbind running.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.5 src/tests/lib/libc/rpc/t_rpc.c:1.6
--- src/tests/lib/libc/rpc/t_rpc.c:1.5	Fri Nov  6 10:30:47 2015
+++ src/tests/lib/libc/rpc/t_rpc.c	Sun Nov  8 14:38:04 2015
@@ -1,19 +1,21 @@
-/*	$NetBSD: t_rpc.c,v 1.5 2015/11/06 15:30:47 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.6 2015/11/08 19:38:04 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.5 2015/11/06 15:30:47 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.6 2015/11/08 19:38:04 christos Exp $");
 
 #include 
 #include 
 #include 
-// #include 
 #include 
+#include 
 #include 
 #include 
 #include 
+#include 
 #include 
 
-
+#define DEBUG
+#define TEST
 #ifndef TEST
 #include 
 
@@ -86,8 +88,9 @@ onehost(const char *host, const char *tr
 #define PROGNUM 0x81
 #define VERSNUM 0x01
 #define PLUSONE 1
+#define DESTROY 2
 
-static struct timeval 	tout = {0, 0};
+static struct timeval 	tout = {1, 0};
 
 static void
 server(struct svc_req *rqstp, SVCXPRT *transp)
@@ -103,6 +106,11 @@ server(struct svc_req *rqstp, SVCXPRT *t
 		return;
 	case PLUSONE:
 		break;
+	case DESTROY:
+		if (!svc_sendreply(transp, (xdrproc_t)xdr_void, NULL))
+			ERRX(EXIT_FAILURE, "svc_sendreply failed %d", 0);
+		svc_destroy(transp);
+		exit(0);
 	default:
 		svcerr_noproc(transp);
 		return;
@@ -155,6 +163,55 @@ rawtest(const char *arg)
 	return EXIT_SUCCESS;
 }
 
+static int
+regtest(const char *hostname, const char *transp, const char *arg, int p)
+{
+	CLIENT *clnt;
+	int 		num, resp;
+	enum clnt_stat  rv;
+	pid_t		pid;
+
+	if (arg)
+		num = atoi(arg);
+	else
+		num = 0;
+
+	svc_fdset_init(p ? SVC_FDSET_POLL : 0);
+	if (!svc_create(server, PROGNUM, VERSNUM, transp))
+		ERRX(EXIT_FAILURE, "Can't not create server %d", num);
+
+	switch ((pid = fork())) {
+	case 0:
+		DPRINTF("Calling svc_run\n");
+		svc_run();
+	case -1:
+		ERRX(EXIT_FAILURE, "Fork failed (%s)", strerror(errno));
+	default:
+		sleep(1);
+		break;
+	}
+
+	DPRINTF("Initializing client\n");
+	clnt = clnt_create(hostname, PROGNUM, VERSNUM, transp);
+	if (clnt == NULL)
+		ERRX(EXIT_FAILURE, "%s",
+		clnt_spcreateerror("clnt_raw_create"));
+	rv = clnt_call(clnt, PLUSONE, (xdrproc_t)xdr_int, (void *),
+	(xdrproc_t)xdr_int, (void *), tout);
+	if (rv != RPC_SUCCESS)
+		ERRX(EXIT_FAILURE, "clnt_call: %s", clnt_sperrno(rv));
+	DPRINTF("Got %d\n", resp);
+	if (++num != resp)
+		ERRX(EXIT_FAILURE, "expected %d got %d", num, resp);
+	rv = clnt_call(clnt, DESTROY, (xdrproc_t)xdr_void, NULL,
+	(xdrproc_t)xdr_void, NULL, tout);
+	if (rv != RPC_SUCCESS)
+		ERRX(EXIT_FAILURE, "clnt_call: %s", clnt_sperrno(rv));
+	clnt_destroy(clnt);
+
+	return EXIT_SUCCESS;
+}
+
 
 #ifdef TEST
 static void
@@ -173,11 +230,18 @@ int
 main(int argc, char *argv[])
 {
 	int ch;
+	int		s, p;
 	const char *transp = "udp";
 
-
-	while ((ch = getopt(argc, argv, "rtu")) != -1)
+	p = s = 0;
+	while ((ch = getopt(argc, argv, "prstu")) != -1)
 		switch (ch) {
+		case 'p':
+			p = 1;
+			break;
+		case 's':
+			s = 1;
+			break;
 		case 't':
 			transp = "tcp";
 			break;
@@ -188,7 +252,8 @@ main(int argc, char *argv[])
 			transp = NULL;
 			break;
 		default:
-			fprintf(stderr, "Usage: %s -[r|t|u] [...]\n",
+			fprintf(stderr,
+			"Usage: %s -[r|s|t|u] [...]\n",
 			getprogname());
 			return EXIT_FAILURE;
 		}
@@ -201,7 +266,9 @@ main(int argc, char *argv[])
 	} else {
 		for (; optind < argc; optind++) {
 			if (transp)
-onehost(argv[optind], transp);
+s == 0 ?
+onehost(argv[optind], transp) :
+regtest(argv[optind], transp, "1", p);
 			else
 rawtest(argv[optind]);
 		}
@@ -248,11 +315,64 @@ ATF_TC_BODY(raw, tc)
 	rawtest(NULL);
 
 }
+
+ATF_TC(tcp);
+ATF_TC_HEAD(tcp, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks svc tcp (select)");
+}
+
+ATF_TC_BODY(tcp, tc)
+{
+	regtest("localhost", "tcp", 1, 0);
+
+}
+
+ATF_TC(udp);
+ATF_TC_HEAD(udp, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks svc udp (select)");
+}
+
+ATF_TC_BODY(udp, tc)
+{
+	regtest("localhost", "udp", 1, 0);
+
+}
+
+ATF_TC(tcp_poll);
+ATF_TC_HEAD(tcp_poll, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks svc tcp (poll)");
+}
+
+ATF_TC_BODY(tcp_poll, tc)
+{
+	regtest("localhost", "tcp", 1, 1);
+
+}
+
+ATF_TC(udp_poll);
+ATF_TC_HEAD(udp_poll, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks svc udp (poll)");
+}
+
+ATF_TC_BODY(udp_poll, tc)
+{
+	regtest("localhost", "udp", 1, 1);
+
+}
+
 ATF_TP_ADD_TCS(tp)
 {
 	ATF_TP_ADD_TC(tp, get_svc_addr_udp);
 	ATF_TP_ADD_TC(tp, get_svc_addr_tcp);
 	ATF_TP_ADD_TC(tp, raw);
+	

CVS commit: src/tests/lib/libc/rpc

2015-11-08 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Nov  8 19:40:06 UTC 2015

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
Disable debugging.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.6 src/tests/lib/libc/rpc/t_rpc.c:1.7
--- src/tests/lib/libc/rpc/t_rpc.c:1.6	Sun Nov  8 14:38:04 2015
+++ src/tests/lib/libc/rpc/t_rpc.c	Sun Nov  8 14:40:06 2015
@@ -1,7 +1,7 @@
-/*	$NetBSD: t_rpc.c,v 1.6 2015/11/08 19:38:04 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.7 2015/11/08 19:40:06 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.6 2015/11/08 19:38:04 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.7 2015/11/08 19:40:06 christos Exp $");
 
 #include 
 #include 
@@ -14,8 +14,6 @@ __RCSID("$NetBSD: t_rpc.c,v 1.6 2015/11/
 #include 
 #include 
 
-#define DEBUG
-#define TEST
 #ifndef TEST
 #include 
 
@@ -324,7 +322,7 @@ ATF_TC_HEAD(tcp, tc)
 
 ATF_TC_BODY(tcp, tc)
 {
-	regtest("localhost", "tcp", 1, 0);
+	regtest("localhost", "tcp", "1", 0);
 
 }
 
@@ -336,7 +334,7 @@ ATF_TC_HEAD(udp, tc)
 
 ATF_TC_BODY(udp, tc)
 {
-	regtest("localhost", "udp", 1, 0);
+	regtest("localhost", "udp", "1", 0);
 
 }
 
@@ -348,7 +346,7 @@ ATF_TC_HEAD(tcp_poll, tc)
 
 ATF_TC_BODY(tcp_poll, tc)
 {
-	regtest("localhost", "tcp", 1, 1);
+	regtest("localhost", "tcp", "1", 1);
 
 }
 
@@ -360,7 +358,7 @@ ATF_TC_HEAD(udp_poll, tc)
 
 ATF_TC_BODY(udp_poll, tc)
 {
-	regtest("localhost", "udp", 1, 1);
+	regtest("localhost", "udp", "1", 1);
 
 }
 



CVS commit: src/tests/lib/libc/rpc

2015-11-06 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Fri Nov  6 15:23:23 UTC 2015

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
Add a test for the raw transports which are currently busted.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.3 src/tests/lib/libc/rpc/t_rpc.c:1.4
--- src/tests/lib/libc/rpc/t_rpc.c:1.3	Thu Feb 28 10:56:53 2013
+++ src/tests/lib/libc/rpc/t_rpc.c	Fri Nov  6 10:23:23 2015
@@ -1,11 +1,12 @@
-/*	$NetBSD: t_rpc.c,v 1.3 2013/02/28 15:56:53 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.4 2015/11/06 15:23:23 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.3 2013/02/28 15:56:53 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.4 2015/11/06 15:23:23 christos Exp $");
 
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -28,6 +29,12 @@ __RCSID("$NetBSD: t_rpc.c,v 1.3 2013/02/
 #define SKIPX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
 #endif
 
+#ifdef DEBUG
+#define DPRINTF(...)	printf(__VA_ARGS__)
+#else
+#define DPRINTF(...)
+#endif
+
 
 #define RPCBPROC_NULL 0
 
@@ -47,7 +54,7 @@ reply(caddr_t replyp, struct netbuf * ra
 	return 0;
 }
 
-extern bool __rpc_control(int, void *);
+extern bool_t __rpc_control(int, void *);
 
 static void
 onehost(const char *host, const char *transp)
@@ -76,9 +83,82 @@ onehost(const char *host, const char *tr
 	reply(NULL, , NULL);
 }
 
+#define PROGNUM 0x81
+#define VERSNUM 0x01
+#define PLUSONE 1
+
+static struct timeval 	tout = {0, 0};
+
+static void
+server(struct svc_req *rqstp, SVCXPRT *transp)
+{
+	int num;
+
+	DPRINTF("Starting server\n");
+
+	switch (rqstp->rq_proc) {
+	case NULLPROC:
+		if (!svc_sendreply(transp, (xdrproc_t)xdr_void, NULL))
+			ERRX(EXIT_FAILURE, "svc_sendreply failed");
+		return;
+	case PLUSONE:
+		break;
+	default:
+		svcerr_noproc(transp);
+		return;
+	}
+
+	if (!svc_getargs(transp, (xdrproc_t)xdr_int, (void *))) {
+		svcerr_decode(transp);
+		return;
+	}
+	DPRINTF("About to increment\n");
+	num++;
+	if (!svc_sendreply(transp, (xdrproc_t)xdr_int, (void *)))
+		ERRX(EXIT_FAILURE, "svc_sendreply failed");
+	DPRINTF("Leaving server procedure.\n");
+}
+
+int
+rawtest(const char *arg)
+{
+	CLIENT *clnt;
+	SVCXPRT*svc;
+	int 		num, resp;
+	enum clnt_stat  rv;
+
+	if (arg)
+		num = atoi(arg);
+	else
+		num = 0;
+
+	svc = svc_raw_create();
+	if (svc == NULL)
+		ERRX(EXIT_FAILURE, "Can't not create server");
+	if (!svc_reg(svc, PROGNUM, VERSNUM, server, NULL))
+		ERRX(EXIT_FAILURE, "Can't not register server");
+
+	clnt = clnt_raw_create(PROGNUM, VERSNUM);
+	if (clnt == NULL)
+		ERRX(EXIT_FAILURE, "%s",
+		clnt_spcreateerror("clnt_raw_create"));
+	rv = clnt_call(clnt, PLUSONE, (xdrproc_t)xdr_int, (void *),
+	(xdrproc_t)xdr_int, (void *), tout);
+	if (rv != RPC_SUCCESS)
+		ERRX(EXIT_FAILURE, "clnt_call: %s", clnt_sperrno(rv));
+	DPRINTF("Got %d\n", resp);
+	clnt_destroy(clnt);
+	svc_destroy(svc);
+	if (++num != resp)
+		ERRX(EXIT_FAILURE, "expected %d got %d", num, resp);
+
+	return EXIT_SUCCESS;
+}
+
+
 #ifdef TEST
 static void
-allhosts(void)
+allhosts(const char *transp)
 {
 	enum clnt_stat  clnt_stat;
 
@@ -96,7 +176,7 @@ main(int argc, char *argv[])
 	const char *transp = "udp";
 
 
-	while ((ch = getopt(argc, argv, "ut")) != -1)
+	while ((ch = getopt(argc, argv, "rtu")) != -1)
 		switch (ch) {
 		case 't':
 			transp = "tcp";
@@ -104,17 +184,28 @@ main(int argc, char *argv[])
 		case 'u':
 			transp = "udp";
 			break;
+		case 'r':
+			transp = NULL;
+			break;
 		default:
-			fprintf(stderr, "Usage: %s -[t|u] [...]\n",
+			fprintf(stderr, "Usage: %s -[r|t|u] [...]\n",
 			getprogname());
 			return EXIT_FAILURE;
 		}
 
-	if (argc == optind)
-		allhosts();
-	else
-		for (; optind < argc; optind++)
-			onehost(argv[optind], transp);
+	if (argc == optind) {
+		if  (transp)
+			allhosts(transp);
+		else
+			rawtest(NULL);
+	} else {
+		for (; optind < argc; optind++) {
+			if (transp)
+onehost(argv[optind], transp);
+			else
+rawtest(argv[optind]);
+		}
+	}
 
 	return EXIT_SUCCESS;
 }
@@ -146,10 +237,22 @@ ATF_TC_BODY(get_svc_addr_udp, tc)
 
 }
 
+ATF_TC(raw);
+ATF_TC_HEAD(raw, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks svc raw");
+}
+
+ATF_TC_BODY(raw, tc)
+{
+	rawtest(NULL);
+
+}
 ATF_TP_ADD_TCS(tp)
 {
 	ATF_TP_ADD_TC(tp, get_svc_addr_udp);
 	ATF_TP_ADD_TC(tp, get_svc_addr_tcp);
+	ATF_TP_ADD_TC(tp, raw);
 
 	return atf_no_error();
 }



CVS commit: src/tests/lib/libc/rpc

2015-11-06 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Fri Nov  6 15:30:47 UTC 2015

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
make this compile for tests.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.4 src/tests/lib/libc/rpc/t_rpc.c:1.5
--- src/tests/lib/libc/rpc/t_rpc.c:1.4	Fri Nov  6 10:23:23 2015
+++ src/tests/lib/libc/rpc/t_rpc.c	Fri Nov  6 10:30:47 2015
@@ -1,12 +1,12 @@
-/*	$NetBSD: t_rpc.c,v 1.4 2015/11/06 15:23:23 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.5 2015/11/06 15:30:47 christos Exp $	*/
 
 #include 
-__RCSID("$NetBSD: t_rpc.c,v 1.4 2015/11/06 15:23:23 christos Exp $");
+__RCSID("$NetBSD: t_rpc.c,v 1.5 2015/11/06 15:30:47 christos Exp $");
 
 #include 
 #include 
 #include 
-#include 
+// #include 
 #include 
 #include 
 #include 
@@ -99,7 +99,7 @@ server(struct svc_req *rqstp, SVCXPRT *t
 	switch (rqstp->rq_proc) {
 	case NULLPROC:
 		if (!svc_sendreply(transp, (xdrproc_t)xdr_void, NULL))
-			ERRX(EXIT_FAILURE, "svc_sendreply failed");
+			ERRX(EXIT_FAILURE, "svc_sendreply failed %d", 0);
 		return;
 	case PLUSONE:
 		break;
@@ -115,11 +115,11 @@ server(struct svc_req *rqstp, SVCXPRT *t
 	DPRINTF("About to increment\n");
 	num++;
 	if (!svc_sendreply(transp, (xdrproc_t)xdr_int, (void *)))
-		ERRX(EXIT_FAILURE, "svc_sendreply failed");
+		ERRX(EXIT_FAILURE, "svc_sendreply failed %d", 1);
 	DPRINTF("Leaving server procedure.\n");
 }
 
-int
+static int
 rawtest(const char *arg)
 {
 	CLIENT *clnt;
@@ -134,9 +134,9 @@ rawtest(const char *arg)
 
 	svc = svc_raw_create();
 	if (svc == NULL)
-		ERRX(EXIT_FAILURE, "Can't not create server");
+		ERRX(EXIT_FAILURE, "Can't not create server %d", num);
 	if (!svc_reg(svc, PROGNUM, VERSNUM, server, NULL))
-		ERRX(EXIT_FAILURE, "Can't not register server");
+		ERRX(EXIT_FAILURE, "Can't not register server %d", num);
 
 	clnt = clnt_raw_create(PROGNUM, VERSNUM);
 	if (clnt == NULL)



CVS commit: src/tests/lib/libc/rpc

2013-02-28 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Thu Feb 28 15:56:54 UTC 2013

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
remove the timeout; it is handled internally.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.2 src/tests/lib/libc/rpc/t_rpc.c:1.3
--- src/tests/lib/libc/rpc/t_rpc.c:1.2	Wed Feb 27 13:39:58 2013
+++ src/tests/lib/libc/rpc/t_rpc.c	Thu Feb 28 10:56:53 2013
@@ -1,7 +1,7 @@
-/*	$NetBSD: t_rpc.c,v 1.2 2013/02/27 18:39:58 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.3 2013/02/28 15:56:53 christos Exp $	*/
 
 #include sys/cdefs.h
-__RCSID($NetBSD: t_rpc.c,v 1.2 2013/02/27 18:39:58 christos Exp $);
+__RCSID($NetBSD: t_rpc.c,v 1.3 2013/02/28 15:56:53 christos Exp $);
 
 #include sys/types.h
 #include sys/socket.h
@@ -125,7 +125,6 @@ ATF_TC(get_svc_addr_tcp);
 ATF_TC_HEAD(get_svc_addr_tcp, tc)
 {
 	atf_tc_set_md_var(tc, descr, Checks CLGET_SVC_ADDR for tcp);
-	atf_tc_set_md_var(tc, timeout, 1);
 
 }
 
@@ -139,7 +138,6 @@ ATF_TC(get_svc_addr_udp);
 ATF_TC_HEAD(get_svc_addr_udp, tc)
 {
 	atf_tc_set_md_var(tc, descr, Checks CLGET_SVC_ADDR for udp);
-	atf_tc_set_md_var(tc, timeout, 1);
 }
 
 ATF_TC_BODY(get_svc_addr_udp, tc)



CVS commit: src/tests/lib/libc/rpc

2013-02-27 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Feb 27 18:39:58 UTC 2013

Modified Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
skip the tests if rpcbind is not responding.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u src/tests/lib/libc/rpc/t_rpc.c:1.1 src/tests/lib/libc/rpc/t_rpc.c:1.2
--- src/tests/lib/libc/rpc/t_rpc.c:1.1	Tue Feb 26 12:06:55 2013
+++ src/tests/lib/libc/rpc/t_rpc.c	Wed Feb 27 13:39:58 2013
@@ -1,7 +1,7 @@
-/*	$NetBSD: t_rpc.c,v 1.1 2013/02/26 17:06:55 christos Exp $	*/
+/*	$NetBSD: t_rpc.c,v 1.2 2013/02/27 18:39:58 christos Exp $	*/
 
 #include sys/cdefs.h
-__RCSID($NetBSD: t_rpc.c,v 1.1 2013/02/26 17:06:55 christos Exp $);
+__RCSID($NetBSD: t_rpc.c,v 1.2 2013/02/27 18:39:58 christos Exp $);
 
 #include sys/types.h
 #include sys/socket.h
@@ -17,8 +17,15 @@ __RCSID($NetBSD: t_rpc.c,v 1.1 2013/02/
 #include atf-c.h
 
 #define ERRX(ev, msg, ...)	ATF_REQUIRE_MSG(0, msg, __VA_ARGS__)
+
+#define SKIPX(ev, msg, ...)	do {			\
+	atf_tc_skip(msg, __VA_ARGS__);			\
+	return;		\
+} while(/*CONSTCOND*/0)
+
 #else
 #define ERRX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
+#define SKIPX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
 #endif
 
 
@@ -40,6 +47,8 @@ reply(caddr_t replyp, struct netbuf * ra
 	return 0;
 }
 
+extern bool __rpc_control(int, void *);
+
 static void
 onehost(const char *host, const char *transp)
 {
@@ -47,9 +56,16 @@ onehost(const char *host, const char *tr
 	struct netbuf   addr;
 	struct timeval  tv;
 
+	/*
+	 * Magic!
+	 */
+	tv.tv_sec = 0;
+	tv.tv_usec = 50;
+#define CLCR_SET_RPCB_TIMEOUT   2
+	__rpc_control(CLCR_SET_RPCB_TIMEOUT, tv);
 
 	if ((clnt = clnt_create(host, RPCBPROG, RPCBVERS, transp)) == NULL)
-		ERRX(EXIT_FAILURE, clnt_create (%s), clnt_spcreateerror());
+		SKIPX(EXIT_FAILURE, clnt_create (%s), clnt_spcreateerror());
 
 	tv.tv_sec = 1;
 	tv.tv_usec = 0;



CVS commit: src/tests/lib/libc/rpc

2013-02-26 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Feb 26 17:06:56 UTC 2013

Modified Files:
src/tests/lib/libc/rpc: Makefile
Added Files:
src/tests/lib/libc/rpc: t_rpc.c

Log Message:
Add a test for the rpc getaddr bug lib/13082.
Timeout added, but it needs rpcbind to be running to succeed.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libc/rpc/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/lib/libc/rpc/t_rpc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/rpc/Makefile
diff -u src/tests/lib/libc/rpc/Makefile:1.1 src/tests/lib/libc/rpc/Makefile:1.2
--- src/tests/lib/libc/rpc/Makefile:1.1	Sat Jan  8 01:59:37 2011
+++ src/tests/lib/libc/rpc/Makefile	Tue Feb 26 12:06:55 2013
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.1 2011/01/08 06:59:37 pgoyette Exp $
+# $NetBSD: Makefile,v 1.2 2013/02/26 17:06:55 christos Exp $
 
 MKMAN=	no
 
@@ -9,6 +9,8 @@ TESTSDIR=		${TESTSBASE}/lib/libc/rpc
 TESTS_C=		t_xdr
 SRCS.t_xdr=		${RPCSRCS:.x=_xdr.c} t_xdr.c
 
+TESTS_C+=		t_rpc
+
 RPCSRCS=		h_testbits.x
 DPSRCS=			${RPCSRCS:.x=.h}
 CLEANFILES+=	${RPCSRCS:.x=.h} ${RPCSRCS:.x=_xdr.c}

Added files:

Index: src/tests/lib/libc/rpc/t_rpc.c
diff -u /dev/null src/tests/lib/libc/rpc/t_rpc.c:1.1
--- /dev/null	Tue Feb 26 12:06:56 2013
+++ src/tests/lib/libc/rpc/t_rpc.c	Tue Feb 26 12:06:55 2013
@@ -0,0 +1,143 @@
+/*	$NetBSD: t_rpc.c,v 1.1 2013/02/26 17:06:55 christos Exp $	*/
+
+#include sys/cdefs.h
+__RCSID($NetBSD: t_rpc.c,v 1.1 2013/02/26 17:06:55 christos Exp $);
+
+#include sys/types.h
+#include sys/socket.h
+#include rpc/rpc.h
+#include stdlib.h
+#include err.h
+#include netdb.h
+#include stdio.h
+#include unistd.h
+
+
+#ifndef TEST
+#include atf-c.h
+
+#define ERRX(ev, msg, ...)	ATF_REQUIRE_MSG(0, msg, __VA_ARGS__)
+#else
+#define ERRX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
+#endif
+
+
+#define RPCBPROC_NULL 0
+
+static int
+reply(caddr_t replyp, struct netbuf * raddrp, struct netconfig * nconf)
+{
+	char host[NI_MAXHOST];
+	struct sockaddr *sock = raddrp-buf;
+	int error;
+
+
+	error = getnameinfo(sock, sock-sa_len, host, sizeof(host), NULL, 0, 0);
+	if (error)
+		warnx(Cannot resolve address (%s), gai_strerror(error));
+	else
+		printf(response from: %s\n, host);
+	return 0;
+}
+
+static void
+onehost(const char *host, const char *transp)
+{
+	CLIENT *clnt;
+	struct netbuf   addr;
+	struct timeval  tv;
+
+
+	if ((clnt = clnt_create(host, RPCBPROG, RPCBVERS, transp)) == NULL)
+		ERRX(EXIT_FAILURE, clnt_create (%s), clnt_spcreateerror());
+
+	tv.tv_sec = 1;
+	tv.tv_usec = 0;
+	if (clnt_call(clnt, RPCBPROC_NULL, xdr_void, NULL, xdr_void, NULL, tv)
+	!= RPC_SUCCESS)
+		ERRX(EXIT_FAILURE, clnt_call (%s), clnt_sperror(clnt, ));
+	clnt_control(clnt, CLGET_SVC_ADDR, (char *) addr);
+	reply(NULL, addr, NULL);
+}
+
+#ifdef TEST
+static void
+allhosts(void)
+{
+	enum clnt_stat  clnt_stat;
+
+	clnt_stat = rpc_broadcast(RPCBPROG, RPCBVERS, RPCBPROC_NULL,
+	(xdrproc_t)xdr_void, NULL, (xdrproc_t)xdr_void,
+	NULL, (resultproc_t)reply, transp);
+	if (clnt_stat != RPC_SUCCESS  clnt_stat != RPC_TIMEDOUT)
+		ERRX(EXIT_FAILURE, %s, clnt_sperrno(clnt_stat));
+}
+
+int
+main(int argc, char *argv[])
+{
+	int ch;
+	const char *transp = udp;
+
+
+	while ((ch = getopt(argc, argv, ut)) != -1)
+		switch (ch) {
+		case 't':
+			transp = tcp;
+			break;
+		case 'u':
+			transp = udp;
+			break;
+		default:
+			fprintf(stderr, Usage: %s -[t|u] [hostname...]\n,
+			getprogname());
+			return EXIT_FAILURE;
+		}
+
+	if (argc == optind)
+		allhosts();
+	else
+		for (; optind  argc; optind++)
+			onehost(argv[optind], transp);
+
+	return EXIT_SUCCESS;
+}
+
+#else
+
+ATF_TC(get_svc_addr_tcp);
+ATF_TC_HEAD(get_svc_addr_tcp, tc)
+{
+	atf_tc_set_md_var(tc, descr, Checks CLGET_SVC_ADDR for tcp);
+	atf_tc_set_md_var(tc, timeout, 1);
+
+}
+
+ATF_TC_BODY(get_svc_addr_tcp, tc)
+{
+	onehost(localhost, tcp);
+
+}
+
+ATF_TC(get_svc_addr_udp);
+ATF_TC_HEAD(get_svc_addr_udp, tc)
+{
+	atf_tc_set_md_var(tc, descr, Checks CLGET_SVC_ADDR for udp);
+	atf_tc_set_md_var(tc, timeout, 1);
+}
+
+ATF_TC_BODY(get_svc_addr_udp, tc)
+{
+	onehost(localhost, udp);
+
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+	ATF_TP_ADD_TC(tp, get_svc_addr_udp);
+	ATF_TP_ADD_TC(tp, get_svc_addr_tcp);
+
+	return atf_no_error();
+}
+
+#endif