| 1 | #!/bin/sh |
| 2 | set -e |
| 3 | |
| 4 | verify_by_hash() { |
| 5 | for hash_gen in SHA256:sha256sum SHA512:sha512sum; do |
| 6 | hash=$(echo ${hash_gen} | cut -f1 -d:) |
| 7 | gen=$(echo ${hash_gen} | cut -f2 -d:) |
| 8 | testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ') |
| 9 | testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages.gz | cut -f1 -d' ') |
| 10 | done |
| 11 | } |
| 12 | |
| 13 | # |
| 14 | # main() |
| 15 | # |
| 16 | TESTDIR="$(readlink -f "$(dirname "$0")")" |
| 17 | . "$TESTDIR/framework" |
| 18 | setupenvironment |
| 19 | configarchitecture 'i386' |
| 20 | configcompression 'gz' '.' |
| 21 | confighashes 'SHA256' 'SHA512' |
| 22 | |
| 23 | # enable by-hash in apt-ftparchive |
| 24 | echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf |
| 25 | |
| 26 | # build one pacakge |
| 27 | buildsimplenativepackage 'foo' 'i386' '1' 'unstable' |
| 28 | buildaptarchivefromincoming |
| 29 | |
| 30 | # verify initial run |
| 31 | verify_by_hash |
| 32 | previous_hash=$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ') |
| 33 | |
| 34 | # insert new package |
| 35 | buildsimplenativepackage 'bar' 'i386' '1' 'unstable' |
| 36 | # and build again |
| 37 | buildaptarchivefromincoming |
| 38 | |
| 39 | # ensure the new package packag is there |
| 40 | testsuccess zgrep "Package: bar" aptarchive/dists/unstable/main/binary-i386/Packages.gz |
| 41 | |
| 42 | # ensure we have the by-hash stuff |
| 43 | verify_by_hash |
| 44 | |
| 45 | # ensure the old hash is still there |
| 46 | testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/$previous_hash |
| 47 | |
| 48 | # ensure we have it in the Release file |
| 49 | testsuccess grep "Acquire-By-Hash: true" aptarchive/dists/unstable/*Release |
| 50 | |
| 51 | # now ensure gc work |
| 52 | for i in $(seq 3); do |
| 53 | buildsimplenativepackage 'bar' 'i386' "$i" 'unstable' |
| 54 | buildaptarchivefromincoming |
| 55 | done |
| 56 | |
| 57 | hash_count=$(ls aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/|wc -l) |
| 58 | # we have 2 files (uncompressed, gz) per run, 5 runs in total |
| 59 | # by default apt-ftparchive keeps three generations (current plus 2 older) |
| 60 | msgtest "Check that gc for by-hash works… " |
| 61 | if [ "$hash_count" = "6" ]; then |
| 62 | msgpass |
| 63 | else |
| 64 | echo "Got $hash_count expected 6" |
| 65 | msgfail |
| 66 | fi |
| 67 | |
| 68 | # ensure the current generation is still there |
| 69 | verify_by_hash |
| 70 | |