forked from containers/storage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate-layer.bats
93 lines (86 loc) · 3.22 KB
/
create-layer.bats
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env bats
load helpers
@test "create-layer" {
# Create a layer.
run storage --debug=false create-layer
[ "$status" -eq 0 ]
[ "$output" != "" ]
lowerlayer="$output"
lowerwriter=$(cat ${TESTDIR}/root/${STORAGE_DRIVER}-layers/layers.lock)
[ "$lowerwriter" != "" ]
# Mount the layer.
run storage --debug=false mount $lowerlayer
[ "$status" -eq 0 ]
[ "$output" != "" ]
lowermount="$output"
lowermwriter=$(cat ${TESTDIR}/runroot/${STORAGE_DRIVER}-layers/mountpoints.lock)
[ "$lowermwriter" != "" ]
# Put a file in the layer.
createrandom "$lowermount"/layer1file1
# Create a second layer based on the first one.
run storage --debug=false create-layer "$lowerlayer"
[ "$status" -eq 0 ]
[ "$output" != "" ]
midlayer="$output"
midwriter=$(cat ${TESTDIR}/root/${STORAGE_DRIVER}-layers/layers.lock)
[ "$midwriter" != "" ]
# Mount that layer, too.
run storage --debug=false mount $midlayer
[ "$status" -eq 0 ]
[ "$output" != "" ]
midmount="$output"
midmwriter=$(cat ${TESTDIR}/runroot/${STORAGE_DRIVER}-layers/mountpoints.lock)
[ "$midmwriter" != "" ]
# Check that the file from the first layer is there.
test -s "$midmount"/layer1file1
# Check that we can remove it...
rm -f -v "$midmount"/layer1file1
# ... and that doing so doesn't affect the first layer.
test -s "$lowermount"/layer1file1
# Create a new file in this layer.
createrandom "$midmount"/layer2file1
# Unmount this layer.
storage unmount $midlayer
# Unmount the first layer.
storage unmount $lowerlayer
# Create a third layer based on the second one.
run storage --debug=false create-layer "$midlayer"
[ "$status" -eq 0 ]
[ "$output" != "" ]
upperlayer="$output"
upperwriter=$(cat ${TESTDIR}/root/${STORAGE_DRIVER}-layers/layers.lock)
[ "$upperwriter" != "" ]
# Mount this layer.
run storage --debug=false mount $upperlayer
[ "$status" -eq 0 ]
[ "$output" != "" ]
uppermount="$output"
uppermwriter=$(cat ${TESTDIR}/runroot/${STORAGE_DRIVER}-layers/mountpoints.lock)
[ "$uppermwriter" != "" ]
# Check that the file we removed from the second layer is still gone.
run test -s "$uppermount"/layer1file1
[ "$status" -ne 0 ]
# Check that the file we added to the second layer is still there.
test -s "$uppermount"/layer2file1
# Unmount the third layer.
storage unmount $upperlayer
# Get a list of the layers, and make sure all three, and no others, are listed.
run storage --debug=false layers
[ "$status" -eq 0 ]
echo :"$output":
[ "${#lines[*]}" -eq 3 ]
[ "${lines[0]}" != "${lines[1]}" ]
[ "${lines[1]}" != "${lines[2]}" ]
[ "${lines[2]}" != "${lines[0]}" ]
[ "${lines[0]}" = "$lowerlayer" ] || [ "${lines[0]}" = "$midlayer" ] || [ "${lines[0]}" = "$upperlayer" ]
[ "${lines[1]}" = "$lowerlayer" ] || [ "${lines[1]}" = "$midlayer" ] || [ "${lines[1]}" = "$upperlayer" ]
[ "${lines[2]}" = "$lowerlayer" ] || [ "${lines[2]}" = "$midlayer" ] || [ "${lines[2]}" = "$upperlayer" ]
# Check that we updated the layers last-writer consistently.
[ "${lowerwriter}" != "${midwriter}" ]
[ "${lowerwriter}" != "${upperwriter}" ]
[ "${midwriter}" != "${upperwriter}" ]
# Check that we updated the mountpoints last-writer consistently.
[ "${lowermwriter}" != "${midmwriter}" ]
[ "${lowermwriter}" != "${uppermwriter}" ]
[ "${midmwriter}" != "${uppermwriter}" ]
}