File: dedup.bats

package info (click to toggle)
golang-github-containers-storage 1.59.1%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 4,184 kB
  • sloc: sh: 630; ansic: 389; makefile: 143; awk: 12
file content (78 lines) | stat: -rw-r--r-- 1,973 bytes parent folder | download | duplicates (3)
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
}