summaryrefslogtreecommitdiff
path: root/tests/015-cksumpipe
diff options
context:
space:
mode:
Diffstat (limited to 'tests/015-cksumpipe')
-rw-r--r--tests/015-cksumpipe53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/015-cksumpipe b/tests/015-cksumpipe
new file mode 100644
index 0000000..665d729
--- /dev/null
+++ b/tests/015-cksumpipe
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# Transfer a large chunk of data through pv using pipes, sending it in a
+# bursty fashion, and check data correctness afterwards.
+
+rm -f $TMP1 $TMP2 2>/dev/null
+
+# exit on non-zero return codes
+set -e
+
+# generate some data
+dd if=/dev/urandom of=$TMP1 bs=1024 count=10240 2>/dev/null
+
+CKSUM1=`cksum $TMP1 | awk '{print $1}'`
+
+# read through pv and test afterwards
+(
+dd if=$TMP1 bs=1 count=9000
+sleep 1
+dd if=$TMP1 bs=1 skip=9000 count=1240
+sleep 1
+dd if=$TMP1 bs=1024 skip=10 count=1014
+sleep 1
+dd if=$TMP1 bs=1024 skip=1024 count=1024
+sleep 1
+dd if=$TMP1 bs=1024 skip=2048
+) 2>/dev/null | $PROG -q -L 2M | cat > $TMP2
+
+CKSUM2=`cksum $TMP2 | awk '{print $1}'`
+
+test "x$CKSUM1" = "x$CKSUM2"
+
+# same again but with one less pipe
+(
+dd if=$TMP1 bs=1 count=9000
+sleep 1
+dd if=$TMP1 bs=1 skip=9000 count=1240
+sleep 1
+dd if=$TMP1 bs=1024 skip=10 count=1014
+sleep 1
+dd if=$TMP1 bs=1024 skip=1024 count=1024
+sleep 1
+dd if=$TMP1 bs=1024 skip=2048
+) 2>/dev/null | $PROG -q -L 2M > $TMP2
+
+CKSUM2=`cksum $TMP2 | awk '{print $1}'`
+
+test "x$CKSUM1" = "x$CKSUM2"
+
+# clean up
+rm -f $TMP1 $TMP2 2>/dev/null
+
+# EOF