Update DFC tests to use file based conifg
[integration.git] / test / mocks / datafilecollector-testharness / simulator-group / simulators-start.sh
1 #!/bin/bash
2 #
3 # Modifications copyright (C) 2021 Nokia. All rights reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 set -x
12 server_check() {
13         for i in {1..10}; do
14                 res=$(curl  -s -o /dev/null -w "%{http_code}" localhost:$2$3)
15                 if [ $res -gt 199 ] && [ $res -lt 300 ]; then
16                         echo "Simulator " $1 " on localhost:$2$3 responded ok"
17                         return
18                 fi
19                 sleep 1
20         done
21         echo "Simulator " $1 " on localhost:$2$3 - no response"
22 }
23
24 http_https_basic_server_check() {
25         for i in {1..10}; do
26                 res=$(curl $4 -s -o /dev/null -w "%{http_code}" "$3"://"$BASIC_AUTH_LOGIN":"$BASIC_AUTH_PASSWORD"@localhost:"$2")
27                 if [ $res -gt 199 ] && [ $res -lt 300 ]; then
28                         echo "Simulator " "$1" " on localhost: ""$2"" responded ok"
29                         return
30                 fi
31                 sleep 1
32         done
33         echo "Simulator " "$1" " on localhost:""$2"" - no response"
34 }
35
36 http_https_server_check() {
37         for i in {1..10}; do
38                 res=$(curl $4 -s -o /dev/null -w "%{http_code}" $3://localhost:$2)
39                 if [ $res -gt 199 ] && [ $res -lt 300 ]; then
40                         echo "Simulator " $1 " on localhost:$2 responded ok"
41                         return
42                 fi
43                 sleep 1
44         done
45         echo "Simulator " $1 " on localhost:$2 - no response"
46 }
47
48 http_https_jwt_server_check() {
49         for i in {1..10}; do
50                 res=$(curl $4 -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZW1vIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjk5OTk5OTk5OTksIm5iZiI6MTUxNjIzOTAyMH0.vyktOJyCMVvJXEfImBuZCTaEifrvH0kXeAPpnHakffA' -s -o /dev/null -w "%{http_code}" $3://localhost:$2)
51                 if [ $res -gt 199 ] && [ $res -lt 300 ]; then
52                         echo "Simulator " $1 " on localhost:$2 responded ok"
53                         return
54                 fi
55                 sleep 1
56         done
57         echo "Simulator " $1 " on localhost:$2 - no response"
58 }
59
60 server_check_https() {
61         for i in {1..10}; do
62                 res=$(curl  -k -s -o /dev/null -w "%{http_code}" https://localhost:$2$3)
63                 if [ $res -gt 199 ] && [ $res -lt 300 ]; then
64                         echo "Simulator " $1 " on https://localhost:$2$3 responded ok"
65                         return
66                 fi
67                 sleep 1
68         done
69         echo "Simulator " $1 " on https://localhost:$2$3 - no response"
70 }
71
72 ftpes_server_check() {
73         for i in {1..10}; do
74                 res=$(curl --silent --max-time 3 ftp://localhost:$2 --ftp-ssl -v -k 2>&1 | grep vsFTPd)
75                 if ! [ -z "$res" ]; then
76                         echo "Simulator " $1 " on localhost:$2 responded ok"
77                         return
78                 fi
79                 sleep 1
80         done
81         echo "Simulator " $1 " on localhost:$2 - no response"
82 }
83
84 sftp_server_check() {
85         for i in {1..10}; do
86                 res=$(curl --silent --max-time 3 localhost:$2 2>&1 | grep OpenSSH)
87                 if ! [ -z "$res" ]; then
88                         echo "Simulator " $1 " on localhost:"$2" responded ok"
89                         return
90                 fi
91                 sleep 1
92         done
93         echo "Simulator " $1 " on localhost:"$2" - no response"
94 }
95
96 # Starts all simulators with the test settings
97 # Intended for CSIT test and auto test. For manual start, use the docker-compose-setup.sh
98
99 DOCKER_SIM_NWNAME="dfcnet"
100 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
101 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
102
103 if [ -z "$SIM_GROUP" ]
104  then
105  export SIM_GROUP="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
106 fi
107
108 if [ -z "$NUM_FTP_SERVERS" ]
109  then
110  export NUM_FTP_SERVERS=1
111 fi
112
113 if [ -z "$NUM_HTTP_SERVERS" ]
114  then
115  export NUM_HTTP_SERVERS=1
116 fi
117
118 docker-compose -f docker-compose-template.yml config > docker-compose.yml
119
120 docker-compose up -d
121
122 sudo chown $(id -u):$(id -g) dfc_configs
123
124 declare -a SFTP_SIM
125 declare -a FTPES_SIM
126 declare -a HTTP_SIM
127
128 DR_SIM="$(docker ps -q --filter='name=dfc_dr-sim')"
129 DR_RD_SIM="$(docker ps -q --filter='name=dfc_dr-redir-sim')"
130 MR_SIM="$(docker ps -q --filter='name=dfc_mr-sim')"
131 SFTP_SIM[0]="$(docker ps -q --filter='name=dfc_sftp-server0')"
132 SFTP_SIM[1]="$(docker ps -q --filter='name=dfc_sftp-server1')"
133 SFTP_SIM[2]="$(docker ps -q --filter='name=dfc_sftp-server2')"
134 SFTP_SIM[3]="$(docker ps -q --filter='name=dfc_sftp-server3')"
135 SFTP_SIM[4]="$(docker ps -q --filter='name=dfc_sftp-server4')"
136 FTPES_SIM[0]="$(docker ps -q --filter='name=dfc_ftpes-server-vsftpd0')"
137 FTPES_SIM[1]="$(docker ps -q --filter='name=dfc_ftpes-server-vsftpd1')"
138 FTPES_SIM[2]="$(docker ps -q --filter='name=dfc_ftpes-server-vsftpd2')"
139 FTPES_SIM[3]="$(docker ps -q --filter='name=dfc_ftpes-server-vsftpd3')"
140 FTPES_SIM[4]="$(docker ps -q --filter='name=dfc_ftpes-server-vsftpd4')"
141 HTTP_SIM[0]="$(docker ps -q --filter='name=dfc_http-https-server0')"
142 HTTP_SIM[1]="$(docker ps -q --filter='name=dfc_http-https-server1')"
143 HTTP_SIM[2]="$(docker ps -q --filter='name=dfc_http-https-server2')"
144 HTTP_SIM[3]="$(docker ps -q --filter='name=dfc_http-https-server3')"
145 HTTP_SIM[4]="$(docker ps -q --filter='name=dfc_http-https-server4')"
146
147 #Wait for initialization of docker containers for all simulators
148 for i in {1..10}; do
149 if [ $(docker inspect --format '{{ .State.Running }}' $DR_SIM) ] && \
150 [ $(docker inspect --format '{{ .State.Running }}' $DR_RD_SIM) ] && \
151 [ $(docker inspect --format '{{ .State.Running }}' $MR_SIM) ] && \
152 [ $(docker inspect --format '{{ .State.Running }}' ${SFTP_SIM[0]}) ] && \
153 [ $(docker inspect --format '{{ .State.Running }}' ${SFTP_SIM[1]}) ] && \
154 [ $(docker inspect --format '{{ .State.Running }}' ${SFTP_SIM[2]}) ] && \
155 [ $(docker inspect --format '{{ .State.Running }}' ${SFTP_SIM[3]}) ] && \
156 [ $(docker inspect --format '{{ .State.Running }}' ${SFTP_SIM[4]}) ] && \
157 [ $(docker inspect --format '{{ .State.Running }}' ${FTPES_SIM[0]}) ] && \
158 [ $(docker inspect --format '{{ .State.Running }}' ${FTPES_SIM[1]}) ] && \
159 [ $(docker inspect --format '{{ .State.Running }}' ${FTPES_SIM[2]}) ] && \
160 [ $(docker inspect --format '{{ .State.Running }}' ${FTPES_SIM[3]}) ] && \
161 [ $(docker inspect --format '{{ .State.Running }}' ${FTPES_SIM[4]}) ] && \
162 [ $(docker inspect --format '{{ .State.Running }}' ${HTTP_SIM[0]}) ] && \
163 [ $(docker inspect --format '{{ .State.Running }}' ${HTTP_SIM[1]}) ] && \
164 [ $(docker inspect --format '{{ .State.Running }}' ${HTTP_SIM[2]}) ] && \
165 [ $(docker inspect --format '{{ .State.Running }}' ${HTTP_SIM[3]}) ] && \
166 [ $(docker inspect --format '{{ .State.Running }}' ${HTTP_SIM[4]}) ]
167  then
168    echo "All simulators Started"
169    break
170  else
171    echo sleep $i
172    sleep $i
173  fi
174 done
175
176 if [ -z "$BASIC_AUTH_LOGIN" ]
177  then
178  BASIC_AUTH_LOGIN=demo
179 fi
180
181 if [ -z "$BASIC_AUTH_PASSWORD" ]
182  then
183  BASIC_AUTH_PASSWORD=demo123456!
184 fi
185
186 server_check      "DR sim       " 3906 "/"
187 server_check      "DR redir sim " 3908 "/"
188 server_check      "MR sim       " 2222 "/"
189 server_check_https "DR sim https      " 3907 "/"
190 server_check_https "DR redir sim https" 3909 "/"
191 server_check_https "MR sim https      " 2223 "/"
192 ftpes_server_check "FTPES server 0" 1032
193 ftpes_server_check "FTPES server 1" 1033
194 ftpes_server_check "FTPES server 2" 1034
195 ftpes_server_check "FTPES server 3" 1035
196 ftpes_server_check "FTPES server 4" 1036
197 sftp_server_check "SFTP server 0" 1022
198 sftp_server_check "SFTP server 1" 1023
199 sftp_server_check "SFTP server 2" 1024
200 sftp_server_check "SFTP server 3" 1025
201 sftp_server_check "SFTP server 4" 1026
202 http_https_basic_server_check "HTTP basic auth server 0" 81 http
203 http_https_basic_server_check "HTTP basic auth server 1" 82 http
204 http_https_basic_server_check "HTTP basic auth server 2" 83 http
205 http_https_basic_server_check "HTTP basic auth server 3" 84 http
206 http_https_basic_server_check "HTTP basic auth server 4" 85 http
207 http_https_jwt_server_check "HTTP JWT server 0" 32001 http
208 http_https_jwt_server_check "HTTP JWT server 1" 32002 http
209 http_https_jwt_server_check "HTTP JWT server 2" 32003 http
210 http_https_jwt_server_check "HTTP JWT server 3" 32004 http
211 http_https_jwt_server_check "HTTP JWT server 4" 32005 http
212 http_https_basic_server_check "HTTPS basic auth server 0" 444 https -k
213 http_https_basic_server_check "HTTPS basic auth server 1" 445 https -k
214 http_https_basic_server_check "HTTPS basic auth server 2" 446 https -k
215 http_https_basic_server_check "HTTPS basic auth server 3" 447 https -k
216 http_https_basic_server_check "HTTPS basic auth server 4" 448 https -k
217 http_https_server_check "HTTPS client certificate authentication server 0" 444 https "-k --cert ../certservice/generated-certs/apache-pem/keystore.pem --key ../certservice/generated-certs/apache-pem/key.pem"
218 http_https_server_check "HTTPS client certificate authentication server 1" 445 https "-k --cert ../certservice/generated-certs/apache-pem/keystore.pem --key ../certservice/generated-certs/apache-pem/key.pem"
219 http_https_server_check "HTTPS client certificate authentication server 2" 446 https "-k --cert ../certservice/generated-certs/apache-pem/keystore.pem --key ../certservice/generated-certs/apache-pem/key.pem"
220 http_https_server_check "HTTPS client certificate authentication server 3" 447 https "-k --cert ../certservice/generated-certs/apache-pem/keystore.pem --key ../certservice/generated-certs/apache-pem/key.pem"
221 http_https_server_check "HTTPS client certificate authentication server 4" 448 https "-k --cert ../certservice/generated-certs/apache-pem/keystore.pem --key ../certservice/generated-certs/apache-pem/key.pem"
222 http_https_server_check "HTTPS no auth server 0" 8081 https -k
223 http_https_server_check "HTTPS no auth server 1" 8082 https -k
224 http_https_server_check "HTTPS no auth server 2" 8083 https -k
225 http_https_server_check "HTTPS no auth server 3" 8084 https -k
226 http_https_server_check "HTTPS no auth server 4" 8085 https -k
227 http_https_jwt_server_check "HTTPS JWT server 0" 32101 https -k
228 http_https_jwt_server_check "HTTPS JWT server 1" 32102 https -k
229 http_https_jwt_server_check "HTTPS JWT server 2" 32103 https -k
230 http_https_jwt_server_check "HTTPS JWT server 3" 32104 https -k
231 http_https_jwt_server_check "HTTPS JWT server 4" 32105 https -k
232
233 echo ""
234
235 #Populate the ftp server with files
236 if [ -z "$NUM_FTPFILES" ]
237  then
238  NUM_FTPFILES=200
239 fi
240 if [ -z "$NUM_PNFS" ]
241  then
242  NUM_PNFS=1
243 fi
244 if [ -z "$FILE_SIZE" ]
245  then
246  FILE_SIZE="ALL"
247 fi
248 if [ -z "$FTP_TYPE" ]
249  then
250  FTP_TYPE="ALL"
251 fi
252 if [ -z "$FTP_FILE_PREFIXES" ]
253  then
254  FTP_FILE_PREFIXES="A"
255 fi
256
257
258
259 if [ $FTP_TYPE = "ALL" ] || [ $FTP_TYPE = "SFTP" ]; then
260         echo "Creating files for SFTP server, may take time...."
261         p=0
262         while [ $p -lt $NUM_FTP_SERVERS ]; do
263                 docker cp setup-ftp-files-for-image.sh ${SFTP_SIM[$p]}:/tmp/
264                 #Double slash needed for docker on win...
265                 docker exec -w //home/onap/ ${SFTP_SIM[$p]} //tmp/setup-ftp-files-for-image.sh $NUM_FTPFILES $NUM_PNFS $FILE_SIZE $FTP_FILE_PREFIXES $NUM_FTP_SERVERS $p #>/dev/null 2>&1
266                 let p=p+1
267         done
268 fi
269 if [ $FTP_TYPE = "ALL" ] || [ $FTP_TYPE = "FTPES" ]; then
270         echo "Creating files for FTPES server, may take time...."
271         p=0
272         while [ $p -lt $NUM_FTP_SERVERS ]; do
273                 docker cp setup-ftp-files-for-image.sh ${FTPES_SIM[$p]}:/tmp/setup-ftp-files-for-image.sh
274                 #Double slash needed for docker on win...
275                 docker exec -w //srv ${FTPES_SIM[$p]} //tmp/setup-ftp-files-for-image.sh $NUM_FTPFILES $NUM_PNFS $FILE_SIZE $FTP_FILE_PREFIXES $NUM_FTP_SERVERS $p #>/dev/null 2>&1
276                 let p=p+1
277         done
278 fi
279
280 #Populate the http server with files. Note some common variables with ftp files!
281 if [ -z "$NUM_HTTPFILES" ]
282  then
283  NUM_HTTPFILES=200
284 fi
285 if [ -z "$HTTP_TYPE" ]
286  then
287  HTTP_TYPE="ALL"
288 fi
289 if [ -z "$HTTP_FILE_PREFIXES" ]
290  then
291  HTTP_FILE_PREFIXES="A"
292 fi
293
294 if [ $HTTP_TYPE = "ALL" ] || [ $HTTP_TYPE = "HTTP" ] || [ $HTTP_TYPE = "HTTPS" ]; then
295         echo "Creating files for HTTP server, may take time...."
296         p=0
297         while [ $p -lt $NUM_HTTP_SERVERS ]; do
298                 docker cp setup-http-files-for-image.sh ${HTTP_SIM[$p]}:/tmp/setup-http-files-for-image.sh
299                 #Double slash needed for docker on win...
300                 docker exec -w //usr//local//apache2//htdocs ${HTTP_SIM[$p]} //tmp/setup-http-files-for-image.sh $NUM_HTTPFILES $NUM_PNFS $FILE_SIZE $HTTP_FILE_PREFIXES $NUM_HTTP_SERVERS $p #>/dev/null 2>&1
301                 let p=p+1
302         done
303 fi
304 echo "Done: All simulators started and configured"