You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

298 lines
6.7 KiB

  1. #!/bin/bash
  2. #
  3. set -e
  4. set -E
  5. set -o pipefail
  6. if [ ! -x "$PWD/minio" ]; then
  7. echo "minio executable binary not found in current directory"
  8. exit 1
  9. fi
  10. WORK_DIR="$PWD/.verify-$RANDOM"
  11. export MINT_MODE=core
  12. export MINT_DATA_DIR="$WORK_DIR/data"
  13. export SERVER_ENDPOINT="127.0.0.1:9000"
  14. export MC_HOST_verify="http://minio:minio123@${SERVER_ENDPOINT}/"
  15. export MC_HOST_verify_ipv6="http://minio:minio123@[::1]:9000/"
  16. export ACCESS_KEY="minio"
  17. export SECRET_KEY="minio123"
  18. export ENABLE_HTTPS=0
  19. export GO111MODULE=on
  20. export GOGC=25
  21. export ENABLE_ADMIN=1
  22. export MINIO_CI_CD=1
  23. MINIO_CONFIG_DIR="$WORK_DIR/.minio"
  24. MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR")
  25. FILE_1_MB="$MINT_DATA_DIR/datafile-1-MB"
  26. FILE_65_MB="$MINT_DATA_DIR/datafile-65-MB"
  27. FUNCTIONAL_TESTS="$WORK_DIR/functional-tests.sh"
  28. function start_minio_fs() {
  29. export MINIO_ROOT_USER=$ACCESS_KEY
  30. export MINIO_ROOT_PASSWORD=$SECRET_KEY
  31. "${MINIO[@]}" server "${WORK_DIR}/fs-disk" >"$WORK_DIR/fs-minio.log" 2>&1 &
  32. "${WORK_DIR}/mc" ready verify
  33. }
  34. function start_minio_erasure() {
  35. "${MINIO[@]}" server "${WORK_DIR}/erasure-disk1" "${WORK_DIR}/erasure-disk2" "${WORK_DIR}/erasure-disk3" "${WORK_DIR}/erasure-disk4" >"$WORK_DIR/erasure-minio.log" 2>&1 &
  36. "${WORK_DIR}/mc" ready verify
  37. }
  38. function start_minio_erasure_sets() {
  39. export MINIO_ENDPOINTS="${WORK_DIR}/erasure-disk-sets{1...32}"
  40. "${MINIO[@]}" server >"$WORK_DIR/erasure-minio-sets.log" 2>&1 &
  41. "${WORK_DIR}/mc" ready verify
  42. }
  43. function start_minio_pool_erasure_sets() {
  44. export MINIO_ROOT_USER=$ACCESS_KEY
  45. export MINIO_ROOT_PASSWORD=$SECRET_KEY
  46. export MINIO_ENDPOINTS="http://127.0.0.1:9000${WORK_DIR}/pool-disk-sets{1...4} http://127.0.0.1:9001${WORK_DIR}/pool-disk-sets{5...8}"
  47. "${MINIO[@]}" server --address ":9000" >"$WORK_DIR/pool-minio-9000.log" 2>&1 &
  48. "${MINIO[@]}" server --address ":9001" >"$WORK_DIR/pool-minio-9001.log" 2>&1 &
  49. "${WORK_DIR}/mc" ready verify
  50. }
  51. function start_minio_pool_erasure_sets_ipv6() {
  52. export MINIO_ROOT_USER=$ACCESS_KEY
  53. export MINIO_ROOT_PASSWORD=$SECRET_KEY
  54. export MINIO_ENDPOINTS="http://[::1]:9000${WORK_DIR}/pool-disk-sets-ipv6{1...4} http://[::1]:9001${WORK_DIR}/pool-disk-sets-ipv6{5...8}"
  55. "${MINIO[@]}" server --address="[::1]:9000" >"$WORK_DIR/pool-minio-ipv6-9000.log" 2>&1 &
  56. "${MINIO[@]}" server --address="[::1]:9001" >"$WORK_DIR/pool-minio-ipv6-9001.log" 2>&1 &
  57. "${WORK_DIR}/mc" ready verify_ipv6
  58. }
  59. function start_minio_dist_erasure() {
  60. export MINIO_ROOT_USER=$ACCESS_KEY
  61. export MINIO_ROOT_PASSWORD=$SECRET_KEY
  62. export MINIO_ENDPOINTS="http://127.0.0.1:9000${WORK_DIR}/dist-disk1 http://127.0.0.1:9001${WORK_DIR}/dist-disk2 http://127.0.0.1:9002${WORK_DIR}/dist-disk3 http://127.0.0.1:9003${WORK_DIR}/dist-disk4"
  63. for i in $(seq 0 3); do
  64. "${MINIO[@]}" server --address ":900${i}" >"$WORK_DIR/dist-minio-900${i}.log" 2>&1 &
  65. done
  66. "${WORK_DIR}/mc" ready verify
  67. }
  68. function run_test_fs() {
  69. start_minio_fs
  70. (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS")
  71. rv=$?
  72. pkill minio
  73. sleep 3
  74. if [ "$rv" -ne 0 ]; then
  75. cat "$WORK_DIR/fs-minio.log"
  76. fi
  77. rm -f "$WORK_DIR/fs-minio.log"
  78. return "$rv"
  79. }
  80. function run_test_erasure_sets() {
  81. start_minio_erasure_sets
  82. (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS")
  83. rv=$?
  84. pkill minio
  85. sleep 3
  86. if [ "$rv" -ne 0 ]; then
  87. cat "$WORK_DIR/erasure-minio-sets.log"
  88. fi
  89. rm -f "$WORK_DIR/erasure-minio-sets.log"
  90. return "$rv"
  91. }
  92. function run_test_pool_erasure_sets() {
  93. start_minio_pool_erasure_sets
  94. (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS")
  95. rv=$?
  96. pkill minio
  97. sleep 3
  98. if [ "$rv" -ne 0 ]; then
  99. for i in $(seq 0 1); do
  100. echo "server$i log:"
  101. cat "$WORK_DIR/pool-minio-900$i.log"
  102. done
  103. fi
  104. for i in $(seq 0 1); do
  105. rm -f "$WORK_DIR/pool-minio-900$i.log"
  106. done
  107. return "$rv"
  108. }
  109. function run_test_pool_erasure_sets_ipv6() {
  110. start_minio_pool_erasure_sets_ipv6
  111. export SERVER_ENDPOINT="[::1]:9000"
  112. (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS")
  113. rv=$?
  114. pkill minio
  115. sleep 3
  116. if [ "$rv" -ne 0 ]; then
  117. for i in $(seq 0 1); do
  118. echo "server$i log:"
  119. cat "$WORK_DIR/pool-minio-ipv6-900$i.log"
  120. done
  121. fi
  122. for i in $(seq 0 1); do
  123. rm -f "$WORK_DIR/pool-minio-ipv6-900$i.log"
  124. done
  125. return "$rv"
  126. }
  127. function run_test_erasure() {
  128. start_minio_erasure
  129. (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS")
  130. rv=$?
  131. pkill minio
  132. sleep 3
  133. if [ "$rv" -ne 0 ]; then
  134. cat "$WORK_DIR/erasure-minio.log"
  135. fi
  136. rm -f "$WORK_DIR/erasure-minio.log"
  137. return "$rv"
  138. }
  139. function run_test_dist_erasure() {
  140. start_minio_dist_erasure
  141. (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS")
  142. rv=$?
  143. pkill minio
  144. sleep 3
  145. if [ "$rv" -ne 0 ]; then
  146. echo "server1 log:"
  147. cat "$WORK_DIR/dist-minio-9000.log"
  148. echo "server2 log:"
  149. cat "$WORK_DIR/dist-minio-9001.log"
  150. echo "server3 log:"
  151. cat "$WORK_DIR/dist-minio-9002.log"
  152. echo "server4 log:"
  153. cat "$WORK_DIR/dist-minio-9003.log"
  154. fi
  155. rm -f "$WORK_DIR/dist-minio-9000.log" "$WORK_DIR/dist-minio-9001.log" "$WORK_DIR/dist-minio-9002.log" "$WORK_DIR/dist-minio-9003.log"
  156. return "$rv"
  157. }
  158. function purge() {
  159. rm -rf "$1"
  160. }
  161. function __init__() {
  162. echo "Initializing environment"
  163. mkdir -p "$WORK_DIR"
  164. mkdir -p "$MINIO_CONFIG_DIR"
  165. mkdir -p "$MINT_DATA_DIR"
  166. MC_BUILD_DIR="mc-$RANDOM"
  167. if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then
  168. echo "failed to download https://github.com/minio/mc"
  169. purge "${MC_BUILD_DIR}"
  170. exit 1
  171. fi
  172. (cd "${MC_BUILD_DIR}" && go build -o "${WORK_DIR}/mc")
  173. # remove mc source.
  174. purge "${MC_BUILD_DIR}"
  175. shred -n 1 -s 1M - 1>"$FILE_1_MB" 2>/dev/null
  176. shred -n 1 -s 65M - 1>"$FILE_65_MB" 2>/dev/null
  177. ## version is purposefully set to '3' for minio to migrate configuration file
  178. echo '{"version": "3", "credential": {"accessKey": "minio", "secretKey": "minio123"}, "region": "us-east-1"}' >"$MINIO_CONFIG_DIR/config.json"
  179. if ! wget -q -O "$FUNCTIONAL_TESTS" https://raw.githubusercontent.com/minio/mc/master/functional-tests.sh; then
  180. echo "failed to download https://raw.githubusercontent.com/minio/mc/master/functional-tests.sh"
  181. exit 1
  182. fi
  183. sed -i 's|-sS|-sSg|g' "$FUNCTIONAL_TESTS"
  184. chmod a+x "$FUNCTIONAL_TESTS"
  185. }
  186. function main() {
  187. echo "Testing in FS setup"
  188. if ! run_test_fs; then
  189. echo "FAILED"
  190. purge "$WORK_DIR"
  191. exit 1
  192. fi
  193. echo "Testing in Erasure setup"
  194. if ! run_test_erasure; then
  195. echo "FAILED"
  196. purge "$WORK_DIR"
  197. exit 1
  198. fi
  199. echo "Testing in Distributed Erasure setup"
  200. if ! run_test_dist_erasure; then
  201. echo "FAILED"
  202. purge "$WORK_DIR"
  203. exit 1
  204. fi
  205. echo "Testing in Erasure setup as sets"
  206. if ! run_test_erasure_sets; then
  207. echo "FAILED"
  208. purge "$WORK_DIR"
  209. exit 1
  210. fi
  211. echo "Testing in Distributed Eraure expanded setup"
  212. if ! run_test_pool_erasure_sets; then
  213. echo "FAILED"
  214. purge "$WORK_DIR"
  215. exit 1
  216. fi
  217. echo "Testing in Distributed Erasure expanded setup with ipv6"
  218. if ! run_test_pool_erasure_sets_ipv6; then
  219. echo "FAILED"
  220. purge "$WORK_DIR"
  221. exit 1
  222. fi
  223. purge "$WORK_DIR"
  224. }
  225. (__init__ "$@" && main "$@")
  226. rv=$?
  227. purge "$WORK_DIR"
  228. exit "$rv"