mirror of
https://github.com/ostreedev/ostree.git
synced 2025-03-17 14:50:35 +03:00
tests: Test for recovery from corrupted summary cache
Check that recovery from a corrupted summary cache (cached summary doesn't match cached signature) works. Closes: #1698 Approved by: cgwalters
This commit is contained in:
parent
e5061f54d6
commit
1b5cb52da2
@ -23,7 +23,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
. $(dirname $0)/libtest.sh
|
. $(dirname $0)/libtest.sh
|
||||||
|
|
||||||
echo "1..9"
|
echo "1..10"
|
||||||
|
|
||||||
COMMIT_SIGN="--gpg-homedir=${TEST_GPG_KEYHOME} --gpg-sign=${TEST_GPG_KEYID_1}"
|
COMMIT_SIGN="--gpg-homedir=${TEST_GPG_KEYHOME} --gpg-sign=${TEST_GPG_KEYID_1}"
|
||||||
setup_fake_remote_repo1 "archive" "${COMMIT_SIGN}"
|
setup_fake_remote_repo1 "archive" "${COMMIT_SIGN}"
|
||||||
@ -230,4 +230,37 @@ cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summ
|
|||||||
|
|
||||||
echo "ok pull with signed summary remote old summary signature"
|
echo "ok pull with signed summary remote old summary signature"
|
||||||
|
|
||||||
|
# Reset to the old valid summary and pull to cache it
|
||||||
|
cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.1,}
|
||||||
|
cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.1,}
|
||||||
|
repo_reinit
|
||||||
|
${OSTREE} --repo=repo pull origin main
|
||||||
|
assert_has_file repo/tmp/cache/summaries/origin
|
||||||
|
assert_has_file repo/tmp/cache/summaries/origin.sig
|
||||||
|
cmp repo/tmp/cache/summaries/origin ${test_tmpdir}/ostree-srv/gnomerepo/summary.1 >&2
|
||||||
|
cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig.1 >&2
|
||||||
|
|
||||||
|
# Simulate a broken summary cache to see if it can be recovered from.
|
||||||
|
# Prior to commit c4c2b5eb the client would save the summary to the
|
||||||
|
# cache before validating the signature. That would mean the cache would
|
||||||
|
# have mismatched summary and signature and ostree would remain
|
||||||
|
# deadlocked there until the remote published a new signature.
|
||||||
|
cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.2 repo/tmp/cache/summaries/origin
|
||||||
|
${OSTREE} --repo=repo pull origin main
|
||||||
|
assert_has_file repo/tmp/cache/summaries/origin
|
||||||
|
assert_has_file repo/tmp/cache/summaries/origin.sig
|
||||||
|
cmp repo/tmp/cache/summaries/origin ${test_tmpdir}/ostree-srv/gnomerepo/summary.1 >&2
|
||||||
|
cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig.1 >&2
|
||||||
|
|
||||||
|
# Publish new signature and check that subsequent pull succeeds
|
||||||
|
cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.2,}
|
||||||
|
cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.2,}
|
||||||
|
${OSTREE} --repo=repo pull origin main
|
||||||
|
assert_has_file repo/tmp/cache/summaries/origin
|
||||||
|
assert_has_file repo/tmp/cache/summaries/origin.sig
|
||||||
|
cmp repo/tmp/cache/summaries/origin ${test_tmpdir}/ostree-srv/gnomerepo/summary.2 >&2
|
||||||
|
cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig.2 >&2
|
||||||
|
|
||||||
|
echo "ok pull with signed summary broken cache"
|
||||||
|
|
||||||
libtest_cleanup_gpg
|
libtest_cleanup_gpg
|
||||||
|
Loading…
x
Reference in New Issue
Block a user