3 . ../common/test_env.sh
5 echo "Test case started as: ${BASH_SOURCE[$i+1]} "$1 $2
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"
17 if [ $# -lt 1 ] || [ $# -gt 2 ]; then
18 echo "Expected arg: local | remote and numbers of the rics "
20 elif [ $1 == "local" ]; then
21 if [ -z $POLICY_AGENT_LOCAL_IMAGE ]; then
22 echo "POLICY_AGENT_LOCAL_IMAGE not set in test_env"
25 POLICY_AGENT_IMAGE=$POLICY_AGENT_LOCAL_IMAGE":"$IMAGE_TAG
26 elif [ $1 == "remote" ]; then
27 if [ -z $POLICY_AGENT_REMOTE_IMAGE ]; then
28 echo "POLICY_AGENT_REMOTE_IMAGE not set in test_env"
31 POLICY_AGENT_IMAGE=$POLICY_AGENT_REMOTE_IMAGE":"$IMAGE_TAG_REMOTE
34 # Set a description string for the test case
35 if [ -z "$TC_ONELINE_DESCR" ]; then
36 TC_ONELINE_DESCR="<no-description>"
37 echo "No test case description found, TC_ONELINE_DESCR should be set on in the test script , using "$TC_ONELINE_DESCR
40 ATC=$(basename "${BASH_SOURCE[$i+1]}" .sh)
43 # Create the logs dir if not already created in the current dir
44 if [ ! -d "logs" ]; then
50 mkdir -p $TESTLOGS/$ATC
52 TCLOG=$TESTLOGS/$ATC/TC.log
53 exec &> >(tee ${TCLOG})
55 #Variables for counting tests as well as passed and failed tests
61 echo "-------------------------------------------------------------------------------------------------"
62 echo "----------------------------------- Test case: "$ATC
63 echo "----------------------------------- Started: "$(date)
64 echo "-------------------------------------------------------------------------------------------------"
65 echo "-- Description: "$TC_ONELINE_DESCR
66 echo "-------------------------------------------------------------------------------------------------"
67 echo "----------------------------------- Test case setup -----------------------------------"
70 if [ -z "$SIM_GROUP" ]; then
71 SIM_GROUP=$PWD/../simulator-group
72 if [ ! -d $SIM_GROUP ]; then
73 echo "Trying to set env var SIM_GROUP to dir 'simulator-group' in the integration repo, but failed."
74 echo "Please set the SIM_GROUP manually in the test_env.sh"
77 echo "SIM_GROUP auto set to: " $SIM_GROUP
79 elif [ $SIM_GROUP = *simulator_group ]; then
80 echo "Env var SIM_GROUP does not seem to point to dir 'simulator-group' in the integration repo, check test_env.sh"
86 if [ $1 != "manual-container" ] && [ $1 != "manual-app" ]; then
87 #echo -e "Policy agent image tag set to: \033[1m" $IMAGE_TAG"\033[0m"
88 echo "Configured image for policy agent app(s) (${1}): "$POLICY_AGENT_IMAGE
89 tmp_im=$(docker images ${POLICY_AGENT_IMAGE} | grep -v REPOSITORY)
91 if [ $1 == "local" ]; then
92 if [ -z "$tmp_im" ]; then
93 echo "Local image (non nexus) "$POLICY_AGENT_IMAGE" does not exist in local registry, need to be built"
96 echo -e "Policy agent local image: \033[1m"$tmp_im"\033[0m"
97 echo "If the policy agent image seem outdated, rebuild the image and run the test again."
99 elif [ $1 == "remote" ]; then
100 if [ -z "$tmp_im" ]; then
101 echo "Pulling policy agent image from nexus: "$POLICY_AGENT_IMAGE
102 docker pull $POLICY_AGENT_IMAGE > /dev/null
103 tmp_im=$(docker images ${POLICY_AGENT_IMAGE} | grep -v REPOSITORY)
104 if [ -z "$tmp_im" ]; then
105 echo "Image could not be pulled"
108 echo -e "Policy Agent image: \033[1m"$tmp_im"\033[0m"
110 echo -e "Policy Agent image: \033[1m"$tmp_im"\033[0m"
111 echo "!! If the Policy agent image seem outdated, consider removing it from your docker registry and run the test again."
118 echo "Building images for the simulators"
122 docker build -t ric-simulator:latest . &> /dev/null
127 echo "Local registry images for simulators:"
128 echo "Consul: " $(docker images | grep consul)
129 echo "CBS: " $(docker images | grep platform.configbinding.app)
130 echo "RIC: " $(docker images | grep ric-simulator)
138 echo "Configuring consul for " $appname " from " $1
139 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
143 consul_config_app() {
151 start_ric_simulator() {
153 DOCKER_SIM_NWNAME="nonrtric-docker-net"
154 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
155 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
157 echo "start ric simulator"
162 docker-compose up --scale ric-simulator=$RIC_NUMBER -d
168 prepare_consul_config() {
169 echo "prepare consul config"
174 python3 cleanConsul.py
175 python3 prepareConsul.py
184 # Start all simulators in the simulator group
187 echo "Starting all simulators"
191 $SIM_GROUP/simulators-start.sh
197 echo "Stopping all containers, policy agent app(s) and simulators with name prefix 'policy_agent'"
198 docker stop $(docker ps -q --filter name=/policy-agent) &> /dev/null
199 echo "Removing all containers, policy agent app and simulators with name prefix 'policy_agent'"
200 docker rm $(docker ps -a -q --filter name=/policy-agent) &> /dev/null
201 echo "Stopping all containers, policy agent app(s) and simulators with name prefix 'ric-simulator'"
202 docker stop $(docker ps -q --filter name=ric-simulator) &> /dev/null
203 echo "Removing all containers, policy agent app and simulators with name prefix 'ric-simulator'"
204 docker rm $(docker ps -a -q --filter name=ric-simulator) &> /dev/null
205 echo "Removing unused docker networks with substring 'policy agent' in network name"
206 docker network rm $(docker network ls -q --filter name=nonrtric)
210 start_policy_agent() {
214 if [ $START_ARG == "local" ] || [ $START_ARG == "remote" ]; then
215 __start_policy_agent_image $appname
219 __start_policy_agent_image() {
222 localport=$POLICY_AGENT_PORT
224 echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
226 docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
228 echo "Starting policy agent: " $appname " with ports mapped to " $localport " in docker network "$DOCKER_SIM_NWNAME
229 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
230 #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
235 if [ $(docker inspect --format '{{ .State.Running }}' $appname) ]
237 echo " Image: $(docker inspect --format '{{ .Config.Image }}' ${appname})"
238 echo "Policy Agent container ${appname} running"
245 if ! [ $pa_started ]; then
246 echo "Policy Agent container ${appname} could not be started"
251 echo "Waiting for Policy Agent ${appname} service status..."
253 result="$(__do_curl http://127.0.0.1:${localport}/status)"
254 if [ $? -eq 0 ]; then
255 echo "Policy Agent ${appname} responds to service status: " $result
256 echo "Policy Agent is alive."
264 if [ "$pa_st" = "false" ]; then
265 echo "Policy Agent ${appname} did not respond to service status"
270 check_policy_agent_logs() {
273 tmp=$(docker ps | grep $appname)
274 if ! [ -z "$tmp" ]; then #Only check logs for running policy agent apps
275 __check_policy_agent_log $appname
280 __check_policy_agent_log() {
281 echo "Checking $1 log $POLICY_AGENT_LOGPATH for WARNINGs and ERRORs"
282 foundentries=$(docker exec -it $1 grep WARN /var/log/policy-agent/application.log | wc -l)
284 echo " Problem to search $1 log $POLICY_AGENT_LOGPATH"
286 if [ $foundentries -eq 0 ]; then
287 echo " No WARN entries found in $1 log $POLICY_AGENT_LOGPATH"
289 echo -e " Found \033[1m"$foundentries"\033[0m WARN entries in $1 log $POLICY_AGENT_LOGPATH"
292 foundentries=$(docker exec -it $1 grep ERR $POLICY_AGENT_LOGPATH | wc -l)
294 echo " Problem to search $1 log $POLICY_AGENT_LOGPATH"
296 if [ $foundentries -eq 0 ]; then
297 echo " No ERR entries found in $1 log $POLICY_AGENT_LOGPATH"
299 echo -e " Found \033[1m"$foundentries"\033[0m ERR entries in $1 log $POLICY_AGENT_LOGPATH"
306 __print_err "need one arg, <file-prefix>"
309 echo "Storing all container logs and policy agent app log using prefix: "$1
311 docker logs polman_consul > $TESTLOGS/$ATC/$1_consul.log 2>&1
312 docker logs polman_cbs > $TESTLOGS/$ATC/$1_cbs.log 2>&1
316 res=$(curl -skw "%{http_code}" $1)
317 http_code="${res:${#res}-3}"
318 if [ ${#res} -eq 3 ]; then
319 echo "<no-response-from-server>"
322 if [ $http_code -lt 200 ] && [ $http_code -gt 299]; then
323 echo "<not found, resp:${http_code}>"
326 if [ $# -eq 2 ]; then
327 echo "${res:0:${#res}-3}" | xargs
329 echo "${res:0:${#res}-3}"