tests: Add a "pull-test2" that uses slightly more realistic content
This one actually exercises the delta paths more; I pulled the data from some local F26AH builds. One thing I noticed while doing that is that we try bsdiff on xz'd data, but that won't be useful. https://github.com/projectatomic/rpm-ostree/issues/470 https://bugzilla.redhat.com/show_bug.cgi?id=1367496 Anyways I verified this test fails without the fixup for `pread()` in https://github.com/ostreedev/ostree/pull/1312 Closes: #1314 Approved by: jlebon
This commit is contained in:
parent
aec1191fa9
commit
9d82d258ba
|
|
@ -70,6 +70,7 @@ _installed_or_uninstalled_test_scripts = \
|
||||||
tests/test-pull-bare.sh \
|
tests/test-pull-bare.sh \
|
||||||
tests/test-pull-bareuser.sh \
|
tests/test-pull-bareuser.sh \
|
||||||
tests/test-pull-bareuseronly.sh \
|
tests/test-pull-bareuseronly.sh \
|
||||||
|
tests/test-pull2-bareuseronly.sh \
|
||||||
tests/test-pull-commit-only.sh \
|
tests/test-pull-commit-only.sh \
|
||||||
tests/test-pull-depth.sh \
|
tests/test-pull-depth.sh \
|
||||||
tests/test-pull-mirror-summary.sh \
|
tests/test-pull-mirror-summary.sh \
|
||||||
|
|
@ -160,10 +161,13 @@ endif
|
||||||
|
|
||||||
dist_installed_test_data = tests/archive-test.sh \
|
dist_installed_test_data = tests/archive-test.sh \
|
||||||
tests/pull-test.sh \
|
tests/pull-test.sh \
|
||||||
|
tests/pull-test2.sh \
|
||||||
tests/admin-test.sh \
|
tests/admin-test.sh \
|
||||||
tests/basic-test.sh \
|
tests/basic-test.sh \
|
||||||
tests/pre-endian-deltas-repo-big.tar.xz \
|
tests/pre-endian-deltas-repo-big.tar.xz \
|
||||||
tests/pre-endian-deltas-repo-little.tar.xz \
|
tests/pre-endian-deltas-repo-little.tar.xz \
|
||||||
|
tests/fah-deltadata-old.tar.xz \
|
||||||
|
tests/fah-deltadata-new.tar.xz \
|
||||||
tests/libtest-core.sh \
|
tests/libtest-core.sh \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -229,6 +229,8 @@ ostree_repo_init() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# The original one; use setup_fake_remote_repo2 for newer code,
|
||||||
|
# down the line we'll try to port tests.
|
||||||
setup_fake_remote_repo1() {
|
setup_fake_remote_repo1() {
|
||||||
mode=$1
|
mode=$1
|
||||||
commit_opts=${2:-}
|
commit_opts=${2:-}
|
||||||
|
|
@ -267,6 +269,50 @@ setup_fake_remote_repo1() {
|
||||||
export OSTREE="${CMD_PREFIX} ostree --repo=repo"
|
export OSTREE="${CMD_PREFIX} ostree --repo=repo"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Newer version of the above with more "real" data
|
||||||
|
setup_fake_remote_repo2() {
|
||||||
|
mode=$1
|
||||||
|
commit_opts=${2:-}
|
||||||
|
args=${3:-}
|
||||||
|
shift
|
||||||
|
oldpwd=`pwd`
|
||||||
|
mkdir ostree-srv
|
||||||
|
cd ostree-srv
|
||||||
|
mkdir repo
|
||||||
|
ostree_repo_init repo --mode=$mode
|
||||||
|
# Backcompat
|
||||||
|
ln -sr repo gnomerepo
|
||||||
|
# Initialize content
|
||||||
|
mkdir files
|
||||||
|
cd files
|
||||||
|
mkdir -p usr/{etc,bin,lib,share}
|
||||||
|
ln -sr usr/bin bin
|
||||||
|
ln -sr usr/lib lib
|
||||||
|
tar xf ${test_srcdir}/fah-deltadata-old.tar.xz
|
||||||
|
remote_ref=exampleos/42/x86_64/main
|
||||||
|
cd ..
|
||||||
|
${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo commit \
|
||||||
|
--consume $commit_opts --add-metadata-string version=42.0 -b ${remote_ref} \
|
||||||
|
--tree=dir=files
|
||||||
|
test '!' -d files
|
||||||
|
${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo checkout -U ${remote_ref} files
|
||||||
|
(cd files && tar xf ${test_srcdir}/fah-deltadata-new.tar.xz)
|
||||||
|
${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo commit \
|
||||||
|
--consume $commit_opts --add-metadata-string version=42.1 -b ${remote_ref} \
|
||||||
|
--tree=dir=files
|
||||||
|
|
||||||
|
# And serve via HTTP
|
||||||
|
cd ${test_tmpdir}
|
||||||
|
mkdir ${test_tmpdir}/httpd
|
||||||
|
cd httpd
|
||||||
|
ln -s ${test_tmpdir}/ostree-srv ostree
|
||||||
|
${OSTREE_HTTPD} --autoexit --log-file $(pwd)/httpd.log --daemonize -p ${test_tmpdir}/httpd-port $args
|
||||||
|
port=$(cat ${test_tmpdir}/httpd-port)
|
||||||
|
echo "http://127.0.0.1:${port}" > ${test_tmpdir}/httpd-address
|
||||||
|
cd ${oldpwd}
|
||||||
|
export OSTREE="${CMD_PREFIX} ostree --repo=repo"
|
||||||
|
}
|
||||||
|
|
||||||
setup_os_boot_syslinux() {
|
setup_os_boot_syslinux() {
|
||||||
# Stub syslinux configuration
|
# Stub syslinux configuration
|
||||||
mkdir -p sysroot/boot/loader.0
|
mkdir -p sysroot/boot/loader.0
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
# This file is to be sourced, not executed
|
||||||
|
|
||||||
|
# Copyright (C) 2011 Colin Walters <walters@verbum.org>
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the
|
||||||
|
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
# Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
function repo_init() {
|
||||||
|
cd ${test_tmpdir}
|
||||||
|
rm repo -rf
|
||||||
|
mkdir repo
|
||||||
|
ostree_repo_init repo --mode=${repo_mode}
|
||||||
|
${CMD_PREFIX} ostree --repo=repo remote add origin $(cat httpd-address)/ostree/gnomerepo "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
repo_init --no-gpg-verify
|
||||||
|
|
||||||
|
# See also the copy of this in basic-test.sh
|
||||||
|
COMMIT_ARGS=""
|
||||||
|
CHECKOUT_U_ARG=""
|
||||||
|
CHECKOUT_H_ARGS="-H"
|
||||||
|
if is_bare_user_only_repo repo; then
|
||||||
|
COMMIT_ARGS="--canonical-permissions"
|
||||||
|
# Also, since we can't check out uid=0 files we need to check out in user mode
|
||||||
|
CHECKOUT_U_ARG="-U"
|
||||||
|
CHECKOUT_H_ARGS="-U -H"
|
||||||
|
else
|
||||||
|
if grep -E -q '^mode=bare-user' repo/config; then
|
||||||
|
CHECKOUT_H_ARGS="-U -H"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "1..1"
|
||||||
|
cd ${test_tmpdir}
|
||||||
|
repo_init --no-gpg-verify
|
||||||
|
prev_rev=$(ostree --repo=ostree-srv/repo rev-parse ${remote_ref}^)
|
||||||
|
rev=$(ostree --repo=ostree-srv/repo rev-parse ${remote_ref})
|
||||||
|
${CMD_PREFIX} ostree --repo=ostree-srv/repo static-delta generate ${remote_ref}
|
||||||
|
${CMD_PREFIX} ostree --repo=ostree-srv/repo summary -u
|
||||||
|
${CMD_PREFIX} ostree --repo=repo pull origin ${remote_ref}@${prev_rev}
|
||||||
|
${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin ${remote_ref} >dry-run-pull.txt
|
||||||
|
assert_file_has_content dry-run-pull.txt 'Delta update: 0/1 parts, 0 bytes/[45][0-9].[0-9] kB, 1.[678] MB total uncompressed'
|
||||||
|
${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin ${remote_ref}
|
||||||
|
final_rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:${remote_ref})
|
||||||
|
assert_streq "${rev}" "${final_rev}"
|
||||||
|
${CMD_PREFIX} ostree --repo=repo fsck
|
||||||
|
echo "ok delta"
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2017 Colin Walters <walters@verbum.org>
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the
|
||||||
|
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
# Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
. $(dirname $0)/libtest.sh
|
||||||
|
|
||||||
|
setup_fake_remote_repo2 "archive" "--canonical-permissions"
|
||||||
|
|
||||||
|
repo_mode=bare-user-only
|
||||||
|
. ${test_srcdir}/pull-test2.sh
|
||||||
Loading…
Reference in New Issue