summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2002-03-19 21:05:29 +0000
committerphk <phk@FreeBSD.org>2002-03-19 21:05:29 +0000
commitca2e5c188ee68045b54a86bfefcfd4a75e174221 (patch)
treeefe73699db1df391f9b4fcd88000d3a2f42d5ede /sbin
parent5a84f9883932fbf90adb9dd3951956e85776adb9 (diff)
downloadFreeBSD-src-ca2e5c188ee68045b54a86bfefcfd4a75e174221.zip
FreeBSD-src-ca2e5c188ee68045b54a86bfefcfd4a75e174221.tar.gz
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.
Diffstat (limited to 'sbin')
-rw-r--r--sbin/newfs/Makefile6
-rw-r--r--sbin/newfs/mkfs.c7
-rw-r--r--sbin/newfs/newfs.c7
-rw-r--r--sbin/newfs/newfs.h1
-rw-r--r--sbin/newfs/ref.test7
-rw-r--r--sbin/newfs/runtest00.sh19
-rw-r--r--sbin/newfs/runtest01.sh27
7 files changed, 71 insertions, 3 deletions
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 <bsd.prog.mk>
+
+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
+
OpenPOWER on IntegriCloud