xref: /openbsd/regress/sys/nfs/Makefile (revision 73471bf0)
1# $OpenBSD: Makefile,v 1.9 2021/07/05 16:11:52 bluhm Exp $
2
3PROGS=		mmap-sysctl-copyin mmap-sysctl-copyout
4CLEANFILES=	diskimage
5
6.PHONY: disk nfs mount killnc umount unconfig clean
7
8disk: unconfig
9	dd if=/dev/zero of=diskimage bs=512 count=4k
10	vnconfig vnd0 diskimage
11	newfs vnd0c
12
13nfs:
14	grep '/mnt/regress-nfs-server\>' /etc/exports || \
15	    echo /mnt/regress-nfs-server -maproot=0:0 127.0.0.1 >>/etc/exports
16	rcctl -f start portmap
17	rcctl -f start nfsd
18	rcctl -f start mountd
19
20REGRESS_SETUP_ONCE+=	mount
21mount: disk nfs
22	mkdir -p /mnt/regress-nfs-server
23	mount /dev/vnd0c /mnt/regress-nfs-server
24	# wait until mountd(8) has exported the directory
25	for i in `jot 100`; do \
26	    mount | grep 'regress-nfs-server .*NFS exported' && break; \
27	    [ $$i = 100 ] && exit 1; \
28	    sleep .1; \
29	done
30	mkdir -p /mnt/regress-nfs-client
31	mount -t nfs 127.0.0.1:/mnt/regress-nfs-server /mnt/regress-nfs-client
32
33REGRESS_CLEANUP+=	killnc
34killnc:
35	-pkill -xf "nc -U -v -l /mnt/regress-nfs-client/socket-stream" || true
36	-pkill -xf "nc -Uu -v -l /mnt/regress-nfs-client/socket-dgram" || true
37	-pkill -xf "nc -n -v -l 127.0.0.1 0" || true
38
39REGRESS_CLEANUP+=	umount
40umount:
41	umount /mnt/regress-nfs-client
42
43REGRESS_CLEANUP+=	unconfig
44unconfig:
45	-umount -f -t nfs -h 127.0.0.1 -a || true
46	-rmdir /mnt/regress-nfs-client 2>/dev/null || true
47	-pkill -KILL mountd || true
48	-rcctl -f stop nfsd
49	-rcctl -f stop portmap
50	-umount -f /dev/vnd0c 2>/dev/null || true
51	-rmdir /mnt/regress-nfs-server 2>/dev/null || true
52	-vnconfig -u vnd0 2>/dev/null || true
53	rm -f stamp-mount
54
55REGRESS_TARGETS+=	run-regress-read
56run-regress-read:
57	echo -n $@ >/mnt/regress-nfs-server/read
58	[ $@ = "`cat /mnt/regress-nfs-client/read`" ]
59
60REGRESS_TARGETS+=	run-write
61run-write:
62	echo -n $@ >/mnt/regress-nfs-client/write
63	[ $@ = "`cat /mnt/regress-nfs-server/write`" ]
64
65.for p in ${PROGS}
66REGRESS_TARGETS+=	run-$p
67run-$p: $p
68	./$p
69.endfor
70
71.for socktype nctype in stream -U dgram -Uu
72REGRESS_TARGETS+=	run-socket-${socktype}
73run-socket-${socktype}:
74	rm -f /mnt/regress-nfs-client/socket-${socktype}
75	nc ${nctype} -v -l /mnt/regress-nfs-client/socket-${socktype} &
76	[ -S /mnt/regress-nfs-client/socket-${socktype} ] || sleep 1
77	[ -S /mnt/regress-nfs-client/socket-${socktype} ]
78	nc ${nctype} -z /mnt/regress-nfs-client/socket-${socktype}
79.if "${socktype}" == dgram
80	pkill -xf "nc -Uu -v -l /mnt/regress-nfs-client/socket-dgram"
81.endif
82.endfor
83
84REGRESS_TARGETS+=	run-ktrace-true
85run-ktrace-true:
86	ktrace -f /mnt/regress-nfs-client/true.ktrace /usr/bin/true
87	sync
88	kdump -f /mnt/regress-nfs-client/true.ktrace |\
89	    fgrep 'true     CALL  exit(0)'
90
91REGRESS_TARGETS+=	run-ktrace-netcat
92run-ktrace-netcat:
93	echo foo | \
94	    ktrace -f /mnt/regress-nfs-client/netcat-server.ktrace \
95	    nc -n -v -l 127.0.0.1 0 2>server.log &
96	# Wait until netcat is listening.
97	for  i in `jot 30`; do\
98	    if fgrep -q Listening server.log; then break; fi; sleep .1; done
99	fgrep Listening server.log
100	echo bar | \
101	    ktrace -f /mnt/regress-nfs-client/netcat-client.ktrace \
102	    nc -n -v -N 127.0.0.1 \
103	    `sed -n 's/Listening on 127.0.0.1 //p' server.log` 2>client.log
104	fgrep Connection client.log
105	kdump -f /mnt/regress-nfs-client/netcat-server.ktrace |\
106	    fgrep 'nc       CALL  exit(0)'
107	kdump -f /mnt/regress-nfs-client/netcat-client.ktrace |\
108	    fgrep 'nc       CALL  exit(0)'
109
110.include <bsd.regress.mk>
111