summaryrefslogtreecommitdiffstats
path: root/test/integration/test-apt-ftparchive-by-hash
blob: ccfc627343fe15c48f5ff2717d91cfe3f57cb157 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/sh
set -e

verify_by_hash() {
    for hash_gen in SHA256:sha256sum SHA512:sha512sum; do
        hash=$(echo ${hash_gen} | cut -f1 -d:)
        gen=$(echo ${hash_gen} | cut -f2 -d:)
        testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
        testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages.gz | cut -f1 -d' ')
    done
}

#
# main()
#
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'i386'
configcompression 'gz' '.'
confighashes 'SHA256' 'SHA512'

# enable by-hash in apt-ftparchive
echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf

# build one package
buildsimplenativepackage 'foo' 'i386' '1' 'unstable'
buildaptarchivefromincoming

# verify initial run
verify_by_hash
previous_hash=$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')

# insert new package
buildsimplenativepackage 'bar' 'i386' '1' 'unstable'
# and build again
buildaptarchivefromincoming

# ensure the new package packag is there
testsuccess zgrep "Package: bar" aptarchive/dists/unstable/main/binary-i386/Packages.gz

# ensure we have the by-hash stuff
verify_by_hash

# ensure the old hash is still there
testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/$previous_hash

# ensure we have it in the Release file
testsuccess grep "Acquire-By-Hash: yes" aptarchive/dists/unstable/*Release

# now ensure gc work
for i in $(seq 3); do
    buildsimplenativepackage 'bar' 'i386' "$i" 'unstable'
    buildaptarchivefromincoming
done

hash_count=$(ls aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/|wc -l)
# we have 2 files (uncompressed, gz) per run, 5 runs in total
# by default apt-ftparchive keeps three generations (current plus 2 older)
msgtest "Check that gc for by-hash works… "
if [ "$hash_count" = "6" ]; then
    msgpass
else
    echo "Got $hash_count expected 6"
    msgfail
fi

# ensure the current generation is still there
verify_by_hash