|
2 | 2 |
|
3 | 3 | set -eof pipefail |
4 | 4 |
|
5 | | -TEST_ROOT=$(dirname "${BASH_SOURCE}")/ |
| 5 | +cleanup() { |
| 6 | + kill-containers "${MINIO_JOB}" "${PG_JOB}" |
| 7 | +} |
| 8 | +trap cleanup EXIT |
| 9 | + |
| 10 | +TEST_ROOT=$(dirname "${BASH_SOURCE[0]}")/ |
| 11 | +# shellcheck source=/dev/null |
6 | 12 | source "${TEST_ROOT}/test.sh" |
7 | 13 |
|
8 | 14 | # make sure we are in this dir |
9 | | -CURRENT_DIR=$(cd $(dirname $0); pwd) |
| 15 | +CURRENT_DIR=$(cd "$(dirname "$0")"; pwd) |
10 | 16 |
|
11 | 17 | create-postgres-creds |
12 | 18 |
|
13 | 19 | puts-step "creating fake minio credentials" |
14 | 20 |
|
15 | 21 | # create fake AWS credentials for minio admin credentials |
16 | | -mkdir -p $CURRENT_DIR/tmp/aws-admin |
| 22 | +mkdir -p "${CURRENT_DIR}"/tmp/aws-admin |
17 | 23 | # needs to be 20 characters long |
18 | | -echo "12345678901234567890" > $CURRENT_DIR/tmp/aws-admin/access-key-id |
| 24 | +echo "12345678901234567890" > "${CURRENT_DIR}"/tmp/aws-admin/access-key-id |
19 | 25 | # needs to be 40 characters long |
20 | | -echo "1234567890123456789012345678901234567890" > $CURRENT_DIR/tmp/aws-admin/access-secret-key |
| 26 | +echo "1234567890123456789012345678901234567890" > "${CURRENT_DIR}"/tmp/aws-admin/access-secret-key |
21 | 27 |
|
22 | 28 | # create fake AWS credentials for minio user credentials |
23 | | -mkdir -p $CURRENT_DIR/tmp/aws-user |
| 29 | +mkdir -p "${CURRENT_DIR}"/tmp/aws-user |
24 | 30 | # needs to be 20 characters long |
25 | | -echo "12345678901234567890" > $CURRENT_DIR/tmp/aws-user/accesskey |
26 | | -echo "12345678901234567890" > $CURRENT_DIR/tmp/aws-user/access-key-id |
| 31 | +echo "12345678901234567890" > "${CURRENT_DIR}"/tmp/aws-user/accesskey |
| 32 | +echo "12345678901234567890" > "${CURRENT_DIR}"/tmp/aws-user/access-key-id |
27 | 33 | # needs to be 40 characters long |
28 | | -echo "1234567890123456789012345678901234567890" > $CURRENT_DIR/tmp/aws-user/secretkey |
29 | | -echo "1234567890123456789012345678901234567890" > $CURRENT_DIR/tmp/aws-user/access-secret-key |
| 34 | +echo "1234567890123456789012345678901234567890" > "${CURRENT_DIR}"/tmp/aws-user/secretkey |
| 35 | +echo "1234567890123456789012345678901234567890" > "${CURRENT_DIR}"/tmp/aws-user/access-secret-key |
30 | 36 |
|
31 | 37 | puts-step "creating fake kubernetes service account token" |
32 | 38 |
|
33 | 39 | # create fake k8s serviceaccount token for minio to "discover" itself |
34 | | -mkdir -p $CURRENT_DIR/tmp/k8s |
35 | | -echo "token" > $CURRENT_DIR/tmp/k8s/token |
36 | | -echo "cert" > $CURRENT_DIR/tmp/k8s/ca.crt |
| 40 | +mkdir -p "${CURRENT_DIR}"/tmp/k8s |
| 41 | +echo "token" > "${CURRENT_DIR}"/tmp/k8s/token |
| 42 | +echo "cert" > "${CURRENT_DIR}"/tmp/k8s/ca.crt |
37 | 43 |
|
38 | | -# kill containers when this script exits or errors out |
39 | | -trap 'kill-container $MINIO_JOB' INT TERM |
40 | 44 | # boot minio |
41 | | -MINIO_JOB=$(docker run -dv $CURRENT_DIR/tmp/aws-admin:/var/run/secrets/deis/minio/admin -v $CURRENT_DIR/tmp/aws-user:/var/run/secrets/deis/minio/user -v $CURRENT_DIR/tmp/k8s:/var/run/secrets/kubernetes.io/serviceaccount quay.io/deisci/minio:canary boot server /home/minio/) |
| 45 | +MINIO_JOB=$(docker run -d \ |
| 46 | + -v "${CURRENT_DIR}"/tmp/aws-admin:/var/run/secrets/deis/minio/admin \ |
| 47 | + -v "${CURRENT_DIR}"/tmp/aws-user:/var/run/secrets/deis/minio/user \ |
| 48 | + -v "${CURRENT_DIR}"/tmp/k8s:/var/run/secrets/kubernetes.io/serviceaccount \ |
| 49 | + quay.io/deisci/minio:canary boot server /home/minio/) |
42 | 50 |
|
43 | 51 | # boot postgres, linking the minio container and setting DEIS_MINIO_SERVICE_HOST and DEIS_MINIO_SERVICE_PORT |
44 | | -PG_CMD="docker run -d --link $MINIO_JOB:minio -e PGCTLTIMEOUT=1200 -e BACKUP_FREQUENCY=1s -e DATABASE_STORAGE=minio -e DEIS_MINIO_SERVICE_HOST=minio -e DEIS_MINIO_SERVICE_PORT=9000 -v $CURRENT_DIR/tmp/creds:/var/run/secrets/deis/database/creds -v $CURRENT_DIR/tmp/aws-user:/var/run/secrets/deis/objectstore/creds $1" |
| 52 | +PG_CMD="docker run -d --link ${MINIO_JOB}:minio -e PGCTLTIMEOUT=1200 \ |
| 53 | + -e BACKUP_FREQUENCY=1s -e DATABASE_STORAGE=minio \ |
| 54 | + -e DEIS_MINIO_SERVICE_HOST=minio -e DEIS_MINIO_SERVICE_PORT=9000 \ |
| 55 | + -v ${CURRENT_DIR}/tmp/creds:/var/run/secrets/deis/database/creds \ |
| 56 | + -v ${CURRENT_DIR}/tmp/aws-user:/var/run/secrets/deis/objectstore/creds $1" |
45 | 57 |
|
46 | | -# kill containers when this script exits or errors out |
47 | | -trap 'kill-container $PG_JOB' INT TERM |
48 | | -start-postgres "$PG_CMD" |
| 58 | +start-postgres "${PG_CMD}" |
49 | 59 |
|
50 | 60 | # display logs for debugging purposes |
51 | 61 | puts-step "displaying minio logs" |
52 | | -docker logs $MINIO_JOB |
| 62 | +docker logs "${MINIO_JOB}" |
53 | 63 |
|
54 | | -check-postgres $PG_JOB |
| 64 | +check-postgres "${PG_JOB}" |
55 | 65 |
|
56 | 66 | # check if minio has the 5 backups |
57 | 67 | puts-step "checking if minio has 5 backups" |
58 | | -BACKUPS="$(docker exec $MINIO_JOB ls /home/minio/dbwal/basebackups_005/ | grep json)" |
59 | | -NUM_BACKUPS="$(docker exec $MINIO_JOB ls /home/minio/dbwal/basebackups_005/ | grep -c json)" |
| 68 | +BACKUPS="$(docker exec "${MINIO_JOB}" ls /home/minio/dbwal/basebackups_005/ | grep json)" |
| 69 | +NUM_BACKUPS="$(echo "${BACKUPS}" | wc -w)" |
60 | 70 | # NOTE (bacongobbler): the BACKUP_FREQUENCY is only 1 second, so we could technically be checking |
61 | 71 | # in the middle of a backup. Instead of failing, let's consider N+1 backups an acceptable case |
62 | | -if [[ ! "$NUM_BACKUPS" -eq "5" && ! "$NUM_BACKUPS" -eq "6" ]]; then |
| 72 | +if [[ ! "${NUM_BACKUPS}" -eq "5" && ! "${NUM_BACKUPS}" -eq "6" ]]; then |
63 | 73 | puts-error "did not find 5 or 6 base backups. 5 is the default, but 6 may exist if a backup is currently in progress (found $NUM_BACKUPS)" |
64 | | - puts-error "$BACKUPS" |
| 74 | + puts-error "${BACKUPS}" |
65 | 75 | exit 1 |
66 | 76 | fi |
67 | 77 |
|
68 | 78 | # kill off postgres, then reboot and see if it's running after recovering from backups |
69 | 79 | puts-step "shutting off postgres, then rebooting to test data recovery" |
70 | | -kill-container $PG_JOB |
| 80 | +kill-containers "${PG_JOB}" |
| 81 | + |
| 82 | +start-postgres "${PG_CMD}" |
71 | 83 |
|
72 | | -start-postgres "$PG_CMD" |
| 84 | +check-postgres "${PG_JOB}" |
73 | 85 |
|
74 | | -check-postgres $PG_JOB |
| 86 | +puts-step "tests PASSED!" |
| 87 | +exit 0 |
0 commit comments