|
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