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