ostree/tests/kolainst/nondestructive/itest-pull.sh
Colin Walters 6a5f97c145 tests: Add needs-internet tag for webserver bits
Fixes the tests, see https://github.com/coreos/coreos-assembler/pull/1600
TODO: provide a webserver binary via virtio or so
2020-07-17 01:37:46 +00:00

84 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# FIXME just for webserver
# kola: { "tags": "needs-internet" }
# Using the host ostree, test HTTP pulls
set -xeuo pipefail
# FIXME: https://github.com/ostreedev/ostree/pull/1548
exit 0
. ${KOLA_EXT_DATA}/libinsttest.sh
date
prepare_tmpdir /var/tmp
trap _tmpdir_cleanup EXIT
# Take the host's ostree, and make it archive
mkdir repo
ostree --repo=repo init --mode=archive
echo -e '[archive]\nzlib-level=1\n' >> repo/config
host_nonremoteref=$(echo ${host_refspec} | sed 's,[^:]*:,,')
log_timestamps() {
date
"$@"
date
}
log_timestamps ostree --repo=repo pull-local /ostree/repo ${host_commit}
ostree --repo=repo refs ${host_commit} --create=${host_nonremoteref}
run_tmp_webserver $(pwd)/repo
# Now test pulling via HTTP (no deltas) to a new bare-user repo
ostree --repo=bare-repo init --mode=bare-user
ostree --repo=bare-repo remote add origin --set=gpg-verify=false $(cat ${test_tmpdir}/httpd-address)
log_timestamps ostree --repo=bare-repo pull --disable-static-deltas origin ${host_nonremoteref}
echo "ok pull"
# fsck marks commits partial
# https://github.com/ostreedev/ostree/pull/1533
for d in $(find bare-repo/objects/ -maxdepth 1 -type d); do
(find ${d} -name '*.file' || true) | head -20 | xargs rm -f
done
date
if ostree --repo=bare-repo fsck |& tee fsck.txt; then
fatal "fsck unexpectedly succeeded"
fi
date
assert_streq $(grep -cE -e 'Marking commit as partial' fsck.txt) "1"
log_timestamps ostree --repo=bare-repo pull origin ${host_nonremoteref}
# Don't need a full fsck here
ostree --repo=bare-repo ls origin:${host_nonremoteref} >/dev/null
rm bare-repo repo -rf
# Try copying the host's repo across a mountpoint for direct
# imports.
cd ${test_tmpdir}
mkdir tmpfs mnt
mount --bind tmpfs mnt
cd mnt
ostree --repo=repo init --mode=bare
log_timestamps ostree --repo=repo pull-local /ostree/repo ${host_commit}
log_timestamps ostree --repo=repo fsck
cd ..
# Also, we shouldn't copy xattrs on metadata objects
commit_path=objects/${host_commit:0:2}/${host_commit:2}.commit
ostree --repo=testarchive init --mode=archive
ostree --repo=testarchive pull-local --commit-metadata-only /ostree/repo ${host_commit}
setfattr -n user.ostreetesting -v hello testarchive/${commit_path}
ostree --repo=mnt/testarchive2 init --mode=archive
ostree --repo=mnt/testarchive2 pull-local --commit-metadata-only testarchive ${host_commit}
if getfattr -m user.ostreetesting mnt/testarchive2/${commit_path} 2>/dev/null; then
fatal "copied metadata xattr"
fi
echo "ok no metadata xattr copy"
umount mnt
# Cleanup
kill -TERM $(cat ${test_tmpdir}/httpd-pid)
echo "ok"
date