3 . ../common/test_env.sh
5 echo "Test case started as: ${BASH_SOURCE[$i+1]} "$1 $2 $3
6 echo "Numbers of ric simulator started" $2
8 # This is a script that contains all the functions needed for auto test
9 # Arg: local | remote (1, 2, 3, 4....)
11 STARTED_POLICY_AGENT="" #Policy agent app names added to this var to keep track of started container in the script
13 IMAGE_TAG="1.0.0-SNAPSHOT"
14 IMAGE_TAG_REMOTE="latest"
18 if [ $# -lt 1 ] || [ $# -gt 4 ]; then
19 echo "Expected arg: local | remote and numbers of the rics and SDNC "
21 elif [ $1 == "local" ]; then
22 if [ -z $POLICY_AGENT_LOCAL_IMAGE ]; then
23 echo "POLICY_AGENT_LOCAL_IMAGE not set in test_env"
26 POLICY_AGENT_IMAGE=$POLICY_AGENT_LOCAL_IMAGE":"$IMAGE_TAG
27 elif [ $1 == "remote" ]; then
28 if [ -z $POLICY_AGENT_REMOTE_IMAGE ]; then
29 echo "POLICY_AGENT_REMOTE_IMAGE not set in test_env"
32 POLICY_AGENT_IMAGE=$POLICY_AGENT_REMOTE_IMAGE":"$IMAGE_TAG_REMOTE
35 # Set a description string for the test case
36 if [ -z "$TC_ONELINE_DESCR" ]; then
37 TC_ONELINE_DESCR="<no-description>"
38 echo "No test case description found, TC_ONELINE_DESCR should be set on in the test script , using "$TC_ONELINE_DESCR
41 ATC=$(basename "${BASH_SOURCE[$i+1]}" .sh)
44 # Create the logs dir if not already created in the current dir
45 if [ ! -d "logs" ]; then
51 mkdir -p $TESTLOGS/$ATC
53 TCLOG=$TESTLOGS/$ATC/TC.log
54 exec &> >(tee ${TCLOG})
56 #Variables for counting tests as well as passed and failed tests
62 echo "-------------------------------------------------------------------------------------------------"
63 echo "----------------------------------- Test case: "$ATC
64 echo "----------------------------------- Started: "$(date)
65 echo "-------------------------------------------------------------------------------------------------"
66 echo "-- Description: "$TC_ONELINE_DESCR
67 echo "-------------------------------------------------------------------------------------------------"
68 echo "----------------------------------- Test case setup -----------------------------------"
71 if [ -z "$SIM_GROUP" ]; then
72 SIM_GROUP=$PWD/../simulator-group
73 if [ ! -d $SIM_GROUP ]; then
74 echo "Trying to set env var SIM_GROUP to dir 'simulator-group' in the integration repo, but failed."
75 echo "Please set the SIM_GROUP manually in the test_env.sh"
78 echo "SIM_GROUP auto set to: " $SIM_GROUP
80 elif [ $SIM_GROUP = *simulator_group ]; then
81 echo "Env var SIM_GROUP does not seem to point to dir 'simulator-group' in the integration repo, check test_env.sh"
87 if [ $1 != "manual-container" ] && [ $1 != "manual-app" ]; then
88 #echo -e "Policy agent image tag set to: \033[1m" $IMAGE_TAG"\033[0m"
89 echo "Configured image for policy agent app(s) (${1}): "$POLICY_AGENT_IMAGE
90 tmp_im=$(docker images ${POLICY_AGENT_IMAGE} | grep -v REPOSITORY)
92 if [ $1 == "local" ]; then
93 if [ -z "$tmp_im" ]; then
94 echo "Local image (non nexus) "$POLICY_AGENT_IMAGE" does not exist in local registry, need to be built"
97 echo -e "Policy agent local image: \033[1m"$tmp_im"\033[0m"
98 echo "If the policy agent image seem outdated, rebuild the image and run the test again."
100 elif [ $1 == "remote" ]; then
101 if [ -z "$tmp_im" ]; then
102 echo "Pulling policy agent image from nexus: "$POLICY_AGENT_IMAGE
103 docker pull $POLICY_AGENT_IMAGE > /dev/null
104 tmp_im=$(docker images ${POLICY_AGENT_IMAGE} | grep -v REPOSITORY)
105 if [ -z "$tmp_im" ]; then
106 echo "Image could not be pulled"
109 echo -e "Policy Agent image: \033[1m"$tmp_im"\033[0m"
111 echo -e "Policy Agent image: \033[1m"$tmp_im"\033[0m"
112 echo "!! If the Policy agent image seem outdated, consider removing it from your docker registry and run the test again."
119 echo "Building images for the simulators"
123 docker build -t ric-simulator:latest . &> /dev/null
128 echo "Local registry images for simulators:"
129 echo "Consul: " $(docker images | grep consul)
130 echo "CBS: " $(docker images | grep platform.configbinding.app)
131 echo "RIC: " $(docker images | grep ric-simulator)
139 echo "Configuring consul for " $appname " from " $1
140 curl -s http://127.0.0.1:${CONSUL_PORT}/v1/kv/${appname}?dc=dc1 -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'X-Requested-With: XMLHttpRequest' --data-binary "@"$1 >/dev/null
144 consul_config_app() {
152 start_ric_simulator() {
154 DOCKER_SIM_NWNAME="nonrtric-docker-net"
155 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
156 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
158 echo "start ric simulator"
163 docker-compose up --scale ric-simulator=$RIC_NUMBER -d
171 DOCKER_SIM_NWNAME="nonrtric-docker-net"
172 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
173 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
175 echo "start dashboard"
188 if [ $SDNC == "sdnc" ]; then
189 DOCKER_SIM_NWNAME="nonrtric-docker-net"
190 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
191 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
198 docker-compose up -d a1-controller
205 prepare_consul_config() {
206 echo "prepare consul config"
211 python3 cleanConsul.py
212 python3 prepareConsul.py
221 # Start all simulators in the simulator group
224 echo "Starting all simulators"
228 $SIM_GROUP/simulators-start.sh
236 echo "Stopping all containers, policy agent app(s) and simulators with name prefix 'policy_agent'"
237 docker stop $(docker ps -q --filter name=/policy-agent) &> /dev/null
238 echo "Removing all containers, policy agent app and simulators with name prefix 'policy_agent'"
239 docker rm $(docker ps -a -q --filter name=/policy-agent) &> /dev/null
240 echo "Stopping all containers, policy agent app(s) and simulators with name prefix 'ric-simulator'"
241 docker stop $(docker ps -q --filter name=ric-simulator) &> /dev/null
242 echo "Removing all containers, policy agent app and simulators with name prefix 'ric-simulator'"
243 docker rm $(docker ps -a -q --filter name=ric-simulator) &> /dev/null
244 echo "Removing all containers, policy agent app and simulators with name prefix 'dashboard'"
245 docker rm $(docker ps -a -q --filter name=dashboard) &> /dev/null
246 echo "Removing all containers, policy agent app and simulators with name prefix 'a1-controller'"
247 docker rm $(docker ps -a -q --filter name=a1-controller) &> /dev/null
248 echo "Removing all containers, policy agent app and simulators with name prefix 'sdnc_db_container'"
249 docker rm $(docker ps -a -q --filter name=sdnc_db_container) &> /dev/null
250 echo "Removing all containers, policy agent app and simulators with name prefix 'cbs'"
251 docker rm $(docker ps -a -q --filter name=polman_cbs) &> /dev/null
252 echo "Removing all containers, policy agent app and simulators with name prefix 'consul'"
253 docker rm $(docker ps -a -q --filter name=polman_consul) &> /dev/null
254 echo "Removing unused docker networks with substring 'policy agent' in network name"
255 docker network rm $(docker network ls -q --filter name=nonrtric)
259 start_policy_agent() {
263 if [ $START_ARG == "local" ] || [ $START_ARG == "remote" ]; then
264 __start_policy_agent_image $appname
268 __start_policy_agent_image() {
271 localport=$POLICY_AGENT_PORT
273 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
275 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
277 echo "Starting policy agent: " $appname " with ports mapped to " $localport " in docker network "$DOCKER_SIM_NWNAME
278 docker run -d -p $localport":8081" --network=$DOCKER_SIM_NWNAME -e CONSUL_HOST=$CONSUL_HOST -e CONSUL_PORT=$CONSUL_PORT -e CONFIG_BINDING_SERVICE=$CONFIG_BINDING_SERVICE -e HOSTNAME=$appname --name $appname $POLICY_AGENT_IMAGE
279 #docker run -d -p 8081:8081 --network=nonrtric-docker-net -e CONSUL_HOST=CONSUL_HOST=$CONSUL_HOST -e CONSUL_PORT=$CONSUL_PORT -e CONFIG_BINDING_SERVICE=$CONFIG_BINDING_SERVICE -e HOSTNAME=policy-agent
284 if [ $(docker inspect --format '{{ .State.Running }}' $appname) ]
286 echo " Image: $(docker inspect --format '{{ .Config.Image }}' ${appname})"
287 echo "Policy Agent container ${appname} running"
294 if ! [ $pa_started ]; then
295 echo "Policy Agent container ${appname} could not be started"
300 echo "Waiting for Policy Agent ${appname} service status..."
302 result="$(__do_curl http://127.0.0.1:${localport}/status)"
303 if [ $? -eq 0 ]; then
304 echo "Policy Agent ${appname} responds to service status: " $result
305 echo "Policy Agent is alive."
313 if [ "$pa_st" = "false" ]; then
314 echo "Policy Agent ${appname} did not respond to service status"
319 check_policy_agent_logs() {
322 tmp=$(docker ps | grep $appname)
323 if ! [ -z "$tmp" ]; then #Only check logs for running policy agent apps
324 __check_policy_agent_log $appname
329 __check_policy_agent_log() {
330 echo "Checking $1 log $POLICY_AGENT_LOGPATH for WARNINGs and ERRORs"
331 foundentries=$(docker exec -it $1 grep WARN /var/log/policy-agent/application.log | wc -l)
333 echo " Problem to search $1 log $POLICY_AGENT_LOGPATH"
335 if [ $foundentries -eq 0 ]; then
336 echo " No WARN entries found in $1 log $POLICY_AGENT_LOGPATH"
338 echo -e " Found \033[1m"$foundentries"\033[0m WARN entries in $1 log $POLICY_AGENT_LOGPATH"
341 foundentries=$(docker exec -it $1 grep ERR $POLICY_AGENT_LOGPATH | wc -l)
343 echo " Problem to search $1 log $POLICY_AGENT_LOGPATH"
345 if [ $foundentries -eq 0 ]; then
346 echo " No ERR entries found in $1 log $POLICY_AGENT_LOGPATH"
348 echo -e " Found \033[1m"$foundentries"\033[0m ERR entries in $1 log $POLICY_AGENT_LOGPATH"
355 __print_err "need one arg, <file-prefix>"
358 echo "Storing all container logs and policy agent app log using prefix: "$1
360 docker logs polman_consul > $TESTLOGS/$ATC/$1_consul.log 2>&1
361 docker logs polman_cbs > $TESTLOGS/$ATC/$1_cbs.log 2>&1
365 res=$(curl -skw "%{http_code}" $1)
366 http_code="${res:${#res}-3}"
367 if [ ${#res} -eq 3 ]; then
368 echo "<no-response-from-server>"
371 if [ $http_code -lt 200 ] && [ $http_code -gt 299]; then
372 echo "<not found, resp:${http_code}>"
375 if [ $# -eq 2 ]; then
376 echo "${res:0:${#res}-3}" | xargs
378 echo "${res:0:${#res}-3}"