From ca2e5c188ee68045b54a86bfefcfd4a75e174221 Mon Sep 17 00:00:00 2001 From: phk Date: Tue, 19 Mar 2002 21:05:29 +0000 Subject: Add the undocumented -R option to disable randomness for regression-testing. Add a couple of simple regression tests accessible with "make test", they depend on the md(4) driver. FYI I have also tried running the test against a week old newfs and it passed. --- sbin/newfs/Makefile | 6 ++++++ sbin/newfs/mkfs.c | 7 +++++-- sbin/newfs/newfs.c | 7 ++++++- sbin/newfs/newfs.h | 1 + sbin/newfs/ref.test | 7 +++++++ sbin/newfs/runtest00.sh | 19 +++++++++++++++++++ sbin/newfs/runtest01.sh | 27 +++++++++++++++++++++++++++ 7 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 sbin/newfs/ref.test create mode 100644 sbin/newfs/runtest00.sh create mode 100644 sbin/newfs/runtest01.sh (limited to 'sbin') diff --git a/sbin/newfs/Makefile b/sbin/newfs/Makefile index c172555..f12e266 100644 --- a/sbin/newfs/Makefile +++ b/sbin/newfs/Makefile @@ -7,3 +7,9 @@ WARNS?= 2 MAN= newfs.8 .include + +test: ${PROG} + sh ${.CURDIR}/runtest01.sh + sh ${.CURDIR}/runtest00.sh | tee _.test + diff --ignore-matching-lines=FreeBSD _.test ${.CURDIR}/ref.test + echo All Tests Passed diff --git a/sbin/newfs/mkfs.c b/sbin/newfs/mkfs.c index d7fea21..e50aef8 100644 --- a/sbin/newfs/mkfs.c +++ b/sbin/newfs/mkfs.c @@ -123,8 +123,11 @@ mkfs(struct partition *pp, char *fsys, int fi, int fo) int width; char tmpbuf[100]; /* XXX this will break in about 2,500 years */ - time(&utime); - if (!randinit) { + if (Rflag) + utime = 1000000000; + else + time(&utime); + if (!Rflag && !randinit) { randinit = 1; srandomdev(); } diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c index ba0c31a..995b0ed 100644 --- a/sbin/newfs/newfs.c +++ b/sbin/newfs/newfs.c @@ -148,6 +148,7 @@ static struct disklabel *getdisklabel(char *s, int fd); int Nflag; /* run without writing file system */ int Oflag; /* format as an 4.3BSD file system */ +int Rflag; /* regression test */ int Uflag; /* enable soft updates for file system */ int fssize; /* file system size */ int ntracks = NTRACKS; /* # tracks/cylinder */ @@ -209,7 +210,7 @@ main(int argc, char *argv[]) progname = *argv; while ((ch = getopt(argc, argv, - "NOS:T:Ua:b:c:d:e:f:g:h:i:k:l:m:n:o:p:r:s:t:u:vx:")) != -1) + "NORS:T:Ua:b:c:d:e:f:g:h:i:k:l:m:n:o:p:r:s:t:u:vx:")) != -1) switch (ch) { case 'N': Nflag = 1; @@ -217,6 +218,9 @@ main(int argc, char *argv[]) case 'O': Oflag = 1; break; + case 'R': + Rflag = 1; + break; case 'S': if ((sectorsize = atoi(optarg)) <= 0) fatal("%s: bad sector size", optarg); @@ -596,6 +600,7 @@ usage() fprintf(stderr, "\t-N do not create file system, just print out parameters\n"); fprintf(stderr, "\t-O create a 4.3BSD format filesystem\n"); + fprintf(stderr, "\t-R regression test, supress random factors\n"); fprintf(stderr, "\t-S sector size\n"); #ifdef COMPAT fprintf(stderr, "\t-T disktype\n"); diff --git a/sbin/newfs/newfs.h b/sbin/newfs/newfs.h index 0386c5f..96c4602 100644 --- a/sbin/newfs/newfs.h +++ b/sbin/newfs/newfs.h @@ -39,6 +39,7 @@ */ extern int Nflag; /* run mkfs without writing file system */ extern int Oflag; /* format as an 4.3BSD file system */ +extern int Rflag; /* regression test */ extern int Uflag; /* enable soft updates for file system */ extern int fssize; /* file system size */ extern int ntracks; /* # tracks/cylinder */ diff --git a/sbin/newfs/ref.test b/sbin/newfs/ref.test new file mode 100644 index 0000000..099ef78 --- /dev/null +++ b/sbin/newfs/ref.test @@ -0,0 +1,7 @@ +# $FreeBSD$ +ba20315918bf2d2885eed49fee03e3ca +e2170dc5d6bd192f85da9d1085550265 +510df6ee7aadd7a5477b47c1a967e8db +47a1a6afcd21c166f32027020b0b6a7e +6e3b83f554b0216206a2768f8b01d9a1 +f6035a903644e118f09c6041fb29f7ce diff --git a/sbin/newfs/runtest00.sh b/sbin/newfs/runtest00.sh new file mode 100644 index 0000000..a95dbcc --- /dev/null +++ b/sbin/newfs/runtest00.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# $FreeBSD$ + +set -e + +MD=99 +( +for s in 1m 4m 60m 120m 240m 1g +do + ( + mdconfig -d -u $MD || true + mdconfig -a -t malloc -s $s -u $MD + disklabel -r -w md$MD auto + ./newfs -R /dev/md${MD}c + ) 1>&2 + md5 < /dev/md${MD}c +done +mdconfig -d -u $MD 1>&2 || true +) diff --git a/sbin/newfs/runtest01.sh b/sbin/newfs/runtest01.sh new file mode 100644 index 0000000..4712832 --- /dev/null +++ b/sbin/newfs/runtest01.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# $FreeBSD$ + +set -e + +MD=99 +ME=98 +s=1m +mdconfig -d -u $MD || true +mdconfig -d -u $ME || true +mdconfig -a -t malloc -s $s -u $MD +mdconfig -a -t malloc -s $s -u $ME +disklabel -r -w md$MD auto +disklabel -r -w md$ME auto +./newfs -R /dev/md${MD}c +./newfs -R /dev/md${ME}c +if cmp /dev/md${MD}c /dev/md${ME}c ; then + echo "Test passed" + e=0 +else + echo "Test failed" + e=1 +fi +mdconfig -d -u $MD || true +mdconfig -d -u $ME || true +exit $e + -- cgit v1.1