Move CSIT to integration/csit repo
[integration/csit.git] / plans / portal / testsuite / setup.sh
1 #!/bin/bash
2 # Starts docker containers for ONAP Portal
3 # This version for Amsterdam/R1 of Portal, uses docker-compose.
4 # Temporarily maintained in portal/deliveries area;
5 # replicated from the ONAP demo/boot area due to release concerns.
6
7 # Start Xvfb
8 echo -e "Starting Xvfb on display ${DISPLAY} with res ${RES}"
9 Xvfb ${DISPLAY} -ac -screen 0 ${RES} +extension RANDR &
10 XVFBPID=$!
11 # Get pid of this spawned process to make sure we kill the correct process later
12
13 #Get current IP of VM
14 HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
15 export HOST_IP=${HOST_IP}
16
17
18
19 if ! ifconfig docker0; then
20 if ! ifconfig ens3; then
21 echo "Could not determine IP address"
22 exit 1
23 fi
24 export DOCKER_IP_IP=`ifconfig ens3 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
25 else
26 export DOCKER_IP=`ifconfig docker0 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
27 fi
28 echo $DOCKER_IP
29
30
31 # Pass any variables required by Robot test suites in ROBOT_VARIABLES
32 #ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v POLICY_IP:${POLICY_IP} -v DOCKER_IP:${DOCKER_IP}"
33 #export PORTAL_IP=${PORTAL_IP}
34 ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP}  -v DOCKER_IP:${DOCKER_IP}"
35 export DOCKER_IP=${DOCKER_IP}
36
37
38
39
40 # be verbose
41 set -x
42
43 # Establish environment variables
44 NEXUS_USERNAME=docker
45 NEXUS_PASSWD=docker
46 NEXUS_DOCKER_REPO=nexus3.onap.org:10003
47
48
49
50 CURR="$(pwd)"
51 git clone http://gerrit.onap.org/r/portal -b "master"
52
53 # Refresh configuration and scripts
54 cd portal
55 git pull
56 cd deliveries
57 rm .env
58 #rm docker-compose.yml
59 cp $CURR/.env .
60 #cp $CURR/docker-compose.yml .
61 #cd  properties_simpledemo/ECOMPPORTALAPP
62 #rm  system.properties
63 #cp  $CURR/system.properties .
64 #cd ../..
65 # Get image names used below from docker-compose environment file
66 source $CURR/.env
67 #source .env
68
69 # Make inter-app communication work in CSIT
70 export EXTRA_HOST_IP="-i ${HOST_IP}"
71 export EXTRA_HOST_NAME="-n portal.api.simpledemo.onap.org"
72
73
74 # Copy property files to new directory
75 mkdir -p $PROPS_DIR
76 cp -r properties_simpledemo/* $PROPS_DIR
77 # Also create logs directory
78 mkdir -p $LOGS_DIR
79
80
81 # Refresh images
82 docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
83 docker pull $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION
84 docker pull $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION
85 docker pull $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION
86 docker pull $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION
87 docker pull $ZK_IMG_NAME:$ZK_IMAGE_VERSION
88 docker pull $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION
89 docker pull $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION
90
91 # Tag them as expected by docker-compose file
92 docker tag $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
93 docker tag $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
94 docker tag $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION $SDK_IMG_NAME:$PORTAL_TAG
95 docker tag $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION $CDR_IMG_NAME:$PORTAL_TAG
96 docker tag $ZK_IMG_NAME:$ZK_IMAGE_VERSION $ZK_IMG_NAME:$PORTAL_TAG
97 docker tag $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
98 docker tag $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION $CLI_IMG_NAME:$PORTAL_TAG
99
100
101 # compose is not in /usr/bin
102 docker-compose down
103 docker-compose up -d
104
105 #${HOSTNAME}="portal.api.simpledemo.openecomp.org"
106 #echo "$HOST_IP ${HOSTNAME}" >> /etc/hosts
107
108 #echo "$HOST_IP portal.api.simpledemo.openecomp.org" >> /etc/hosts
109 #sudo sed -i "2i$HOST_IP  portal.api.simpledemo.openecomp.org"   /etc/hosts
110
111 #HOST="portal.api.simpledemo.openecomp.org"
112 #sudo sed -i "/$HOST/ s/.*/$HOST_IP\t$HOST/g" /etc/hosts
113
114 # insert/update hosts entry
115 ip_address=$HOST_IP
116 host_name="portal.api.simpledemo.onap.org"
117 # find existing instances in the host file and save the line numbers
118 matches_in_hosts="$(grep -n $host_name /etc/hosts | cut -f1 -d:)"
119 host_entry="${ip_address} ${host_name}"
120
121 echo "$host_entry"
122
123 if [ ! -z "$matches_in_hosts" ]
124 then
125 echo "Updating existing hosts entry."
126 # iterate over the line numbers on which matches were found
127 while read -r line_number; do
128 # replace the text of each line with the desired host entry
129 sudo sed -i '' "${line_number}s/.*/${host_entry} /" /etc/hosts
130 echo "${line_number}   ${host_entry}"
131 done <<< "$matches_in_hosts"
132 else
133 echo "Adding new hosts entry."
134 echo "$host_entry" | sudo tee -a /etc/hosts > /dev/null
135 fi
136
137
138
139 sleep 6m
140
141 # WAIT 5 minutes maximum and test every 5 seconds if Portal up using HealthCheck API
142 TIME_OUT=500
143 INTERVAL=20
144 TIME=0
145 while [ "$TIME" -lt "$TIME_OUT" ]; do
146   response=$(curl --write-out '%{http_code}' --silent --output /dev/null http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/portalApi/healthCheck); echo $response
147
148   if [ "$response" == "200" ]; then
149     echo Portal and its database well started in $TIME seconds
150     break;
151   fi
152
153   echo Sleep: $INTERVAL seconds before testing if Portal is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
154   sleep $INTERVAL
155   TIME=$(($TIME+$INTERVAL))
156 done
157
158 if [ "$TIME" -ge "$TIME_OUT" ]; then
159    echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests...
160 fi
161
162 #sleep 3m
163
164
165
166 #if [ "$TIME" -ge "$TIME_OUT" ]; then
167 #   echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests...
168 #fi
169
170
171
172
173
174 #Get current IP of VM
175 HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
176 export HOST_IP=${HOST_IP}
177
178 docker logs deliveries_portal-db_1
179 docker logs deliveries_portal-app_1
180 docker logs deliveries_portal-wms_1
181
182
183
184