summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2016-08-28 12:58:20 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2016-08-29 09:22:25 +0200
commit4ff5e237d5685be187a75c563b86e80ea3e7cc01 (patch)
tree697f8b969cd205b6e28d441866bdfed38ee2b5b8 /test
parent6a68315e938eb2611806658828ecea86805822e7 (diff)
randomize acquire order for same type index files
Without randomizing the order in which we download the index files we leak needlessly information to the mirrors of which architecture is native or foreign on this system. More importantly, we leak the order in which description translations will be used which in most cases will e.g. have the native tongue first. Note that the leak effect in practice is limited as apt detects if a file it wants to download is already available in the latest version from a previous download and does not query the server in such cases. Combined with the fact that Translation files are usually updated infrequently and not all at the same time, so a mirror can never be sure if it got asked about all files the user wants.
Diffstat (limited to 'test')
-rw-r--r--test/integration/framework2
-rwxr-xr-xtest/integration/test-apt-update-simple24
2 files changed, 23 insertions, 3 deletions
diff --git a/test/integration/framework b/test/integration/framework
index 62720fedd..243996e14 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -436,6 +436,8 @@ EOF
# in testcases, it can appear as if localhost has a rotation setup,
# hide this as we can't really deal with it properly
echo 'Acquire::Failure::ShowIP "false";'
+ # randomess and tests don't play well together
+ echo 'Acquire::IndexTargets::Randomized "false";'
# fakeroot can't fake everything, so disabled in production but good for tests
echo 'APT::Sandbox::Verify "true";'
} >> aptconfig.conf
diff --git a/test/integration/test-apt-update-simple b/test/integration/test-apt-update-simple
index ca969e61b..ccf719790 100755
--- a/test/integration/test-apt-update-simple
+++ b/test/integration/test-apt-update-simple
@@ -6,10 +6,28 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
setupenvironment
configarchitecture 'amd64'
-insertpackage 'unstable' 'unrelated' 'all' '0.5~squeeze1'
-insertsource 'unstable' 'unrelated' 'all' '0.5~squeeze1'
+insertpackage 'unstable' 'foo' 'all' '1'
+insertpackage 'unstable' 'bar' 'amd64' '1'
+insertpackage 'unstable' 'bar' 'i386' '1'
+insertsource 'unstable' 'foo' 'all' '1'
+
+sed -e 's#^Description-en:#Description-de:#' \
+ aptarchive/dists/unstable/main/i18n/Translation-en > aptarchive/dists/unstable/main/i18n/Translation-de
setupaptarchive --no-update
changetowebserver
-testsuccess aptget update -o Debug::Acquire::Auth=1
+# the framework modifies some configs to ensure testability,
+# at the expense of creating an environment which doesn't always
+# reflect apts "normal" behavior on a "normal" system
+echo 'Acquire::IndexTargets::Randomized "true";
+Acquire::Languages { "environment"; "en"; "de"; };
+' > rootdir/etc/apt/apt.conf.d/restore-simplicity
+
+testempty aptget indextargets
+testsuccess aptget update
+testequal 'main/source/Sources
+main/binary-amd64/Packages
+main/binary-all/Packages
+main/i18n/Translation-en
+main/i18n/Translation-de' aptget indextargets --format '$(METAKEY)'