master
sh 71 lines 1.93 KB
Raw
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 CB_HOST="${CB_HOST:-couchbase}"
5 CB_ADMIN="${CB_ADMIN:-Administrator}"
6 CB_PASS="${CB_PASS:-password}"
7
8 cb_ready=0
9 for i in $(seq 1 60); do
10 code="$(curl -s -o /dev/null -w '%{http_code}' "http://${CB_HOST}:8091/pools" || true)"
11 if [ "$code" = "200" ] || [ "$code" = "401" ]; then
12 cb_ready=1
13 break
14 fi
15 sleep 2
16 done
17
18 if [ "$cb_ready" -ne 1 ]; then
19 echo "Couchbase API not ready after 120s" >&2
20 exit 1
21 fi
22
23 cb_initialized_code="$(curl -s -o /dev/null -w '%{http_code}' "http://${CB_HOST}:8091/pools/default" -u "${CB_ADMIN}:${CB_PASS}" || true)"
24 if [ "$cb_initialized_code" != "200" ]; then
25 /opt/couchbase/bin/couchbase-cli cluster-init -c "${CB_HOST}:8091" \
26 --cluster-username "${CB_ADMIN}" \
27 --cluster-password "${CB_PASS}" \
28 --services data,index,query \
29 --cluster-ramsize 256 \
30 --cluster-index-ramsize 256 || true
31
32 /opt/couchbase/bin/couchbase-cli bucket-create -c "${CB_HOST}:8091" \
33 -u "${CB_ADMIN}" -p "${CB_PASS}" \
34 --bucket default \
35 --bucket-type couchbase \
36 --bucket-ramsize 256 || true
37 fi
38
39 query_ready=0
40 for i in $(seq 1 60); do
41 if curl -fsS "http://${CB_HOST}:8093/query/service" -u "${CB_ADMIN}:${CB_PASS}" -d "statement=SELECT 1" > /dev/null; then
42 query_ready=1
43 break
44 fi
45 sleep 2
46 done
47
48 if [ "$query_ready" -ne 1 ]; then
49 echo "Couchbase query service not ready after 120s" >&2
50 exit 1
51 fi
52
53 run_query() {
54 local stmt="$1"
55 local i
56 for i in $(seq 1 30); do
57 if curl -fsS -u "${CB_ADMIN}:${CB_PASS}" "http://${CB_HOST}:8093/query/service" \
58 --data-urlencode "statement=${stmt}" > /dev/null; then
59 return 0
60 fi
61 sleep 2
62 done
63 return 1
64 }
65
66 run_query "CREATE PRIMARY INDEX ON \`default\`" || true
67
68 run_query "INSERT INTO \`default\` (KEY, VALUE) VALUES (\"k1\", {\"type\":\"t\",\"v\":1})"
69 run_query "INSERT INTO \`default\` (KEY, VALUE) VALUES (\"k2\", {\"type\":\"t\",\"v\":2})"
70
71 run_query "SELECT * FROM \`default\` WHERE type = \"t\""