diff --git a/tests/pull-test.sh b/tests/pull-test.sh index 1b06dce7..f0d70efa 100755 --- a/tests/pull-test.sh +++ b/tests/pull-test.sh @@ -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 diff --git a/tests/test-delta.sh b/tests/test-delta.sh index 9760a570..ce32a235 100755 --- a/tests/test-delta.sh +++ b/tests/test-delta.sh @@ -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'