-
Notifications
You must be signed in to change notification settings - Fork 21
/
test.setup.sh
83 lines (70 loc) · 2.55 KB
/
test.setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash
# Shell script to start the database and app services before running the tests.
## color codes
RED='\033[1;31m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
CYAN='\033[1;36m'
PLAIN='\033[0m'
## variables
COUCHDB_CONTAINER="couchdb3"
HOST=localhost
USER='admin'
PASSWORD='pass'
PORT=5984
DATABASE='testdb'
SCRIPT='./test.js'
if [ "$1" ]; then
HOST=$1
fi
if [ "$2" ]; then
PORT=$2
fi
if [ "$3" ]; then
USER=$3
fi
if [ "$4" ]; then
PASSWORD=$4
fi
if [ "$5" ]; then
DATABASE=$5
fi
## check if docker exists
printf "\n${RED}>> Checking for docker${PLAIN} ${GREEN}...${PLAIN}"
docker -v > /dev/null 2>&1
DOCKER_EXISTS=$?
if [ "$DOCKER_EXISTS" -ne 0 ]; then
printf "\n\n${CYAN}Status: ${PLAIN}${RED}Docker not found. Terminating setup.${PLAIN}\n\n"
exit 1
fi
printf "\n${CYAN}Found docker. Moving on with the setup.${PLAIN}\n"
## cleaning up previous builds
printf "\n${RED}>> Finding old builds and cleaning up${PLAIN} ${GREEN}...${PLAIN}"
docker rm -f $COUCHDB_CONTAINER > /dev/null 2>&1
printf "\n${CYAN}Clean up complete.${PLAIN}\n"
## https://hub.docker.com/r/ibmcom/couchdb3
DOCKER_IMAGE=ibmcom/couchdb3:latest
## pull latest couchdb3 image
printf "\n${RED}>> Pulling ${DOCKER_IMAGE} image${PLAIN} ${GREEN}...${PLAIN}"
docker pull ${DOCKER_IMAGE} > /dev/null 2>&1
printf "\n${CYAN}Image successfully built.${PLAIN}\n"
## run the container
## docker run -p 5984:5984 -d --name couchdb3 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=pass ibmcom/couchdb3:latest
printf "\n${RED}>> Starting the couchdb container${PLAIN} ${GREEN}...${PLAIN}"
CONTAINER_STATUS=$(docker run -p $PORT:5984 --name $COUCHDB_CONTAINER -e COUCHDB_USER=$USER -e COUCHDB_PASSWORD=$PASSWORD -d ${DOCKER_IMAGE} 2>&1)
if [[ "$CONTAINER_STATUS" == *"Error"* ]]; then
printf "\n\n${CYAN}Status: ${PLAIN}${RED}Error starting container. Terminating setup.${PLAIN}\n\n"
exit 1
fi
printf "\n${CYAN}Container is up and running.${PLAIN}\n"
CLOUDANT_URL="http://${CLOUDANT_USER}:${CLOUDANT_PASSWORD}@${CLOUDANT_HOST}:${CLOUDANT_PORT}";
## set env variables for creating database
printf "\n${RED}>> Setting env variables to create database${PLAIN} ${GREEN}...${PLAIN}"
export CLOUDANT_HOST=$HOST
export CLOUDANT_PORT=$PORT
export CLOUDANT_USERNAME=$USER
export CLOUDANT_PASSWORD=$PASSWORD
export CLOUDANT_DATABASE=$DATABASE
printf "\n${CYAN}Env variables set.${PLAIN}\n"
printf "\n${RED}>>Creating databases${PLAIN} ${GREEN}...${PLAIN}\n"
node $SCRIPT