Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src Move the 'syscall/t_cmsg' test to 'include/sys/t_socket'.
details: https://anonhg.NetBSD.org/src/rev/af90b74e4abe
branches: trunk
changeset: 767018:af90b74e4abe
user: jruoho <jruoho%NetBSD.org@localhost>
date: Thu Jul 07 05:50:26 2011 +0000
description:
Move the 'syscall/t_cmsg' test to 'include/sys/t_socket'.
diffstat:
distrib/sets/lists/tests/mi | 8 +-
tests/include/sys/Makefile | 7 +-
tests/include/sys/t_socket.c | 188 +++++++++++++++++++++++++++++++++++++++++++
tests/syscall/Makefile | 7 +-
tests/syscall/t_cmsg.c | 188 -------------------------------------------
5 files changed, 200 insertions(+), 198 deletions(-)
diffs (truncated from 474 to 300 lines):
diff -r 9fd985100a03 -r af90b74e4abe distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi Thu Jul 07 05:41:59 2011 +0000
+++ b/distrib/sets/lists/tests/mi Thu Jul 07 05:50:26 2011 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.363 2011/07/04 15:46:09 jruoho Exp $
+# $NetBSD: mi,v 1.364 2011/07/07 05:50:26 jruoho Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -287,6 +287,7 @@
./usr/libdata/debug/usr/tests/include/sys tests-include-tests
./usr/libdata/debug/usr/tests/include/sys/t_bitops.debug tests-include-tests debug,atf
./usr/libdata/debug/usr/tests/include/sys/t_bootblock.debug tests-include-tests debug,atf
+./usr/libdata/debug/usr/tests/include/sys/t_socket.debug tests-include-tests debug,atf
./usr/libdata/debug/usr/tests/include/sys/t_tree.debug tests-include-tests debug,atf
./usr/libdata/debug/usr/tests/include/sys/t_types.debug tests-include-tests debug,atf
./usr/libdata/debug/usr/tests/include/t_bitstring.debug tests-include-tests debug,atf
@@ -622,7 +623,7 @@
./usr/libdata/debug/usr/tests/syscall tests-syscall-debug
./usr/libdata/debug/usr/tests/syscall/t_access.debug tests-syscall-debug debug,atf
./usr/libdata/debug/usr/tests/syscall/t_chroot.debug tests-syscall-debug debug,atf
-./usr/libdata/debug/usr/tests/syscall/t_cmsg.debug tests-syscall-debug debug,atf
+./usr/libdata/debug/usr/tests/syscall/t_cmsg.debug tests-obsolete obsolete
./usr/libdata/debug/usr/tests/syscall/t_dup.debug tests-syscall-debug debug,atf
./usr/libdata/debug/usr/tests/syscall/t_fsync.debug tests-syscall-debug debug,atf
./usr/libdata/debug/usr/tests/syscall/t_getgroups.debug tests-syscall-debug debug,atf
@@ -1428,6 +1429,7 @@
./usr/tests/include/sys/Atffile tests-include-tests atf
./usr/tests/include/sys/t_bitops tests-include-tests atf
./usr/tests/include/sys/t_bootblock tests-include-tests atf
+./usr/tests/include/sys/t_socket tests-include-tests atf
./usr/tests/include/sys/t_tree tests-include-tests atf
./usr/tests/include/sys/t_types tests-include-tests atf
./usr/tests/include/t_bitstring tests-include-tests atf
@@ -2375,7 +2377,7 @@
./usr/tests/syscall/Atffile tests-syscall-tests atf
./usr/tests/syscall/t_access tests-syscall-tests atf
./usr/tests/syscall/t_chroot tests-syscall-tests atf
-./usr/tests/syscall/t_cmsg tests-syscall-tests atf
+./usr/tests/syscall/t_cmsg tests-obsolete obsolete
./usr/tests/syscall/t_dup tests-syscall-tests atf
./usr/tests/syscall/t_fsync tests-syscall-tests atf
./usr/tests/syscall/t_getgroups tests-syscall-tests atf
diff -r 9fd985100a03 -r af90b74e4abe tests/include/sys/Makefile
--- a/tests/include/sys/Makefile Thu Jul 07 05:41:59 2011 +0000
+++ b/tests/include/sys/Makefile Thu Jul 07 05:50:26 2011 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.4 2011/05/05 13:36:05 jruoho Exp $
+# $NetBSD: Makefile,v 1.5 2011/07/07 05:50:27 jruoho Exp $
NOMAN= # defined
@@ -6,7 +6,10 @@
TESTSDIR= ${TESTSBASE}/include/sys
+TESTS_C= t_bitops t_bootblock t_socket t_tree t_types
+
LDADD.t_bitops+= -lm
-TESTS_C= t_bitops t_bootblock t_tree t_types
+LDADD.t_socket+= -lrumpnet_local -lrumpnet_net -lrumpnet
+LDADD.t_socket+= -lrumpvfs -lrump -lrumpuser -lpthread
.include <bsd.test.mk>
diff -r 9fd985100a03 -r af90b74e4abe tests/include/sys/t_socket.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/include/sys/t_socket.c Thu Jul 07 05:50:26 2011 +0000
@@ -0,0 +1,188 @@
+/* $NetBSD: t_socket.c,v 1.1 2011/07/07 05:50:27 jruoho Exp $ */
+
+#include <sys/types.h>
+#include <sys/mount.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include <rump/rump.h>
+#include <rump/rump_syscalls.h>
+
+#include <atf-c.h>
+#include <fcntl.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <util.h>
+
+#include "../../h_macros.h"
+
+ATF_TC(cmsg_sendfd_bounds);
+ATF_TC_HEAD(cmsg_sendfd_bounds, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Checks that attempting to pass an "
+ "invalid fd returns an error");
+}
+
+ATF_TC_BODY(cmsg_sendfd_bounds, tc)
+{
+ struct cmsghdr *cmp;
+ struct msghdr msg;
+ struct iovec iov;
+ int s[2];
+ int fd;
+
+ rump_init();
+
+ if (rump_sys_socketpair(AF_LOCAL, SOCK_STREAM, 0, s) == -1)
+ atf_tc_fail("rump_sys_socket");
+
+ cmp = malloc(CMSG_SPACE(sizeof(int)));
+
+ iov.iov_base = &fd;
+ iov.iov_len = sizeof(int);
+
+ cmp->cmsg_level = SOL_SOCKET;
+ cmp->cmsg_type = SCM_RIGHTS;
+ cmp->cmsg_len = CMSG_LEN(sizeof(int));
+
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_control = cmp;
+ msg.msg_controllen = CMSG_SPACE(sizeof(int));
+
+ /*
+ * ERROR HERE: trying to pass invalid fd
+ * (This value was previously directly used to index the fd
+ * array and therefore we are passing a hyperspace index)
+ */
+ *(int *)CMSG_DATA(cmp) = 0x12345678;
+
+ rump_sys_sendmsg(s[0], &msg, 0);
+ if (errno != EBADF)
+ atf_tc_fail("descriptor passing failed: expected EBADF (9), "
+ "got %d\n(%s)", errno, strerror(errno));
+}
+
+
+ATF_TC(cmsg_sendfd);
+ATF_TC_HEAD(cmsg_sendfd, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Checks that fd passing works");
+ atf_tc_set_md_var(tc, "timeout", "2");
+}
+
+ATF_TC_BODY(cmsg_sendfd, tc)
+{
+ char buf[128];
+ struct cmsghdr *cmp;
+ struct msghdr msg;
+ struct sockaddr_un sun;
+ struct lwp *l1, *l2;
+ struct iovec iov;
+ socklen_t sl;
+ int s1, s2, sgot;
+ int rfd, fd[2], storage;
+
+ rump_init();
+
+ RZ(rump_pub_lwproc_rfork(RUMP_RFCFDG));
+ l1 = rump_pub_lwproc_curlwp();
+
+ /* create unix socket and bind it to a path */
+ memset(&sun, 0, sizeof(sun));
+ sun.sun_family = AF_LOCAL;
+#define SOCKPATH "/com"
+ strncpy(sun.sun_path, SOCKPATH, sizeof(SOCKPATH));
+ s1 = rump_sys_socket(AF_LOCAL, SOCK_STREAM, 0);
+ if (s1 == -1)
+ atf_tc_fail_errno("socket 1");
+ if (rump_sys_bind(s1, (struct sockaddr *)&sun, SUN_LEN(&sun)) == -1)
+ atf_tc_fail_errno("socket 1 bind");
+ if (rump_sys_listen(s1, 1) == -1)
+ atf_tc_fail_errno("socket 1 listen");
+
+ /* create second process for test */
+ RZ(rump_pub_lwproc_rfork(RUMP_RFCFDG));
+ l2 = rump_pub_lwproc_curlwp();
+
+ /* connect to unix domain socket */
+ memset(&sun, 0, sizeof(sun));
+ sun.sun_family = AF_LOCAL;
+ strncpy(sun.sun_path, SOCKPATH, sizeof(SOCKPATH));
+ s2 = rump_sys_socket(AF_LOCAL, SOCK_STREAM, 0);
+ if (s2 == -1)
+ atf_tc_fail_errno("socket 2");
+ if (rump_sys_connect(s2, (struct sockaddr *)&sun, SUN_LEN(&sun)) == -1)
+ atf_tc_fail_errno("socket 2 connect");
+
+ /* open a pipe and write stuff to it */
+ if (rump_sys_pipe(fd) == -1)
+ atf_tc_fail_errno("can't open pipe");
+#define MAGICSTRING "duam xnaht"
+ if (rump_sys_write(fd[1], MAGICSTRING, sizeof(MAGICSTRING)) !=
+ sizeof(MAGICSTRING))
+ atf_tc_fail_errno("pipe write"); /* XXX: errno */
+
+ cmp = malloc(CMSG_SPACE(sizeof(int)));
+
+ iov.iov_base = &storage;
+ iov.iov_len = sizeof(int);
+
+ cmp->cmsg_level = SOL_SOCKET;
+ cmp->cmsg_type = SCM_RIGHTS;
+ cmp->cmsg_len = CMSG_LEN(sizeof(int));
+
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_control = cmp;
+ msg.msg_controllen = CMSG_SPACE(sizeof(int));
+ *(int *)CMSG_DATA(cmp) = fd[0];
+
+ /* pass the fd */
+ if (rump_sys_sendmsg(s2, &msg, 0) == -1)
+ atf_tc_fail_errno("sendmsg failed");
+
+ /*
+ * We will read to the same cmsg space. Overwrite the space
+ * with an invalid fd to make sure we get an explicit error
+ * if we don't manage to read the fd.
+ */
+ *(int *)CMSG_DATA(cmp) = -1;
+
+ /* switch back to original proc */
+ rump_pub_lwproc_switch(l1);
+
+ /* accept connection and read fd */
+ sl = sizeof(sun);
+ sgot = rump_sys_accept(s1, (struct sockaddr *)&sun, &sl);
+ if (sgot == -1)
+ atf_tc_fail_errno("accept");
+ if (rump_sys_recvmsg(sgot, &msg, 0) == -1)
+ atf_tc_fail_errno("recvmsg failed");
+ rfd = *(int *)CMSG_DATA(cmp);
+
+ /* read from the fd */
+ memset(buf, 0, sizeof(buf));
+ if (rump_sys_read(rfd, buf, sizeof(buf)) == -1)
+ atf_tc_fail_errno("read rfd");
+
+ /* check that we got the right stuff */
+ if (strcmp(buf, MAGICSTRING) != 0)
+ atf_tc_fail("expected \"%s\", got \"%s\"", MAGICSTRING, buf);
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+ ATF_TP_ADD_TC(tp, cmsg_sendfd);
+ ATF_TP_ADD_TC(tp, cmsg_sendfd_bounds);
+
+ return atf_no_error();
+}
diff -r 9fd985100a03 -r af90b74e4abe tests/syscall/Makefile
--- a/tests/syscall/Makefile Thu Jul 07 05:41:59 2011 +0000
+++ b/tests/syscall/Makefile Thu Jul 07 05:50:26 2011 +0000
@@ -1,10 +1,10 @@
-# $NetBSD: Makefile,v 1.40 2011/07/04 15:46:10 jruoho Exp $
+# $NetBSD: Makefile,v 1.41 2011/07/07 05:50:26 jruoho Exp $
.include <bsd.own.mk>
TESTSDIR= ${TESTSBASE}/syscall
-TESTS_C+= t_access t_chroot t_cmsg t_dup t_fsync
+TESTS_C+= t_access t_chroot t_dup t_fsync
TESTS_C+= t_getgroups t_getlogin t_getpid
TESTS_C+= t_getrusage t_getsid t_gettimeofday
TESTS_C+= t_issetugid t_itimer t_kill t_link
@@ -17,9 +17,6 @@
LDADD.t_getpid+= -lpthread
LDADD.t_timer+= -lpthread
-LDADD.t_cmsg+= -lrumpnet_local -lrumpnet_net -lrumpnet
-LDADD.t_cmsg+= -lrumpvfs -lrump -lrumpuser -lpthread
-
WARNS= 4
.include <bsd.test.mk>
diff -r 9fd985100a03 -r af90b74e4abe tests/syscall/t_cmsg.c
--- a/tests/syscall/t_cmsg.c Thu Jul 07 05:41:59 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/* $NetBSD: t_cmsg.c,v 1.16 2011/01/02 12:58:17 pooka Exp $ */
-
-#include <sys/types.h>
-#include <sys/mount.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <rump/rump.h>
-#include <rump/rump_syscalls.h>
-
-#include <atf-c.h>
-#include <fcntl.h>
-#include <err.h>
-#include <errno.h>
Home |
Main Index |
Thread Index |
Old Index