mirror of
https://github.com/ostreedev/ostree.git
synced 2025-03-10 16:58:43 +03:00
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-bareuser.sh \
|
||||
tests/test-pull-bareuseronly.sh \
|
||||
tests/test-pull2-bareuseronly.sh \
|
||||
tests/test-pull-commit-only.sh \
|
||||
tests/test-pull-depth.sh \
|
||||
tests/test-pull-mirror-summary.sh \
|
||||
@ -160,10 +161,13 @@ endif
|
||||
|
||||
dist_installed_test_data = tests/archive-test.sh \
|
||||
tests/pull-test.sh \
|
||||
tests/pull-test2.sh \
|
||||
tests/admin-test.sh \
|
||||
tests/basic-test.sh \
|
||||
tests/pre-endian-deltas-repo-big.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 \
|
||||
$(NULL)
|
||||
|
||||
|
BIN
tests/fah-deltadata-new.tar.xz
Normal file
BIN
tests/fah-deltadata-new.tar.xz
Normal file
Binary file not shown.
BIN
tests/fah-deltadata-old.tar.xz
Normal file
BIN
tests/fah-deltadata-old.tar.xz
Normal file
Binary file not shown.
@ -229,6 +229,8 @@ ostree_repo_init() {
|
||||
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() {
|
||||
mode=$1
|
||||
commit_opts=${2:-}
|
||||
@ -267,6 +269,50 @@ setup_fake_remote_repo1() {
|
||||
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() {
|
||||
# Stub syslinux configuration
|
||||
mkdir -p sysroot/boot/loader.0
|
||||
|
61
tests/pull-test2.sh
Normal file
61
tests/pull-test2.sh
Normal file
@ -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"
|
27
tests/test-pull2-bareuseronly.sh
Executable file
27
tests/test-pull2-bareuseronly.sh
Executable file
@ -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…
x
Reference in New Issue
Block a user