New upstream version 2017.3
This commit is contained in:
commit
057de00126
134 files changed
+7527
-2384
No files matched your search
+39
-1
@@ -19,7 +19,11 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "1..60"
|
||||
echo "1..63"
|
||||
|
||||
$CMD_PREFIX ostree --version > version.yaml
|
||||
python -c 'import yaml; yaml.safe_load(open("version.yaml"))'
|
||||
echo "ok yaml version"
|
||||
|
||||
$OSTREE checkout test2 checkout-test2
|
||||
echo "ok checkout"
|
||||
@@ -115,6 +119,22 @@ omitted_rev=$($OSTREE commit -b test2-no-subject-2 --timestamp="2005-10-29 12:43
|
||||
assert_streq $empty_rev $omitted_rev
|
||||
echo "ok commit no subject"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
cat >commitmsg.txt <<EOF
|
||||
This is a long
|
||||
commit message.
|
||||
|
||||
Build-Host: foo.example.com
|
||||
Crunchy-With-Extra-Ketchup: true
|
||||
EOF
|
||||
$OSTREE commit -b branch-with-commitmsg -F commitmsg.txt -s 'a message' $test_tmpdir/checkout-test2-4
|
||||
$OSTREE log branch-with-commitmsg > log.txt
|
||||
assert_file_has_content log.txt '^ *This is a long$'
|
||||
assert_file_has_content log.txt '^ *Build-Host:.*example.com$'
|
||||
assert_file_has_content log.txt '^ *Crunchy-With.*true$'
|
||||
$OSTREE refs --delete branch-with-commitmsg
|
||||
echo "ok commit body file"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
|
||||
$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
|
||||
@@ -259,6 +279,24 @@ cd checkout-test2-union
|
||||
assert_file_has_content ./yet/another/tree/green "leaf"
|
||||
echo "ok checkout union 1"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
$OSTREE commit -b test-union-add --tree=ref=test2
|
||||
$OSTREE checkout test-union-add checkout-test-union-add
|
||||
echo 'file for union add testing' > checkout-test-union-add/union-add-test
|
||||
echo 'another file for union add testing' > checkout-test-union-add/union-add-test2
|
||||
$OSTREE commit -b test-union-add --tree=dir=checkout-test-union-add
|
||||
rm checkout-test-union-add -rf
|
||||
# Check out previous
|
||||
$OSTREE checkout test-union-add^ checkout-test-union-add
|
||||
assert_not_has_file checkout-test-union-add/union-add-test
|
||||
assert_not_has_file checkout-test-union-add/union-add-test2
|
||||
# Now create a file we don't want overwritten
|
||||
echo 'existing file for union add' > checkout-test-union-add/union-add-test
|
||||
$OSTREE checkout --union-add test-union-add checkout-test-union-add
|
||||
assert_file_has_content checkout-test-union-add/union-add-test 'existing file for union add'
|
||||
assert_file_has_content checkout-test-union-add/union-add-test2 'another file for union add testing'
|
||||
echo "ok checkout union add"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
rm -rf shadow-repo
|
||||
mkdir shadow-repo
|
||||
|
||||
+104
-1
@@ -270,6 +270,106 @@ setup_fake_remote_repo1() {
|
||||
export OSTREE="${CMD_PREFIX} ostree --repo=repo"
|
||||
}
|
||||
|
||||
# Set up a large repository for stress testing.
|
||||
# Something like the Fedora Atomic Workstation branch which has
|
||||
# objects: meta: 7497 content: 103541
|
||||
# 9443 directories, 7097 symlinks, 112832 regfiles
|
||||
# So we'll make ~11 files per dir, with one of them a symlink
|
||||
# Actually, let's cut this down to 1/3 which is still useful. So:
|
||||
# 3147 dirs, with still ~11 files per dir, for 37610 content objects
|
||||
setup_exampleos_repo() {
|
||||
args=${1:-}
|
||||
cd ${test_tmpdir}
|
||||
mkdir ostree-srv
|
||||
mkdir -p ostree-srv/exampleos/{repo,build-repo}
|
||||
export ORIGIN_REPO=ostree-srv/exampleos/repo
|
||||
export ORIGIN_BUILD_REPO=ostree-srv/exampleos/build-repo
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_REPO} init --mode=archive
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_BUILD_REPO} init --mode=bare-user
|
||||
cd ${test_tmpdir}
|
||||
rm main -rf
|
||||
mkdir main
|
||||
cd main
|
||||
ndirs=3147
|
||||
depth=0
|
||||
set +x # No need to spam the logs for this
|
||||
echo "$(date): Generating initial content..."
|
||||
while [ $ndirs -gt 0 ]; do
|
||||
# 2/3 of the time, recurse a dir, up to a max of 9, otherwise back up
|
||||
x=$(($ndirs % 3))
|
||||
case $x in
|
||||
0) if [ $depth -gt 0 ]; then cd ..; depth=$((depth-1)); fi ;;
|
||||
1|2) if [ $depth -lt 9 ]; then
|
||||
mkdir dir-${ndirs}
|
||||
cd dir-${ndirs}
|
||||
depth=$((depth+1))
|
||||
else
|
||||
if [ $depth -gt 0 ]; then cd ..; depth=$((depth-1)); fi
|
||||
fi ;;
|
||||
esac
|
||||
# One symlink - we use somewhat predictable content to have dupes
|
||||
ln -s $(($x % 20)) link-$ndirs
|
||||
# 10 files
|
||||
nfiles=10
|
||||
while [ $nfiles -gt 0 ]; do
|
||||
echo file-$ndirs-$nfiles > f$ndirs-$nfiles
|
||||
# Make an unreadable file to trigger https://github.com/ostreedev/ostree/pull/634
|
||||
if [ $(($x % 10)) -eq 0 ]; then
|
||||
chmod 0600 f$ndirs-$nfiles
|
||||
fi
|
||||
nfiles=$((nfiles-1))
|
||||
done
|
||||
ndirs=$((ndirs-1))
|
||||
done
|
||||
cd ${test_tmpdir}
|
||||
set -x
|
||||
|
||||
export REF=exampleos/42/standard
|
||||
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_BUILD_REPO} commit -b ${REF} --tree=dir=main
|
||||
rm main -rf
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_BUILD_REPO} checkout ${REF} main
|
||||
|
||||
find main > files.txt
|
||||
nfiles=$(wc -l files.txt | cut -f 1 -d ' ')
|
||||
# We'll make 5 more commits
|
||||
for iter in $(seq 5); do
|
||||
set +x
|
||||
# Change 10% of files
|
||||
for fiter in $(seq $(($nfiles / 10))); do
|
||||
filenum=$(($RANDOM % ${nfiles}))
|
||||
set +o pipefail
|
||||
filename=$(tail -n +${filenum} < files.txt | head -1)
|
||||
set -o pipefail
|
||||
if test -f $filename; then
|
||||
rm -f $filename
|
||||
echo file-${iter}-${fiter} > ${filename}
|
||||
fi
|
||||
done
|
||||
set -x
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_BUILD_REPO} commit --link-checkout-speedup -b ${REF} --tree=dir=main
|
||||
done
|
||||
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_REPO} pull-local --depth=-1 ${ORIGIN_BUILD_REPO}
|
||||
|
||||
for x in "^^" "^" ""; do
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_REPO} static-delta generate --from="${REF}${x}^" --to="${REF}${x}"
|
||||
done
|
||||
${CMD_PREFIX} ostree --repo=${ORIGIN_REPO} summary -u
|
||||
|
||||
cd ${test_tmpdir}/ostree-srv
|
||||
mkdir httpd
|
||||
${OSTREE_HTTPD} --autoexit --log-file $(pwd)/httpd/httpd.log --daemonize -p httpd/port $args
|
||||
port=$(cat httpd/port)
|
||||
echo "http://127.0.0.1:${port}" > httpd/address
|
||||
|
||||
cd ${test_tmpdir}
|
||||
rm repo -rf
|
||||
${CMD_PREFIX} ostree --repo=repo init --mode=bare-user
|
||||
${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat ostree-srv/httpd/address)/exampleos/repo
|
||||
export OSTREE="${CMD_PREFIX} ostree --repo=repo"
|
||||
}
|
||||
|
||||
setup_os_boot_syslinux() {
|
||||
# Stub syslinux configuration
|
||||
mkdir -p sysroot/boot/loader.0
|
||||
@@ -438,7 +538,10 @@ skip_without_fuse () {
|
||||
}
|
||||
|
||||
has_gpgme () {
|
||||
${CMD_PREFIX} ostree --version | grep -q -e '\+gpgme'
|
||||
${CMD_PREFIX} ostree --version > version.txt
|
||||
assert_file_has_content version.txt '- gpgme'
|
||||
rm -f version.txt
|
||||
true
|
||||
}
|
||||
|
||||
libtest_cleanup_gpg () {
|
||||
|
||||
+13
-2
@@ -35,7 +35,7 @@ function verify_initial_contents() {
|
||||
assert_file_has_content baz/cow '^moo$'
|
||||
}
|
||||
|
||||
echo "1..14"
|
||||
echo "1..15"
|
||||
|
||||
# Try both syntaxes
|
||||
repo_init
|
||||
@@ -69,6 +69,16 @@ ${CMD_PREFIX} ostree --repo=mirrorrepo pull --mirror origin main
|
||||
${CMD_PREFIX} ostree --repo=mirrorrepo fsck
|
||||
echo "ok pull mirror (should not apply deltas)"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
if ${CMD_PREFIX} ostree --repo=mirrorrepo \
|
||||
pull origin main --require-static-deltas 2>err.txt; then
|
||||
assert_not_reached "--require-static-deltas unexpectedly succeeded"
|
||||
fi
|
||||
assert_file_has_content err.txt "Can't use static deltas in an archive repo"
|
||||
${CMD_PREFIX} ostree --repo=mirrorrepo pull origin main
|
||||
${CMD_PREFIX} ostree --repo=mirrorrepo fsck
|
||||
echo "ok pull (refuses deltas)"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
rm mirrorrepo/refs/remotes/* -rf
|
||||
${CMD_PREFIX} ostree --repo=mirrorrepo prune --refs-only
|
||||
@@ -144,7 +154,8 @@ cd ${test_tmpdir}
|
||||
repo_init
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev}
|
||||
${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin main >dry-run-pull.txt
|
||||
assert_file_has_content dry-run-pull.txt 'Delta update: 0/1 parts'
|
||||
# Compression can vary, so we support 400-699
|
||||
assert_file_has_content dry-run-pull.txt 'Delta update: 0/1 parts, 0 bytes/[456][0-9][0-9] bytes, 455 bytes total uncompressed'
|
||||
rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:main)
|
||||
assert_streq "${prev_rev}" "${rev}"
|
||||
${CMD_PREFIX} ostree --repo=repo fsck
|
||||
|
||||
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/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.
|
||||
|
||||
# See https://github.com/ostreedev/ostree/pull/642
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
. $(dirname $0)/libtest.sh
|
||||
|
||||
echo "1..1"
|
||||
|
||||
setup_os_repository "archive-z2" "syslinux"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
${CMD_PREFIX} ostree --repo=sysroot/ostree/repo remote add --set=gpg-verify=false testos $(cat httpd-address)/ostree/testos-repo
|
||||
${CMD_PREFIX} ostree --repo=sysroot/ostree/repo pull testos testos/buildmaster/x86_64-runtime
|
||||
rev=$(${CMD_PREFIX} ostree --repo=sysroot/ostree/repo rev-parse testos/buildmaster/x86_64-runtime)
|
||||
parent_rev=$(${CMD_PREFIX} ostree --repo=sysroot/ostree/repo rev-parse ${rev}^)
|
||||
${CMD_PREFIX} ostree --repo=sysroot/ostree/repo pull testos testos/buildmaster/x86_64-runtime@${parent_rev}
|
||||
${CMD_PREFIX} ostree admin deploy --karg=root=LABEL=MOO --karg=quiet --os=testos testos:testos/buildmaster/x86_64-runtime
|
||||
assert_has_dir sysroot/ostree/deploy/testos/deploy/${parent_rev}.0
|
||||
assert_not_has_dir sysroot/ostree/deploy/testos/deploy/${rev}.0
|
||||
# Do a pull, this one should get us new content
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos --pull-only --os=testos > out.txt
|
||||
assert_not_file_has_content out.txt 'No update available'
|
||||
# And pull again should still tell us we have new content
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos --pull-only --os=testos > out.txt
|
||||
assert_not_file_has_content out.txt 'No update available'
|
||||
assert_has_dir sysroot/ostree/deploy/testos/deploy/${parent_rev}.0
|
||||
assert_not_has_dir sysroot/ostree/deploy/testos/deploy/${rev}.0
|
||||
assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'TestOS 42 1.0.9'
|
||||
assert_streq "${rev}" $(${CMD_PREFIX} ostree --repo=sysroot/ostree/repo rev-parse testos/buildmaster/x86_64-runtime)
|
||||
# Now, generate new content upstream; we shouldn't pull it
|
||||
os_repository_new_commit
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos --deploy-only --os=testos > out.txt
|
||||
assert_not_file_has_content out.txt 'No update available'
|
||||
assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'TestOS 42 1.0.10'
|
||||
assert_has_dir sysroot/ostree/deploy/testos/deploy/${parent_rev}.0
|
||||
assert_has_dir sysroot/ostree/deploy/testos/deploy/${rev}.0
|
||||
${CMD_PREFIX} ostree admin upgrade --os=testos --deploy-only --os=testos > out.txt
|
||||
assert_file_has_content out.txt 'No update available'
|
||||
|
||||
echo 'ok upgrade --pull-only + --deploy-only'
|
||||
+22
-3
@@ -26,7 +26,7 @@ skip_without_user_xattrs
|
||||
bindatafiles="bash true ostree"
|
||||
morebindatafiles="false ls"
|
||||
|
||||
echo '1..11'
|
||||
echo '1..12'
|
||||
|
||||
mkdir repo
|
||||
${CMD_PREFIX} ostree --repo=repo init --mode=archive-z2
|
||||
@@ -121,6 +121,14 @@ if ${CMD_PREFIX} ostree --repo=repo static-delta generate --from=${origrev} --to
|
||||
assert_not_reached "static-delta generate --from=${origrev} --empty unexpectedly succeeded"
|
||||
fi
|
||||
|
||||
${CMD_PREFIX} ostree --repo=temp-repo init --mode=archive
|
||||
${CMD_PREFIX} ostree --repo=temp-repo pull-local repo
|
||||
${CMD_PREFIX} ostree --repo=temp-repo static-delta generate --empty --to=${newrev} --filename=some.delta
|
||||
assert_has_file some.delta
|
||||
${CMD_PREFIX} ostree --repo=temp-repo static-delta list > delta-list.txt
|
||||
assert_file_has_content delta-list.txt 'No static deltas'
|
||||
rm temp-repo -rf
|
||||
|
||||
echo 'ok generate'
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo static-delta show ${origrev}-${newrev} > show.txt
|
||||
@@ -160,7 +168,7 @@ echo 'ok heuristic endian detection'
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo summary -u
|
||||
|
||||
mkdir repo2 && ${CMD_PREFIX} ostree --repo=repo2 init --mode=archive-z2
|
||||
mkdir repo2 && ${CMD_PREFIX} ostree --repo=repo2 init --mode=bare-user
|
||||
${CMD_PREFIX} ostree --repo=repo2 pull-local --require-static-deltas repo ${newrev}
|
||||
${CMD_PREFIX} ostree --repo=repo2 fsck
|
||||
${CMD_PREFIX} ostree --repo=repo2 ls ${newrev} >/dev/null
|
||||
@@ -228,7 +236,7 @@ echo 'ok generate + show empty delta part'
|
||||
${CMD_PREFIX} ostree --repo=repo summary -u
|
||||
|
||||
rm -rf repo2
|
||||
mkdir repo2 && ${CMD_PREFIX} ostree --repo=repo2 init --mode=archive-z2
|
||||
mkdir repo2 && ${CMD_PREFIX} ostree --repo=repo2 init --mode=bare-user
|
||||
${CMD_PREFIX} ostree --repo=repo2 pull-local repo ${newrev}
|
||||
${CMD_PREFIX} ostree --repo=repo2 pull-local --require-static-deltas repo ${samerev}
|
||||
${CMD_PREFIX} ostree --repo=repo2 fsck
|
||||
@@ -236,6 +244,17 @@ ${CMD_PREFIX} ostree --repo=repo2 ls ${samerev} >/dev/null
|
||||
|
||||
echo 'ok pull empty delta part'
|
||||
|
||||
# Make a new branch to test "rebase deltas"
|
||||
echo otherbranch-content > files/otherbranch-content
|
||||
${CMD_PREFIX} ostree --repo=repo commit -b otherbranch --tree=dir=files
|
||||
samerev=$(${CMD_PREFIX} ostree --repo=repo rev-parse test)
|
||||
${CMD_PREFIX} ostree --repo=repo static-delta generate --from=test --to=otherbranch
|
||||
${CMD_PREFIX} ostree --repo=repo summary -u
|
||||
${CMD_PREFIX} ostree --repo=repo2 pull-local --require-static-deltas repo otherbranch
|
||||
|
||||
echo 'ok rebase deltas'
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo summary -u
|
||||
if ${CMD_PREFIX} ostree --repo=repo static-delta show GARBAGE 2> err.txt; then
|
||||
assert_not_reached "static-delta show GARBAGE unexpectedly succeeded"
|
||||
fi
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if ! ostree --version | grep -q -e '\+libarchive'; then
|
||||
if ! ostree --version | grep -q -e '- libarchive'; then
|
||||
echo "1..0 #SKIP no libarchive support compiled in"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
+19
-67
@@ -21,80 +21,32 @@ set -euo pipefail
|
||||
|
||||
. $(dirname $0)/libtest.sh
|
||||
|
||||
setup_fake_remote_repo1 "archive-z2"
|
||||
cd ${test_tmpdir}
|
||||
rm ostree-srv/gnomerepo/ -rf
|
||||
mkdir ostree-srv/gnomerepo/
|
||||
${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo init --mode=archive
|
||||
setup_exampleos_repo
|
||||
|
||||
echo '1..1'
|
||||
|
||||
# Simulate a large archive pull from scratch. Large here is
|
||||
# something like the Fedora Atomic Workstation branch which has
|
||||
# objects: meta: 7497 content: 103541
|
||||
# 9443 directories, 7097 symlinks, 112832 regfiles
|
||||
# So we'll make ~11 files per dir, with one of them a symlink
|
||||
echo '1..3'
|
||||
|
||||
cd ${test_tmpdir}
|
||||
rm main -rf
|
||||
mkdir main
|
||||
cd main
|
||||
ndirs=9443
|
||||
depth=0
|
||||
echo "$(date): Generating content..."
|
||||
set +x # No need to spam the logs for this
|
||||
while [ $ndirs -gt 0 ]; do
|
||||
# 2/3 of the time, recurse a dir, up to a max of 9, otherwise back up
|
||||
x=$(($ndirs % 3))
|
||||
case $x in
|
||||
0) if [ $depth -gt 0 ]; then cd ..; depth=$((depth-1)); fi ;;
|
||||
1|2) if [ $depth -lt 9 ]; then
|
||||
mkdir dir-${ndirs}
|
||||
cd dir-${ndirs}
|
||||
depth=$((depth+1))
|
||||
else
|
||||
if [ $depth -gt 0 ]; then cd ..; depth=$((depth-1)); fi
|
||||
fi ;;
|
||||
esac
|
||||
|
||||
# One symlink - we use somewhat predictable content to have dupes
|
||||
ln -s $(($x % 20)) link-$ndirs
|
||||
# 10 files
|
||||
nfiles=10
|
||||
while [ $nfiles -gt 0 ]; do
|
||||
echo file-$ndirs-$nfiles > f$ndirs-$nfiles
|
||||
nfiles=$((nfiles-1))
|
||||
done
|
||||
ndirs=$((ndirs-1))
|
||||
done
|
||||
set -x
|
||||
cd ${test_tmpdir}
|
||||
mkdir build-repo
|
||||
${CMD_PREFIX} ostree --repo=build-repo init --mode=bare-user
|
||||
echo "$(date): Committing content..."
|
||||
${CMD_PREFIX} ostree --repo=build-repo commit -b main -s 'big!' --tree=dir=main
|
||||
for x in commit dirtree dirmeta file; do
|
||||
find build-repo/objects -name '*.'${x} |wc -l > ${x}count
|
||||
echo "$x: " $(cat ${x}count)
|
||||
done
|
||||
assert_file_has_content commitcount '^1$'
|
||||
assert_file_has_content dirmetacount '^1$'
|
||||
assert_file_has_content filecount '^94433$'
|
||||
${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo pull-local build-repo
|
||||
|
||||
echo "$(date): Pulling content..."
|
||||
rm repo -rf
|
||||
${CMD_PREFIX} ostree --repo=repo init --mode=archive
|
||||
${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo
|
||||
rev=$(${CMD_PREFIX} ostree --repo=ostree-srv/exampleos/repo rev-parse ${REF})
|
||||
${CMD_PREFIX} ostree --repo=repo pull --disable-static-deltas origin ${REF}
|
||||
${CMD_PREFIX} ostree --repo=repo fsck
|
||||
assert_streq ${rev} $(${CMD_PREFIX} ostree --repo=repo rev-parse ${REF})
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo pull --mirror origin main
|
||||
echo "ok without deltas"
|
||||
|
||||
previous=$(${CMD_PREFIX} ostree --repo=repo rev-parse ${rev}^)
|
||||
rm repo/refs/{heads,remotes}/* -rf
|
||||
${CMD_PREFIX} ostree --repo=repo prune --refs-only
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin ${REF}@${previous}
|
||||
${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin ${REF} > output.txt
|
||||
assert_file_has_content output.txt 'Delta update: 0/1 parts, 0 bytes/1.[012] MB, 1.[345] MB total uncompressed'
|
||||
|
||||
echo "ok delta dry-run"
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin ${REF}
|
||||
assert_streq $(${CMD_PREFIX} ostree --repo=repo rev-parse ${REF}) ${rev}
|
||||
${CMD_PREFIX} ostree --repo=repo fsck
|
||||
for x in commit dirtree dirmeta filez; do
|
||||
find repo/objects -name '*.'${x} |wc -l > ${x}count
|
||||
echo "$x: " $(cat ${x}count)
|
||||
done
|
||||
assert_file_has_content commitcount '^1$'
|
||||
assert_file_has_content dirmetacount '^1$'
|
||||
assert_file_has_content filezcount '^94433$'
|
||||
|
||||
echo "ok"
|
||||
@@ -28,12 +28,9 @@ setup_fake_remote_repo1 "archive-z2" "" \
|
||||
"--expected-cookies foo=bar --expected-cookies baz=badger"
|
||||
|
||||
assert_fail (){
|
||||
set +e
|
||||
$@
|
||||
if [ $? = 0 ] ; then
|
||||
echo 1>&2 "$@ did not fail"; exit 1
|
||||
if $@; then
|
||||
(echo 1>&2 "$@ did not fail"; exit 1)
|
||||
fi
|
||||
set -euo pipefail
|
||||
}
|
||||
|
||||
cd ${test_tmpdir}
|
||||
@@ -50,12 +47,16 @@ echo "ok, setup done"
|
||||
# Add 2 cookies, pull should succeed now
|
||||
${CMD_PREFIX} ostree --repo=repo remote add-cookie origin 127.0.0.1 / foo bar
|
||||
${CMD_PREFIX} ostree --repo=repo remote add-cookie origin 127.0.0.1 / baz badger
|
||||
assert_file_has_content repo/origin.cookies.txt foo.*bar
|
||||
assert_file_has_content repo/origin.cookies.txt baz.*badger
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin main
|
||||
|
||||
echo "ok, initial cookie pull succeeded"
|
||||
|
||||
# Delete one cookie, if successful pulls will fail again
|
||||
${CMD_PREFIX} ostree --repo=repo remote delete-cookie origin 127.0.0.1 / baz badger
|
||||
assert_file_has_content repo/origin.cookies.txt foo.*bar
|
||||
assert_not_file_has_content repo/origin.cookies.txt baz.*badger
|
||||
assert_fail ${CMD_PREFIX} ostree --repo=repo pull origin main
|
||||
|
||||
echo "ok, delete succeeded"
|
||||
@@ -63,6 +64,8 @@ echo "ok, delete succeeded"
|
||||
# Re-add the removed cooking and things succeed again, verified the removal
|
||||
# removed exactly one cookie
|
||||
${CMD_PREFIX} ostree --repo=repo remote add-cookie origin 127.0.0.1 / baz badger
|
||||
assert_file_has_content repo/origin.cookies.txt foo.*bar
|
||||
assert_file_has_content repo/origin.cookies.txt baz.*badger
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin main
|
||||
|
||||
echo "ok, second cookie pull succeeded"
|
||||
@@ -78,6 +78,6 @@ assert_file_has_content mnt/test2-checkout-copy-fallback/anewfile-for-fuse anewf
|
||||
if ${CMD_PREFIX} ostree --repo=repo checkout -UH test2 mnt/test2-checkout-copy-hardlinked 2>err.txt; then
|
||||
assert_not_reached "Checking out via hardlinks across mountpoint unexpectedly succeeded!"
|
||||
fi
|
||||
assert_file_has_content err.txt "Invalid cross-device link"
|
||||
assert_file_has_content err.txt "Unable to do hardlink checkout across devices"
|
||||
|
||||
echo "ok checkout copy fallback"
|
||||
@@ -137,9 +137,35 @@ test_rollsum (void)
|
||||
test_rollsum_helper (a, MAX_BUFFER_SIZE, b, MAX_BUFFER_SIZE, FALSE);
|
||||
}
|
||||
|
||||
#define BUP_SELFTEST_SIZE 100000
|
||||
|
||||
static void
|
||||
test_bupsplit_sum(void)
|
||||
{
|
||||
g_autofree uint8_t *buf = g_malloc (BUP_SELFTEST_SIZE);
|
||||
uint32_t sum1a, sum1b, sum2a, sum2b, sum3a, sum3b;
|
||||
unsigned count;
|
||||
|
||||
for (count = 0; count < BUP_SELFTEST_SIZE; count++)
|
||||
buf[count] = g_random_int_range (0, 256);
|
||||
|
||||
sum1a = bupsplit_sum(buf, 0, BUP_SELFTEST_SIZE);
|
||||
sum1b = bupsplit_sum(buf, 1, BUP_SELFTEST_SIZE);
|
||||
sum2a = bupsplit_sum(buf, BUP_SELFTEST_SIZE - BUP_WINDOWSIZE*5/2,
|
||||
BUP_SELFTEST_SIZE - BUP_WINDOWSIZE);
|
||||
sum2b = bupsplit_sum(buf, 0, BUP_SELFTEST_SIZE - BUP_WINDOWSIZE);
|
||||
sum3a = bupsplit_sum(buf, 0, BUP_WINDOWSIZE+3);
|
||||
sum3b = bupsplit_sum(buf, 3, BUP_WINDOWSIZE+3);
|
||||
|
||||
g_assert_cmpint (sum1a, ==, sum1b);
|
||||
g_assert_cmpint (sum2a, ==, sum2b);
|
||||
g_assert_cmpint (sum3a, ==, sum3b);
|
||||
}
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
g_test_add_func ("/rollsum", test_rollsum);
|
||||
g_test_add_func ("/bupsum", test_bupsplit_sum);
|
||||
return g_test_run();
|
||||
}
|
||||
Reference in new issue
Block a user