Skip to content

Commit 8a97264

Browse files
trollkarlenpauldreik
authored andcommitted
add buffersize test cases
Signed-off-by: Robert Marklund <robbelibobban@gmail.com>
1 parent 106beae commit 8a97264

File tree

3 files changed

+95
-1
lines changed

3 files changed

+95
-1
lines changed

Makefile.am

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ TESTS=testcases/largefilesupport.sh \
1818
testcases/verify_deterministic_operation.sh \
1919
testcases/checksum_options.sh \
2020
testcases/md5collisions.sh \
21-
testcases/sha1collisions.sh
21+
testcases/sha1collisions.sh \
22+
testcases/checksum_buffersize.sh
2223

2324
AUXFILES=testcases/common_funcs.sh \
2425
testcases/md5collisions/letter_of_rec.ps \

testcases/checksum_buffersize.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
# Test that selection of buffersizes works as expected.
3+
4+
set -e
5+
. "$(dirname "$0")/common_funcs.sh"
6+
7+
reset_teststate
8+
9+
TEST_DIR=buffersizes_test
10+
mkdir -p "$TEST_DIR"
11+
12+
make_test_files() {
13+
dbgecho "creating test files in $TEST_DIR"
14+
head -c 1000000 /dev/zero >"$TEST_DIR/a"
15+
cp "$TEST_DIR/a" "$TEST_DIR/b"
16+
cp "$TEST_DIR/a" "$TEST_DIR/c"
17+
cp "$TEST_DIR/a" "$TEST_DIR/d"
18+
cp "$TEST_DIR/a" "$TEST_DIR/e"
19+
}
20+
21+
dbgecho "check so all buffersizes behave the same"
22+
23+
# disables only run once shellscheck
24+
# shellcheck disable=SC2043
25+
for checksumtype in sha256; do
26+
i=1
27+
while :; do
28+
if [ $i -gt 128 ]; then
29+
break
30+
fi
31+
i="$((i*2))"
32+
make_test_files
33+
dbgecho "testing buffersize $((i*1024))"
34+
dbgecho "testing $checksumtype"
35+
# Fix this properly by making rdfind to array and use "${rdfind[@]}"
36+
# this requires bash not sh
37+
# shellcheck disable=SC2086
38+
$rdfind -buffersize $((i*1024)) -checksum "$checksumtype" -deleteduplicates true "$TEST_DIR" >/dev/null
39+
[ -e "$TEST_DIR/a" ]
40+
[ ! -e "$TEST_DIR/b" ]
41+
[ ! -e "$TEST_DIR/c" ]
42+
[ ! -e "$TEST_DIR/d" ]
43+
[ ! -e "$TEST_DIR/e" ]
44+
done
45+
done
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/bin/sh
2+
# Performance test for checksumming with different buffersizes. Not meant
3+
# to be run for regular testing.
4+
5+
set -e
6+
. "$(dirname "$0")/common_funcs.sh"
7+
8+
reset_teststate
9+
10+
TEST_DIR=buffersizes_speedtest
11+
mkdir -p "$TEST_DIR"
12+
13+
make_test_files() {
14+
dbgecho "creating test files in $TEST_DIR/bigfiles"
15+
mkdir -p "$TEST_DIR/bigfiles"
16+
head -c $((1024*1024*500)) /dev/zero >"$TEST_DIR/bigfiles/a"
17+
for f in b c d e; do
18+
cp "$TEST_DIR/bigfiles/a" "$TEST_DIR/bigfiles/$f"
19+
done
20+
dbgecho "creating test files in $TEST_DIR/smallfiles"
21+
mkdir -p "$TEST_DIR/smallfiles"
22+
(cd "$TEST_DIR/smallfiles"; head -c100000000 /dev/zero |split --bytes 1000)
23+
}
24+
25+
dbgecho "run speed test for all shecksums and buffersizes"
26+
27+
make_test_files
28+
29+
cat /dev/null >"$TEST_DIR/results.tsv"
30+
for filesize in big small; do
31+
for checksumtype in md5 sha1; do
32+
i=1
33+
while :; do
34+
if [ $i -gt 4096 ]; then
35+
break
36+
fi
37+
# Fix this properly by making rdfind to array and use "${rdfind[@]}"
38+
# this requires bash not sh
39+
# shellcheck disable=SC2086
40+
dbgecho "testing $checksumtype $i kB buffersize"
41+
# shellcheck disable=SC2086
42+
/usr/bin/time --append --output=$TEST_DIR/results.tsv -f "$filesize\t$i\t$checksumtype\t%e\t%M\t%C" $rdfind -buffersize $((i*1024)) -checksum "$checksumtype" -dryrun true -deleteduplicates true "$TEST_DIR/${filesize}files" >/dev/null 2>&1
43+
i="$((i*2))"
44+
done
45+
done
46+
done
47+
cat "$TEST_DIR/results.tsv"
48+

0 commit comments

Comments
 (0)