File tree Expand file tree Collapse file tree 3 files changed +95
-1
lines changed
Expand file tree Collapse file tree 3 files changed +95
-1
lines changed Original file line number Diff line number Diff 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
2324AUXFILES =testcases/common_funcs.sh \
2425 testcases/md5collisions/letter_of_rec.ps \
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments