From d0e283c3d8a66ed3312bc57efb356daaa68f9e2d Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Fri, 22 Jun 2018 10:41:50 +0200 Subject: [PATCH] tests: add test for ostree deduplication Signed-off-by: Giuseppe Scrivano --- tests/import-layer-ostree.bats | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 tests/import-layer-ostree.bats diff --git a/tests/import-layer-ostree.bats b/tests/import-layer-ostree.bats new file mode 100644 index 0000000000..048bac5a3d --- /dev/null +++ b/tests/import-layer-ostree.bats @@ -0,0 +1,59 @@ +#!/usr/bin/env bats + +load helpers + +@test "import-layer-ostree" { + case "$STORAGE_DRIVER" in + overlay*|vfs) + ;; + *) + skip "not supported by driver $STORAGE_DRIVER" + ;; + esac + + # The checkdiffs function needs "tar". + if test -z "$(which tar 2> /dev/null)" ; then + skip "need tar" + fi + if test -z "$(which ostree 2> /dev/null)" ; then + skip "need ostree" + fi + + OSTREE_REPO=${TESTDIR}/ostree + mkdir -p $OSTREE_REPO + + # Create and populate three interesting layers. + populate + + OPTS="--storage-opt=.ostree_repo=$OSTREE_REPO,.skip_mount_home=true" + + # Extract the layers. + storage diff $OPTS -u -f $TESTDIR/lower.tar $lowerlayer + storage diff $OPTS -c -f $TESTDIR/middle.tar $midlayer + storage diff $OPTS -u -f $TESTDIR/upper.tar $upperlayer + + # Delete the layers. + storage delete-layer $OPTS $upperlayer + storage delete-layer $OPTS $midlayer + storage delete-layer $OPTS $lowerlayer + + # Import new layers using the layer diffs and mark them read-only. Only read-only layers are deduplicated with OSTree. + run storage --debug=false import-layer $OPTS -r -f $TESTDIR/lower.tar + [ "$status" -eq 0 ] + [ "$output" != "" ] + lowerlayer="$output" + + run storage --debug=false import-layer $OPTS -r -f $TESTDIR/middle.tar "$lowerlayer" + [ "$status" -eq 0 ] + [ "$output" != "" ] + midlayer="$output" + + run storage --debug=false import-layer $OPTS -r -f $TESTDIR/upper.tar "$midlayer" + [ "$status" -eq 0 ] + [ "$output" != "" ] + upperlayer="$output" + + # The contents of these new layers should match what the old ones had. + checkchanges + checkdiffs +}