test-apt-update-not-modified 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #!/bin/sh
  2. set -e
  3. TESTDIR="$(readlink -f "$(dirname "$0")")"
  4. . "$TESTDIR/framework"
  5. setupenvironment
  6. configarchitecture 'amd64' 'i386'
  7. confighashes 'SHA256'
  8. insertpackage 'unstable' 'apt' 'amd64,i386' '1.0'
  9. setupaptarchive --no-update
  10. methodtest() {
  11. msgmsg 'Test InRelease with' "$1"
  12. rm -rf rootdir/var/lib/apt/lists
  13. cp -a aptarchive/dists aptarchive/dists.good
  14. # get our cache populated
  15. testsuccess aptget update
  16. listcurrentlistsdirectory > listsdir.lst
  17. # hit again with a good cache
  18. testsuccessequal "Hit:1 $1 unstable InRelease
  19. Reading package lists..." aptget update
  20. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  21. # drop an architecture, which means the file should be gone now
  22. configarchitecture 'i386'
  23. sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst
  24. testsuccessequal "Hit:1 $1 unstable InRelease
  25. Reading package lists..." aptget update
  26. testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
  27. # readd arch so its downloaded again…
  28. configarchitecture 'amd64' 'i386'
  29. # … but oh noes, hashsum mismatch!
  30. SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  31. mv aptarchive/dists/unstable/main/binary-amd64/Packages.gz aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig
  32. cat > aptarchive/dists/unstable/main/binary-amd64/Packages <<EOF
  33. Package: thisisbad
  34. Architecture: amd64
  35. Version: 1
  36. EOF
  37. compressfile aptarchive/dists/unstable/main/binary-amd64/Packages
  38. testfailureequal "Hit:1 $1 unstable InRelease
  39. Get:2 $1 unstable/main amd64 Packages [$SIZE B]
  40. Err:2 $1 unstable/main amd64 Packages
  41. Hash Sum mismatch
  42. Hashes of expected file:
  43. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig')
  44. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
  45. Hashes of received file:
  46. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
  47. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  48. Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  49. Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
  50. Reading package lists...
  51. E: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch
  52. Hashes of expected file:
  53. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig')
  54. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
  55. Hashes of received file:
  56. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
  57. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  58. Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  59. Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
  60. E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
  61. testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
  62. rm -rf aptarchive/dists
  63. cp -a aptarchive/dists.good aptarchive/dists
  64. # … now everything is fine again
  65. testsuccessequal "Hit:1 $1 unstable InRelease
  66. Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
  67. Reading package lists..." aptget update
  68. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  69. webserverconfig 'aptwebserver::support::modified-since' 'false'
  70. webserverconfig 'aptwebserver::support::last-modified' 'false'
  71. testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
  72. Reading package lists..." aptget update
  73. webserverconfig 'aptwebserver::support::modified-since' 'true'
  74. webserverconfig 'aptwebserver::support::last-modified' 'true'
  75. msgmsg 'Test Release.gpg with' "$1"
  76. rm -rf rootdir/var/lib/apt/lists
  77. find aptarchive/dists -name 'InRelease' -delete
  78. # get our cache populated
  79. testsuccess aptget update
  80. listcurrentlistsdirectory > listsdir.lst
  81. # hit again with a good cache
  82. testsuccessequal "Ign:1 $1 unstable InRelease
  83. 404 Not Found
  84. Hit:2 $1 unstable Release
  85. Reading package lists..." aptget update
  86. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  87. # drop an architecture, which means the file should be gone now
  88. configarchitecture 'i386'
  89. sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst
  90. testsuccessequal "Ign:1 $1 unstable InRelease
  91. 404 Not Found
  92. Hit:2 $1 unstable Release
  93. Reading package lists..." aptget update
  94. testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
  95. # readd arch so its downloaded again…
  96. configarchitecture 'amd64' 'i386'
  97. # … but oh noes, hashsum mismatch!
  98. SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  99. mv aptarchive/dists/unstable/main/binary-amd64/Packages.gz aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig
  100. cat > aptarchive/dists/unstable/main/binary-amd64/Packages <<EOF
  101. Package: thisisbad
  102. Architecture: amd64
  103. Version: 1
  104. EOF
  105. compressfile aptarchive/dists/unstable/main/binary-amd64/Packages
  106. testfailureequal "Ign:1 $1 unstable InRelease
  107. 404 Not Found
  108. Hit:2 $1 unstable Release
  109. Get:4 $1 unstable/main amd64 Packages [$SIZE B]
  110. Err:4 $1 unstable/main amd64 Packages
  111. Hash Sum mismatch
  112. Hashes of expected file:
  113. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig')
  114. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
  115. Hashes of received file:
  116. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
  117. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  118. Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  119. Release file created at: $(releasefiledate 'aptarchive/dists/unstable/Release')
  120. Reading package lists...
  121. E: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch
  122. Hashes of expected file:
  123. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig')
  124. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.orig' | cut -d' ' -f 1)
  125. Hashes of received file:
  126. - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
  127. - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  128. Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
  129. Release file created at: $(releasefiledate 'aptarchive/dists/unstable/Release')
  130. E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
  131. testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
  132. rm -rf aptarchive/dists
  133. cp -a aptarchive/dists.good aptarchive/dists
  134. find aptarchive/dists -name 'InRelease' -delete
  135. # … now everything is fine again
  136. testsuccessequal "Ign:1 $1 unstable InRelease
  137. 404 Not Found
  138. Hit:2 $1 unstable Release
  139. Get:4 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
  140. Reading package lists..." aptget update
  141. testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
  142. webserverconfig 'aptwebserver::support::modified-since' 'false'
  143. webserverconfig 'aptwebserver::support::last-modified' 'false'
  144. testsuccessequal "Ign:1 $1 unstable InRelease
  145. 404 Not Found
  146. Get:2 $1 unstable Release [$(stat -c '%s' 'aptarchive/dists/unstable/Release') B]
  147. Reading package lists..." aptget update
  148. webserverconfig 'aptwebserver::support::modified-since' 'true'
  149. webserverconfig 'aptwebserver::support::last-modified' 'true'
  150. rm -rf aptarchive/dists
  151. cp -a aptarchive/dists.good aptarchive/dists
  152. # new release file, but the indexes are the same
  153. redatereleasefiles '+2 hours'
  154. rm -rf rootdir/var/lib/apt/lists.good
  155. cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good
  156. testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
  157. Reading package lists..." aptget update
  158. rm -rf rootdir/var/lib/apt/lists
  159. cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
  160. find rootdir/var/lib/apt/lists -name '*_Packages*' -delete
  161. testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
  162. Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
  163. Get:3 $1 unstable/main i386 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-i386/Packages.gz') B]
  164. Reading package lists..." aptget update
  165. rm -rf aptarchive/dists
  166. cp -a aptarchive/dists.good aptarchive/dists
  167. }
  168. changetowebserver
  169. methodtest "http://localhost:${APTHTTPPORT}"
  170. changetohttpswebserver
  171. methodtest "https://localhost:${APTHTTPSPORT}"