diff --git a/tests/Modifiers_-_--sync.sh b/tests/Modifiers_-_--sync.sh new file mode 100644 index 0000000..14f6afb --- /dev/null +++ b/tests/Modifiers_-_--sync.sh @@ -0,0 +1,45 @@ +#!/bin/sh +# +# Transfer a large chunk of data with "--sync" and check data correctness +# afterwards, both with and without rate limits. Note that this doesn't +# check that fdatasync() is actually being called, it just checks that data +# is not being corrupted. + +# Dummy assignments for "shellcheck". +testSubject="${testSubject:-false}"; workFile1="${workFile1:-.tmp1}"; workFile2="${workFile2:-.tmp2}" + +# generate some data +dd if=/dev/urandom of="${workFile1}" bs=1024 count=2560 2>/dev/null + +inputChecksum=$(cksum "${workFile1}" | awk '{print $1}') + +# read through pv and test afterwards +"${testSubject}" -q "${workFile1}" > "${workFile2}" +outputChecksum=$(cksum "${workFile2}" | awk '{print $1}') + +if ! test "${inputChecksum}" = "${outputChecksum}"; then + echo "checksum mismatched even without \"--sync\"" + exit 1 +fi + +# Same again but with "--sync" + +"${testSubject}" -Y -q "${workFile1}" > "${workFile2}" +outputChecksum=$(cksum "${workFile2}" | awk '{print $1}') +if ! test "${inputChecksum}" = "${outputChecksum}"; then + echo "checksum mismatched with \"--sync\"" + exit 1 +fi + +# Now with "--sync" and "--rate-limit" + +"${testSubject}" -Y -L 800K -q "${workFile1}" > "${workFile2}" +outputChecksum=$(cksum "${workFile2}" | awk '{print $1}') +if ! test "${inputChecksum}" = "${outputChecksum}"; then + echo "checksum mismatched with \"--sync\" + \"--rate-limit\"" + exit 1 +fi + +exit 0 + +# EOF