#!/bin/sh
#
# Try repeatedly messaging a transfer process, and make sure the data stays
# intact.

# Do nothing if IPC is not supported.
if ! $PROG -h | grep -Eq "^  -R,"; then
	echo "SKIPPED" | tr "\n" ' '
	exit 0
fi

rm -f $TMP1 $TMP2 $TMP3 $TMP4 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

# Run a few remote control commands in the background.
#
echo FAIL > $TMP3
(
set +e
sleep 2
for x in 1 2 3; do
	$PROG -R `cat $TMP4` -apterb	|| exit 1
	(usleep 200000 || sleep 1) 2>/dev/null
	$PROG -R `cat $TMP4` -p		|| exit 1
	(usleep 200000 || sleep 1) 2>/dev/null
	$PROG -R `cat $TMP4` -N "test"	|| exit 1
	(usleep 200000 || sleep 1) 2>/dev/null
	$PROG -R `cat $TMP4` -F "%e"	|| exit 1
	(usleep 200000 || sleep 1) 2>/dev/null
	$PROG -R `cat $TMP4` -N "."	|| exit 1
	(usleep 200000 || sleep 1) 2>/dev/null
done
$PROG -R `cat $TMP4` -L 10M
echo OK > $TMP3
) &

# Run our data transfer.
$PROG -L 100k -i 0.1 -f -P $TMP4 $TMP1 > $TMP2 2>/dev/null

# Check our remote control calls ran OK.
BGSTATUS=`cat $TMP3`
test "x$BGSTATUS" = "xOK"

# Check data integrity.
CKSUM1=`cksum $TMP1 | awk '{print $1}'`
CKSUM2=`cksum $TMP2 | awk '{print $1}'`
test "x$CKSUM1" = "x$CKSUM2"

# EOF
