121 lines
4.6 KiB
Bash
121 lines
4.6 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
@test "split-store" {
|
|
# Create and populate three interesting layers.
|
|
populate
|
|
|
|
# Create an image using to top layer.
|
|
name=wonderful-image
|
|
run mkdir -p ${TESTDIR}/imagestore
|
|
run mkdir -p ${TESTDIR}/emptyimagestore
|
|
run storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ --debug=false create-image --name $name
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" != "" ]
|
|
image=${lines[0]}
|
|
|
|
# Add a couple of big data items.
|
|
createrandom ${TESTDIR}/random1
|
|
createrandom ${TESTDIR}/random2
|
|
storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ set-image-data -f ${TESTDIR}/random1 $image random1
|
|
storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ set-image-data -f ${TESTDIR}/random2 $image random2
|
|
|
|
# Get information about the image, and make sure the ID, name, and data names were preserved.
|
|
run storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ image $image
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "ID: $image" ]]
|
|
[[ "$output" =~ "Name: $name" ]]
|
|
[[ "$output" =~ "Data: random1" ]]
|
|
[[ "$output" =~ "Data: random2" ]]
|
|
|
|
# shutdown store
|
|
run storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ shutdown
|
|
|
|
# Similar data must not be shown when image-store is switched to empty store
|
|
run storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/emptyimagestore/ --run ${TESTDIR}/runroot/ image $image
|
|
echo "$output"
|
|
[[ "$output" != "ID: $image" ]]
|
|
[[ "$output" != "Name: $name" ]]
|
|
[[ "$output" != "Data: random1" ]]
|
|
[[ "$output" != "Data: random2" ]]
|
|
|
|
# shutdown store
|
|
run storage --graph ${TESTDIR}/graph/ --image-store ${TESTDIR}/emptyimagestore/ --run ${TESTDIR}/runroot/ shutdown
|
|
}
|
|
|
|
@test "split-store - use graphRoot as an additional store by default" {
|
|
case "$STORAGE_DRIVER" in
|
|
overlay*|vfs)
|
|
;;
|
|
*)
|
|
skip "additional store not supported by driver $STORAGE_DRIVER"
|
|
;;
|
|
esac
|
|
# Create and populate three interesting layers.
|
|
populate
|
|
|
|
# Create an image using to top layer.
|
|
name=wonderful-image
|
|
run mkdir -p ${TESTDIR}/imagestore
|
|
run storage --graph ${TESTDIR}/graph --debug=false create-image --name $name
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" != "" ]
|
|
image=${lines[0]}
|
|
|
|
# Add a couple of big data items.
|
|
createrandom ${TESTDIR}/random1
|
|
createrandom ${TESTDIR}/random2
|
|
storage --graph ${TESTDIR}/graph set-image-data -f ${TESTDIR}/random1 $image random1
|
|
storage --graph ${TESTDIR}/graph set-image-data -f ${TESTDIR}/random2 $image random2
|
|
|
|
# Get information about the image, and make sure the ID, name, and data names were preserved.
|
|
run storage --graph ${TESTDIR}/graph image $image
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "ID: $image" ]]
|
|
[[ "$output" =~ "Name: $name" ]]
|
|
[[ "$output" =~ "Data: random1" ]]
|
|
[[ "$output" =~ "Data: random2" ]]
|
|
|
|
# shutdown store
|
|
run storage --graph ${TESTDIR}/graph shutdown
|
|
|
|
# Similar data must not be shown when image-store is switched to empty store
|
|
run storage --graph ${TESTDIR}/graph --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ image $image
|
|
echo "$output"
|
|
[[ "$output" =~ "ID: $image" ]]
|
|
[[ "$output" =~ "Name: $name" ]]
|
|
[[ "$output" =~ "Data: random1" ]]
|
|
[[ "$output" =~ "Data: random2" ]]
|
|
|
|
# shutdown store
|
|
run storage --graph ${TESTDIR}/graph --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ shutdown
|
|
|
|
# Even though image only exists on graphRoot, user must
|
|
# be able able to delete the image on graphRoot while `--image-store`
|
|
# is still set.
|
|
run storage --graph ${TESTDIR}/graph --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ delete-image $image
|
|
# shutdown store
|
|
run storage --graph ${TESTDIR}/graph --image-store ${TESTDIR}/imagestore/ --run ${TESTDIR}/runroot/ shutdown
|
|
|
|
# A RO layer must be created in the image store and must be usable from there as a regular store.
|
|
run storage --graph ${TESTDIR}/graph --image-store ${TESTDIR}/imagestore/ --debug=false create-layer --readonly
|
|
[ "$status" -eq 0 ]
|
|
rolayer=$output
|
|
run storage --graph ${TESTDIR}/imagestore --debug=false mount $rolayer
|
|
[ "$status" -eq 0 ]
|
|
run storage --graph ${TESTDIR}/imagestore --debug=false unmount $rolayer
|
|
[ "$status" -eq 0 ]
|
|
run storage --graph ${TESTDIR}/imagestore shutdown
|
|
[ "$status" -eq 0 ]
|
|
|
|
# Now since image was deleted from graphRoot, we should
|
|
# get false output while checking if image still exists
|
|
run storage --graph ${TESTDIR}/graph exists -i $image
|
|
[ "$status" -ne 0 ]
|
|
# shutdown store
|
|
run storage --graph ${TESTDIR}/graph shutdown
|
|
}
|