diff options
Diffstat (limited to '')
-rwxr-xr-x | test/integration/skip-acquire-same-repository-multiple-times | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/integration/skip-acquire-same-repository-multiple-times b/test/integration/skip-acquire-same-repository-multiple-times new file mode 100755 index 0000000..c8372bd --- /dev/null +++ b/test/integration/skip-acquire-same-repository-multiple-times @@ -0,0 +1,85 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +TESTFILE="$TESTDIR/framework" +cp "$TESTFILE" aptarchive/foo +APTARCHIVE="$(readlink -f ./aptarchive)" + +getcodenamefromsuite() { echo "jessie"; } +buildsimplenativepackage 'foo' 'all' '1.0' 'stable' +setupaptarchive --no-update +ln -s "${APTARCHIVE}/dists/stable" "${APTARCHIVE}/dists/jessie" +for FILE in rootdir/etc/apt/sources.list.d/*-stable-* ; do + sed 's#stable#jessie#g' $FILE > $(echo "$FILE" | sed 's#stable#jessie#g') +done + +# install a slowed down file: otherwise its to fast to reproduce combining +NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods" +OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)" +rm "$NEWMETHODS" +mkdir "$NEWMETHODS" +backupIFS="$IFS" +IFS="$(printf "\n\b")" +for METH in $(find "$OLDMETHODS" ! -type d); do + ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS" +done +IFS="$backupIFS" +rm "${NEWMETHODS}/file" "${NEWMETHODS}/http" +cat >"${NEWMETHODS}/file" <<EOF +#!/bin/sh +while read line; do + echo "\$line" + if [ -z "\$line" ]; then + sleep 0.5 + fi +done | '$OLDMETHODS/'"\${0##*/}" +EOF +chmod +x "${NEWMETHODS}/file" +ln -s "${NEWMETHODS}/file" "${NEWMETHODS}/http" + +tworepos() { + msgtest "Downloading the same repository twice over $1" "$3" + testsuccess --nomsg aptget update -o Debug::pkgAcquire::Worker=1 + cp rootdir/tmp/testsuccess.output download.log + #cat download.log + aptget indextargets --format '$(FILENAME)' --no-release-info | sort > file.lst + testequal "$(find "$(readlink -f ./rootdir/var/lib/apt/lists)" -name '*_dists_*' \( ! -name '*InRelease' \) -type f | sort)" cat file.lst + testsuccess aptcache policy + testequal "foo: + Installed: (none) + Candidate: 1.0 + Version table: + 1.0 500 + 500 $1:$2 jessie/main all Packages + 500 $1:$2 stable/main all Packages" aptcache policy foo + testfailure aptcache show foo/unstable + testsuccess aptcache show foo/stable + testsuccess aptcache show foo/jessie +} + +tworepos 'file' "$APTARCHIVE" 'no partial' +testequal '14' grep -c '200%20URI%20Start' ./download.log +testequal '14' grep -c '201%20URI%20Done' ./download.log +testequal '8' grep -c '^ @ Queue: Action combined' ./download.log +tworepos 'file' "$APTARCHIVE" 'hit' +testequal '6' grep -c '200%20URI%20Start' ./download.log +testequal '6' grep -c '201%20URI%20Done' ./download.log +testequal '0' grep -c '^ @ Queue: Action combined' ./download.log +rm -rf rootdir/var/lib/apt/lists + +changetowebserver + +tworepos 'http' "//localhost:${APTHTTPPORT}" 'no partial' +testequal '12' grep -c '200%20URI%20Start' ./download.log +testequal '12' grep -c '201%20URI%20Done' ./download.log +testequal '8' grep -c '^ @ Queue: Action combined' ./download.log +tworepos 'http' "//localhost:${APTHTTPPORT}" 'hit' +testequal '2' grep -c '200%20URI%20Start' ./download.log +testequal '4' grep -c '201%20URI%20Done' ./download.log +testequal '0' grep -c '^ @ Queue: Action combined' ./download.log +rm -rf rootdir/var/lib/apt/lists |