1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
#!/usr/bin/env bats
load helpers
@test "dedup" {
case "$STORAGE_DRIVER" in
overlay*|vfs)
;;
*)
skip "driver $STORAGE_DRIVER does not support dedup"
;;
esac
if test -z "$(which tar 2> /dev/null)" ; then
skip "need tar"
fi
if test -z "$(which jq 2> /dev/null)" ; then
skip "need jq"
fi
echo some content > $TESTDIR/from
# Skip the test if the underlying file system does not support reflinks.
if ! cp --reflink=always $TESTDIR/from $TESTDIR/to; then
skip "need reflink support"
fi
populate
storage diff -u -f $TESTDIR/lower.tar $lowerlayer
storage diff -c -f $TESTDIR/middle.tar $midlayer
storage diff -u -f $TESTDIR/upper.tar $upperlayer
# Delete the layers.
storage delete-layer $upperlayer
storage delete-layer $midlayer
storage delete-layer $lowerlayer
# Create new layers and populate them using the layer diffs.
run storage --debug=false create-layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
lowerlayer="$output"
storage applydiff -f $TESTDIR/lower.tar "$lowerlayer"
run storage --debug=false create-layer "$lowerlayer"
[ "$status" -eq 0 ]
[ "$output" != "" ]
midlayer="$output"
storage applydiff -f $TESTDIR/middle.tar "$midlayer"
run storage --debug=false create-layer "$midlayer"
[ "$status" -eq 0 ]
[ "$output" != "" ]
upperlayer="$output"
storage applydiff -f $TESTDIR/lower.tar "$upperlayer"
storage applydiff -f $TESTDIR/upper.tar "$upperlayer"
for layer in $lowerlayer $midlayer $upperlayer; do
run storage --debug=false create-image $layer
[ "$status" -eq 0 ]
done
run storage --debug=false dedup -j
[ "$status" -eq 0 ]
deduped=$(jq -r .Deduped <<< $output)
[[ $deduped -gt 0 ]]
for METHOD in size crc sha256; do
# Test that it always returns the same value with any hash-method.
for i in $(seq 10); do
run storage --debug=false dedup -j --hash-method=$METHOD
[ "$status" -eq 0 ]
actual=$(jq -r .Deduped <<< $output)
[[ $deduped = $actual ]]
done
done
}
|