From 100ed7e49ecfb51bb903367fe0d528c17a7cb2f7 Mon Sep 17 00:00:00 2001
From: Pawel Jakub Dawidek <pjd@FreeBSD.org>
Date: Mon, 3 May 2004 18:29:54 +0000
Subject: [PATCH] Add regression tests for GEOM Gate: 	- test-1.sh - Tests
 ggatec(8) and ggated(8) on lo0. 	- test-2.sh - Tests ggatel(8) on a
 regular file. 	- test-3.sh - Tests ggatel(8) on a md(4) device.

---
 tools/regression/geom_gate/Makefile    |  8 ++++++
 tools/regression/geom_gate/runtests.sh |  8 ++++++
 tools/regression/geom_gate/test-1.sh   | 36 ++++++++++++++++++++++++++
 tools/regression/geom_gate/test-2.sh   | 28 ++++++++++++++++++++
 tools/regression/geom_gate/test-3.sh   | 31 ++++++++++++++++++++++
 5 files changed, 111 insertions(+)
 create mode 100644 tools/regression/geom_gate/Makefile
 create mode 100644 tools/regression/geom_gate/runtests.sh
 create mode 100644 tools/regression/geom_gate/test-1.sh
 create mode 100644 tools/regression/geom_gate/test-2.sh
 create mode 100644 tools/regression/geom_gate/test-3.sh

diff --git a/tools/regression/geom_gate/Makefile b/tools/regression/geom_gate/Makefile
new file mode 100644
index 000000000000..c5c24adaa4dc
--- /dev/null
+++ b/tools/regression/geom_gate/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+# Regression tests for geom_gate.
+#
+
+test:
+	@sh runtests.sh
diff --git a/tools/regression/geom_gate/runtests.sh b/tools/regression/geom_gate/runtests.sh
new file mode 100644
index 000000000000..38089c5daedf
--- /dev/null
+++ b/tools/regression/geom_gate/runtests.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+dir=`dirname $0`
+
+for ts in `dirname $0`/test-*.sh; do
+	sh $ts
+done
diff --git a/tools/regression/geom_gate/test-1.sh b/tools/regression/geom_gate/test-1.sh
new file mode 100644
index 000000000000..44a49606ff4c
--- /dev/null
+++ b/tools/regression/geom_gate/test-1.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work="/dev/md${us}"
+src="/dev/md`expr $us + 1`"
+conf=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 1M -u `expr $us + 1` || exit 1
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`cat $src | md5 -q`
+
+echo "127.0.0.1 RW $work" > $conf
+ggated $conf
+ggatec create -u $us 127.0.0.1 $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+if [ `cat $work | md5 -q` != $sum ]; then
+	echo "FAIL"
+else
+	if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+		echo "FAIL"
+	else
+		echo "PASS"
+	fi
+fi
+
+ggatec destroy -u $us
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+pkill ggated $conf
+rm -f $conf
diff --git a/tools/regression/geom_gate/test-2.sh b/tools/regression/geom_gate/test-2.sh
new file mode 100644
index 000000000000..498ac45d005e
--- /dev/null
+++ b/tools/regression/geom_gate/test-2.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work=`mktemp /tmp/$base.XXXXXX` || exit 1
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`md5 -q $src`
+
+ggatel create -u $us $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+if [ `md5 -q $work` != $sum ]; then
+	echo "FAIL"
+else
+	if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+		echo "FAIL"
+	else
+		echo "PASS"
+	fi
+fi
+
+ggatel destroy -u $us
+rm -f $work $src
diff --git a/tools/regression/geom_gate/test-3.sh b/tools/regression/geom_gate/test-3.sh
new file mode 100644
index 000000000000..ca73a5a26ba0
--- /dev/null
+++ b/tools/regression/geom_gate/test-3.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work="/dev/md${us}"
+src="/dev/md`expr $us + 1`"
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 1M -u `expr $us + 1` || exit 1
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`cat $src | md5 -q`
+
+ggatel create -u $us $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+if [ `cat $work | md5 -q` != $sum ]; then
+	echo "FAIL"
+else
+	if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+		echo "FAIL"
+	else
+		echo "PASS"
+	fi
+fi
+
+ggatel destroy -u $us
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`