test-apt-update-not-modified 6.2 KB

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