Makefile revision 1.1
1# $OpenBSD: Makefile,v 1.1 2021/10/06 22:59:23 bluhm Exp $
2#
3# Copyright (c) 2021 Alexander Bluhm <bluhm@openbsd.org>
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16#
17
18# This regress uses vnd devices to create a softraid volume.  Raid levels
19# RAID 0, RAID 1, RAID 5, CRYPTO, CONCAT, RAID 1 + CRYPTO are created.
20# The volume disk is then mounted and stressed a little bit.
21# All tests have to be run as root.
22
23REGRESS_TARGETS =
24REGRESS_CLEANUP =	unconfig
25CLEANFILES =		diskimage* passfile
26
27LASTDISK =	bioctl softraid0 | awk '/^softraid0/{sd=$$5}END{print sd}'
28ALLDISK =	bioctl softraid0 | awk '/^softraid0/{print $$5}'
29ALLVND = vnconfig -l | awk -F'[ :]' '/^vnd[123]:/ && !/not in use/{print $$1}'
30
31.PHONY: detach unconfig clean
32
33.for v in 1 2 3
34.PHONY: vnd-$v
35vnd-$v: unconfig
36	@echo '==== $@ ===='
37	rm -f diskimage$v
38	dd if=/dev/null of=diskimage$v bs=1m seek=1100
39	vnconfig vnd$v diskimage$v
40	printf "a\n\n\n\nRAID\nw\nq\n" | disklabel -E vnd$v
41	[ `disklabel vnd$v | grep -c '\<RAID\>'` -eq 1 ]
42.endfor
43
44.for r in 0 1 5 c
45.PHONY: raid-$r
46raid-$r: vnd-1 vnd-2 vnd-3
47	@echo '==== $@ ===='
48	bioctl -c $r -l vnd1a,vnd2a,vnd3a softraid0
49.endfor
50
51passfile:
52	@echo '==== $@ ===='
53	openssl rand -hex -out $@.tmp 16
54	chmod 0600 $@.tmp
55	mv $@.tmp $@
56
57.PHONY: raid-C
58raid-C: vnd-1 passfile
59	@echo '==== $@ ===='
60	bioctl -c C -l vnd1a -p passfile softraid0
61
62.PHONY: raid-1C
63raid-1C: vnd-1 vnd-2 vnd-3 passfile
64	@echo '==== $@ ===='
65	bioctl -c 1C -l vnd1a,vnd2a,vnd3a -p passfile softraid0
66
67.for r in 0 1 5 C c 1C
68.PHONY: mount-$r
69mount-$r: raid-$r
70	@echo '==== $@ ===='
71	printf "a\na\n\n\n4.2BSD\nw\nq\n" | disklabel -E "`${LASTDISK}`"
72	newfs "/dev/r`${LASTDISK}`a"
73	mkdir -p /mnt/regress-softraid
74	mount "/dev/`${LASTDISK}`a" /mnt/regress-softraid
75.endfor
76
77detach:
78	@echo '==== $@ ===='
79	umount /mnt/regress-softraid
80	bioctl -d `${LASTDISK}`
81
82.for r in 0 1 5 C c 1C
83
84REGRESS_TARGETS +=	run-mount-$r
85run-mount-$r:
86	${MAKE} -C ${.CURDIR} mount-$r
87	${MAKE} -C ${.CURDIR} detach
88
89REGRESS_TARGETS +=	run-fill-compare-$r
90run-fill-compare-$r:
91	${MAKE} -C ${.CURDIR} mount-$r
92	@echo '==== fill ===='
93	time cp -r /bin /mnt/regress-softraid/
94	${MAKE} -C ${.CURDIR} detach
95	@echo '==== compare ===='
96.if "${r:MC}" == ""
97	bioctl -c $r -l vnd1a,vnd2a,vnd3a -p passfile softraid0
98.else
99	bioctl -c $r -l vnd1a -p passfile softraid0
100.endif
101	bioctl softraid0
102	mount "/dev/`${LASTDISK}`a" /mnt/regress-softraid
103	diff -r /bin /mnt/regress-softraid/bin
104	${MAKE} -C ${.CURDIR} detach
105
106.endfor
107
108unconfig:
109	-umount -f /mnt/regress-softraid || true
110	-rmdir /mnt/regress-softraid || true
111	-for d in `${ALLDISK}`; do bioctl -d $$d; done
112	-for v in `${ALLVND}`; do vnconfig -u $$v; done
113
114.include <bsd.regress.mk>
115