Add tests for inline static deltas
authorAlexander Larsson <alexl@redhat.com>
Thu, 15 Oct 2015 08:46:16 +0000 (10:46 +0200)
committerAlexander Larsson <alexl@redhat.com>
Tue, 10 Nov 2015 07:56:13 +0000 (08:56 +0100)
tests/pull-test.sh
tests/test-delta.sh

index 1b06dce7fa889e0592d80d981a3684bc610d4fc0..f0d70efa1d04ca20e831b472c7dad78e025e97d0 100755 (executable)
@@ -109,6 +109,28 @@ assert_not_has_file baz/saucer
 
 echo "ok static delta"
 
+cd ${test_tmpdir}
+rm main-files -rf
+ostree --repo=ostree-srv/gnomerepo checkout main main-files
+cd main-files
+echo "more added files for static deltas" > added-file2
+ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo commit -b main -s 'inline static delta test'
+cd ..
+rm main-files -rf
+# Generate new delta that we'll use
+ostree --repo=ostree-srv/gnomerepo static-delta generate --inline main
+
+cd ${test_tmpdir}
+${CMD_PREFIX} ostree --repo=repo pull origin main
+${CMD_PREFIX} ostree --repo=repo fsck
+
+rm checkout-origin-main -rf
+$OSTREE checkout origin:main checkout-origin-main
+cd checkout-origin-main
+assert_file_has_content added-file2 "more added files for static deltas"
+
+echo "ok inline static delta"
+
 cd ${test_tmpdir}
 rm main-files -rf
 ostree --repo=ostree-srv/gnomerepo checkout main main-files
index 9760a5701aa234aa6eeedd51e7f4e50b8d8496a6..ce32a235d3e92d7fbfb5f5450d65de2bc65ec094 100755 (executable)
@@ -55,6 +55,28 @@ function permuteDirectory() {
     done
 }
 
+get_assert_one_direntry_matching() {
+    local path=$1
+    local r=$2
+    local child=""
+    local bn
+    for p in ${path}/*; do
+       bn=$(basename $p)
+       if ! echo ${bn} | grep -q "$r"; then
+           continue
+       fi
+       if test -z "${child}"; then
+           child=${bn}
+       else
+           assert_not_reached "Expected only one child matching ${r} in ${path}";
+       fi
+    done
+    if test -z "${child}"; then
+       assert_not_reached "Failed to find child matching ${r}"
+    fi
+    echo ${child}
+}
+
 origrev=$(${CMD_PREFIX} ostree --repo=repo rev-parse test)
 
 ostree --repo=repo static-delta generate --empty --to=${origrev}
@@ -66,8 +88,20 @@ permuteDirectory 1 files
 ostree --repo=repo commit -b test -s test --tree=dir=files
 
 newrev=$(${CMD_PREFIX} ostree --repo=repo rev-parse test)
+
+ostree --repo=repo static-delta generate --from=${origrev} --to=${newrev} --inline
+
+deltaprefix=$(get_assert_one_direntry_matching repo/deltas '.')
+deltadir=$(get_assert_one_direntry_matching repo/deltas/${deltaprefix} '-')
+
+assert_has_file repo/deltas/${deltaprefix}/${deltadir}/superblock
+assert_not_has_file repo/deltas/${deltaprefix}/${deltadir}/0
+
 ostree --repo=repo static-delta generate --from=${origrev} --to=${newrev}
 
+assert_has_file repo/deltas/${deltaprefix}/${deltadir}/superblock
+assert_has_file repo/deltas/${deltaprefix}/${deltadir}/0
+
 ostree --repo=repo static-delta generate --disable-bsdiff --from=${origrev} --to=${newrev} 2>&1 | grep "bsdiff=0 objects"
 ostree --repo=repo static-delta generate --max-bsdiff-size=0 --from=${origrev} --to=${newrev} 2>&1 | grep "bsdiff=0 objects"
 ostree --repo=repo static-delta generate --max-bsdiff-size=10000 --from=${origrev} --to=${newrev} 2>&1 | grep "bsdiff=[1-9]"
@@ -91,28 +125,6 @@ rm repo2 -rf
 mkdir repo2 && ostree --repo=repo2 init --mode=bare-user
 mkdir deltadir
 
-get_assert_one_direntry_matching() {
-    local path=$1
-    local r=$2
-    local child=""
-    local bn
-    for p in ${path}/*; do
-       bn=$(basename $p)
-       if ! echo ${bn} | grep -q "$r"; then
-           continue
-       fi
-       if test -z "${child}"; then
-           child=${bn}
-       else
-           assert_not_reached "Expected only one child matching ${r} in ${path}";
-       fi
-    done
-    if test -z "${child}"; then
-       assert_not_reached "Failed to find child matching ${r}"
-    fi
-    echo ${child}
-}
-
 deltaprefix=$(get_assert_one_direntry_matching repo/deltas '.')
 deltadir=$(get_assert_one_direntry_matching repo/deltas/${deltaprefix} '-')
 ostree --repo=repo2 pull-local repo ${origrev}
@@ -120,3 +132,20 @@ ostree --repo=repo2 ls ${origrev} >/dev/null
 ostree --repo=repo2 static-delta apply-offline repo/deltas/${deltaprefix}/${deltadir}
 ostree --repo=repo2 fsck
 ostree --repo=repo2 ls ${newrev} >/dev/null
+
+echo 'ok apply offline'
+
+rm -rf repo/deltas/${deltaprefix}/${deltadir}/*
+ostree --repo=repo static-delta generate --from=${origrev} --to=${newrev} --inline
+assert_not_has_file repo/deltas/${deltaprefix}/${deltadir}/0
+
+rm repo2 -rf
+mkdir repo2 && ostree --repo=repo2 init --mode=bare-user
+
+ostree --repo=repo2 pull-local repo ${origrev}
+ostree --repo=repo2 ls ${origrev} >/dev/null
+ostree --repo=repo2 static-delta apply-offline repo/deltas/${deltaprefix}/${deltadir}
+ostree --repo=repo2 fsck
+ostree --repo=repo2 ls ${newrev} >/dev/null
+
+echo 'ok apply offline inline'