4 TESTDIR
=$(readlink -f $(dirname $0)) 
   7 configarchitecture 
'amd64' 
  12         dd if="$1" bs
=1 count
="$2" of
="$3" 2>/dev
/null
 
  13         touch -d "$(stat --format '%y' "${TESTFILE}")" "$3" 
  16 DOWNLOADLOG
='rootdir/tmp/testdownloadfile.log' 
  20         msgtest 
"Testing download of file $2 with" "$1 $5" 
  21         if ! downloadfile 
"$2" "$3" "$5" > "$DOWNLOADLOG"; then 
  22                 cat >&2 "$DOWNLOADLOG" 
  27         sed -e '/^ <- / s#%20# #g' -e '/^ <- / s#%0a#\n#g' "$DOWNLOADLOG" | grep '^.*-Hash: ' > receivedhashes.log
 
  28         testsuccess 
test -s receivedhashes.log
 
  31         while read field 
hash; do 
  34                 'MD5Sum-Hash:') EXPECTED
="$(md5sum "$TESTFILE" | cut -d' ' -f 1)";; 
  35                 'SHA1-Hash:') EXPECTED
="$(sha1sum "$TESTFILE" | cut -d' ' -f 1)";; 
  36                 'SHA256-Hash:') EXPECTED
="$(sha256sum "$TESTFILE" | cut -d' ' -f 1)";; 
  37                 'SHA512-Hash:') EXPECTED
="$(sha512sum "$TESTFILE" | cut -d' ' -f 1)";; 
  38                 'Checksum-FileSize-Hash:') 
  39                         #filesize is too weak to check for != 
  40                         if [ "$4" = '=' ]; then 
  41                                 EXPECTED
="$(stat -c '%s' "$TESTFILE")" 
  48                 if [ "$4" = '=' ]; then 
  49                         msgtest 
'Test downloaded file for correct' "$field" 
  51                         msgtest 
'Test downloaded file does not match in' "$field" 
  53                 if [ "$EXPECTED" "$4" "$hash" ]; then 
  55                         HASHES_OK
=$((HASHES_OK+1)); 
  57                         msgfail 
"expected: $EXPECTED ; got: $hash" 
  58                         HASHES_BAD
=$((HASHES_BAD+1)); 
  60         done < receivedhashes.log
 
  61         msgtest 
'At least one good hash and no bad ones' 
  62         if [ $HASHES_OK -eq 0 ] || [ $HASHES_BAD -ne 0 ]; then 
  63                 cat >&2 "$DOWNLOADLOG" 
  70 TESTFILE
='aptarchive/testfile' 
  71 cp -a ${TESTDIR}/framework 
$TESTFILE 
  72 cp -a ${TESTDIR}/framework 
"${TESTFILE}2" 
  75         local DOWN
='./downloaded/testfile' 
  77         copysource 
$TESTFILE 1M 
$DOWN 
  78         testdownloadfile 
'completely downloaded file' "${1}/testfile" "$DOWN" '=' 
  79         testwebserverlaststatuscode 
'416' "$DOWNLOADLOG" 
  81         webserverconfig 
'aptwebserver::support::content-range' 'false' 
  82         copysource 
$TESTFILE 1M 
$DOWN 
  83         testdownloadfile 
'completely downloaded file' "${1}/testfile" "$DOWN" '=' "SHA1:$(sha1sum "$TESTFILE" | cut -d' ' -f 1)" 
  84         testwebserverlaststatuscode 
'416' "$DOWNLOADLOG" 
  85         webserverconfig 
'aptwebserver::support::content-range' 'true' 
  87         copysource 
$TESTFILE 1M 
$DOWN 
  88         copysource 
"${TESTFILE}2" 20 "${DOWN}2" 
  89         msgtest 
'Testing download of files with' 'completely downloaded file + partial file' 
  90         testsuccess 
--nomsg apthelper 
-o Debug
::Acquire
::${1%%:*}=1 -o Debug
::pkgAcquire
::Worker
=1 \
 
  91                 download
-file "$1/testfile" "$DOWN" '' "$1/testfile2" "${DOWN}2" 
  92         testwebserverlaststatuscode 
'206' 'rootdir/tmp/testsuccess.output' 
  93         testsuccess 
diff -u "$TESTFILE" "${DOWN}" 
  94         testsuccess 
diff -u "${DOWN}" "${DOWN}2" 
  98         webserverconfig 
'aptwebserver::support::range' 'true' 
  99         local DOWN
='./downloaded/testfile' 
 101         copysource 
$TESTFILE 0 $DOWN 
 102         testdownloadfile 
'no data' "${1}/testfile" "$DOWN" '=' 
 103         testwebserverlaststatuscode 
'200' "$DOWNLOADLOG" 
 105         copysource 
$TESTFILE 20 $DOWN 
 106         testdownloadfile 
'valid partial data' "${1}/testfile" "$DOWN" '=' 
 107         testwebserverlaststatuscode 
'206' "$DOWNLOADLOG" 
 109         copysource 
/dev
/zero 
20 $DOWN 
 110         testdownloadfile 
'invalid partial data' "${1}/testfile" "$DOWN" '!=' 
 111         testwebserverlaststatuscode 
'206' "$DOWNLOADLOG" 
 113         webserverconfig 
'aptwebserver::closeOnError' 'false' 
 115         webserverconfig 
'aptwebserver::closeOnError' 'true' 
 117         webserverconfig 
'aptwebserver::closeOnError' 'false' 
 119         copysource 
/dev
/zero 
1M 
$DOWN 
 120         testdownloadfile 
'too-big partial file' "${1}/testfile" "$DOWN" '=' 
 121         testwebserverlaststatuscode 
'200' "$DOWNLOADLOG" 
 123         copysource 
/dev
/zero 
20 $DOWN 
 125         testdownloadfile 
'old data' "${1}/testfile" "$DOWN" '=' 
 126         testwebserverlaststatuscode 
'200' "$DOWNLOADLOG" 
 128         webserverconfig 
'aptwebserver::support::range' 'false' 
 130         copysource 
$TESTFILE 20 $DOWN 
 131         testdownloadfile 
'no server support' "${1}/testfile" "$DOWN" '=' 
 132         testwebserverlaststatuscode 
'200' "$DOWNLOADLOG" 
 136         msgmsg 
"${1%%:*}: Test with Content-Length" 
 137         webserverconfig 
'aptwebserver::chunked-transfer-encoding' 'false' 
 139         msgmsg 
"${1%%:*}: Test with Transfer-Encoding: chunked" 
 140         webserverconfig 
'aptwebserver::chunked-transfer-encoding' 'true' 
 144 serverconfigs 
"http://localhost:${APTHTTPPORT}" 
 146 changetohttpswebserver
 
 148 serverconfigs 
"https://localhost:${APTHTTPSPORT}"