]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | set -e | |
3 | ||
4 | verify_by_hash() { | |
5 | for hash_gen in SHA1:sha1sum 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 'SHA1' '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 |