54 lines
1.1 KiB
Bash
54 lines
1.1 KiB
Bash
#!/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
|