Adaptation of test env to helm chart
Restructuring to use http proxy for all access to docker containers
Adding tests for dmaap adapter and mediator
Issue-ID: NONRTRIC-618
Signed-off-by: BjornMagnussonXA <bjorn.magnusson@est.tech>
Change-Id: I43799771d73140c7abbc63db9f9b28bb353474a1
diff --git a/test/auto-test/FTC1.sh b/test/auto-test/FTC1.sh
index 28c84e5..5d718b0 100755
--- a/test/auto-test/FTC1.sh
+++ b/test/auto-test/FTC1.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="Sanity test, create service and then create,update and delete a policy using http/https and Agent REST/DMAAP with/without SDNC controller"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -71,9 +71,7 @@
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
if [ $__httpx == "HTTPS" ]; then
use_agent_rest_https
@@ -87,7 +85,7 @@
# Create service to be able to receive events when rics becomes available
# Must use rest towards the agent since dmaap is not configured yet
- api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
+ api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH/ric-registration"
if [ $__httpx == "HTTPS" ]; then
use_cr_https
@@ -190,7 +188,7 @@
echo "##### Service registry and supervision #####"
echo "############################################"
- api_put_service 201 "serv1" 1000 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "serv1" 1000 "$CR_SERVICE_APP_PATH/1"
api_get_service_ids 200 "serv1" "ric-registration"
@@ -211,7 +209,7 @@
echo "############################################"
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC10.sh b/test/auto-test/FTC10.sh
index 567facc..625346b 100755
--- a/test/auto-test/FTC10.sh
+++ b/test/auto-test/FTC10.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Basic use case, register service, create/update policy, delete policy, de-register service using both STD and OSC interface while mixing REST and Dmaap"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES=" MR CR PA RICSIM CP KUBEPROXY NGW"
@@ -61,9 +61,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
start_ric_simulators ricsim_g1 3 OSC_2.1.0
@@ -123,14 +121,14 @@
# Create policies
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
use_agent_rest_http
-api_put_service 201 "service1" 3600 "$CR_SERVICE_PATH/1"
+api_put_service 201 "service1" 3600 "$CR_SERVICE_APP_PATH/1"
api_put_policy 201 "service1" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json 1
@@ -175,7 +173,7 @@
#Update policies
use_agent_rest_http
-api_put_service 200 "service1" 3600 "$CR_SERVICE_PATH/1"
+api_put_service 200 "service1" 3600 "$CR_SERVICE_APP_PATH/1"
api_put_policy 200 "service1" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json 1
diff --git a/test/auto-test/FTC100.sh b/test/auto-test/FTC100.sh
index ff9b901..ac6f8d5 100755
--- a/test/auto-test/FTC100.sh
+++ b/test/auto-test/FTC100.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="Full agent API walkthrough using agent REST/DMAAP and with/without SDNC A1 Controller"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -73,9 +73,7 @@
# Clean container and start all needed containers #
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
if [ $__httpx == "HTTPS" ]; then
use_cr_https
@@ -91,7 +89,7 @@
# Create service to be able to receive events when rics becomes available
# Must use rest towards the agent since dmaap is not configured yet
- api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
+ api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH/ric-registration"
if [ $__httpx == "HTTPS" ]; then
@@ -196,14 +194,14 @@
api_get_services 404 "service1"
- api_put_service 201 "service1" 1000 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "service1" 1000 "$CR_SERVICE_APP_PATH/1"
- api_put_service 200 "service1" 2000 "$CR_SERVICE_PATH/1"
+ api_put_service 200 "service1" 2000 "$CR_SERVICE_APP_PATH/1"
- api_put_service 400 "service2" -1 "$CR_SERVICE_PATH/2"
+ api_put_service 400 "service2" -1 "$CR_SERVICE_APP_PATH/2"
- api_put_service 400 "service2" "wrong" "$CR_SERVICE_PATH/2"
+ api_put_service 400 "service2" "wrong" "$CR_SERVICE_APP_PATH/2"
api_put_service 400 "service2" 100 "/test"
@@ -211,20 +209,20 @@
api_put_service 201 "service2" 300 "ftp://localhost:80/test"
- api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_PATH/1"
+ api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_APP_PATH/1"
api_get_service_ids 200 "service1" "service2" "ric-registration"
- api_put_service 201 "service3" 5000 "$CR_SERVICE_PATH/3"
+ api_put_service 201 "service3" 5000 "$CR_SERVICE_APP_PATH/3"
api_get_service_ids 200 "service1" "service2" "service3" "ric-registration"
- api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_PATH/1"
+ api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_APP_PATH/1"
- api_get_services 200 NOSERVICE "service1" 2000 "$CR_SERVICE_PATH/1" "service2" 300 "ftp://localhost:80/test" "service3" 5000 "$CR_SERVICE_PATH/3" "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
+ api_get_services 200 NOSERVICE "service1" 2000 "$CR_SERVICE_APP_PATH/1" "service2" 300 "ftp://localhost:80/test" "service3" 5000 "$CR_SERVICE_APP_PATH/3" "ric-registration" 0 "$CR_SERVICE_APP_PATH/ric-registration"
api_get_services 200
@@ -253,7 +251,7 @@
api_get_service_ids 200 "service2" "service3" "ric-registration"
- api_put_service 201 "service1" 50 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "service1" 50 "$CR_SERVICE_APP_PATH/1"
api_get_service_ids 200 "service1" "service2" "service3" "ric-registration"
@@ -388,10 +386,10 @@
- api_put_service 201 "service10" 3600 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "service10" 3600 "$CR_SERVICE_APP_PATH/1"
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC110.sh b/test/auto-test/FTC110.sh
index 3690e9c..e3b96a5 100755
--- a/test/auto-test/FTC110.sh
+++ b/test/auto-test/FTC110.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="Testing of service registration timeouts and keepalive"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM KUBEPROXY NGW"
@@ -61,9 +61,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
start_ric_simulators ricsim_g1 1 OSC_2.1.0
start_ric_simulators ricsim_g2 1 STD_1.1.3
@@ -109,60 +107,60 @@
sim_print ricsim_g3_1 interface
fi
-api_put_service 201 "service1" 15 "$CR_SERVICE_PATH/service1"
+api_put_service 201 "service1" 15 "$CR_SERVICE_APP_PATH/service1"
-api_get_services 200 "service1" "service1" 15 "$CR_SERVICE_PATH/service1"
+api_get_services 200 "service1" "service1" 15 "$CR_SERVICE_APP_PATH/service1"
-api_put_service 201 "service2" 120 "$CR_SERVICE_PATH/service2"
+api_put_service 201 "service2" 120 "$CR_SERVICE_APP_PATH/service2"
-api_get_services 200 "service2" "service2" 120 "$CR_SERVICE_PATH/service2"
+api_get_services 200 "service2" "service2" 120 "$CR_SERVICE_APP_PATH/service2"
-api_put_service 200 "service1" 50 "$CR_SERVICE_PATH/service1"
-api_put_service 200 "service2" 180 "$CR_SERVICE_PATH/service2"
+api_put_service 200 "service1" 50 "$CR_SERVICE_APP_PATH/service1"
+api_put_service 200 "service2" 180 "$CR_SERVICE_APP_PATH/service2"
-api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_PATH/service1"
-api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_PATH/service2"
+api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_APP_PATH/service1"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH/service2"
api_get_service_ids 200 "service1" "service2"
sleep_wait 30 "Waiting for keep alive timeout"
-api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_PATH/service1"
-api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_PATH/service2"
+api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_APP_PATH/service1"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH/service2"
sleep_wait 100 "Waiting for keep alive timeout"
api_get_services 404 "service1"
-api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_PATH/service2"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH/service2"
api_delete_services 204 "service2"
api_get_services 404 "service1"
api_get_services 404 "service2"
-api_put_service 201 "service3" 60 "$CR_SERVICE_PATH/service3"
+api_put_service 201 "service3" 60 "$CR_SERVICE_APP_PATH/service3"
-api_get_services 200 "service3" "service3" 60 "$CR_SERVICE_PATH/service3"
+api_get_services 200 "service3" "service3" 60 "$CR_SERVICE_APP_PATH/service3"
sleep_wait 30 "Waiting for keep alive timeout"
-api_put_service 200 "service3" 60 "$CR_SERVICE_PATH/service3"
+api_put_service 200 "service3" 60 "$CR_SERVICE_APP_PATH/service3"
sleep_wait 100 "Waiting for keep alive timeout"
api_get_services 404 "service3"
-api_put_service 201 "service4" 120 "$CR_SERVICE_PATH/service4"
+api_put_service 201 "service4" 120 "$CR_SERVICE_APP_PATH/service4"
sleep_wait 60 "Waiting for keep alive timeout"
-api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_PATH/service4"
+api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_APP_PATH/service4"
api_put_services_keepalive 200 "service4"
sleep_wait 90 "Waiting for keep alive timeout"
-api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_PATH/service4"
+api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_APP_PATH/service4"
api_delete_services 204 "service4"
@@ -185,7 +183,7 @@
api_put_services_keepalive 404 "service4"
# Policy delete after timeout
-api_put_service 201 "service10" 600 "$CR_SERVICE_PATH/service10"
+api_put_service 201 "service10" 600 "$CR_SERVICE_APP_PATH/service10"
sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
@@ -211,7 +209,7 @@
fi
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
@@ -265,7 +263,7 @@
sim_equal ricsim_g3_1 num_instances 1
fi
-api_put_service 200 "service10" 10 "$CR_SERVICE_PATH/service10"
+api_put_service 200 "service10" 10 "$CR_SERVICE_APP_PATH/service10"
#Wait for service expiry
api_equal json:policies 0 120
diff --git a/test/auto-test/FTC1100.sh b/test/auto-test/FTC1100.sh
index eb687e8..0e4f4a7 100755
--- a/test/auto-test/FTC1100.sh
+++ b/test/auto-test/FTC1100.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="ECS full interfaces walkthrough"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR RICSIM CP HTTPPROXY NGW"
+DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR RICSIM CP HTTPPROXY NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="PRODSTUB CR ECS RICSIM CP HTTPPROXY KUBEPROXY NGW"
@@ -57,9 +57,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
use_ecs_rest_https
@@ -112,25 +110,25 @@
TARGET160="http://localhost:80/target" # Dummy target, no target for info data in this env...
#Status callbacks for eijobs
-STATUS1="$CR_SERVICE_PATH/job1-status"
-STATUS2="$CR_SERVICE_PATH/job2-status"
-STATUS3="$CR_SERVICE_PATH/job3-status"
-STATUS8="$CR_SERVICE_PATH/job8-status"
-STATUS10="$CR_SERVICE_PATH/job10-status"
+STATUS1="$CR_SERVICE_APP_PATH/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH/job2-status"
+STATUS3="$CR_SERVICE_APP_PATH/job3-status"
+STATUS8="$CR_SERVICE_APP_PATH/job8-status"
+STATUS10="$CR_SERVICE_APP_PATH/job10-status"
#Status callbacks for infojobs
-INFOSTATUS101="$CR_SERVICE_PATH/info-job101-status"
-INFOSTATUS102="$CR_SERVICE_PATH/info-job102-status"
-INFOSTATUS103="$CR_SERVICE_PATH/info-job103-status"
-INFOSTATUS108="$CR_SERVICE_PATH/info-job108-status"
-INFOSTATUS110="$CR_SERVICE_PATH/info-job110-status"
-INFOSTATUS150="$CR_SERVICE_PATH/info-job150-status"
-INFOSTATUS160="$CR_SERVICE_PATH/info-job160-status"
+INFOSTATUS101="$CR_SERVICE_APP_PATH/info-job101-status"
+INFOSTATUS102="$CR_SERVICE_APP_PATH/info-job102-status"
+INFOSTATUS103="$CR_SERVICE_APP_PATH/info-job103-status"
+INFOSTATUS108="$CR_SERVICE_APP_PATH/info-job108-status"
+INFOSTATUS110="$CR_SERVICE_APP_PATH/info-job110-status"
+INFOSTATUS150="$CR_SERVICE_APP_PATH/info-job150-status"
+INFOSTATUS160="$CR_SERVICE_APP_PATH/info-job160-status"
if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
#Type registration status callbacks
- TYPESTATUS1="$CR_SERVICE_PATH/type-status1"
- TYPESTATUS2="$CR_SERVICE_PATH/type-status2"
+ TYPESTATUS1="$CR_SERVICE_APP_PATH/type-status1"
+ TYPESTATUS2="$CR_SERVICE_APP_PATH/type-status2"
ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
diff --git a/test/auto-test/FTC150.sh b/test/auto-test/FTC150.sh
index bcd41cb..f011a21 100755
--- a/test/auto-test/FTC150.sh
+++ b/test/auto-test/FTC150.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="Sample tests of the SDNC A1 controller restconf API using http/https (no agent)"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="RICSIM SDNC"
+DOCKER_INCLUDED_IMAGES="RICSIM SDNC KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES=" RICSIM SDNC KUBEPROXY"
#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
@@ -60,9 +60,7 @@
# Clean container and start all needed containers #
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
start_ric_simulators ricsim_g1 1 OSC_2.1.0
start_ric_simulators ricsim_g2 1 STD_1.1.3
diff --git a/test/auto-test/FTC1800.sh b/test/auto-test/FTC1800.sh
index bb9ed60..6241f3c 100755
--- a/test/auto-test/FTC1800.sh
+++ b/test/auto-test/FTC1800.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="ECS Create 10000 jobs (ei and info) restart, test job persistency"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR CP NGW"
+DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR CP NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="ECS PRODSTUB CP CR KUBEPROXY NGW"
@@ -55,9 +55,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
use_ecs_rest_http
@@ -90,8 +88,8 @@
if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
#Type registration status callbacks
- TYPESTATUS1="$CR_SERVICE_PATH/type-status1"
- TYPESTATUS2="$CR_SERVICE_PATH/type-status2"
+ TYPESTATUS1="$CR_SERVICE_APP_PATH/type-status1"
+ TYPESTATUS2="$CR_SERVICE_APP_PATH/type-status2"
ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
@@ -275,62 +273,62 @@
for ((i=1; i<=$NUM_JOBS; i++))
do
if [ $(($i%5)) -eq 0 ]; then
- ecs_api_a1_put_job 201 job$i type1 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
+ ecs_api_a1_put_job 201 job$i type1 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
if [ -z "$FLAT_A1_EI" ]; then
ecs_api_a1_get_job_status 200 type1 job$i ENABLED
else
ecs_api_a1_get_job_status 200 job$i ENABLED 120
fi
if [ $use_info_jobs ]; then
- ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type101 $TARGET info-owner $CR_SERVICE_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+ ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type101 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 3 prod-a prod-b prod-c 120
fi
fi
if [ $(($i%5)) -eq 1 ]; then
- ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
+ ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
if [ -z "$FLAT_A1_EI" ]; then
ecs_api_a1_get_job_status 200 type2 job$i ENABLED
else
ecs_api_a1_get_job_status 200 job$i ENABLED 120
fi
if [ $use_info_jobs ]; then
- ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type102 $TARGET info-owner $CR_SERVICE_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+ ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type102 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 2 prod-b prod-c 120
fi
fi
if [ $(($i%5)) -eq 2 ]; then
- ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
+ ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
if [ -z "$FLAT_A1_EI" ]; then
ecs_api_a1_get_job_status 200 type3 job$i ENABLED
else
ecs_api_a1_get_job_status 200 job$i ENABLED 120
fi
if [ $use_info_jobs ]; then
- ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type103 $TARGET info-owner $CR_SERVICE_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+ ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type103 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 1 prod-c 120
fi
fi
if [ $(($i%5)) -eq 3 ]; then
- ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
+ ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
if [ -z "$FLAT_A1_EI" ]; then
ecs_api_a1_get_job_status 200 type4 job$i ENABLED
else
ecs_api_a1_get_job_status 200 job$i ENABLED 120
fi
if [ $use_info_jobs ]; then
- ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type104 $TARGET info-owner $CR_SERVICE_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+ ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type104 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 1 prod-d 120
fi
fi
if [ $(($i%5)) -eq 4 ]; then
- ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
+ ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
if [ -z "$FLAT_A1_EI" ]; then
ecs_api_a1_get_job_status 200 type5 job$i ENABLED
else
ecs_api_a1_get_job_status 200 job$i ENABLED 120
fi
if [ $use_info_jobs ]; then
- ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type105 $TARGET info-owner $CR_SERVICE_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+ ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type105 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 1 prod-d 120
fi
fi
diff --git a/test/auto-test/FTC2001.sh b/test/auto-test/FTC2001.sh
index fffef91..f194817 100755
--- a/test/auto-test/FTC2001.sh
+++ b/test/auto-test/FTC2001.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Testing southbound proxy for PMS and ECS"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM ECS PRODSTUB HTTPPROXY NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM ECS PRODSTUB HTTPPROXY NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES=" MR CR PA PRODSTUB RICSIM CP ECS HTTPPROXY KUBEPROXY NGW"
@@ -64,7 +64,7 @@
use_prod_stub_https
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
echo "PMS VERSION 2 (V2) is required"
exit 1
@@ -72,9 +72,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
STD_NUM_RICS=2
@@ -146,7 +144,7 @@
#Check the number of types
api_equal json:policy-types 2 300
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
# Create policies in STD
for ((i=1; i<=$STD_NUM_RICS; i++))
@@ -184,8 +182,8 @@
TARGET1="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
TARGET2="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
-STATUS1="$CR_SERVICE_PATH/job1-status"
-STATUS2="$CR_SERVICE_PATH/job2-status"
+STATUS1="$CR_SERVICE_APP_PATH/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH/job2-status"
prodstub_arm_producer 200 prod-a
prodstub_arm_type 200 prod-a type1
@@ -197,7 +195,7 @@
if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
#Type registration status callbacks
- TYPESTATUS1="$CR_SERVICE_PATH/type-status1"
+ TYPESTATUS1="$CR_SERVICE_APP_PATH/type-status1"
ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
@@ -282,10 +280,7 @@
cr_api_check_all_ecs_events 200 job2-status DISABLED
fi
-echo -e $YELLOW"Verify that ECS has send status notification to the callback recevier"$EYELLOW
-echo -e $YELLOW"and check the source of the call in the log to be from the httpproxy"$EYELLOW
-echo -e $YELLOW"Check for 'Calling host'"$EYELLOW
-echo -e $YELLOW"cmd: docker logs <callback-receiver-container-name>"$EYELLOW
+cr_contains_str remote_hosts $HTTP_PROXY_APP_NAME
check_policy_agent_logs
check_ecs_logs
diff --git a/test/auto-test/FTC2002.sh b/test/auto-test/FTC2002.sh
index 753cc79..321dd24 100755
--- a/test/auto-test/FTC2002.sh
+++ b/test/auto-test/FTC2002.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Testing southbound proxy for SDNC - docker only"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="RICSIM SDNC HTTPPROXY"
+DOCKER_INCLUDED_IMAGES="RICSIM SDNC HTTPPROXY KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES=""
#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
@@ -65,6 +65,8 @@
# Clean container and start all needed containers #
clean_environment
+ start_kube_proxy
+
start_http_proxy
start_ric_simulators ricsim_g1 1 OSC_2.1.0
diff --git a/test/auto-test/FTC2003.sh b/test/auto-test/FTC2003.sh
new file mode 100755
index 0000000..6e22ced
--- /dev/null
+++ b/test/auto-test/FTC2003.sh
@@ -0,0 +1,129 @@
+#!/usr/bin/env bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2020 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+
+TC_ONELINE_DESCR="Testing southbound proxy for Dmaap Adaptor"
+
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CR MR ECS HTTPPROXY KUBEPROXY DMAAPADP"
+
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" CR MR ECS HTTPPROXY KUBEPROXY DMAAPADP"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
+#the image is not configured in the supplied env_file
+#Used for images not applicable to all supported profile
+CONDITIONALLY_IGNORED_IMAGES=""
+
+#Supported test environment profiles
+SUPPORTED_PROFILES="ORAN-E-RELEASE"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
+
+. ../common/testcase_common.sh $@
+. ../common/ecs_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/http_proxy_api_functions.sh
+. ../common/kube_proxy_api_functions.sh
+. ../common/dmaapadp_api_functions.sh
+
+setup_testenvironment
+
+#### TEST BEGIN ####
+
+#Local vars in test script
+##########################
+
+FLAT_A1_EI="1"
+NUM_JOBS=10
+
+clean_environment
+
+use_cr_https
+use_ecs_rest_https
+use_mr_https
+use_dmaapadp_https
+
+start_kube_proxy
+
+start_http_proxy
+
+start_cr
+
+start_ecs NOPROXY $SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_CONFIG_FILE
+
+set_ecs_trace
+
+start_mr
+
+start_dmaapadp PROXY $SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_CONFIG_FILE $SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_DATA_FILE
+
+set_dmaapadp_trace
+
+if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPES"* ]]; then
+ ecs_equal json:data-producer/v1/info-producers 1 60
+else
+ ecs_equal json:ei-producer/v1/eiproducers 1 60
+fi
+
+ecs_api_idc_get_job_ids 200 NOTYPE NOWNER EMPTY
+ecs_api_idc_get_type_ids 200 ExampleInformationType
+
+
+ecs_api_edp_get_producer_ids_2 200 NOTYPE DmaapGenericInfoProducer
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_idc_put_job 201 joby$i ExampleInformationType $CR_SERVICE_MR_PATH/joby-data$i info-ownery$i $CR_SERVICE_MR_PATH/job_status_info-ownery$i testdata/dmaap-adapter/job-template.json
+done
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_a1_get_job_status 200 joby$i ENABLED 30
+done
+
+
+# Adapter data
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-1"}'
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-3"}'
+
+cr_equal received_callbacks $(($NUM_JOBS*2)) 60
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_equal received_callbacks?id=joby-data$i 2
+done
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-1"}'
+ cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-3"}'
+done
+
+cr_contains_str remote_hosts $HTTP_PROXY_APP_NAME
+
+#### TEST COMPLETE ####
+
+store_logs END
+
+print_result
+
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC300.sh b/test/auto-test/FTC300.sh
index ac1259f..4503c88 100755
--- a/test/auto-test/FTC300.sh
+++ b/test/auto-test/FTC300.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Resync 10000 policies using OSC and STD interface"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -97,9 +97,7 @@
# Clean container and start all needed containers #
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
start_ric_simulators ricsim_g1 4 OSC_2.1.0
@@ -158,13 +156,13 @@
api_equal json:policy_types 2 120 #Wait for the agent to refresh types from the simulator
fi
- api_put_service 201 "serv1" 3600 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH/1"
START_ID=2000
NUM_POLICIES=10000 # Must be at least 100
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC3000.sh b/test/auto-test/FTC3000.sh
new file mode 100755
index 0000000..da4bf1e
--- /dev/null
+++ b/test/auto-test/FTC3000.sh
@@ -0,0 +1,214 @@
+#!/usr/bin/env bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2020 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+
+TC_ONELINE_DESCR="App test DMAAP Meditor and DMAAP Adapter"
+
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="ECS DMAAPMED DMAAPADP KUBEPROXY MR CR"
+
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" ECS DMAAPMED DMAAPADP KUBEPROXY MR CR"
+
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
+#the image is not configured in the supplied env_file
+#Used for images not applicable to all supported profile
+CONDITIONALLY_IGNORED_IMAGES=""
+
+#Supported test environment profiles
+SUPPORTED_PROFILES="ORAN-E-RELEASE"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
+
+. ../common/testcase_common.sh $@
+. ../common/agent_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
+. ../common/ecs_api_functions.sh
+. ../common/prodstub_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/rapp_catalogue_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/http_proxy_api_functions.sh
+. ../common/kube_proxy_api_functions.sh
+. ../common/gateway_api_functions.sh
+. ../common/dmaapmed_api_functions.sh
+. ../common/dmaapadp_api_functions.sh
+
+setup_testenvironment
+
+#### TEST BEGIN ####
+
+#Local vars in test script
+##########################
+FLAT_A1_EI="1"
+NUM_JOBS=100 # Mediator and adapter gets same number of jobs
+
+clean_environment
+
+#use_cr_https
+use_cr_http
+use_ecs_rest_https
+use_mr_https
+use_dmaapadp_https
+use_dmaapmed_https
+
+start_kube_proxy
+
+start_cr
+
+start_ecs NOPROXY $SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_CONFIG_FILE
+
+set_ecs_trace
+
+start_mr
+
+start_dmaapadp NOPROXY $SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_CONFIG_FILE $SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_DATA_FILE
+
+set_dmaapadp_trace
+
+start_dmaapmed NOPROXY $SIM_GROUP/$DMAAP_MED_COMPOSE_DIR/$DMAAP_MED_DATA_FILE
+
+ecs_equal json:data-producer/v1/info-producers 2 60
+
+# Check producers
+ecs_api_idc_get_job_ids 200 NOTYPE NOWNER EMPTY
+ecs_api_idc_get_type_ids 200 ExampleInformationType STD_Fault_Messages
+ecs_api_edp_get_producer_ids_2 200 NOTYPE DmaapGenericInfoProducer DMaaP_Mediator_Producer
+
+
+# Create jobs for adapter
+start_timer "Create adapter jobs: $NUM_JOBS"
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_idc_put_job 201 job-adp-$i ExampleInformationType $CR_SERVICE_MR_PATH/job-adp-data$i info-owner-adp-$i $CR_SERVICE_MR_PATH/job_status_info-owner-adp-$i testdata/dmaap-adapter/job-template.json
+done
+print_timer "Create adapter jobs: $NUM_JOBS"
+
+# Create jobs for mediator
+start_timer "Create mediator jobs: $NUM_JOBS"
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_idc_put_job 201 job-med-$i STD_Fault_Messages $CR_SERVICE_MR_PATH/job-med-data$i info-owner-med-$i $CR_SERVICE_MR_PATH/job_status_info-owner-med-$i testdata/dmaap-adapter/job-template.json
+done
+print_timer "Create mediator jobs: $NUM_JOBS"
+
+# Check job status
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_a1_get_job_status 200 job-med-$i ENABLED 30
+ ecs_api_a1_get_job_status 200 job-adp-$i ENABLED 30
+done
+
+EXPECTED_DATA_DELIV=0
+
+# Send data to adapter via mr
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-1"}'
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-3"}'
+
+# Wait for data recetption, adapter
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+start_timer "Data delivery adapter, 2 json per job"
+cr_equal received_callbacks $EXPECTED_DATA_DELIV 100
+print_timer "Data delivery adapter, 2 json per job"
+EXPECTED_DATA_DELIV=$(cr_read received_callbacks)
+
+# Send data to mediator
+mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-0"}'
+mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-2"}'
+
+# Wait for data reception, mediator
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+start_timer "Data delivery mediator, 2 json per job"
+cr_equal received_callbacks $EXPECTED_DATA_DELIV 100
+print_timer "Data delivery mediator, 2 json per job"
+EXPECTED_DATA_DELIV=$(cr_read received_callbacks)
+
+# Check received number of messages for mediator and adapter callbacks
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_equal received_callbacks?id=job-med-data$i 2
+ cr_equal received_callbacks?id=job-adp-data$i 2
+done
+
+# Check received data and order for mediator and adapter callbacks
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_api_check_single_genric_json_event 200 job-med-data$i '{"msg":"msg-0"}'
+ cr_api_check_single_genric_json_event 200 job-med-data$i '{"msg":"msg-2"}'
+ cr_api_check_single_genric_json_event 200 job-adp-data$i '{"msg":"msg-1"}'
+ cr_api_check_single_genric_json_event 200 job-adp-data$i '{"msg":"msg-3"}'
+done
+
+# Set delay in the callback receiver to slow down callbacks
+SEC_DELAY=5
+cr_delay_callback 200 $SEC_DELAY
+
+# Send data to adapter via mr
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-5"}'
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-7"}'
+
+# Wait for data recetption, adapter
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+start_timer "Data delivery adapter with $SEC_DELAY seconds delay, 2 json per job"
+cr_equal received_callbacks $EXPECTED_DATA_DELIV $(($NUM_JOBS+300))
+print_timer "Data delivery adapter with $SEC_DELAY seconds delay, 2 json per job"
+EXPECTED_DATA_DELIV=$(cr_read received_callbacks)
+
+
+# Send data to mediator
+mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-4"}'
+mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-6"}'
+
+# Wait for data reception, mediator
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+start_timer "Data delivery mediator with $SEC_DELAY seconds delay, 2 json per job"
+cr_equal received_callbacks $EXPECTED_DATA_DELIV 1000
+print_timer "Data delivery mediator with $SEC_DELAY seconds delay, 2 json per job"
+EXPECTED_DATA_DELIV=$(cr_read received_callbacks)
+
+# Check received number of messages for mediator and adapter callbacks
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_equal received_callbacks?id=job-med-data$i 4
+ cr_equal received_callbacks?id=job-adp-data$i 4
+done
+
+# Check received data and order for mediator and adapter callbacks
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_api_check_single_genric_json_event 200 job-med-data$i '{"msg":"msg-4"}'
+ cr_api_check_single_genric_json_event 200 job-med-data$i '{"msg":"msg-6"}'
+ cr_api_check_single_genric_json_event 200 job-adp-data$i '{"msg":"msg-5"}'
+ cr_api_check_single_genric_json_event 200 job-adp-data$i '{"msg":"msg-7"}'
+done
+
+
+
+#### TEST COMPLETE ####
+
+store_logs END
+
+print_result
+
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC310.sh b/test/auto-test/FTC310.sh
index 33e4966..e017643 100755
--- a/test/auto-test/FTC310.sh
+++ b/test/auto-test/FTC310.sh
@@ -21,7 +21,7 @@
TC_ONELINE_DESCR="Resync of RIC via changes in the consul config or pushed config"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW KUBEPROXY"
#Supported test environment profiles
SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE"
@@ -54,13 +54,15 @@
# Clean container and start all needed containers #
clean_environment
+ start_kube_proxy
+
start_policy_agent NOPROXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/$POLICY_AGENT_CONFIG_FILE
set_agent_trace
# Create service to be able to receive events when rics becomes available
# Must use rest towards the agent since dmaap is not configured yet
- api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
+ api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH/ric-registration"
# Start one RIC of each type
start_ric_simulators ricsim_g1 1 OSC_2.1.0
diff --git a/test/auto-test/FTC350.sh b/test/auto-test/FTC350.sh
index 6cb6b88..25bdc4c 100755
--- a/test/auto-test/FTC350.sh
+++ b/test/auto-test/FTC350.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Change supported policy types and reconfigure rics"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -69,9 +69,7 @@
# Clean container and start all needed containers #
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
#Start simulators and prepare two configs
@@ -110,7 +108,7 @@
# Create service to be able to receive events when rics becomes available
# Must use rest towards the agent since dmaap is not configured yet
- api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
+ api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH/ric-registration"
#Load first config
if [ $RUNMODE == "KUBE" ]; then
@@ -283,10 +281,10 @@
api_equal json:policy_types 5
fi
- api_put_service 201 "serv1" 3600 "$CR_SERVICE_PATH/serv1"
+ api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH/serv1"
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC800.sh b/test/auto-test/FTC800.sh
index 19fd96f..27675be 100755
--- a/test/auto-test/FTC800.sh
+++ b/test/auto-test/FTC800.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Create 10000 policies in sequence using http/https and Agent REST/DMAAP with/without SDNC controller"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -91,9 +91,7 @@
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
start_ric_simulators ricsim_g1 1 OSC_2.1.0
start_ric_simulators ricsim_g2 1 STD_1.1.3
@@ -153,10 +151,10 @@
api_equal json:policy_types 2 300 #Wait for the agent to refresh types from the simulators
fi
- api_put_service 201 "serv1" 3600 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH/1"
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC805.sh b/test/auto-test/FTC805.sh
index e90f316..02f6758 100755
--- a/test/auto-test/FTC805.sh
+++ b/test/auto-test/FTC805.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="PMS Create 10000 policies and restart, test polices persistency"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR PA RICSIM SDNC KUBEPROXY NGW"
@@ -67,7 +67,7 @@
generate_policy_uuid
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
@@ -100,9 +100,7 @@
# Clean container and start all needed containers #
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
start_ric_simulators ricsim_g1 $NUM_RICS STD_2.0.0
@@ -154,7 +152,7 @@
api_equal json:policy_types 1 300 #Wait for the agent to refresh types from the simulator
fi
- api_put_service 201 "serv1" 0 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH/1"
echo "Check the number of types in the agent for each ric is 1"
for ((i=1; i<=$NUM_RICS; i++))
@@ -182,7 +180,7 @@
sim_equal ricsim_g1_$i num_instances $NUM_POLICIES_PER_RIC
done
- api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_PATH/1"
+ api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH/1"
stop_policy_agent
@@ -219,7 +217,7 @@
print_timer "Restore $((NUM_POLICIES_PER_RIC*$NUM_RICS)) polices after restart over $interface using "$__httpx
- api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_PATH/1"
+ api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH/1"
start_timer "Delete $((NUM_POLICIES_PER_RIC*$NUM_RICS)) polices over $interface using "$__httpx
@@ -249,7 +247,7 @@
sleep_wait 200
- api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_PATH/1"
+ api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH/1"
api_equal json:policies 0
diff --git a/test/auto-test/FTC810.sh b/test/auto-test/FTC810.sh
index 78c8e0d..02b8db9 100755
--- a/test/auto-test/FTC810.sh
+++ b/test/auto-test/FTC810.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Repeatedly create and delete policies in each RICs for 24h (or configured number of days). Via agent REST/DMAAP/DMAAP_BATCH and SDNC using http or https"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -70,9 +70,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
# use HTTP or HTTPS for all apis
HTTPX=HTTPS
@@ -199,7 +197,7 @@
done
echo "Register a service"
-api_put_service 201 "serv1" 0 "$CR_SERVICE_PATH/1"
+api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH/1"
TEST_DURATION=$((24*3600*$DAYS))
TEST_START=$SECONDS
@@ -209,7 +207,7 @@
MR_MESSAGES=0
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC850.sh b/test/auto-test/FTC850.sh
index e72ad07..a5f1978 100755
--- a/test/auto-test/FTC850.sh
+++ b/test/auto-test/FTC850.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Create/delete policies in parallel over a number of rics using a number of child process"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -67,7 +67,7 @@
generate_policy_uuid
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
@@ -102,9 +102,7 @@
# Clean container and start all needed containers #
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
start_ric_simulators ricsim_g1 $NUM_RICS OSC_2.1.0
@@ -158,7 +156,7 @@
api_equal json:policy_types 1 300 #Wait for the agent to refresh types from the simulator
fi
- api_put_service 201 "serv1" 600 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "serv1" 600 "$CR_SERVICE_APP_PATH/1"
echo "Check the number of types in the agent for each ric is 1"
for ((i=1; i<=$NUM_RICS; i++))
diff --git a/test/auto-test/FTC900.sh b/test/auto-test/FTC900.sh
index 71ea398..e698f62 100755
--- a/test/auto-test/FTC900.sh
+++ b/test/auto-test/FTC900.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Preparation for test of the Control Panel and the Health Check app - populating a number of ric simulators with types and instances"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM KUBEPROXY NGW"
@@ -54,9 +54,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
OSC_NUM_RICS=6
STD_NUM_RICS=5
@@ -186,10 +184,10 @@
# Create policies
use_agent_rest_http
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
diff --git a/test/auto-test/FTC_HELM_RECIPE_E_RELEASE.sh b/test/auto-test/FTC_HELM_E_RELEASE.sh
similarity index 76%
rename from test/auto-test/FTC_HELM_RECIPE_E_RELEASE.sh
rename to test/auto-test/FTC_HELM_E_RELEASE.sh
index b609222..71a5d50 100755
--- a/test/auto-test/FTC_HELM_RECIPE_E_RELEASE.sh
+++ b/test/auto-test/FTC_HELM_E_RELEASE.sh
@@ -17,7 +17,9 @@
# ============LICENSE_END=================================================
#
-TC_ONELINE_DESCR="Sanity test of Non-RT RIC Helm recepie - all components - E-RELEASE"
+TC_ONELINE_DESCR="Sanity test of Non-RT RIC Helm chats - all components - E-RELEASE"
+# This script requires the helm charts for nonrtric, a1simulator and a1controller are installed
+# There should be 2 simulator of version started
#App names to include in the test when running docker, space separated list
DOCKER_INCLUDED_IMAGES="" # Not used - KUBE only test script
@@ -25,7 +27,7 @@
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES=" MR CR PRODSTUB KUBEPROXY"
#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
-KUBE_PRESTARTED_IMAGES=" PA RICSIM CP ECS RC SDNC"
+KUBE_PRESTARTED_IMAGES=" PA RICSIM CP ECS RC SDNC DMAAPMED DMAAPADP"
#Supported test environment profiles
SUPPORTED_PROFILES="ORAN-E-RELEASE"
@@ -43,6 +45,8 @@
. ../common/control_panel_api_functions.sh
. ../common/controller_api_functions.sh
. ../common/kube_proxy_api_functions.sh
+. ../common/dmaapmed_api_functions.sh
+. ../common/dmaapadp_api_functions.sh
setup_testenvironment
@@ -55,6 +59,7 @@
use_simulator_https
use_ecs_rest_https
use_prod_stub_https
+
if [ $ECS_VERSION == "V1-1" ]; then
use_rapp_catalogue_http # https not yet supported
else
@@ -148,6 +153,22 @@
sim_print "a1-sim-osc-"$i interface
done
+# Check the number of policies in STD and STD2
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+ sim_equal "a1-sim-std-"$i num_instances 0
+ sim_equal "a1-sim-std2-"$i num_instances 0
+done
+
+# Check the number of policies in OSC
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+ sim_equal "a1-sim-osc-"$i num_instances 0
+done
+
+#Check the number of schemas
+api_equal json:policy-types 1
+
# Load the polictypes in STD 2
for ((i=0; i<$STD_NUM_RICS; i++))
do
@@ -219,16 +240,16 @@
api_equal json:policy_ids 0
fi
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/ER-app"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/ER-app"
# Create policies in STD
for ((i=0; i<$STD_NUM_RICS; i++))
do
ricid=$((3+$i))
generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
+ api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD/pi1_template.json 1
generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
+ api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD/pi1_template.json 1
done
#Create policies in STD 2
@@ -236,9 +257,9 @@
do
ricid=$((5+$i))
generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos_template.json 1
+ api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD2/pi_qos_template.json 1
generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos2_template.json 1
+ api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD2/pi_qos2_template.json 1
done
# Create policies in OSC
@@ -246,9 +267,9 @@
do
ricid=$((1+$i))
generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi1_template.json 1
+ api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"osc" testdata/OSC/pi1_template.json 1
generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi2_template.json 1
+ api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"osc" testdata/OSC/pi2_template.json 1
done
@@ -317,8 +338,8 @@
TARGET1="$RIC_SIM_HTTPX://a1-sim-std2-0.a1-sim:$RIC_SIM_PORT/datadelivery"
TARGET2="$RIC_SIM_HTTPX://a1-sim-std2-1.a1-sim:$RIC_SIM_PORT/datadelivery"
-STATUS1="$CR_SERVICE_PATH/job1-status"
-STATUS2="$CR_SERVICE_PATH/job2-status"
+STATUS1="$CR_SERVICE_APP_PATH/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH/job2-status"
prodstub_arm_producer 200 prod-a
prodstub_arm_type 200 prod-a type1
@@ -384,6 +405,55 @@
fi
fi
+# Dmaap mediator and adapter
+start_dmaapadp NOPROXY $SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_CONFIG_FILE $SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_DATA_FILE
+
+start_dmaapmed NOPROXY $SIM_GROUP/$DMAAP_MED_COMPOSE_DIR/$DMAAP_MED_DATA_FILE
+
+ecs_equal json:ei-producer/v1/eiproducers 2 60
+
+ecs_api_idc_get_type_ids 200 ExampleInformationType STD_Fault_Messages
+
+ecs_api_edp_get_producer_ids_2 200 NOTYPE DmaapGenericInfoProducer DMaaP_Mediator_Producer
+
+NUM_JOBS=5
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_idc_put_job 201 jobx$i STD_Fault_Messages $CR_SERVICE_MR_PATH/jobx-data$i info-ownerx$i $CR_SERVICE_MR_PATH/job_status_info-ownerx$i testdata/dmaap-adapter/job-template.json
+done
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_idc_put_job 201 joby$i ExampleInformationType $CR_SERVICE_MR_PATH/joby-data$i info-ownery$i $CR_SERVICE_MR_PATH/job_status_info-ownery$i testdata/dmaap-adapter/job-template.json
+done
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ ecs_api_a1_get_job_status 200 jobx$i ENABLED 30
+done
+
+mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-0"}'
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-1"}'
+mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-2"}'
+mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-3"}'
+
+cr_equal received_callbacks $(($NUM_JOBS*2*2)) 60
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_equal received_callbacks?id=jobx-data$i 2
+ cr_equal received_callbacks?id=joby-data$i 2
+done
+
+for ((i=1; i<=$NUM_JOBS; i++))
+do
+ cr_api_check_single_genric_json_event 200 jobx-data$i '{"msg":"msg-0"}'
+ cr_api_check_single_genric_json_event 200 jobx-data$i '{"msg":"msg-2"}'
+ cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-1"}'
+ cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-3"}'
+done
+
+
stop_ecs
start_stopped_ecs
diff --git a/test/auto-test/FTC_HELM_RECIPE_CHERRY.sh b/test/auto-test/FTC_HELM_RECIPE_CHERRY.sh
deleted file mode 100755
index 7465b40..0000000
--- a/test/auto-test/FTC_HELM_RECIPE_CHERRY.sh
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/usr/bin/env bash
-
-# ============LICENSE_START===============================================
-# Copyright (C) 2020 Nordix Foundation. All rights reserved.
-# ========================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=================================================
-#
-
-TC_ONELINE_DESCR="Sanity test of Non-RT RIC Helm recepie - all components - CHERRY release"
-
-#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="" # Not used - KUBE only test script
-
-#App names to include in the test when running kubernetes, space separated list
-KUBE_INCLUDED_IMAGES=" MR CR PRODSTUB KUBEPROXY"
-#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
-KUBE_PRESTARTED_IMAGES=" PA RICSIM CP ECS RC SDNC"
-
-#Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-CHERRY"
-#Supported run modes
-SUPPORTED_RUNMODES="KUBE"
-
-. ../common/testcase_common.sh $@
-. ../common/agent_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
-. ../common/ecs_api_functions.sh
-. ../common/prodstub_api_functions.sh
-. ../common/cr_api_functions.sh
-. ../common/rapp_catalogue_api_functions.sh
-. ../common/mr_api_functions.sh
-. ../common/control_panel_api_functions.sh
-. ../common/controller_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-
-setup_testenvironment
-
-#### TEST BEGIN ####
-
-use_mr_http #MR only supports http?
-use_cr_https
-use_agent_rest_https
-use_sdnc_https
-use_simulator_https
-use_ecs_rest_https
-use_prod_stub_https
-if [ $ECS_VERSION == "V1-1" ]; then
- use_rapp_catalogue_http # https not yet supported
-else
- use_rapp_catalogue_https
-fi
-
-echo -e "$RED CHECK WHY RC HTTPS DOES NOT WORK $ERED"
-
-use_control_panel_https
-
-if [ "$PMS_VERSION" == "V1" ]; then
- echo "PMS VERSION 2 (V2) is required"
- exit 1
-fi
-
-clean_environment
-
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
-
-STD_NUM_RICS=2
-OSC_NUM_RICS=2
-
-start_ric_simulators a1-sim-osc $STD_NUM_RICS OSC_2.1.0
-echo " RIC MAPPING a1-sim-osc-0 : ric1"
-echo " RIC MAPPING a1-sim-osc-1 : ric2"
-
-start_ric_simulators a1-sim-std $STD_NUM_RICS STD_1.1.3
-echo " RIC MAPPING a1-sim-std-0 : ric3"
-echo " RIC MAPPING a1-sim-std-1 : ric4"
-
-start_ric_simulators a1-sim-std2 $STD_NUM_RICS STD_2.0.0
-echo " RIC MAPPING a1-sim-std2-0 : ric5"
-echo " RIC MAPPING a1-sim-std2-1 : ric6"
-
-start_mr
-
-start_control_panel
-
-start_sdnc
-
-start_policy_agent
-
-start_cr
-
-start_prod_stub
-
-start_ecs NOPROXY
-
-set_ecs_trace
-
-start_rapp_catalogue
-
-set_agent_trace
-
-#### Test RAPP Catalogue ####
-
-rapp_cat_api_get_services 200 EMPTY
-
-rapp_cat_api_put_service 201 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
-
-rapp_cat_api_get_services 200 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
-
-#Check the number of services
-rc_equal json:services 1
-
-api_get_status 200
-
-#### Test Policy Management Service ####
-
-# Print the A1 version for STD 1.1.X
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_print "a1-sim-std-"$i interface
-done
-
-# Print the A1 version for STD 2.0.X
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_print "a1-sim-std2-"$i interface
-done
-
-# Print the A1 version for OSC 2.1.X
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- sim_print "a1-sim-osc-"$i interface
-done
-
-
-# Load the polictypes in STD 2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_put_policy_type 201 "a1-sim-std2-"$i STD_QOS_0_2_0 testdata/STD2/sim_qos.json
- sim_put_policy_type 201 "a1-sim-std2-"$i STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
-done
-
-# Load the polictypes in OSC
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- sim_put_policy_type 201 "a1-sim-osc-"$i 1 testdata/OSC/sim_1.json
- sim_put_policy_type 201 "a1-sim-osc-"$i 2 testdata/OSC/sim_2.json
-done
-
-# Check that all rics are synced in
-api_equal json:rics 6 300
-
-#Check the number of schemas and the individual schemas
-api_equal json:policy-types 5 300
-
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((3+$i))
- api_equal json:policy-types?ric_id=ric$ricid 1 120
-done
-
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((5+$i))
- api_equal json:policy-types?ric_id=ric$ricid 2 120
-done
-
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- ricid=$((1+$i))
- api_equal json:policy-types?ric_id=ric$ricid 2 120
-done
-
-#Check the schemas in STD 2
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- ricid=$((5+$i))
- api_get_policy_type 200 STD_QOS_0_2_0 testdata/STD2/qos-agent-modified.json
- api_get_policy_type 200 STD_QOS2_0.1.0 testdata/STD2/qos2-agent-modified.json
-done
-
-# Check the schemas in OSC
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- api_get_policy_type 200 1 testdata/OSC/1-agent-modified.json
- api_get_policy_type 200 2 testdata/OSC/2-agent-modified.json
-done
-
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/ER-app"
-
-# Create policies in STD
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((3+$i))
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
-done
-
-#Create policies in STD 2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((5+$i))
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos_template.json 1
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos2_template.json 1
-done
-
-# Create policies in OSC
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- ricid=$((1+$i))
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi1_template.json 1
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi2_template.json 1
-done
-
-
-# Check the number of policies in STD and STD2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_equal "a1-sim-std-"$i num_instances 2
- sim_equal "a1-sim-std2-"$i num_instances 2
-done
-
-# Check the number of policies in OSC
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_equal "a1-sim-osc-"$i num_instances 2
-done
-
-echo "ADD EVENT/STATUS CHECK"
-echo "ADD MR CHECK"
-
-FLAT_A1_EI="1"
-
-ecs_api_admin_reset
-
-CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
-CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
-TARGET1="$RIC_SIM_HTTPX://a1-sim-std2-0.a1-sim:$RIC_SIM_PORT/datadelivery"
-TARGET2="$RIC_SIM_HTTPX://a1-sim-std2-1.a1-sim:$RIC_SIM_PORT/datadelivery"
-
-STATUS1="$CR_SERVICE_PATH/job1-status"
-STATUS2="$CR_SERVICE_PATH/job2-status"
-
-prodstub_arm_producer 200 prod-a
-prodstub_arm_type 200 prod-a type1
-prodstub_arm_job_create 200 prod-a job1
-prodstub_arm_job_create 200 prod-a job2
-
-
-### ecs status
-ecs_api_service_status 200
-
-## Setup prod-a
-ecs_api_edp_put_producer 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
-
-ecs_api_edp_get_producer 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
-
-ecs_api_edp_get_producer_status 200 prod-a ENABLED
-
-
-## Create a job for prod-a
-## job1 - prod-a
-if [ -z "$FLAT_A1_EI" ]; then
- ecs_api_a1_put_job 201 type1 job1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
-else
- ecs_api_a1_put_job 201 job1 type1 $TARGET1 ricsim_g3_1 $STATUS1 testdata/ecs/job-template.json
-fi
-
-# Check the job data in the producer
-if [ $ECS_VERSION == "V1-1" ]; then
- prodstub_check_jobdata 200 prod-a job1 type1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
-else
- prodstub_check_jobdata_2 200 prod-a job1 type1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
-fi
-
-## Create a second job for prod-a
-## job2 - prod-a
-if [ -z "$FLAT_A1_EI" ]; then
- ecs_api_a1_put_job 201 type1 job2 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
-else
- ecs_api_a1_put_job 201 job2 type1 $TARGET2 ricsim_g3_2 $STATUS2 testdata/ecs/job-template.json
-fi
-
-# Check the job data in the producer
-if [ $ECS_VERSION == "V1-1" ]; then
- prodstub_check_jobdata 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
-else
- prodstub_check_jobdata_2 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
-fi
-
-echo "ADD EVENT/STATUS CHECK"
-
-check_policy_agent_logs
-check_ecs_logs
-check_sdnc_logs
-
-#### TEST COMPLETE ####
-
-store_logs END
-
-print_result
diff --git a/test/auto-test/FTC_HELM_RECIPE_D_RELEASE.sh b/test/auto-test/FTC_HELM_RECIPE_D_RELEASE.sh
deleted file mode 100755
index 391fdcb..0000000
--- a/test/auto-test/FTC_HELM_RECIPE_D_RELEASE.sh
+++ /dev/null
@@ -1,409 +0,0 @@
-#!/usr/bin/env bash
-
-# ============LICENSE_START===============================================
-# Copyright (C) 2020 Nordix Foundation. All rights reserved.
-# ========================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=================================================
-#
-
-TC_ONELINE_DESCR="Sanity test of Non-RT RIC Helm recepie - all components - D-RELEASE"
-
-#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="" # Not used - KUBE only test script
-
-#App names to include in the test when running kubernetes, space separated list
-KUBE_INCLUDED_IMAGES=" MR CR PRODSTUB KUBEPROXY"
-#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
-KUBE_PRESTARTED_IMAGES=" PA RICSIM CP ECS RC SDNC"
-
-#Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-D-RELEASE"
-#Supported run modes
-SUPPORTED_RUNMODES="KUBE"
-
-. ../common/testcase_common.sh $@
-. ../common/agent_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
-. ../common/ecs_api_functions.sh
-. ../common/prodstub_api_functions.sh
-. ../common/cr_api_functions.sh
-. ../common/rapp_catalogue_api_functions.sh
-. ../common/mr_api_functions.sh
-. ../common/control_panel_api_functions.sh
-. ../common/controller_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-
-setup_testenvironment
-
-#### TEST BEGIN ####
-
-use_mr_http #MR only supports http?
-use_cr_https
-use_agent_rest_https
-use_sdnc_https
-use_simulator_https
-use_ecs_rest_https
-use_prod_stub_https
-if [ $ECS_VERSION == "V1-1" ]; then
- use_rapp_catalogue_http # https not yet supported
-else
- ########################################use_rapp_catalogue_https
- use_rapp_catalogue_http
-fi
-
-echo -e "$RED CHECK WHY RC HTTPS DOES NOT WORK $ERED"
-
-###############################use_control_panel_https
-use_control_panel_http
-
-if [ "$PMS_VERSION" == "V1" ]; then
- echo "PMS VERSION 2 (V2) is required"
- exit 1
-fi
-
-clean_environment
-
-pms_kube_pvc_reset
-
-ecs_kube_pvc_reset
-
-start_kube_proxy
-
-STD_NUM_RICS=2
-OSC_NUM_RICS=2
-
-start_ric_simulators a1-sim-osc $STD_NUM_RICS OSC_2.1.0
-echo " RIC MAPPING a1-sim-osc-0 : ric1"
-echo " RIC MAPPING a1-sim-osc-1 : ric2"
-
-start_ric_simulators a1-sim-std $STD_NUM_RICS STD_1.1.3
-echo " RIC MAPPING a1-sim-std-0 : ric3"
-echo " RIC MAPPING a1-sim-std-1 : ric4"
-
-start_ric_simulators a1-sim-std2 $STD_NUM_RICS STD_2.0.0
-echo " RIC MAPPING a1-sim-std2-0 : ric5"
-echo " RIC MAPPING a1-sim-std2-1 : ric6"
-
-start_mr
-
-start_control_panel
-
-start_sdnc
-
-start_policy_agent
-
-start_cr
-
-start_prod_stub
-
-start_ecs NOPROXY
-
-set_ecs_trace
-
-start_rapp_catalogue
-
-set_agent_trace
-
-#### Test RAPP Catalogue ####
-
-rapp_cat_api_get_services 200 EMPTY
-
-rapp_cat_api_put_service 201 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
-
-rapp_cat_api_get_services 200 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
-
-#Check the number of services
-rc_equal json:services 1
-
-api_get_status 200
-
-#### Test Policy Management Service ####
-
-# Print the A1 version for STD 1.1.X
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_print "a1-sim-std-"$i interface
-done
-
-# Print the A1 version for STD 2.0.X
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_print "a1-sim-std2-"$i interface
-done
-
-# Print the A1 version for OSC 2.1.X
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- sim_print "a1-sim-osc-"$i interface
-done
-
-# Load the polictypes in STD 2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_put_policy_type 201 "a1-sim-std2-"$i STD_QOS_0_2_0 testdata/STD2/sim_qos.json
- sim_put_policy_type 201 "a1-sim-std2-"$i STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
-done
-
-# Load the polictypes in OSC
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- sim_put_policy_type 201 "a1-sim-osc-"$i 1 testdata/OSC/sim_1.json
- sim_put_policy_type 201 "a1-sim-osc-"$i 2 testdata/OSC/sim_2.json
-done
-
-# Check that all rics are synced in
-api_equal json:rics 6 300
-
-#Check the number of schemas and the individual schemas
-api_equal json:policy-types 5 300
-
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((3+$i))
- api_equal json:policy-types?ric_id=ric$ricid 1 120
-done
-
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((5+$i))
- api_equal json:policy-types?ric_id=ric$ricid 2 120
-done
-
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- ricid=$((1+$i))
- api_equal json:policy-types?ric_id=ric$ricid 2 120
-done
-
-#Check the schemas in STD 2
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- ricid=$((5+$i))
- api_get_policy_type 200 STD_QOS_0_2_0 testdata/STD2/qos-agent-modified.json
- api_get_policy_type 200 STD_QOS2_0.1.0 testdata/STD2/qos2-agent-modified.json
-done
-
-# Check the schemas in OSC
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- api_get_policy_type 200 1 testdata/OSC/1-agent-modified.json
- api_get_policy_type 200 2 testdata/OSC/2-agent-modified.json
-done
-
-if [ "$PMS_VERSION" == "V2" ]; then
-
- api_equal json:policy-types 5 120
-
- api_equal json:policies 0
-
- api_equal json:policy-instances 0
-else
-
- api_equal json:policy_schemas 5 120
-
- api_equal json:policy_types 5
-
- api_equal json:policies 0
-
- api_equal json:policy_ids 0
-fi
-
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/ER-app"
-
-# Create policies in STD
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((3+$i))
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
-done
-
-#Create policies in STD 2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- ricid=$((5+$i))
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos_template.json 1
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos2_template.json 1
-done
-
-# Create policies in OSC
-for ((i=0; i<$OSC_NUM_RICS; i++))
-do
- ricid=$((1+$i))
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi1_template.json 1
- generate_policy_uuid
- api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi2_template.json 1
-done
-
-
-# Check the number of policies in STD and STD2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_equal "a1-sim-std-"$i num_instances 2
- sim_equal "a1-sim-std2-"$i num_instances 2
-done
-
-# Check the number of policies in OSC
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_equal "a1-sim-osc-"$i num_instances 2
-done
-
-stop_policy_agent
-
-start_stopped_policy_agent
-
-# Check PMS state after restart
-
-sleep_wait 200
-
-if [ "$PMS_VERSION" == "V2" ]; then
-
- api_equal json:policy-types 5 120
-
- api_equal json:policies 12
-
- api_equal json:policy-instances 12
-else
-
- api_equal json:policy_schemas 5 120
-
- api_equal json:policy_types 5
-
- api_equal json:policies 12
-
- api_equal json:policy_ids 12
-fi
-
-# Check the number of policies in STD and STD2
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_equal "a1-sim-std-"$i num_instances 2
- sim_equal "a1-sim-std2-"$i num_instances 2
-done
-
-# Check the number of policies in OSC
-for ((i=0; i<$STD_NUM_RICS; i++))
-do
- sim_equal "a1-sim-osc-"$i num_instances 2
-done
-
-
-echo "ADD EVENT/STATUS CHECK"
-echo "ADD MR CHECK"
-
-FLAT_A1_EI="1"
-
-ecs_api_admin_reset
-
-CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
-CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
-TARGET1="$RIC_SIM_HTTPX://a1-sim-std2-0.a1-sim:$RIC_SIM_PORT/datadelivery"
-TARGET2="$RIC_SIM_HTTPX://a1-sim-std2-1.a1-sim:$RIC_SIM_PORT/datadelivery"
-
-STATUS1="$CR_SERVICE_PATH/job1-status"
-STATUS2="$CR_SERVICE_PATH/job2-status"
-
-prodstub_arm_producer 200 prod-a
-prodstub_arm_type 200 prod-a type1
-prodstub_arm_job_create 200 prod-a job1
-prodstub_arm_job_create 200 prod-a job2
-
-
-### ecs status
-ecs_api_service_status 200
-
-## Setup prod-a
-if [ $ECS_VERSION == "V1-1" ]; then
- ecs_api_edp_put_producer 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
-
- ecs_api_edp_get_producer 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
-else
- ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json
- ecs_api_edp_get_type_2 200 type1
- ecs_api_edp_get_type_ids 200 type1
-
- ecs_api_edp_put_producer_2 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
- ecs_api_edp_put_producer_2 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
-fi
-
-ecs_api_edp_get_producer_status 200 prod-a ENABLED
-
-
-## Create a job for prod-a
-## job1 - prod-a
-if [ -z "$FLAT_A1_EI" ]; then
- ecs_api_a1_put_job 201 type1 job1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
-else
- ecs_api_a1_put_job 201 job1 type1 $TARGET1 ricsim_g3_1 $STATUS1 testdata/ecs/job-template.json
-fi
-
-# Check the job data in the producer
-if [ $ECS_VERSION == "V1-1" ]; then
- prodstub_check_jobdata 200 prod-a job1 type1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
-else
- if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPES"* ]]; then
- prodstub_check_jobdata_3 200 prod-a job1 type1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
- else
- prodstub_check_jobdata_2 200 prod-a job1 type1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
- fi
-fi
-
-## Create a second job for prod-a
-## job2 - prod-a
-if [ -z "$FLAT_A1_EI" ]; then
- ecs_api_a1_put_job 201 type1 job2 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
-else
- ecs_api_a1_put_job 201 job2 type1 $TARGET2 ricsim_g3_2 $STATUS2 testdata/ecs/job-template.json
-fi
-
-# Check the job data in the producer
-if [ $ECS_VERSION == "V1-1" ]; then
- prodstub_check_jobdata 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
-else
- if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPES"* ]]; then
- prodstub_check_jobdata_3 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
- else
- prodstub_check_jobdata_2 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
- fi
-fi
-
-stop_ecs
-
-start_stopped_ecs
-
-# Check ECS status after restart
-
-if [ -z "$FLAT_A1_EI" ]; then
- ecs_api_a1_get_job_status 200 type1 job1 DISABLED
- ecs_api_a1_get_job_status 200 type1 job2 DISABLED
-else
- ecs_api_a1_get_job_status 200 job1 DISABLED
- ecs_api_a1_get_job_status 200 job2 DISABLED
-fi
-
-check_policy_agent_logs
-check_ecs_logs
-check_sdnc_logs
-
-#### TEST COMPLETE ####
-
-store_logs END
-
-print_result
diff --git a/test/auto-test/ONAP_UC.sh b/test/auto-test/ONAP_UC.sh
index 1edefbd..15b5c5b 100755
--- a/test/auto-test/ONAP_UC.sh
+++ b/test/auto-test/ONAP_UC.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="ONAP Use case REQ-626"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -62,7 +62,7 @@
use_mr_https
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
echo "Version V2 of PMS is needed, exiting..."
exit 1
@@ -82,9 +82,7 @@
clean_environment
- if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
- fi
+ start_kube_proxy
if [[ $interface = *"DMAAP"* ]]; then
use_agent_dmaap_https
@@ -213,7 +211,7 @@
# Create policies
use_agent_rest_http
- api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
+ api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
# Create policies in OSC
for ((i=1; i<=$OSC_NUM_RICS; i++))
diff --git a/test/auto-test/PM_DEMO.sh b/test/auto-test/PM_DEMO.sh
index 845617c..20a02cb 100755
--- a/test/auto-test/PM_DEMO.sh
+++ b/test/auto-test/PM_DEMO.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Preparation demo setup - populating a number of ric simulators with types and instances"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC NGW KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
@@ -61,16 +61,14 @@
use_simulator_https
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
notificationurl=""
fi
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
OSC_NUM_RICS=6
STD_NUM_RICS=5
@@ -212,7 +210,7 @@
# Create policies
use_agent_rest_http
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
# Create policies in OSC
for ((i=1; i<=$OSC_NUM_RICS; i++))
diff --git a/test/auto-test/PM_EI_DEMO.sh b/test/auto-test/PM_EI_DEMO.sh
index 15e7377..c93a6d7 100755
--- a/test/auto-test/PM_EI_DEMO.sh
+++ b/test/auto-test/PM_EI_DEMO.sh
@@ -20,7 +20,7 @@
TC_ONELINE_DESCR="Preparation demo setup - policy management and enrichment information"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC ECS PRODSTUB RC HTTPPROXY NGW"
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC ECS PRODSTUB RC HTTPPROXY KUBEPROXY NGW"
#App names to include in the test when running kubernetes, space separated list
KUBE_INCLUDED_IMAGES=" MR CR PA RC PRODSTUB RICSIM CP ECS SDNC HTTPPROXY KUBEPROXY NGW"
@@ -73,7 +73,7 @@
if [ "$PMS_VERSION" == "V2" ]; then
- notificationurl=$CR_SERVICE_PATH"/test"
+ notificationurl=$CR_SERVICE_APP_PATH"/test"
else
echo "PMS VERSION 2 (V2) is required"
exit 1
@@ -81,9 +81,7 @@
clean_environment
-if [ $RUNMODE == "KUBE" ]; then
- start_kube_proxy
-fi
+start_kube_proxy
STD_NUM_RICS=2
@@ -170,7 +168,7 @@
#Check the number of types
api_equal json:policy-types 2 300
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
# Create policies in STD
for ((i=1; i<=$STD_NUM_RICS; i++))
@@ -207,8 +205,8 @@
TARGET1="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
TARGET2="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
-STATUS1="$CR_SERVICE_PATH/callbacks/job1-status"
-STATUS2="$CR_SERVICE_PATH/callbacks/job2-status"
+STATUS1="$CR_SERVICE_APP_PATH/callbacks/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH/callbacks/job2-status"
prodstub_arm_producer 200 prod-a
prodstub_arm_type 200 prod-a type1
diff --git a/test/auto-test/README.md b/test/auto-test/README.md
index c97f2ab..1f8ef5d 100644
--- a/test/auto-test/README.md
+++ b/test/auto-test/README.md
@@ -42,12 +42,15 @@
ORAN D-RELEASE
=========
->```./PM_EI_DEMO.sh remote-remove docker --env-file ../common/test_env-oran-d-release.sh --use-release-image SDNC```
+>```./PM_EI_DEMO.sh remote-remove docker release --env-file ../common/test_env-oran-d-release.sh --use-release-image SDNC```
->```./PM_EI_DEMO.sh remote-remove kube --env-file ../common/test_env-oran-d-release.sh --use-release-image SDNC```
+>```./PM_EI_DEMO.sh remote-remove kube release --env-file ../common/test_env-oran-d-release.sh --use-release-image SDNC```
-Note that D-Release has not updated the SDNC so cherry release is used<br>
-Note: When D-Release is released, add the 'release' arg to run released images.
+ORAN E-RELEASE
+=========
+>```./PM_EI_DEMO.sh remote-remove docker --env-file ../common/test_env-oran-e-release.sh```
+
+>```./PM_EI_DEMO.sh remote-remove kube --env-file ../common/test_env-oran-e-release.sh```
ONAP GUILIN
===========
@@ -65,9 +68,9 @@
ONAP ISTANBUL
=============
->```./PM_EI_DEMO.sh remote-remove docker --env-file ../common/test_env-onap-istanbul.sh```
+>```./PM_EI_DEMO.sh remote-remove docker release --env-file ../common/test_env-onap-istanbul.sh```
->```./PM_EI_DEMO.sh remote-remove kube --env-file ../common/test_env-onap-istanbul.sh```
+>```./PM_EI_DEMO.sh remote-remove kube release --env-file ../common/test_env-onap-istanbul.sh```
Note: When istanbul is released, add the 'release' arg to run released images.
@@ -86,6 +89,14 @@
900-999 - Misc test
+11XX - ECS API Tests
+
+18XX - ECS Stability and capacity test
+
+2000 - Southbound http proxy tests
+
+30XX - rApp tests
+
Suites
To get an overview of the available test scripts, use the following command to print the test script description:
diff --git a/test/auto-test/override_ftc_helm_e_release.sh b/test/auto-test/override_ftc_helm_e_release.sh
new file mode 100644
index 0000000..c23a310
--- /dev/null
+++ b/test/auto-test/override_ftc_helm_e_release.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+################################################################################
+# Copyright (c) 2021 Nordix Foundation. #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+################################################################################
+
+# Override file example
+
+KUBE_A1SIM_NAMESPACE="a1-sim"
+
+RIC_SIM_PREFIX="a1-sim"
diff --git a/test/auto-test/startMR.sh b/test/auto-test/startMR.sh
index ec1e062..47b4514 100755
--- a/test/auto-test/startMR.sh
+++ b/test/auto-test/startMR.sh
@@ -21,20 +21,20 @@
TC_ONELINE_DESCR="Starts DMAAP MR"
#App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="MR DMAAPMR"
+DOCKER_INCLUDED_IMAGES="MR DMAAPMR KUBEPROXY"
#App names to include in the test when running kubernetes, space separated list
-KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
+KUBE_INCLUDED_IMAGES="MR DMAAPMR KUBEPROXY"
#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
KUBE_PRESTARTED_IMAGES=""
#Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
#the image is not configured in the supplied env_file
#Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="NGW"
+CONDITIONALLY_IGNORED_IMAGES=""
#Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE"
+SUPPORTED_PROFILES="ONAP-HONOLULU ONAP-ISTANBUL ORAN-D-RELEASE ORAN-E-RELEASE"
#Supported run modes
SUPPORTED_RUNMODES="DOCKER KUBE"
@@ -55,10 +55,13 @@
#### TEST BEGIN ####
clean_environment
+start_kube_proxy
start_mr
-docker kill mr-stub
+if [ $RUNMODE == "KUBE" ]; then
+ :
+else
+ docker kill $MR_STUB_APP_NAME
+fi
-print_result
-
diff --git a/test/auto-test/testdata/dmaap-adapter/job-template.json b/test/auto-test/testdata/dmaap-adapter/job-template.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/test/auto-test/testdata/dmaap-adapter/job-template.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/common/README.md b/test/common/README.md
index 6c277bd..18b9656 100644
--- a/test/common/README.md
+++ b/test/common/README.md
@@ -151,6 +151,8 @@
| `-repo-policy` | Policy controlling which images to re-tag and push to image repo in param --image-repo. Can be set to 'local' (push on locally built images) or 'remote' (push locally built images and images from nexus repo). Default is 'local' |
| `--cluster-timeout` | Optional timeout for cluster where it takes time to obtain external ip/host-name. Timeout in seconds |
| `--print-stats` | Prints the number of tests, failed tests, failed configuration and deviations after each individual test or config |
+| `--override <file>` | Override setting from the file supplied by --env-file |
+| `--pre-clean` | Clean kube resouces when running docker and vice versa |
| `help` | Print this info along with the test script description and the list of app short names supported |
## Function: setup_testenvironment ##
diff --git a/test/common/agent_api_functions.sh b/test/common/agent_api_functions.sh
index 767abb9..a1fd657 100644
--- a/test/common/agent_api_functions.sh
+++ b/test/common/agent_api_functions.sh
@@ -64,7 +64,7 @@
# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
# This function is called for prestarted apps not managed by the test script.
__PA_kube_scale_zero_and_wait() {
- __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-policymanagementservice
+ __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app "$KUBE_NONRTRIC_NAMESPACE"-policymanagementservice
}
# Delete all kube resouces for the app
@@ -77,65 +77,45 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__PA_store_docker_logs() {
- docker logs $POLICY_AGENT_APP_NAME > $1$2_policy-agent.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=PA" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_policy-agent.log 2>&1
+ else
+ docker logs $POLICY_AGENT_APP_NAME > $1$2_policy-agent.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__PA_initial_setup() {
+ use_agent_rest_http
}
#######################################################
-## Access to Policy agent
-# Host name may be changed if app started by kube
-# Direct access from script
-PA_HTTPX="http"
-PA_HOST_NAME=$LOCALHOST_NAME
-PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_PORT
-
-# PA_ADAPTER used for switch between REST and DMAAP
-PA_ADAPTER_TYPE="REST"
-PA_ADAPTER=$PA_PATH
-
-# Make curl retries towards the agent for http response codes set in this env var, space separated list of codes
-AGENT_RETRY_CODES=""
-
-#Save first worker node the pod is started on
-__PA_WORKER_NODE=""
-
###########################
### Policy Agents functions
###########################
-# All calls to the agent will be directed to the agent REST interface from now on
+# Set http as the protocol to use for all communication to the Policy Agent
# args: -
# (Function for test scripts)
use_agent_rest_http() {
- echo -e $BOLD"Agent protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD and $BOLD REST $EBOLD towards the agent"
- PA_HTTPX="http"
- PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_PORT
-
- PA_ADAPTER_TYPE="REST"
- PA_ADAPTER=$PA_PATH
- echo ""
+ __agent_set_protocoll "http" $POLICY_AGENT_INTERNAL_PORT $POLICY_AGENT_EXTERNAL_PORT
}
-# All calls to the agent will be directed to the agent REST interface from now on
+# Set https as the protocol to use for all communication to the Policy Agent
# args: -
# (Function for test scripts)
use_agent_rest_https() {
- echo -e $BOLD"Agent protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards the agent"
- PA_HTTPX="https"
- PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_SECURE_PORT
-
- PA_ADAPTER_TYPE="REST"
- PA_ADAPTER=$PA_PATH
- echo ""
+ __agent_set_protocoll "https" $POLICY_AGENT_INTERNAL_SECURE_PORT $POLICY_AGENT_EXTERNAL_SECURE_PORT
}
# All calls to the agent will be directed to the agent dmaap interface over http from now on
# args: -
# (Function for test scripts)
use_agent_dmaap_http() {
- echo -e $BOLD"Agent dmaap protocol setting"$EBOLD
+ echo -e $BOLD"$POLICY_AGENT_DISPLAY_NAME dmaap protocol setting"$EBOLD
echo -e " Using $BOLD http $EBOLD and $BOLD DMAAP $EBOLD towards the agent"
PA_ADAPTER_TYPE="MR-HTTP"
echo ""
@@ -145,13 +125,88 @@
# args: -
# (Function for test scripts)
use_agent_dmaap_https() {
- echo -e $BOLD"Agent dmaap protocol setting"$EBOLD
+ echo -e $BOLD"$POLICY_AGENT_DISPLAY_NAME dmaap protocol setting"$EBOLD
echo -e " Using $BOLD https $EBOLD and $BOLD DMAAP $EBOLD towards the agent"
echo -e $YELLOW" Setting http instead of https - MR only uses http"$EYELLOW
PA_ADAPTER_TYPE="MR-HTTPS"
echo ""
}
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__agent_set_protocoll() {
+ echo -e $BOLD"$POLICY_AGENT_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $POLICY_AGENT_DISPLAY_NAME"
+
+ ## Access to Dmaap adapter
+
+ PA_SERVICE_PATH=$1"://"$POLICY_AGENT_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ if [ $RUNMODE == "KUBE" ]; then
+ PA_SERVICE_PATH=$1"://"$POLICY_AGENT_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ fi
+
+ # PA_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+ PA_ADAPTER_TYPE="REST"
+ PA_ADAPTER=$PA_SERVICE_PATH
+
+ echo ""
+}
+
+# Make curl retries towards the agent for http response codes set in this env var, space separated list of codes
+AGENT_RETRY_CODES=""
+
+#Save first worker node the pod is started on
+__PA_WORKER_NODE=""
+
+# Export env vars for config files, docker compose and kube resources
+# args: PROXY|NOPROXY
+__export_agent_vars() {
+
+ export POLICY_AGENT_APP_NAME
+ export POLICY_AGENT_APP_NAME_ALIAS
+ export POLICY_AGENT_DISPLAY_NAME
+
+ export KUBE_NONRTRIC_NAMESPACE
+ export POLICY_AGENT_IMAGE
+ export POLICY_AGENT_INTERNAL_PORT
+ export POLICY_AGENT_INTERNAL_SECURE_PORT
+ export POLICY_AGENT_EXTERNAL_PORT
+ export POLICY_AGENT_EXTERNAL_SECURE_PORT
+ export POLICY_AGENT_CONFIG_MOUNT_PATH
+ export POLICY_AGENT_DATA_MOUNT_PATH
+ export POLICY_AGENT_CONFIG_CONFIGMAP_NAME=$POLICY_AGENT_APP_NAME"-config"
+ export POLICY_AGENT_DATA_CONFIGMAP_NAME=$POLICY_AGENT_APP_NAME"-data"
+ export POLICY_AGENT_PKG_NAME
+ export CONSUL_HOST
+ export CONSUL_INTERNAL_PORT
+ export CONFIG_BINDING_SERVICE
+ export POLICY_AGENT_CONFIG_KEY
+ export DOCKER_SIM_NWNAME
+ export POLICY_AGENT_HOST_MNT_DIR
+ export POLICY_AGENT_CONFIG_FILE
+
+ export POLICY_AGENT_DATA_PV_NAME=$POLICY_AGENT_APP_NAME"-pv"
+ export POLICY_AGENT_DATA_PVC_NAME=$POLICY_AGENT_APP_NAME"-pvc"
+ ##Create a unique path for the pv each time to prevent a previous volume to be reused
+ export POLICY_AGENT_PV_PATH="padata-"$(date +%s)
+ export POLICY_AGENT_CONTAINER_MNT_DIR
+
+ if [ $1 == "PROXY" ]; then
+ export AGENT_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
+ export AGENT_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
+ if [ $AGENT_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$AGENT_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
+ echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
+ else
+ echo " Configured with http proxy"
+ fi
+ else
+ export AGENT_HTTP_PROXY_CONFIG_PORT=0
+ export AGENT_HTTP_PROXY_CONFIG_HOST_NAME=""
+ echo " Configured without http proxy"
+ fi
+}
+
+
# Start the policy agent
# args: (docker) PROXY|NOPROXY <config-file>
# args: (kube) PROXY|NOPROXY <config-file> [ <data-file>]
@@ -194,42 +249,7 @@
#Check if nonrtric namespace exists, if not create it
__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
- #Export all vars needed for service and deployment
- export POLICY_AGENT_APP_NAME
- export KUBE_NONRTRIC_NAMESPACE
- export POLICY_AGENT_IMAGE
- export POLICY_AGENT_INTERNAL_PORT
- export POLICY_AGENT_INTERNAL_SECURE_PORT
- export POLICY_AGENT_EXTERNAL_PORT
- export POLICY_AGENT_EXTERNAL_SECURE_PORT
- export POLICY_AGENT_CONFIG_MOUNT_PATH
- export POLICY_AGENT_DATA_MOUNT_PATH
- export POLICY_AGENT_CONFIG_CONFIGMAP_NAME=$POLICY_AGENT_APP_NAME"-config"
- export POLICY_AGENT_DATA_CONFIGMAP_NAME=$POLICY_AGENT_APP_NAME"-data"
- export POLICY_AGENT_PKG_NAME
-
- export POLICY_AGENT_DATA_PV_NAME=$POLICY_AGENT_APP_NAME"-pv"
- export POLICY_AGENT_DATA_PVC_NAME=$POLICY_AGENT_APP_NAME"-pvc"
- ##Create a unique path for the pv each time to prevent a previous volume to be reused
- export POLICY_AGENT_PV_PATH="padata-"$(date +%s)
- export POLICY_AGENT_CONTAINER_MNT_DIR
-
- if [ $1 == "PROXY" ]; then
- AGENT_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
- AGENT_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
- if [ $AGENT_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$AGENT_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
- echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
- else
- echo " Configured with http proxy"
- fi
- else
- AGENT_HTTP_PROXY_CONFIG_PORT=0
- AGENT_HTTP_PROXY_CONFIG_HOST_NAME=""
- echo " Configured without http proxy"
- fi
- export AGENT_HTTP_PROXY_CONFIG_PORT
- export AGENT_HTTP_PROXY_CONFIG_HOST_NAME
-
+ __export_agent_vars $1
# Create config map for config
configfile=$PWD/tmp/$POLICY_AGENT_CONFIG_FILE
@@ -280,23 +300,8 @@
echo -e $YELLOW" Persistency may not work for app $POLICY_AGENT_APP_NAME in multi-worker node config when running it as a prestarted app"$EYELLOW
fi
- echo " Retrieving host and ports for service..."
- PA_HOST_NAME=$(__kube_get_service_host $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
- POLICY_AGENT_EXTERNAL_PORT=$(__kube_get_service_port $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
- POLICY_AGENT_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+ __check_service_start $POLICY_AGENT_APP_NAME $PA_SERVICE_PATH$POLICY_AGENT_ALIVE_URL
- echo " Host IP, http port, https port: $PA_HOST_NAME $POLICY_AGENT_EXTERNAL_PORT $POLICY_AGENT_EXTERNAL_SECURE_PORT"
-
- if [ $PA_HTTPX == "http" ]; then
- PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_PORT
- else
- PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_SECURE_PORT
- fi
- __check_service_start $POLICY_AGENT_APP_NAME $PA_PATH$POLICY_AGENT_ALIVE_URL
-
- if [ $PA_ADAPTER_TYPE == "REST" ]; then
- PA_ADAPTER=$PA_PATH
- fi
else
__check_included_image 'PA'
if [ $? -eq 1 ]; then
@@ -324,40 +329,7 @@
fi
cd $curdir
- #Export all vars needed for docker-compose
- export POLICY_AGENT_APP_NAME
- export POLICY_AGENT_APP_NAME_ALIAS
- export POLICY_AGENT_INTERNAL_PORT
- export POLICY_AGENT_EXTERNAL_PORT
- export POLICY_AGENT_INTERNAL_SECURE_PORT
- export POLICY_AGENT_EXTERNAL_SECURE_PORT
- export CONSUL_HOST
- export CONSUL_INTERNAL_PORT
- export CONFIG_BINDING_SERVICE
- export POLICY_AGENT_CONFIG_KEY
- export DOCKER_SIM_NWNAME
- export POLICY_AGENT_HOST_MNT_DIR
- export POLICY_AGENT_CONFIG_MOUNT_PATH
- export POLICY_AGENT_CONFIG_FILE
- export POLICY_AGENT_PKG_NAME
- export POLICY_AGENT_DISPLAY_NAME
- export POLICY_AGENT_CONTAINER_MNT_DIR
-
- if [ $1 == "PROXY" ]; then
- AGENT_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
- AGENT_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
- if [ $AGENT_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$AGENT_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
- echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
- else
- echo " Configured with http proxy"
- fi
- else
- AGENT_HTTP_PROXY_CONFIG_PORT=0
- AGENT_HTTP_PROXY_CONFIG_HOST_NAME=""
- echo " Configured without http proxy"
- fi
- export AGENT_HTTP_PROXY_CONFIG_PORT
- export AGENT_HTTP_PROXY_CONFIG_HOST_NAME
+ __export_agent_vars $1
dest_file=$SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/$POLICY_AGENT_HOST_MNT_DIR/application.yaml
@@ -365,7 +337,7 @@
__start_container $POLICY_AGENT_COMPOSE_DIR "" NODOCKERARGS 1 $POLICY_AGENT_APP_NAME
- __check_service_start $POLICY_AGENT_APP_NAME $PA_PATH$POLICY_AGENT_ALIVE_URL
+ __check_service_start $POLICY_AGENT_APP_NAME $PA_SERVICE_PATH$POLICY_AGENT_ALIVE_URL
fi
echo ""
return 0
@@ -422,7 +394,7 @@
echo -e $YELLOW" Persistency may not work for app $POLICY_AGENT_APP_NAME in multi-worker node config when running it as a prestarted app"$EYELLOW
res_type=$(__kube_get_resource_type $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
__kube_scale $res_type $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
- __check_service_start $POLICY_AGENT_APP_NAME $PA_PATH$POLICY_AGENT_ALIVE_URL
+ __check_service_start $POLICY_AGENT_APP_NAME $PA_SERVICE_PATH$POLICY_AGENT_ALIVE_URL
return 0
fi
@@ -450,7 +422,7 @@
return 1
fi
fi
- __check_service_start $POLICY_AGENT_APP_NAME $PA_PATH$POLICY_AGENT_ALIVE_URL
+ __check_service_start $POLICY_AGENT_APP_NAME $PA_SERVICE_PATH$POLICY_AGENT_ALIVE_URL
if [ $? -ne 0 ]; then
return 1
fi
@@ -476,7 +448,7 @@
# (Function for test scripts)
set_agent_debug() {
echo -e $BOLD"Setting agent debug logging"$EBOLD
- curlString="$PA_PATH$POLICY_AGENT_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
+ curlString="$PA_SERVICE_PATH$POLICY_AGENT_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
__print_err "could not set debug mode" $@
@@ -492,7 +464,7 @@
# (Function for test scripts)
set_agent_trace() {
echo -e $BOLD"Setting agent trace logging"$EBOLD
- curlString="$PA_PATH$POLICY_AGENT_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
+ curlString="$PA_SERVICE_PATH$POLICY_AGENT_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
__print_err "could not set trace mode" $@
@@ -533,9 +505,9 @@
if [ $# -eq 2 ] || [ $# -eq 3 ]; then
if [[ $1 == "json:"* ]]; then
if [ "$PMS_VERSION" == "V2" ]; then
- __var_test "Policy Agent" $PA_PATH$PMS_API_PREFIX"/v2/" $1 "=" $2 $3
+ __var_test "Policy Agent" $PA_SERVICE_PATH$PMS_API_PREFIX"/v2/" $1 "=" $2 $3
else
- __var_test "Policy Agent" $PA_PATH"/" $1 "=" $2 $3
+ __var_test "Policy Agent" $PA_SERVICE_PATH"/" $1 "=" $2 $3
fi
return 0
fi
@@ -1071,10 +1043,8 @@
urlbase=${PA_ADAPTER}${query}
httpproxy="NOPROXY"
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- httpproxy=$KUBE_PROXY_PATH
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ httpproxy=$KUBE_PROXY_PATH
fi
for ((i=1; i<=$pids; i++))
@@ -1266,10 +1236,8 @@
urlbase=${PA_ADAPTER}${query}
httpproxy="NOPROXY"
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- httpproxy=$KUBE_PROXY_PATH
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ httpproxy=$KUBE_PROXY_PATH
fi
for ((i=1; i<=$pids; i++))
@@ -2208,12 +2176,12 @@
pms_kube_pvc_reset() {
__log_test_start $@
- pvc_name=$(kubectl get pvc -n nonrtric --no-headers -o custom-columns=":metadata.name" | grep policy)
+ pvc_name=$(kubectl get pvc -n $KUBE_NONRTRIC_NAMESPACE --no-headers -o custom-columns=":metadata.name" | grep policy)
if [ -z "$pvc_name" ]; then
pvc_name=policymanagementservice-vardata-pvc
fi
echo " Trying to reset pvc: "$pvc_name
- __kube_clean_pvc $POLICY_AGENT_APP_NAME nonrtric $pvc_name /var/policy-management-service/database
+ __kube_clean_pvc $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE $pvc_name $POLICY_AGENT_CONTAINER_MNT_DIR
__log_test_pass
return 0
diff --git a/test/common/api_curl.sh b/test/common/api_curl.sh
index 615ccab..17f80a5 100644
--- a/test/common/api_curl.sh
+++ b/test/common/api_curl.sh
@@ -29,15 +29,14 @@
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo " (${BASH_LINENO[0]}) - ${TIMESTAMP}: ${FUNCNAME[0]}" $@ >> $HTTPLOG
proxyflag=""
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- if [ $KUBE_PROXY_HTTPX == "http" ]; then
- proxyflag=" --proxy $KUBE_PROXY_PATH"
- else
- proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ proxyflag=" --proxy $KUBE_PROXY_PATH"
+ else
+ proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
fi
fi
+
paramError=0
input_url=$3
if [ $# -gt 0 ]; then
@@ -64,6 +63,18 @@
__ADAPTER=$NGW_ADAPTER
__ADAPTER_TYPE=$NGW_ADAPTER_TYPE
__RETRY_CODES=""
+ elif [ $1 == "DMAAPADP" ]; then
+ __ADAPTER=$DMAAP_ADP_ADAPTER
+ __ADAPTER_TYPE=$DMAAP_ADP_ADAPTER_TYPE
+ __RETRY_CODES=""
+ elif [ $1 == "DMAAPMED" ]; then
+ __ADAPTER=$DMAAP_MED_ADAPTER
+ __ADAPTER_TYPE=$DMAAP_MED_ADAPTER_TYPE
+ __RETRY_CODES=""
+ elif [ $1 == "MRSTUB" ]; then
+ __ADAPTER=$MR_STUB_ADAPTER
+ __ADAPTER_TYPE=$MR_STUB_ADAPTER_TYPE
+ __RETRY_CODES=""
else
paramError=1
fi
@@ -104,8 +115,9 @@
elif [ $2 == "POST" ] || [ $2 == "POST_BATCH" ]; then
oper="POST"
accept=" -H accept:*/*"
- if [ $# -ne 3 ]; then
- paramError=1
+ if [ $# -eq 4 ]; then
+ file=" --data-binary @$4"
+ accept=" -H accept:application/json"
fi
elif [ $2 == "DELETE" ] || [ $2 == "DELETE_BATCH" ]; then
oper="DELETE"
diff --git a/test/common/clean_docker.sh b/test/common/clean_docker.sh
new file mode 100755
index 0000000..70e42da
--- /dev/null
+++ b/test/common/clean_docker.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2021 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+
+# Script to clean all docker containers having the label 'nrttest_app', i.e started by autotest
+
+echo "Will stop and remove all docker containers with label 'nrttest_app'"
+echo " Stopping containers..."
+docker stop $(docker ps -qa --filter "label=nrttest_app") 2> /dev/null
+echo " Removing stopped containers..."
+docker rm $(docker ps -qa --filter "label=nrttest_app") 2> /dev/null
+
+echo "Done"
\ No newline at end of file
diff --git a/test/common/clean_kube.sh b/test/common/clean_kube.sh
index 8e2f676..405c194 100755
--- a/test/common/clean_kube.sh
+++ b/test/common/clean_kube.sh
@@ -28,64 +28,164 @@
EYELLOW="\033[0m"
SAMELINE="\033[0K\r"
-__kube_delete_all_resources() {
- echo "Deleting all from namespace: "$1
+__kube_scale_all_resources() {
+
+ echo " Scaling down in namespace $1 ..."
namespace=$1
- resources="deployments replicaset statefulset services pods configmaps pvc pv"
- deleted_resourcetypes=""
+ resources="deployment replicaset statefulset"
for restype in $resources; do
result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
if [ $? -eq 0 ] && [ ! -z "$result" ]; then
- deleted_resourcetypes=$deleted_resourcetypes" "$restype
for resid in $result; do
- if [ $restype == "replicaset" ] || [ $restype == "statefulset" ]; then
- kubectl scale $restype $resid -n $namespace --replicas=0 1> /dev/null 2> /dev/null
- T_START=$SECONDS
- count=1
- while [ $count -ne 0 ]; do
- count=$(kubectl get $restype $resid -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
- echo -ne " Scaling $restype $resid from namespace $namespace with label autotest to 0,count=$count....$(($SECONDS-$T_START)) seconds"$SAMELINE
- if [ $? -eq 0 ] && [ ! -z "$count" ]; then
- sleep 0.5
- else
- count=0
- fi
- done
- echo -e " Scaled $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count....$(($SECONDS-$T_START)) seconds$GREEN OK $EGREEN"
+ count=$(kubectl get $restype $resid -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
+ if [ $? -eq 0 ] && [ ! -z "$count" ]; then
+ if [ $count -ne 0 ]; then
+ echo " Scaling $restype $resid in namespace $namespace with label autotest to 0, current count=$count."
+ kubectl scale $restype $resid -n $namespace --replicas=0 1> /dev/null 2> /dev/null
+ fi
fi
- echo -ne " Deleting $restype $resid from namespace $namespace with label autotest "$SAMELINE
- kubectl delete $restype $resid -n $namespace 1> /dev/null 2> /dev/null
- if [ $? -eq 0 ]; then
- echo -e " Deleted $restype $resid from namespace $namespace with label autotest $GREEN OK $EGREEN"
- else
- echo -e " Deleted $restype $resid from namespace $namespace with label autotest $GREEN Does not exist - OK $EGREEN"
- fi
- #fi
done
fi
done
- if [ ! -z "$deleted_resourcetypes" ]; then
- for restype in $deleted_resources; do
- echo -ne " Waiting for $restype in namespace $namespace with label autotest to be deleted..."$SAMELINE
- T_START=$SECONDS
- result="dummy"
- while [ ! -z "$result" ]; do
- sleep 0.5
- result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
- echo -ne " Waiting for $restype in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
- if [ -z "$result" ]; then
- echo -e " Waiting for $restype in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
- elif [ $(($SECONDS-$T_START)) -gt 300 ]; then
- echo -e " Waiting for $restype in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
- result=""
+}
+
+__kube_wait_for_zero_count() {
+ echo " Wait for scaling to zero in namespace $1 ..."
+ namespace=$1
+ resources="deployment replicaset statefulset"
+ for restype in $resources; do
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+ for resid in $result; do
+ T_START=$SECONDS
+ count=1
+ scaled=0
+ while [ $count -gt 0 ]; do
+ count=$(kubectl get $restype $resid -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
+ if [ $? -eq 0 ] && [ ! -z "$count" ]; then
+ if [ $count -ne 0 ]; then
+ echo -ne " Scaling $restype $resid in namespace $namespace with label autotest to 0, current count=$count....$(($SECONDS-$T_START)) seconds"$SAMELINE
+ scaled=1
+ else
+ sleep 0.5
+ fi
+ else
+ count=0
+ fi
+ done
+ if [ $scaled -eq 1 ]; then
+ echo -e " Scaling $restype $resid in namespace $namespace with label autotest to 0, current count=$count....$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
fi
done
- done
- fi
+ fi
+ done
}
-echo "Will remove all kube resources marked with label 'autotest'"
-__kube_delete_all_resources nonrtric
-__kube_delete_all_resources nonrtric-ft
-__kube_delete_all_resources onap
+__kube_delete_all_resources() {
+ echo " Delete all in namespace $1 ..."
+ namespace=$1
+ resources="deployments replicaset statefulset services pods configmaps pvc "
+ for restype in $resources; do
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+ for resid in $result; do
+ echo " Deleting $restype $resid in namespace $namespace with label autotest "
+ kubectl delete $restype $resid -n $namespace 1> /dev/null 2> /dev/null
+ done
+ fi
+ done
+}
+
+__kube_delete_all_pv() {
+ echo " Delete pv ..."
+ resources="pv"
+ for restype in $resources; do
+ result=$(kubectl get $restype -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+ for resid in $result; do
+ echo " Deleting $restype $resid with label autotest "
+ kubectl delete $restype $resid 1> /dev/null 2> /dev/null
+ done
+ fi
+ done
+}
+
+__kube_wait_for_delete() {
+ echo " Wait for delete in namespace $1 ..."
+ namespace=$1
+ resources="deployments replicaset statefulset services pods configmaps pvc "
+ for restype in $resources; do
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+ for resid in $result; do
+ echo " Deleting $restype $resid in namespace $namespace with label autotest "
+ kubectl delete $restype $resid -n $namespace #1> /dev/null 2> /dev/null
+ echo -ne " Waiting for $restype $resid in namespace $namespace with label autotest to be deleted..."$SAMELINE
+ T_START=$SECONDS
+ result="dummy"
+ while [ ! -z "$result" ]; do
+ sleep 0.5
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ echo -ne " Waiting for $restype $resid in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
+ if [ -z "$result" ]; then
+ echo -e " Waiting for $restype $resid in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
+ elif [ $(($SECONDS-$T_START)) -gt 300 ]; then
+ echo -e " Waiting for $restype $resid in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
+ result=""
+ fi
+ done
+ done
+ fi
+ done
+}
+
+__kube_wait_for_delete_pv() {
+ echo " Wait for delete pv ..."
+ resources="pv "
+ for restype in $resources; do
+ result=$(kubectl get $restype -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+ for resid in $result; do
+ echo " Deleting $restype $resid with label autotest "
+ kubectl delete $restype $resid -n $namespace #1> /dev/null 2> /dev/null
+ echo -ne " Waiting for $restype $resid with label autotest to be deleted..."$SAMELINE
+ T_START=$SECONDS
+ result="dummy"
+ while [ ! -z "$result" ]; do
+ sleep 0.5
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+ echo -ne " Waiting for $restype $resid with label autotest to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
+ if [ -z "$result" ]; then
+ echo -e " Waiting for $restype $resid with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
+ elif [ $(($SECONDS-$T_START)) -gt 300 ]; then
+ echo -e " Waiting for $restype $resid with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
+ result=""
+ fi
+ done
+ done
+ fi
+ done
+}
+
+
+echo "Will remove all kube resources marked with label 'autotest'"
+
+# List all namespace and scale/delete per namespace
+nss=$(kubectl get ns -o jsonpath='{.items[*].metadata.name}')
+if [ ! -z "$nss" ]; then
+ for ns in $nss; do
+ __kube_scale_all_resources $ns
+ done
+ for ns in $nss; do
+ __kube_wait_for_zero_count $ns
+ done
+ for ns in $nss; do
+ __kube_delete_all_resources $ns
+ done
+ __kube_delete_all_pv
+ for ns in $nss; do
+ __kube_wait_for_delete $ns
+ done
+ __kube_wait_for_delete_pv
+fi
echo "Done"
\ No newline at end of file
diff --git a/test/common/consul_cbs_functions.sh b/test/common/consul_cbs_functions.sh
index 1b5c8a8..747eaab 100644
--- a/test/common/consul_cbs_functions.sh
+++ b/test/common/consul_cbs_functions.sh
@@ -131,21 +131,42 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__CONSUL_store_docker_logs() {
- docker logs $CONSUL_APP_NAME > $1/$2_consul.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ :
+ else
+ docker logs $CONSUL_APP_NAME > $1/$2_consul.log 2>&1
+ fi
}
# Store docker logs
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__CBS_store_docker_logs() {
- docker logs $CBS_APP_NAME > $1$2_cbs.log 2>&1
- body="$(__do_curl $LOCALHOST_HTTP:$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_APP_NAME)"
- echo "$body" > $1$2_consul_config.json 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ :
+ else
+ docker logs $CBS_APP_NAME > $1$2_cbs.log 2>&1
+ body="$(__do_curl $LOCALHOST_HTTP:$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_APP_NAME)"
+ echo "$body" > $1$2_consul_config.json 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__CONSUL_initial_setup() {
+ CONSUL_SERVICE_PATH="http://"$CONSUL_APP_NAME":"$CONSUL_INTERNAL_PORT
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__CBS_initial_setup() {
+ CBS_SERVICE_PATH="http://"$CBS_APP_NAME":"$CBS_INTERNAL_PORT
}
#######################################################
-CONSUL_PATH="http://$LOCALHOST:$CONSUL_EXTERNAL_PORT"
####################
### Consul functions
@@ -166,14 +187,15 @@
echo " Loading config for "$POLICY_AGENT_APP_NAME" from "$1
- curlString="$LOCALHOST_HTTP:${CONSUL_EXTERNAL_PORT}/v1/kv/${POLICY_AGENT_CONFIG_KEY}?dc=dc1 -X PUT -H Accept:application/json -H Content-Type:application/json -H X-Requested-With:XMLHttpRequest --data-binary @"$1
+ curlString="$CONSUL_SERVICE_PATH/v1/kv/${POLICY_AGENT_CONFIG_KEY}?dc=dc1 -X PUT -H Accept:application/json -H Content-Type:application/json -H X-Requested-With:XMLHttpRequest --data-binary @"$1
+
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
echo -e $RED" FAIL - json config could not be loaded to consul" $ERED
((RES_CONF_FAIL++))
return 1
fi
- body="$(__do_curl $LOCALHOST_HTTP:$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_CONFIG_KEY)"
+ body="$(__do_curl $CBS_SERVICE_PATH/service_component_all/$POLICY_AGENT_CONFIG_KEY)"
echo $body > "./tmp/.output"$1
if [ $? -ne 0 ]; then
@@ -254,14 +276,14 @@
config_json=$config_json"\n \"ric\": ["
if [ $RUNMODE == "KUBE" ]; then
- result=$(kubectl get pods -n $KUBE_NONRTRIC_NAMESPACE -o jsonpath='{.items[?(@.metadata.labels.autotest=="RICSIM")].metadata.name}')
+ result=$(kubectl get pods -n $KUBE_A1SIM_NAMESPACE -o jsonpath='{.items[?(@.metadata.labels.autotest=="RICSIM")].metadata.name}')
rics=""
ric_cntr=0
if [ $? -eq 0 ] && [ ! -z "$result" ]; then
for im in $result; do
if [[ $im != *"-0" ]]; then
- ric_subdomain=$(kubectl get pod $im -n $KUBE_NONRTRIC_NAMESPACE -o jsonpath='{.spec.subdomain}')
- rics=$rics" "$im"."$ric_subdomain".nonrtric"
+ ric_subdomain=$(kubectl get pod $im -n $KUBE_A1SIM_NAMESPACE -o jsonpath='{.spec.subdomain}')
+ rics=$rics" "$im"."$ric_subdomain"."$KUBE_A1SIM_NAMESPACE
let ric_cntr=ric_cntr+1
fi
done
@@ -339,8 +361,8 @@
__start_container $CONSUL_CBS_COMPOSE_DIR "" NODOCKERARGS 2 $CONSUL_APP_NAME $CBS_APP_NAME
- __check_service_start $CONSUL_APP_NAME "http://"$LOCALHOST_NAME":"$CONSUL_EXTERNAL_PORT$CONSUL_ALIVE_URL
- __check_service_start $CBS_APP_NAME "http://"$LOCALHOST_NAME":"$CBS_EXTERNAL_PORT$CBS_ALIVE_URL
+ __check_service_start $CONSUL_APP_NAME $CONSUL_SERVICE_PATH$CONSUL_ALIVE_URL
+ __check_service_start $CBS_APP_NAME $CBS_SERVICE_PATH$CBS_ALIVE_URL
echo ""
}
diff --git a/test/common/control_panel_api_functions.sh b/test/common/control_panel_api_functions.sh
index 4d96880..eda6fe3 100644
--- a/test/common/control_panel_api_functions.sh
+++ b/test/common/control_panel_api_functions.sh
@@ -78,19 +78,22 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__CP_store_docker_logs() {
- docker logs $CONTROL_PANEL_APP_NAME > $1$2_control-panel.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=CP" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_control-panel.log 2>&1
+ else
+ docker logs $CONTROL_PANEL_APP_NAME > $1$2_control-panel.log 2>&1
+ fi
}
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__CP_initial_setup() {
+ use_control_panel_http
+}
#######################################################
-## Access to control panel
-# Host name may be changed if app started by kube
-# Direct access from script
-CP_HTTPX="http"
-CP_HOST_NAME=$LOCALHOST_NAME
-CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_PORT
-
###########################
### Control Panel functions
###########################
@@ -99,24 +102,72 @@
# args: -
# (Function for test scripts)
use_control_panel_http() {
- echo -e $BOLD"Control Panel, CP, protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards CP"
- CP_HTTPX="http"
- CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_PORT
- echo ""
+ __control_panel_set_protocoll "http" $CONTROL_PANEL_INTERNAL_PORT $CONTROL_PANEL_EXTERNAL_PORT
}
# Set https as the protocol to use for all communication to the Control Panel
# args: -
# (Function for test scripts)
use_control_panel_https() {
- echo -e $BOLD"Control Panel, CP, protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards CP"
- CP_HTTPX="https"
- CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_SECURE_PORT
+ __control_panel_set_protocoll "https" $CONTROL_PANEL_INTERNAL_SECURE_PORT $CONTROL_PANEL_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__control_panel_set_protocoll() {
+ echo -e $BOLD"$CONTROL_PANEL_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $CONTROL_PANEL_DISPLAY_NAME"
+
+ CP_SERVICE_PATH=$1"://"$CONTROL_PANEL_APP_NAME":"$2
+ if [ $RUNMODE == "KUBE" ]; then
+ CP_SERVICE_PATH=$1"://"$CONTROL_PANEL_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3
+ fi
echo ""
}
+# Export env vars for config files, docker compose and kube resources
+# args: -
+__control_panel_export_vars() {
+ #Export all vars needed for service and deployment
+ export CONTROL_PANEL_APP_NAME
+ export CONTROL_PANEL_DISPLAY_NAME
+ export KUBE_NONRTRIC_NAMESPACE
+ export DOCKER_SIM_NWNAME
+
+ export CONTROL_PANEL_IMAGE
+ export CONTROL_PANEL_INTERNAL_PORT
+ export CONTROL_PANEL_INTERNAL_SECURE_PORT
+ export CONTROL_PANEL_EXTERNAL_PORT
+ export CONTROL_PANEL_EXTERNAL_SECURE_PORT
+ export CONTROL_PANEL_CONFIG_MOUNT_PATH
+ export CONTROL_PANEL_CONFIG_FILE
+ export CONTROL_PANEL_HOST_MNT_DIR
+
+ export CP_CONFIG_CONFIGMAP_NAME=$CONTROL_PANEL_APP_NAME"-config"
+ export CP_PROXY_CONFIGMAP_NAME=$CONTROL_PANEL_APP_NAME"-proxy"
+
+ export CONTROL_PANEL_PATH_POLICY_PREFIX
+ export CONTROL_PANEL_PATH_ECS_PREFIX
+ export CONTROL_PANEL_PATH_ECS_PREFIX2
+
+ export NRT_GATEWAY_APP_NAME
+ export NRT_GATEWAY_EXTERNAL_PORT
+
+ export POLICY_AGENT_EXTERNAL_SECURE_PORT
+ export ECS_EXTERNAL_SECURE_PORT
+
+ if [ $RUNMODE == "KUBE" ]; then
+ export NGW_DOMAIN_NAME=$NRT_GATEWAY_APP_NAME.$KUBE_NONRTRIC_NAMESPACE.svc.cluster.local # suffix needed for nginx name resolution
+ export CP_NGINX_RESOLVER=$CONTROL_PANEL_NGINX_KUBE_RESOLVER
+ else
+ export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME
+ export ECS_DOMAIN_NAME=$ECS_APP_NAME
+
+ export NGW_DOMAIN_NAME=$NRT_GATEWAY_APP_NAME
+ export CP_NGINX_RESOLVER=$CONTROL_PANEL_NGINX_DOCKER_RESOLVER
+ fi
+}
+
# Start the Control Panel container
# args: -
# (Function for test scripts)
@@ -157,26 +208,7 @@
echo -e " Creating $CONTROL_PANEL_APP_NAME app and expose service"
- #Export all vars needed for service and deployment
- export CONTROL_PANEL_APP_NAME
- export KUBE_NONRTRIC_NAMESPACE
- export CONTROL_PANEL_IMAGE
- export CONTROL_PANEL_INTERNAL_PORT
- export CONTROL_PANEL_INTERNAL_SECURE_PORT
- export CONTROL_PANEL_EXTERNAL_PORT
- export CONTROL_PANEL_EXTERNAL_SECURE_PORT
- export CONTROL_PANEL_CONFIG_MOUNT_PATH
- export CONTROL_PANEL_CONFIG_FILE
- export CP_CONFIG_CONFIGMAP_NAME=$CONTROL_PANEL_APP_NAME"-config"
- export CP_PROXY_CONFIGMAP_NAME=$CONTROL_PANEL_APP_NAME"-proxy"
-
- export NGW_DOMAIN_NAME=$NRT_GATEWAY_APP_NAME.$KUBE_NONRTRIC_NAMESPACE.svc.cluster.local # suffix needed for nginx name resolution
- export NRT_GATEWAY_EXTERNAL_PORT
- export CONTROL_PANEL_PATH_POLICY_PREFIX
- export CONTROL_PANEL_PATH_ECS_PREFIX
- export CONTROL_PANEL_PATH_ECS_PREFIX2
-
- export CP_NGINX_RESOLVER=$CONTROL_PANEL_NGINX_KUBE_RESOLVER
+ __control_panel_export_vars
#Check if nonrtric namespace exists, if not create it
__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
@@ -206,20 +238,12 @@
fi
- echo " Retrieving host and ports for service..."
- CP_HOST_NAME=$(__kube_get_service_host $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+ __check_service_start $CONTROL_PANEL_APP_NAME $CP_SERVICE_PATH$CONTROL_PANEL_ALIVE_URL
- CONTROL_PANEL_EXTERNAL_PORT=$(__kube_get_service_port $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
- CONTROL_PANEL_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+ CP_PORT1=$(__kube_get_service_nodeport $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
+ CP_PORT2=$(__kube_get_service_nodeport $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
- echo " Host IP, http port, https port: $CP_HOST_NAME $CONTROL_PANEL_EXTERNAL_PORT $CONTROL_PANEL_EXTERNAL_SECURE_PORT"
- if [ $CP_HTTPX == "http" ]; then
- CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_PORT
- else
- CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_SECURE_PORT
- fi
-
- __check_service_start $CONTROL_PANEL_APP_NAME $CP_PATH$CONTROL_PANEL_ALIVE_URL
+ echo " $CONTROL_PANEL_DISPLAY_NAME node ports (http/https): $CP_PORT1 $CP_PORT2"
else
# Check if docker app shall be fully managed by the test script
__check_included_image 'CP'
@@ -229,36 +253,7 @@
exit
fi
- # Export needed vars for docker compose
- export CONTROL_PANEL_APP_NAME
- export CONTROL_PANEL_INTERNAL_PORT
- export CONTROL_PANEL_EXTERNAL_PORT
- export CONTROL_PANEL_INTERNAL_SECURE_PORT
- export CONTROL_PANEL_EXTERNAL_SECURE_PORT
- export DOCKER_SIM_NWNAME
-
- export CONTROL_PANEL_HOST_MNT_DIR
- export CONTROL_PANEL_CONFIG_FILE
- export CONTROL_PANEL_CONFIG_MOUNT_PATH
-
- export NRT_GATEWAY_APP_NAME
- export NRT_GATEWAY_EXTERNAL_PORT
-
- export POLICY_AGENT_EXTERNAL_SECURE_PORT
- export ECS_EXTERNAL_SECURE_PORT
- export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME
- export ECS_DOMAIN_NAME=$ECS_APP_NAME
-
- export CONTROL_PANEL_HOST_MNT_DIR
- export CONTROL_PANEL_CONFIG_MOUNT_PATH
- export CONTROL_PANEL_CONFIG_FILE
- export CONTROL_PANEL_DISPLAY_NAME
- export NGW_DOMAIN_NAME=$NRT_GATEWAY_APP_NAME
- export CONTROL_PANEL_PATH_POLICY_PREFIX
- export CONTROL_PANEL_PATH_ECS_PREFIX
- export CONTROL_PANEL_PATH_ECS_PREFIX2
-
- export CP_NGINX_RESOLVER=$CONTROL_PANEL_NGINX_DOCKER_RESOLVER
+ __control_panel_export_vars
dest_file=$SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_HOST_MNT_DIR/$CONTROL_PANEL_CONFIG_FILE
@@ -266,7 +261,9 @@
__start_container $CONTROL_PANEL_COMPOSE_DIR "" NODOCKERARGS 1 $CONTROL_PANEL_APP_NAME
- __check_service_start $CONTROL_PANEL_APP_NAME $CP_PATH$CONTROL_PANEL_ALIVE_URL
+ __check_service_start $CONTROL_PANEL_APP_NAME $CP_SERVICE_PATH$CONTROL_PANEL_ALIVE_URL
+
+ echo " $CONTROL_PANEL_DISPLAY_NAME locahost ports (http/https): $CONTROL_PANEL_EXTERNAL_PORT $CONTROL_PANEL_EXTERNAL_SECURE_PORT"
fi
echo ""
}
diff --git a/test/common/controller_api_functions.sh b/test/common/controller_api_functions.sh
index d703d83..4027f30 100644
--- a/test/common/controller_api_functions.sh
+++ b/test/common/controller_api_functions.sh
@@ -73,7 +73,7 @@
# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action.
# This function is called for apps fully managed by the test script
__SDNC_kube_scale_zero() {
- __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
+ __kube_scale_all_resources $KUBE_SNDC_NAMESPACE autotest SDNC
}
# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
@@ -85,66 +85,82 @@
# Delete all kube resouces for the app
# This function is called for apps managed by the test script.
__SDNC_kube_delete_all() {
- __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
+ __kube_delete_all_resources $KUBE_SNDC_NAMESPACE autotest SDNC
}
# Store docker logs
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__SDNC_store_docker_logs() {
- docker exec -t $SDNC_APP_NAME cat $SDNC_KARAF_LOG> $1$2_SDNC_karaf.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=SDNC" -n $KUBE_SNDC_NAMESPACE --tail=-1 > $1$2_SDNC.log 2>&1
+ podname=$(kubectl get pods -n $KUBE_SNDC_NAMESPACE -l "autotest=SDNC" -o custom-columns=":metadata.name")
+ kubectl exec -t -n $KUBE_SNDC_NAMESPACE $podname -- cat $SDNC_KARAF_LOG> $1$2_SDNC_karaf.log 2>&1
+ else
+ docker exec -t $SDNC_APP_NAME cat $SDNC_KARAF_LOG> $1$2_SDNC_karaf.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__SDNC_initial_setup() {
+ use_sdnc_http
}
#######################################################
-
-SDNC_HTTPX="http"
-SDNC_HOST_NAME=$LOCALHOST_NAME
-SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
-SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
-#Docker/Kube internal path
-if [ $RUNMODE == "KUBE" ]; then
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
- #presume correct
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
- #test
- #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
-else
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_PORT
-fi
-
+# Set http as the protocol to use for all communication to SDNC
+# args: -
+# (Function for test scripts)
use_sdnc_http() {
- echo -e $BOLD"SDNC NB protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards SDNC"
- SDNC_HTTPX="http"
- SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
- SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
- if [ $RUNMODE == "KUBE" ]; then
- #presume correct
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
- #test
- #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
- else
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_PORT
- fi
- echo ""
+ __sdnc_set_protocoll "http" $SDNC_INTERNAL_PORT $SDNC_EXTERNAL_PORT
}
+# Set https as the protocol to use for all communication to SDNC
+# args: -
+# (Function for test scripts)
use_sdnc_https() {
- echo -e $BOLD"SDNC NB protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards SDNC"
- SDNC_HTTPX="https"
- SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT
- SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT$SDNC_API_URL
+ __sdnc_set_protocoll "https" $SDNC_INTERNAL_SECURE_PORT $SDNC_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__sdnc_set_protocoll() {
+ echo -e $BOLD"$SDNC_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $SDNC_DISPLAY_NAME"
+
+ ## Access to SDNC
+
+ SDNC_SERVICE_PATH=$1"://"$SDNC_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ SDNC_SERVICE_API_PATH=$1"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_APP_NAME":"$1$SDNC_API_URL
if [ $RUNMODE == "KUBE" ]; then
- #presume correct
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_SECURE_PORT
- #test
- #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_SECURE_PORT
- else
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_SECURE_PORT
+ SDNC_SERVICE_PATH=$1"://"$SDNC_APP_NAME.$KUBE_SNDC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ SDNC_SERVICE_API_PATH=$1"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_APP_NAME.KUBE_SNDC_NAMESPACE":"$1$SDNC_API_URL
fi
echo ""
+
+}
+
+# Export env vars for config files, docker compose and kube resources
+# args:
+__sdnc_export_vars() {
+ export KUBE_SNDC_NAMESPACE
+ export DOCKER_SIM_NWNAME
+
+ export SDNC_APP_NAME
+ export SDNC_DISPLAY_NAME
+
+ export SDNC_A1_CONTROLLER_IMAGE
+ export SDNC_INTERNAL_PORT
+ export SDNC_EXTERNAL_PORT
+ export SDNC_INTERNAL_SECURE_PORT
+ export SDNC_EXTERNAL_SECURE_PORT
+ export SDNC_A1_TRUSTSTORE_PASSWORD
+ export SDNC_DB_APP_NAME
+ export SDNC_DB_IMAGE
+ export SDNC_USER
+ export SDNC_PWD
}
##################
@@ -183,7 +199,7 @@
if [ $retcode_p -eq 0 ]; then
echo -e " Using existing $SDNC_APP_NAME deployment and service"
echo " Setting SDNC replicas=1"
- __kube_scale deployment $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+ __kube_scale deployment $SDNC_APP_NAME $KUBE_SNDC_NAMESPACE 1
fi
# Check if app shall be fully managed by the test script
@@ -191,21 +207,10 @@
echo -e " Creating $SDNC_APP_NAME app and expose service"
- #Check if nonrtric namespace exists, if not create it
- __kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+ #Check if namespace exists, if not create it
+ __kube_create_namespace $KUBE_SNDC_NAMESPACE
- export KUBE_NONRTRIC_NAMESPACE
- export SDNC_APP_NAME
- export SDNC_A1_CONTROLLER_IMAGE
- export SDNC_INTERNAL_PORT
- export SDNC_EXTERNAL_PORT
- export SDNC_INTERNAL_SECURE_PORT
- export SDNC_EXTERNAL_SECURE_PORT
- export SDNC_A1_TRUSTSTORE_PASSWORD
- export SDNC_DB_APP_NAME
- export SDNC_DB_IMAGE
- export SDNC_USER
- export SDNC_PWD
+ __sdnc_export_vars
# Create service
input_yaml=$SIM_GROUP"/"$SDNC_COMPOSE_DIR"/"svc.yaml
@@ -219,30 +224,7 @@
fi
- echo " Retrieving host and ports for service..."
- SDNC_HOST_NAME=$(__kube_get_service_host $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
- SDNC_EXTERNAL_PORT=$(__kube_get_service_port $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
- SDNC_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
-
- echo " Host IP, http port, https port: $SDNC_HOST_NAME $SDNC_EXTERNAL_PORT $SDNC_EXTERNAL_SECURE_PORT"
-
- if [ $SDNC_HTTPX == "http" ]; then
- SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
- SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
- #presume correct
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
- #test
- #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
- else
- SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT
- SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT$SDNC_API_URL
- #presume correct
- SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_SECURE_PORT
- #test
- #SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_SECURE_PORT
- fi
-
- __check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
+ __check_service_start $SDNC_APP_NAME $SDNC_SERVICE_PATH$SDNC_ALIVE_URL
else
__check_included_image 'SDNC'
@@ -252,21 +234,11 @@
exit
fi
- export SDNC_DB_APP_NAME
- export SDNC_APP_NAME
- export SDNC_INTERNAL_PORT
- export SDNC_EXTERNAL_PORT
- export SDNC_INTERNAL_SECURE_PORT
- export SDNC_EXTERNAL_SECURE_PORT
- export SDNC_A1_TRUSTSTORE_PASSWORD
- export DOCKER_SIM_NWNAME
- export SDNC_DISPLAY_NAME
- export SDNC_USER
- export SDNC_PWD
+ __sdnc_export_vars
__start_container $SDNC_COMPOSE_DIR $SDNC_COMPOSE_FILE NODOCKERARGS 1 $SDNC_APP_NAME
- __check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
+ __check_service_start $SDNC_APP_NAME $SDNC_SERVICE_PATH$SDNC_ALIVE_URL
fi
echo ""
return 0
@@ -315,7 +287,7 @@
return 1
fi
fi
- __check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
+ __check_service_start $SDNC_APP_NAME $SDNC_SERVICE_PATH$SDNC_ALIVE_URL
if [ $? -ne 0 ]; then
return 1
fi
@@ -356,16 +328,14 @@
echo "$json" > $payload
echo " FILE ($payload) : $json" >> $HTTPLOG
proxyflag=""
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- if [ $KUBE_PROXY_HTTPX == "http" ]; then
- proxyflag=" --proxy $KUBE_PROXY_PATH"
- else
- proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ proxyflag=" --proxy $KUBE_PROXY_PATH"
+ else
+ proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
fi
fi
- curlString="curl -skw %{http_code} $proxyflag -X POST $SDNC_API_PATH$1 -H accept:application/json -H Content-Type:application/json --data-binary @$payload"
+ curlString="curl -skw %{http_code} $proxyflag -X POST $SDNC_SERVICE_API_PATH$1 -H accept:application/json -H Content-Type:application/json --data-binary @$payload"
echo " CMD: "$curlString >> $HTTPLOG
res=$($curlString)
retcode=$?
diff --git a/test/common/cr_api_functions.sh b/test/common/cr_api_functions.sh
index c19797a..ba46510 100644
--- a/test/common/cr_api_functions.sh
+++ b/test/common/cr_api_functions.sh
@@ -93,74 +93,81 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__CR_store_docker_logs() {
- docker logs $CR_APP_NAME > $1$2_cr.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=CR" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_cr.log 2>&1
+ else
+ docker logs $CR_APP_NAME > $1$2_cr.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__CR_initial_setup() {
+ use_cr_http
}
#######################################################
-
-## Access to Callback Receiver
-# Host name may be changed if app started by kube
-# Direct access from script
-CR_HTTPX="http"
-CR_HOST_NAME=$LOCALHOST_NAME
-CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_PORT
-#Docker/Kube internal path
-if [ $RUNMODE == "KUBE" ]; then
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_PORT$CR_APP_CALLBACK
-else
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME":"$CR_INTERNAL_PORT$CR_APP_CALLBACK
-fi
-# CR_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
-CR_ADAPTER_TYPE="REST"
-CR_ADAPTER=$CR_PATH
-
################
### CR functions
################
-# Set http as the protocol to use for all communication to the Callback Receiver
+# Set http as the protocol to use for all communication to the Dmaap adapter
# args: -
# (Function for test scripts)
use_cr_http() {
- echo -e $BOLD"CR protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards CR"
-
- CR_HTTPX="http"
- CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_PORT
-
- #Docker/Kube internal path
- if [ $RUNMODE == "KUBE" ]; then
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_PORT$CR_APP_CALLBACK
- else
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME":"$CR_INTERNAL_PORT$CR_APP_CALLBACK
- fi
- CR_ADAPTER_TYPE="REST"
- CR_ADAPTER=$CR_PATH
- echo ""
+ __cr_set_protocoll "http" $CR_INTERNAL_PORT $CR_EXTERNAL_PORT
}
-# Set https as the protocol to use for all communication to the Callback Receiver
+# Set https as the protocol to use for all communication to the Dmaap adapter
# args: -
# (Function for test scripts)
use_cr_https() {
- echo -e $BOLD"CR protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards CR"
+ __cr_set_protocoll "https" $CR_INTERNAL_SECURE_PORT $CR_EXTERNAL_SECURE_PORT
+}
- CR_HTTPX="https"
- CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_SECURE_PORT
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__cr_set_protocoll() {
+ echo -e $BOLD"$CR_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $CR_DISPLAY_NAME"
+ ## Access to Dmaap adapter
+
+ # CR_SERVICE_PATH is the base path to cr
+ CR_SERVICE_PATH=$1"://"$CR_APP_NAME":"$2 # docker access, container->container and script->container via proxy
if [ $RUNMODE == "KUBE" ]; then
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_SECURE_PORT$CR_APP_CALLBACK
- else
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME":"$CR_INTERNAL_SECURE_PORT$CR_APP_CALLBACK
+ CR_SERVICE_PATH=$1"://"$CR_APP_NAME.$KUBE_SIM_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
fi
+ # Service paths are used in test script to provide callbacck urls to app
+ CR_SERVICE_MR_PATH=$CR_SERVICE_PATH$CR_APP_CALLBACK_MR #Only for messages from dmaap adapter/mediator
+ CR_SERVICE_APP_PATH=$CR_SERVICE_PATH$CR_APP_CALLBACK #For general callbacks from apps
+ # CR_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
CR_ADAPTER_TYPE="REST"
- CR_ADAPTER=$CR_PATH
+ CR_ADAPTER=$CR_SERVICE_PATH
+
echo ""
}
+# Export env vars for config files, docker compose and kube resources
+# args: <proxy-flag>
+__cr_export_vars() {
+ export CR_APP_NAME
+ export CR_DISPLAY_NAME
+
+ export KUBE_SIM_NAMESPACE
+ export DOCKER_SIM_NWNAME
+
+ export CR_IMAGE
+
+ export CR_INTERNAL_PORT
+ export CR_INTERNAL_SECURE_PORT
+ export CR_EXTERNAL_PORT
+ export CR_EXTERNAL_SECURE_PORT
+}
+
# Start the Callback reciver in the simulator group
# args: -
# (Function for test scripts)
@@ -198,13 +205,8 @@
if [ $retcode_i -eq 0 ]; then
echo -e " Creating $CR_APP_NAME deployment and service"
- export CR_APP_NAME
- export KUBE_SIM_NAMESPACE
- export CR_IMAGE
- export CR_INTERNAL_PORT
- export CR_INTERNAL_SECURE_PORT
- export CR_EXTERNAL_PORT
- export CR_EXTERNAL_SECURE_PORT
+
+ __cr_export_vars
__kube_create_namespace $KUBE_SIM_NAMESPACE
@@ -220,28 +222,10 @@
fi
- echo " Retrieving host and ports for service..."
- CR_HOST_NAME=$(__kube_get_service_host $CR_APP_NAME $KUBE_SIM_NAMESPACE)
-
- CR_EXTERNAL_PORT=$(__kube_get_service_port $CR_APP_NAME $KUBE_SIM_NAMESPACE "http")
- CR_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $CR_APP_NAME $KUBE_SIM_NAMESPACE "https")
-
- echo " Host IP, http port, https port: $CR_HOST_NAME $CR_EXTERNAL_PORT $CR_EXTERNAL_SECURE_PORT"
- if [ $CR_HTTPX == "http" ]; then
- CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_PORT
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_PORT$CR_APP_CALLBACK
- else
- CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_SECURE_PORT
- CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_SECURE_PORT$CR_APP_CALLBACK
- fi
- if [ $CR_ADAPTER_TYPE == "REST" ]; then
- CR_ADAPTER=$CR_PATH
- fi
-
- __check_service_start $CR_APP_NAME $CR_PATH$CR_ALIVE_URL
+ __check_service_start $CR_APP_NAME $CR_SERVICE_PATH$CR_ALIVE_URL
echo -ne " Service $CR_APP_NAME - reset "$SAMELINE
- result=$(__do_curl $CR_APP_NAME $CR_PATH/reset)
+ result=$(__do_curl CR $CR_SERVICE_PATH/reset)
if [ $? -ne 0 ]; then
echo -e " Service $CR_APP_NAME - reset $RED Failed $ERED - will continue"
else
@@ -256,17 +240,11 @@
exit
fi
- export CR_APP_NAME
- export CR_INTERNAL_PORT
- export CR_EXTERNAL_PORT
- export CR_INTERNAL_SECURE_PORT
- export CR_EXTERNAL_SECURE_PORT
- export DOCKER_SIM_NWNAME
- export CR_DISPLAY_NAME
+ __cr_export_vars
__start_container $CR_COMPOSE_DIR "" NODOCKERARGS 1 $CR_APP_NAME
- __check_service_start $CR_APP_NAME $CR_PATH$CR_ALIVE_URL
+ __check_service_start $CR_APP_NAME $CR_SERVICE_PATH$CR_ALIVE_URL
fi
echo ""
}
@@ -281,12 +259,59 @@
# (Function for test scripts)
cr_equal() {
if [ $# -eq 2 ] || [ $# -eq 3 ]; then
- __var_test "CR" "$CR_PATH/counter/" $1 "=" $2 $3
+ __var_test "CR" "$CR_SERVICE_PATH/counter/" $1 "=" $2 $3
else
__print_err "Wrong args to cr_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
fi
}
+# Tests if a variable value in the CR contains the target string and and optional timeout
+# Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable contains
+# the target or not.
+# Arg: <variable-name> <target-value> <timeout-in-sec> - This test waits up to the timeout seconds
+# before setting pass or fail depending on if the variable value contains the target
+# value or not.
+# (Function for test scripts)
+cr_contains_str() {
+
+ if [ $# -eq 2 ] || [ $# -eq 3 ]; then
+ __var_test "CR" "$CR_SERVICE_PATH/counter/" $1 "contain_str" $2 $3
+ return 0
+ else
+ __print_err "needs two or three args: <sim-param> <target-value> [ timeout ]"
+ return 1
+ fi
+}
+
+# Read a variable value from CR sim and send to stdout. Arg: <variable-name>
+cr_read() {
+ echo "$(__do_curl $CR_SERVICE_PATH/counter/$1)"
+}
+
+# Function to configure write delay on callbacks
+# Delay given in seconds.
+# arg <response-code> <delay-in-sec>
+# (Function for test scripts)
+cr_delay_callback() {
+ __log_conf_start $@
+
+ if [ $# -ne 2 ]; then
+ __print_err "<response-code> <delay-in-sec>]" $@
+ return 1
+ fi
+
+ res="$(__do_curl_to_api CR POST /forcedelay?delay=$2)"
+ status=${res:${#res}-3}
+
+ if [ $status -ne 200 ]; then
+ __log_conf_fail_status_code $1 $status
+ return 1
+ fi
+
+ __log_conf_ok
+ return 0
+}
+
# CR API: Check the contents of all current ric sync events for one id from PMS
# <response-code> <id> [ EMPTY | ( <ric-id> )+ ]
# (Function for test scripts)
@@ -474,4 +499,88 @@
__log_conf_ok
return 0
+}
+
+
+# CR API: Check the contents of all json events for path
+# <response-code> <topic-url> (EMPTY | <json-msg>+ )
+# (Function for test scripts)
+cr_api_check_all_genric_json_events() {
+ __log_test_start $@
+
+ if [ $# -lt 3 ]; then
+ __print_err "<response-code> <topic-url> (EMPTY | <json-msg>+ )" $@
+ return 1
+ fi
+
+ query="/get-all-events/"$2
+ res="$(__do_curl_to_api CR GET $query)"
+ status=${res:${#res}-3}
+
+ if [ $status -ne $1 ]; then
+ __log_test_fail_status_code $1 $status
+ return 1
+ fi
+ body=${res:0:${#res}-3}
+ targetJson="["
+
+ if [ $3 != "EMPTY" ]; then
+ shift
+ shift
+ while [ $# -gt 0 ]; do
+ if [ "$targetJson" != "[" ]; then
+ targetJson=$targetJson","
+ fi
+ targetJson=$targetJson$1
+ shift
+ done
+ fi
+ targetJson=$targetJson"]"
+
+ echo " TARGET JSON: $targetJson" >> $HTTPLOG
+ res=$(python3 ../common/compare_json.py "$targetJson" "$body")
+
+ if [ $res -ne 0 ]; then
+ __log_test_fail_body
+ return 1
+ fi
+
+ __log_test_pass
+ return 0
+}
+
+
+
+# CR API: Check a single (oldest) json event (or none if empty) for path
+# <response-code> <topic-url> (EMPTY | <json-msg> )
+# (Function for test scripts)
+cr_api_check_single_genric_json_event() {
+ __log_test_start $@
+
+ if [ $# -ne 3 ]; then
+ __print_err "<response-code> <topic-url> (EMPTY | <json-msg> )" $@
+ return 1
+ fi
+
+ query="/get-event/"$2
+ res="$(__do_curl_to_api CR GET $query)"
+ status=${res:${#res}-3}
+
+ if [ $status -ne $1 ]; then
+ __log_test_fail_status_code $1 $status
+ return 1
+ fi
+ body=${res:0:${#res}-3}
+ targetJson=$3
+
+ echo " TARGET JSON: $targetJson" >> $HTTPLOG
+ res=$(python3 ../common/compare_json.py "$targetJson" "$body")
+
+ if [ $res -ne 0 ]; then
+ __log_test_fail_body
+ return 1
+ fi
+
+ __log_test_pass
+ return 0
}
\ No newline at end of file
diff --git a/test/common/dmaapadp_api_functions.sh b/test/common/dmaapadp_api_functions.sh
new file mode 100644
index 0000000..26da2d0
--- /dev/null
+++ b/test/common/dmaapadp_api_functions.sh
@@ -0,0 +1,302 @@
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2021 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service managemnt functions test functions for the Dmaap Adatper
+
+
+################ Test engine functions ################
+
+# Create the image var used during the test
+# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
+# <image-tag-suffix> is present only for images with staging, snapshot,release tags
+__DMAAPADP_imagesetup() {
+ __check_and_create_image_var DMAAPADP "DMAAP_ADP_IMAGE" "DMAAP_ADP_IMAGE_BASE" "DMAAP_ADP_IMAGE_TAG" $1 "$DMAAP_ADP_DISPLAY_NAME"
+}
+
+# Pull image from remote repo or use locally built image
+# arg: <pull-policy-override> <pull-policy-original>
+# <pull-policy-override> Shall be used for images allowing overriding. For example use a local image when test is started to use released images
+# <pull-policy-original> Shall be used for images that does not allow overriding
+# Both var may contain: 'remote', 'remote-remove' or 'local'
+__DMAAPADP_imagepull() {
+ __check_and_pull_image $1 "$DMAAP_ADP_DISPLAY_NAME" $DMAAP_ADP_APP_NAME DMAAP_ADP_IMAGE
+}
+
+# Build image (only for simulator or interfaces stubs owned by the test environment)
+# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
+# <image-tag-suffix> is present only for images with staging, snapshot,release tags
+__DMAAPADP_imagebuild() {
+ echo -e $RED" Image for app DMAAPADP shall never be built"$ERED
+}
+
+# Generate a string for each included image using the app display name and a docker images format string
+# If a custom image repo is used then also the source image from the local repo is listed
+# arg: <docker-images-format-string> <file-to-append>
+__DMAAPADP_image_data() {
+ echo -e "$DMAAP_ADP_DISPLAY_NAME\t$(docker images --format $1 $DMAAP_ADP_IMAGE)" >> $2
+ if [ ! -z "$DMAAP_ADP_IMAGE_SOURCE" ]; then
+ echo -e "-- source image --\t$(docker images --format $1 $DMAAP_ADP_IMAGE_SOURCE)" >> $2
+ fi
+}
+
+# Scale kubernetes resources to zero
+# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action.
+# This function is called for apps fully managed by the test script
+__DMAAPADP_kube_scale_zero() {
+ __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest DMAAPADP
+}
+
+# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
+# This function is called for prestarted apps not managed by the test script.
+__DMAAPADP_kube_scale_zero_and_wait() {
+ __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app "$KUBE_NONRTRIC_NAMESPACE"-dmaapadapterservice
+}
+
+# Delete all kube resouces for the app
+# This function is called for apps managed by the test script.
+__DMAAPADP_kube_delete_all() {
+ __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest DMAAPADP
+}
+
+# Store docker logs
+# This function is called for apps managed by the test script.
+# args: <log-dir> <file-prexix>
+__DMAAPADP_store_docker_logs() {
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=DMAAPADP" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_dmaapadapter.log 2>&1
+ else
+ docker logs $DMAAP_ADP_APP_NAME > $1$2_dmaapadapter.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__DMAAPADP_initial_setup() {
+ use_dmaapadp_http
+}
+
+#######################################################
+
+# Set http as the protocol to use for all communication to the Dmaap adapter
+# args: -
+# (Function for test scripts)
+use_dmaapadp_http() {
+ __dmaapadp_set_protocoll "http" $DMAAP_ADP_INTERNAL_PORT $DMAAP_ADP_EXTERNAL_PORT
+}
+
+# Set https as the protocol to use for all communication to the Dmaap adapter
+# args: -
+# (Function for test scripts)
+use_dmaapadp_https() {
+ __dmaapadp_set_protocoll "https" $DMAAP_ADP_INTERNAL_SECURE_PORT $DMAAP_ADP_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__dmaapadp_set_protocoll() {
+ echo -e $BOLD"$DMAAP_ADP_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $DMAAP_ADP_DISPLAY_NAME"
+
+ ## Access to Dmaap adapter
+
+ DMAAP_ADP_SERVICE_PATH=$1"://"$DMAAP_ADP_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ if [ $RUNMODE == "KUBE" ]; then
+ DMAAP_ADP_SERVICE_PATH=$1"://"$DMAAP_ADP_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ fi
+
+ # DMAAP_ADP_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+ DMAAP_ADP_ADAPTER_TYPE="REST"
+ DMAAP_ADP_ADAPTER=$DMAAP_ADP_SERVICE_PATH
+
+ echo ""
+}
+
+# Export env vars for config files, docker compose and kube resources
+# args: PROXY|NOPROXY
+__dmaapadp_export_vars() {
+
+ export DMAAP_ADP_APP_NAME
+ export DMAAP_ADP_DISPLAY_NAME
+
+ export KUBE_NONRTRIC_NAMESPACE
+ export DOCKER_SIM_NWNAME
+
+ export DMAAP_ADP_IMAGE
+
+ export DMAAP_ADP_INTERNAL_PORT
+ export DMAAP_ADP_INTERNAL_SECURE_PORT
+ export DMAAP_ADP_EXTERNAL_PORT
+ export DMAAP_ADP_EXTERNAL_SECURE_PORT
+
+ export DMAAP_ADP_CONFIG_MOUNT_PATH
+ export DMAAP_ADP_DATA_MOUNT_PATH
+ export DMAAP_ADP_HOST_MNT_DIR
+ export DMAAP_ADP_CONFIG_FILE
+ export DMAAP_ADP_DATA_FILE
+
+ export DMAAP_ADP_CONFIG_CONFIGMAP_NAME=$DMAAP_ADP_APP_NAME"-config"
+ export DMAAP_ADP_DATA_CONFIGMAP_NAME=$DMAAP_ADP_APP_NAME"-data"
+
+ export DMMAAP_ADP_PROXY_FLAG="false"
+
+ if [ $1 == "PROXY" ]; then
+ export DMAAP_ADP_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
+ export DMAAP_ADP_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
+ if [ $DMAAP_ADP_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$DMAAP_ADP_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
+ echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
+ else
+ echo " Configured with http proxy"
+ fi
+ export DMMAAP_ADP_PROXY_FLAG="true"
+ else
+ export DMAAP_ADP_HTTP_PROXY_CONFIG_PORT=0
+ export DMAAP_ADP_HTTP_PROXY_CONFIG_HOST_NAME=""
+ echo " Configured without http proxy"
+ fi
+
+
+ # paths to other components
+ export ECS_SERVICE_PATH
+ export DMAAP_ADP_SERVICE_PATH
+ export MR_SERVICE_PATH
+
+}
+
+# Start the Dmaap Adapter
+# args: -
+# (Function for test scripts)
+start_dmaapadp() {
+
+ echo -e $BOLD"Starting $DMAAP_ADP_DISPLAY_NAME"$EBOLD
+
+ if [ $RUNMODE == "KUBE" ]; then
+
+ # Check if app shall be fully managed by the test script
+ __check_included_image "DMAAPADP"
+ retcode_i=$?
+
+ # Check if app shall only be used by the testscipt
+ __check_prestarted_image "DMAAPADP"
+ retcode_p=$?
+
+ if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+ echo -e $RED"The $DMAAP_ADP_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+ echo -e $RED"The $DMAAP_ADP_APP_NAME will not be started"$ERED
+ exit
+ fi
+ if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+ echo -e $RED"The $DMAAP_ADP_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+ echo -e $RED"The $DMAAP_ADP_APP_NAME will not be started"$ERED
+ exit
+ fi
+
+ # Check if app shall be used - not managed - by the test script
+ if [ $retcode_p -eq 0 ]; then
+ echo -e " Using existing $DMAAP_ADP_APP_NAME deployment and service"
+ echo " Setting DMAAPADP replicas=1"
+ __kube_scale statefulset $DMAAP_ADP_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+ fi
+
+ if [ $retcode_i -eq 0 ]; then
+ echo -e " Creating $DMAAP_ADP_APP_NAME deployment and service"
+
+ __kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+ __dmaapadp_export_vars $1
+
+ # Create config map for config
+ configfile=$PWD/tmp/$DMAAP_ADP_CONFIG_FILE
+ #cp $2 $configfile
+ envsubst < $2 > $configfile
+ output_yaml=$PWD/tmp/dmaapadp_cfc.yaml
+ __kube_create_configmap $DMAAP_ADP_CONFIG_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest DMAAPADP $configfile $output_yaml
+
+ # Create config map for data
+ data_json=$PWD/tmp/$DMAAP_ADP_DATA_FILE
+ if [ $# -lt 3 ]; then
+ #create empty dummy file
+ echo "{}" > $data_json
+ else
+ cp $3 $data_json
+ fi
+ output_yaml=$PWD/tmp/dmaapadp_cfd.yaml
+ __kube_create_configmap $DMAAP_ADP_DATA_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest DMAAPADP $data_json $output_yaml
+
+
+ # Create service
+ input_yaml=$SIM_GROUP"/"$DMAAP_ADP_COMPOSE_DIR"/"svc.yaml
+ output_yaml=$PWD/tmp/dmaapadp_svc.yaml
+ __kube_create_instance service $DMAAP_ADP_APP_NAME $input_yaml $output_yaml
+
+ # Create app
+ input_yaml=$SIM_GROUP"/"$DMAAP_ADP_COMPOSE_DIR"/"app.yaml
+ output_yaml=$PWD/tmp/dmaapadp_app.yaml
+ __kube_create_instance app $DMAAP_ADP_APP_NAME $input_yaml $output_yaml
+
+ fi
+
+ __check_service_start $DMAAP_ADP_APP_NAME $DMAAP_ADP_SERVICE_PATH$DMAAP_ADP_ALIVE_URL
+
+ else
+ # Check if docker app shall be fully managed by the test script
+ __check_included_image 'DMAAPADP'
+ if [ $? -eq 1 ]; then
+ echo -e $RED"The $DMAAP_ADP_DISPLAY_NAME app is not included in this test script"$ERED
+ echo -e $RED"The $DMAAP_ADP_DISPLAY_NAME will not be started"$ERED
+ exit
+ fi
+
+ __dmaapadp_export_vars $1
+
+ dest_file=$SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_HOST_MNT_DIR/$DMAAP_ADP_CONFIG_FILE
+
+ envsubst < $2 > $dest_file
+
+ dest_file=$SIM_GROUP/$DMAAP_ADP_COMPOSE_DIR/$DMAAP_ADP_HOST_MNT_DIR/$DMAAP_ADP_DATA_FILE
+
+ if [ $# -lt 3 ]; then
+ #create empty dummy file
+ echo "{}" > $dest_file
+ else
+ envsubst < $3 > $dest_file
+ fi
+
+ __start_container $DMAAP_ADP_COMPOSE_DIR "" NODOCKERARGS 1 $DMAAP_ADP_APP_NAME
+
+ __check_service_start $DMAAP_ADP_APP_NAME $DMAAP_ADP_SERVICE_PATH$DMAAP_ADP_ALIVE_URL
+ fi
+ echo ""
+}
+
+# Turn on trace level tracing
+# args: -
+# (Function for test scripts)
+set_dmaapadp_trace() {
+ echo -e $BOLD"$DMAAP_ADP_DISPLAY_NAME trace logging"$EBOLD
+ curlString="$DMAAP_ADP_SERVICE_PATH$DMAAP_ADP_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
+ result=$(__do_curl "$curlString")
+ if [ $? -ne 0 ]; then
+ __print_err "could not set trace mode" $@
+ ((RES_CONF_FAIL++))
+ return 1
+ fi
+ echo ""
+ return 0
+}
diff --git a/test/common/dmaapmed_api_functions.sh b/test/common/dmaapmed_api_functions.sh
new file mode 100644
index 0000000..16e1ad7
--- /dev/null
+++ b/test/common/dmaapmed_api_functions.sh
@@ -0,0 +1,262 @@
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2021 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service managemnt functions test functions for the Dmaap Adatper
+
+
+################ Test engine functions ################
+
+# Create the image var used during the test
+# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
+# <image-tag-suffix> is present only for images with staging, snapshot,release tags
+__DMAAPMED_imagesetup() {
+ __check_and_create_image_var DMAAPMED "DMAAP_MED_IMAGE" "DMAAP_MED_IMAGE_BASE" "DMAAP_MED_IMAGE_TAG" $1 "$DMAAP_MED_DISPLAY_NAME"
+}
+
+# Pull image from remote repo or use locally built image
+# arg: <pull-policy-override> <pull-policy-original>
+# <pull-policy-override> Shall be used for images allowing overriding. For example use a local image when test is started to use released images
+# <pull-policy-original> Shall be used for images that does not allow overriding
+# Both var may contain: 'remote', 'remote-remove' or 'local'
+__DMAAPMED_imagepull() {
+ __check_and_pull_image $1 "$DMAAP_MED_DISPLAY_NAME" $DMAAP_MED_APP_NAME DMAAP_MED_IMAGE
+}
+
+# Build image (only for simulator or interfaces stubs owned by the test environment)
+# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
+# <image-tag-suffix> is present only for images with staging, snapshot,release tags
+__DMAAPMED_imagebuild() {
+ echo -e $RED" Image for app DMAAPMED shall never be built"$ERED
+}
+
+# Generate a string for each included image using the app display name and a docker images format string
+# If a custom image repo is used then also the source image from the local repo is listed
+# arg: <docker-images-format-string> <file-to-append>
+__DMAAPMED_image_data() {
+ echo -e "$DMAAP_MED_DISPLAY_NAME\t$(docker images --format $1 $DMAAP_MED_IMAGE)" >> $2
+ if [ ! -z "$DMAAP_MED_IMAGE_SOURCE" ]; then
+ echo -e "-- source image --\t$(docker images --format $1 $DMAAP_MED_IMAGE_SOURCE)" >> $2
+ fi
+}
+
+# Scale kubernetes resources to zero
+# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action.
+# This function is called for apps fully managed by the test script
+__DMAAPMED_kube_scale_zero() {
+ __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest DMAAPMED
+}
+
+# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
+# This function is called for prestarted apps not managed by the test script.
+__DMAAPMED_kube_scale_zero_and_wait() {
+ __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app "$KUBE_NONRTRIC_NAMESPACE"-dmaapmediatorservice
+}
+
+# Delete all kube resouces for the app
+# This function is called for apps managed by the test script.
+__DMAAPMED_kube_delete_all() {
+ __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest DMAAPMED
+}
+
+# Store docker logs
+# This function is called for apps managed by the test script.
+# args: <log-dir> <file-prexix>
+__DMAAPMED_store_docker_logs() {
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=DMAAPMED" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_dmaapmediator.log 2>&1
+ else
+ docker logs $DMAAP_MED_APP_NAME > $1$2_dmaapmediator.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__DMAAPMED_initial_setup() {
+ use_dmaapmed_http
+}
+
+#######################################################
+
+# Set http as the protocol to use for all communication to the Dmaap mediator
+# args: -
+# (Function for test scripts)
+use_dmaapmed_http() {
+ __dmaapmed_set_protocoll "http" $DMAAP_MED_INTERNAL_PORT $DMAAP_MED_EXTERNAL_PORT
+}
+
+# Set https as the protocol to use for all communication to the Dmaap mediator
+# args: -
+# (Function for test scripts)
+use_dmaapmed_https() {
+ __dmaapmed_set_protocoll "https" $DMAAP_MED_INTERNAL_SECURE_PORT $DMAAP_MED_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__dmaapmed_set_protocoll() {
+ echo -e $BOLD"$DMAAP_MED_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $DMAAP_MED_DISPLAY_NAME"
+
+ ## Access to Dmaap mediator
+
+ DMAAP_MED_SERVICE_PATH=$1"://"$DMAAP_MED_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ if [ $RUNMODE == "KUBE" ]; then
+ DMAAP_MED_SERVICE_PATH=$1"://"$DMAAP_MED_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ fi
+
+ # DMAAP_MED_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+ DMAAP_MED_ADAPTER_TYPE="REST"
+ DMAAP_MED_ADAPTER=$DMAAP_MED_SERVICE_PATH
+
+ echo ""
+}
+
+# Export env vars for config files, docker compose and kube resources
+# args: PROXY|NOPROXY
+__dmaapmed_export_vars() {
+
+ export DMAAP_MED_APP_NAME
+ export DMAAP_MED_DISPLAY_NAME
+
+ export KUBE_NONRTRIC_NAMESPACE
+ export DOCKER_SIM_NWNAME
+
+ export DMAAP_MED_IMAGE
+
+ export DMAAP_MED_INTERNAL_PORT
+ export DMAAP_MED_INTERNAL_SECURE_PORT
+ export DMAAP_MED_EXTERNAL_PORT
+ export DMAAP_MED_EXTERNAL_SECURE_PORT
+
+ export DMAAP_MED_DATA_MOUNT_PATH
+ export DMAAP_MED_HOST_MNT_DIR
+ export DMAAP_MED_DATA_FILE
+ export DMAAP_MED_DATA_CONFIGMAP_NAME=$DMAAP_MED_APP_NAME"-data"
+
+ if [ $1 == "PROXY" ]; then
+ export DMAAP_MED_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
+ export DMAAP_MED_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
+ if [ $DMAAP_MED_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$DMAAP_MED_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
+ echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
+ else
+ echo " Configured with http proxy"
+ fi
+ else
+ export DMAAP_MED_HTTP_PROXY_CONFIG_PORT=0
+ export DMAAP_MED_HTTP_PROXY_CONFIG_HOST_NAME=""
+ echo " Configured without http proxy"
+ fi
+
+ # paths to other components
+ export ECS_SERVICE_PATH
+
+ export DMAAP_MED_CONF_SELF_HOST=$(echo $DMAAP_MED_SERVICE_PATH | cut -d: -f1-2)
+ export DMAAP_MED_CONF_SELF_PORT=$(echo $DMAAP_MED_SERVICE_PATH | cut -d: -f3)
+ export MR_SERVICE_PATH
+}
+
+# Start the Dmaap mediator
+# args: -
+# (Function for test scripts)
+start_dmaapmed() {
+
+ echo -e $BOLD"Starting $DMAAP_MED_DISPLAY_NAME"$EBOLD
+
+ if [ $RUNMODE == "KUBE" ]; then
+
+ # Check if app shall be fully managed by the test script
+ __check_included_image "DMAAPMED"
+ retcode_i=$?
+
+ # Check if app shall only be used by the testscipt
+ __check_prestarted_image "DMAAPMED"
+ retcode_p=$?
+
+ if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+ echo -e $RED"The $DMAAP_MED_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+ echo -e $RED"The $DMAAP_MED_APP_NAME will not be started"$ERED
+ exit
+ fi
+ if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+ echo -e $RED"The $DMAAP_MED_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+ echo -e $RED"The $DMAAP_MED_APP_NAME will not be started"$ERED
+ exit
+ fi
+
+ # Check if app shall be used - not managed - by the test script
+ if [ $retcode_p -eq 0 ]; then
+ echo -e " Using existing $DMAAP_MED_APP_NAME deployment and service"
+ echo " Setting DMAAPMED replicas=1"
+ __kube_scale statefulset $DMAAP_MED_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+ fi
+
+ if [ $retcode_i -eq 0 ]; then
+ echo -e " Creating $DMAAP_MED_APP_NAME deployment and service"
+
+ __kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+ __dmaapmed_export_vars $1
+
+ # Create config map for data
+ data_json=$PWD/tmp/$DMAAP_MED_DATA_FILE
+ if [ $# -lt 2 ]; then
+ #create empty dummy file
+ echo "{}" > $data_json
+ else
+ cp $2 $data_json
+ fi
+ output_yaml=$PWD/tmp/dmaapmed_cfd.yaml
+ __kube_create_configmap $DMAAP_MED_DATA_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest DMAAPMED $data_json $output_yaml
+
+ # Create service
+ input_yaml=$SIM_GROUP"/"$DMAAP_MED_COMPOSE_DIR"/"svc.yaml
+ output_yaml=$PWD/tmp/dmaapmed_svc.yaml
+ __kube_create_instance service $DMAAP_MED_APP_NAME $input_yaml $output_yaml
+
+ # Create app
+ input_yaml=$SIM_GROUP"/"$DMAAP_MED_COMPOSE_DIR"/"app.yaml
+ output_yaml=$PWD/tmp/dmaapmed_app.yaml
+ __kube_create_instance app $DMAAP_MED_APP_NAME $input_yaml $output_yaml
+
+ fi
+
+ __check_service_start $DMAAP_MED_APP_NAME $DMAAP_MED_SERVICE_PATH$DMAAP_MED_ALIVE_URL
+
+ else
+ # Check if docker app shall be fully managed by the test script
+ __check_included_image 'DMAAPMED'
+ if [ $? -eq 1 ]; then
+ echo -e $RED"The $DMAAP_MED_DISPLAY_NAME app is not included in this test script"$ERED
+ echo -e $RED"The $DMAAP_MED_DISPLAY_NAME will not be started"$ERED
+ exit
+ fi
+
+ __dmaapmed_export_vars $1
+
+ dest_file=$SIM_GROUP/$DMAAP_MED_COMPOSE_DIR/$DMAAP_MED_HOST_MNT_DIR/$DMAAP_MED_DATA_FILE
+
+ envsubst < $2 > $dest_file
+
+ __start_container $DMAAP_MED_COMPOSE_DIR "" NODOCKERARGS 1 $DMAAP_MED_APP_NAME
+
+ __check_service_start $DMAAP_MED_APP_NAME $DMAAP_MED_SERVICE_PATH$DMAAP_MED_ALIVE_URL
+ fi
+ echo ""
+}
\ No newline at end of file
diff --git a/test/common/ecs_api_functions.sh b/test/common/ecs_api_functions.sh
index 9bde835..2b434f1 100644
--- a/test/common/ecs_api_functions.sh
+++ b/test/common/ecs_api_functions.sh
@@ -64,7 +64,7 @@
# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
# This function is called for prestarted apps not managed by the test script.
__ECS_kube_scale_zero_and_wait() {
- __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-enrichmentservice
+ __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app "$KUBE_NONRTRIC_NAMESPACE"-enrichmentservice
}
# Delete all kube resouces for the app
@@ -77,22 +77,23 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__ECS_store_docker_logs() {
- docker logs $ECS_APP_NAME > $1$2_ecs.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=ECS" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_ecs.log 2>&1
+ else
+ docker logs $ECS_APP_NAME > $1$2_ecs.log 2>&1
+ fi
}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__ECS_initial_setup() {
+ use_ecs_rest_http
+}
+
#######################################################
-## Access to ECS
-# Host name may be changed if app started by kube
-# Direct access
-ECS_HTTPX="http"
-ECS_HOST_NAME=$LOCALHOST_NAME
-ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_PORT
-
-# ECS_ADAPTER used for switch between REST and DMAAP (only REST supported currently)
-ECS_ADAPTER_TYPE="REST"
-ECS_ADAPTER=$ECS_PATH
-
# Make curl retries towards ECS for http response codes set in this env var, space separated list of codes
ECS_RETRY_CODES=""
@@ -107,28 +108,14 @@
# args: -
# (Function for test scripts)
use_ecs_rest_http() {
- echo -e $BOLD"ECS protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD and $BOLD REST $EBOLD towards ECS"
- ECS_HTTPX="http"
- ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_PORT
-
- ECS_ADAPTER_TYPE="REST"
- ECS_ADAPTER=$ECS_PATH
- echo ""
+ __ecs_set_protocoll "http" $ECS_INTERNAL_PORT $ECS_EXTERNAL_PORT
}
# All calls to ECS will be directed to the ECS REST interface from now on
# args: -
# (Function for test scripts)
use_ecs_rest_https() {
- echo -e $BOLD"ECS protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards ECS"
- ECS_HTTPX="https"
- ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_SECURE_PORT
-
- ECS_ADAPTER_TYPE="REST"
- ECS_ADAPTER=$ECS_PATH
- echo ""
+ __ecs_set_protocoll "https" $ECS_INTERNAL_SECURE_PORT $ECS_EXTERNAL_SECURE_PORT
}
# All calls to ECS will be directed to the ECS dmaap interface over http from now on
@@ -142,17 +129,68 @@
echo ""
}
-# All calls to ECS will be directed to the ECS dmaap interface over https from now on
-# args: -
-# (Function for test scripts)
-use_ecs_dmaap_https() {
- echo -e $BOLD"RICSIM protocol setting"$EBOLD
- echo -e $RED" - NOT SUPPORTED - "$ERED
- echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards ECS"
- ECS_ADAPTER_TYPE="MR-HTTPS"
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__ecs_set_protocoll() {
+ echo -e $BOLD"$ECS_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $ECS_DISPLAY_NAME"
+
+ ## Access to ECS
+
+ ECS_SERVICE_PATH=$1"://"$ECS_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ if [ $RUNMODE == "KUBE" ]; then
+ ECS_SERVICE_PATH=$1"://"$ECS_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ fi
+
+ # ECS_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+ ECS_ADAPTER_TYPE="REST"
+ ECS_ADAPTER=$ECS_SERVICE_PATH
+
echo ""
}
+# Export env vars for config files, docker compose and kube resources
+# args: PROXY|NOPROXY
+__ecs_export_vars() {
+ export ECS_APP_NAME
+ export ECS_APP_NAME_ALIAS
+ export KUBE_NONRTRIC_NAMESPACE
+ export ECS_IMAGE
+ export ECS_INTERNAL_PORT
+ export ECS_INTERNAL_SECURE_PORT
+ export ECS_EXTERNAL_PORT
+ export ECS_EXTERNAL_SECURE_PORT
+ export ECS_CONFIG_MOUNT_PATH
+ export ECS_CONFIG_CONFIGMAP_NAME=$ECS_APP_NAME"-config"
+ export ECS_DATA_CONFIGMAP_NAME=$ECS_APP_NAME"-data"
+ export ECS_CONTAINER_MNT_DIR
+ export ECS_HOST_MNT_DIR
+ export ECS_CONFIG_FILE
+ export DOCKER_SIM_NWNAME
+ export ECS_DISPLAY_NAME
+
+
+ export ECS_DATA_PV_NAME=$ECS_APP_NAME"-pv"
+ export ECS_DATA_PVC_NAME=$ECS_APP_NAME"-pvc"
+ #Create a unique path for the pv each time to prevent a previous volume to be reused
+ export ECS_PV_PATH="ecsdata-"$(date +%s)
+
+ if [ $1 == "PROXY" ]; then
+ export ECS_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
+ export ECS_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
+ if [ $ECS_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$ECS_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
+ echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
+ else
+ echo " Configured with http proxy"
+ fi
+ else
+ export ECS_HTTP_PROXY_CONFIG_PORT=0
+ export ECS_HTTP_PROXY_CONFIG_HOST_NAME=""
+ echo " Configured without http proxy"
+ fi
+}
+
+
# Start the ECS
# args: PROXY|NOPROXY <config-file>
# (Function for test scripts)
@@ -196,38 +234,7 @@
#Check if nonrtric namespace exists, if not create it
__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
- export ECS_APP_NAME
- export KUBE_NONRTRIC_NAMESPACE
- export ECS_IMAGE
- export ECS_INTERNAL_PORT
- export ECS_INTERNAL_SECURE_PORT
- export ECS_EXTERNAL_PORT
- export ECS_EXTERNAL_SECURE_PORT
- export ECS_CONFIG_MOUNT_PATH
- export ECS_CONFIG_CONFIGMAP_NAME=$ECS_APP_NAME"-config"
- export ECS_DATA_CONFIGMAP_NAME=$ECS_APP_NAME"-data"
- export ECS_CONTAINER_MNT_DIR
-
- export ECS_DATA_PV_NAME=$ECS_APP_NAME"-pv"
- export ECS_DATA_PVC_NAME=$ECS_APP_NAME"-pvc"
- #Create a unique path for the pv each time to prevent a previous volume to be reused
- export ECS_PV_PATH="ecsdata-"$(date +%s)
-
- if [ $1 == "PROXY" ]; then
- ECS_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
- ECS_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
- if [ $ECS_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$ECS_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
- echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
- else
- echo " Configured with http proxy"
- fi
- else
- ECS_HTTP_PROXY_CONFIG_PORT=0
- ECS_HTTP_PROXY_CONFIG_HOST_NAME=""
- echo " Configured without http proxy"
- fi
- export ECS_HTTP_PROXY_CONFIG_PORT
- export ECS_HTTP_PROXY_CONFIG_HOST_NAME
+ __ecs_export_vars $1
# Create config map for config
datafile=$PWD/tmp/$ECS_CONFIG_FILE
@@ -269,24 +276,9 @@
echo -e $YELLOW" Persistency may not work for app $ECS_APP_NAME in multi-worker node config when running it as a prestarted app"$EYELLOW
fi
- echo " Retrieving host and ports for service..."
- ECS_HOST_NAME=$(__kube_get_service_host $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
- ECS_EXTERNAL_PORT=$(__kube_get_service_port $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
- ECS_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
- echo " Host IP, http port, https port: $ECS_HOST_NAME $ECS_EXTERNAL_PORT $ECS_EXTERNAL_SECURE_PORT"
+ __check_service_start $ECS_APP_NAME $ECS_SERVICE_PATH$ECS_ALIVE_URL
- if [ $ECS_HTTPX == "http" ]; then
- ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_PORT
- else
- ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_SECURE_PORT
- fi
-
- __check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
-
- if [ $ECS_ADAPTER_TYPE == "REST" ]; then
- ECS_ADAPTER=$ECS_PATH
- fi
else
__check_included_image 'ECS'
if [ $? -eq 1 ]; then
@@ -312,36 +304,10 @@
else
echo " No files in mounted dir or dir does not exists"
fi
+
cd $curdir
- export ECS_APP_NAME
- export ECS_APP_NAME_ALIAS
- export ECS_HOST_MNT_DIR
- export ECS_CONTAINER_MNT_DIR
- export ECS_CONFIG_MOUNT_PATH
- export ECS_CONFIG_FILE
- export ECS_INTERNAL_PORT
- export ECS_EXTERNAL_PORT
- export ECS_INTERNAL_SECURE_PORT
- export ECS_EXTERNAL_SECURE_PORT
- export DOCKER_SIM_NWNAME
- export ECS_DISPLAY_NAME
-
- if [ $1 == "PROXY" ]; then
- ECS_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started
- ECS_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
- if [ $ECS_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$ECS_HTTP_PROXY_CONFIG_HOST_NAME" ]; then
- echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW
- else
- echo " Configured with http proxy"
- fi
- else
- ECS_HTTP_PROXY_CONFIG_PORT=0
- ECS_HTTP_PROXY_CONFIG_HOST_NAME=""
- echo " Configured without http proxy"
- fi
- export ECS_HTTP_PROXY_CONFIG_PORT
- export ECS_HTTP_PROXY_CONFIG_HOST_NAME
+ __ecs_export_vars $1
dest_file=$SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_HOST_MNT_DIR/$ECS_CONFIG_FILE
@@ -349,7 +315,7 @@
__start_container $ECS_COMPOSE_DIR "" NODOCKERARGS 1 $ECS_APP_NAME
- __check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
+ __check_service_start $ECS_APP_NAME $ECS_SERVICE_PATH$ECS_ALIVE_URL
fi
echo ""
return 0
@@ -407,7 +373,7 @@
echo -e $YELLOW" Persistency may not work for app $ECS_APP_NAME in multi-worker node config when running it as a prestarted app"$EYELLOW
res_type=$(__kube_get_resource_type $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
__kube_scale $res_type $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
- __check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
+ __check_service_start $ECS_APP_NAME $ECS_SERVICE_PATH$ECS_ALIVE_URL
return 0
fi
@@ -435,7 +401,7 @@
return 1
fi
fi
- __check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
+ __check_service_start $ECS_APP_NAME $ECS_SERVICE_PATH$ECS_ALIVE_URL
if [ $? -ne 0 ]; then
return 1
fi
@@ -448,7 +414,7 @@
# (Function for test scripts)
set_ecs_debug() {
echo -e $BOLD"Setting ecs debug logging"$EBOLD
- curlString="$ECS_PATH$ECS_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
+ curlString="$ECS_SERVICE_PATH$ECS_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
__print_err "Could not set debug mode" $@
@@ -464,7 +430,7 @@
# (Function for test scripts)
set_ecs_trace() {
echo -e $BOLD"Setting ecs trace logging"$EBOLD
- curlString="$ECS_PATH/actuator/loggers/org.oransc.enrichment -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
+ curlString="$ECS_SERVICE_PATH/actuator/loggers/org.oransc.enrichment -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
__print_err "Could not set trace mode" $@
@@ -502,7 +468,7 @@
# (Function for test scripts)
ecs_equal() {
if [ $# -eq 2 ] || [ $# -eq 3 ]; then
- __var_test ECS "$ECS_PATH/" $1 "=" $2 $3
+ __var_test ECS "$ECS_SERVICE_PATH/" $1 "=" $2 $3
else
__print_err "Wrong args to ecs_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
fi
@@ -2466,13 +2432,13 @@
ecs_kube_pvc_reset() {
__log_test_start $@
- pvc_name=$(kubectl get pvc -n nonrtric --no-headers -o custom-columns=":metadata.name" | grep enrichment)
+ pvc_name=$(kubectl get pvc -n $KUBE_NONRTRIC_NAMESPACE --no-headers -o custom-columns=":metadata.name" | grep enrichment)
if [ -z "$pvc_name" ]; then
pvc_name=enrichmentservice-pvc
fi
echo " Trying to reset pvc: "$pvc_name
- __kube_clean_pvc $ECS_APP_NAME nonrtric $pvc_name /var/enrichment-coordinator-service/database
+ __kube_clean_pvc $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE $pvc_name $ECS_CONTAINER_MNT_DIR
__log_test_pass
return 0
diff --git a/test/common/gateway_api_functions.sh b/test/common/gateway_api_functions.sh
index 59bdb67..ee617ef 100644
--- a/test/common/gateway_api_functions.sh
+++ b/test/common/gateway_api_functions.sh
@@ -78,47 +78,57 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__NGW_store_docker_logs() {
- docker logs $NRT_GATEWAY_APP_NAME > $1$2_gateway.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=NGW" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_gateway.log 2>&1
+ else
+ docker logs $NRT_GATEWAY_APP_NAME > $1$2_gateway.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__NGW_initial_setup() {
+ use_gateway_http
}
#######################################################
-## Access to Gateway
-# Host name may be changed if app started by kube
-# Direct access from script
-NGW_HTTPX="http"
-NGW_HOST_NAME=$LOCALHOST_NAME
-NGW_PATH=$NGW_HTTPX"://"$NGW_HOST_NAME":"$NRT_GATEWAY_EXTERNAL_PORT
-# NGW_ADAPTER used for switch between REST and DMAAP (only REST supported currently)
-NGW_ADAPTER_TYPE="REST"
-NGW_ADAPTER=$NGW_PATH
-###########################
-### Gateway functions
-###########################
-# Set http as the protocol to use for all communication to the Gateway
+
+
+
+# Set http as the protocol to use for all communication to the nonrtric gateway
# args: -
# (Function for test scripts)
use_gateway_http() {
- echo -e $BOLD"Gateway, NGW, protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards NGW"
- NGW_HTTPX="http"
- NGW_PATH=$NGW_HTTPX"://"$NGW_HOST_NAME":"$NRT_GATEWAY_EXTERNAL_PORT
- NGW_ADAPTER_TYPE="REST"
- NGW_ADAPTER=$NGW_PATH
- echo ""
+ __gateway_set_protocoll "http" $NRT_GATEWAY_INTERNAL_PORT $NRT_GATEWAY_EXTERNAL_PORT
}
-# Set https as the protocol to use for all communication to the Gateway
+# Set https as the protocol to use for all communication to the nonrtric gateway
# args: -
# (Function for test scripts)
use_gateway_https() {
- echo -e $BOLD"Gateway, NGW, protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards NGW"
- NGW_HTTPX="https"
- NGW_PATH=$NGW_HTTPX"://"$NGW_HOST_NAME":"$NRT_GATEWAY_EXTERNAL_SECURE_PORT
- NGW_ADAPTER_TYPE="REST"
- NGW_ADAPTER=$NGW_PATH
+ __gateway_set_protocoll "https" $NRT_GATEWAY_INTERNAL_SECURE_PORT $NRT_GATEWAY_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__gateway_set_protocoll() {
+ echo -e $BOLD"$NRT_GATEWAY_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $NRT_GATEWAY_DISPLAY_NAME"
+
+ ## Access to nonrtric gateway
+
+ NRT_GATEWAY_SERVICE_PATH=$1"://"$NRT_GATEWAY_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ if [ $RUNMODE == "KUBE" ]; then
+ NRT_GATEWAY_SERVICE_PATH=$1"://"$NRT_GATEWAY_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ fi
+
+ # NRT_GATEWAY_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+ NRT_GATEWAY_ADAPTER_TYPE="REST"
+ NRT_GATEWAY_ADAPTER=$DMAAP_ADP_SERVICE_PATH
+
echo ""
}
@@ -127,7 +137,7 @@
# (Function for test scripts)
set_gateway_debug() {
echo -e $BOLD"Setting gateway debug logging"$EBOLD
- curlString="$NGW_PATH$NRT_GATEWAY_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
+ curlString="$NRT_GATEWAY_SERVICE_PATH$NRT_GATEWAY_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
__print_err "could not set debug mode" $@
@@ -143,7 +153,7 @@
# (Function for test scripts)
set_gateway_trace() {
echo -e $BOLD"Setting gateway trace logging"$EBOLD
- curlString="$NGW_PATH$NRT_GATEWAY_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
+ curlString="$NRT_GATEWAY_SERVICE_PATH$NRT_GATEWAY_ACTUATOR -X POST -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
result=$(__do_curl "$curlString")
if [ $? -ne 0 ]; then
__print_err "could not set trace mode" $@
@@ -154,6 +164,38 @@
return 0
}
+# Export env vars for config files, docker compose and kube resources
+# args: -
+__gateway_export_vars() {
+
+ export NRT_GATEWAY_APP_NAME
+ export NRT_GATEWAY_DISPLAY_NAME
+
+ export KUBE_NONRTRIC_NAMESPACE
+ export DOCKER_SIM_NWNAME
+
+ export NRT_GATEWAY_IMAGE
+ export NRT_GATEWAY_INTERNAL_PORT
+ export NRT_GATEWAY_INTERNAL_SECURE_PORT
+ export NRT_GATEWAY_EXTERNAL_PORT
+ export NRT_GATEWAY_EXTERNAL_SECURE_PORT
+ export NRT_GATEWAY_CONFIG_MOUNT_PATH
+ export NRT_GATEWAY_CONFIG_FILE
+ export NGW_CONFIG_CONFIGMAP_NAME=$NRT_GATEWAY_APP_NAME"-config"
+ export NRT_GATEWAY_HOST_MNT_DIR
+ export NRT_GATEWAY_COMPOSE_DIR
+
+ if [ $RUNMODE == "KUBE" ]; then
+ export POLICY_AGENT_EXTERNAL_SECURE_PORT
+ export ECS_EXTERNAL_SECURE_PORT
+ export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME.$KUBE_NONRTRIC_NAMESPACE
+ export ECS_DOMAIN_NAME=$ECS_APP_NAME.$KUBE_NONRTRIC_NAMESPACE
+ else
+ export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME
+ export ECS_DOMAIN_NAME=$ECS_APP_NAME
+ fi
+}
+
# Start the Gateway container
# args: -
# (Function for test scripts)
@@ -194,22 +236,7 @@
echo -e " Creating $NRT_GATEWAY_APP_NAME app and expose service"
- #Export all vars needed for service and deployment
- export NRT_GATEWAY_APP_NAME
- export KUBE_NONRTRIC_NAMESPACE
- export NRT_GATEWAY_IMAGE
- export NRT_GATEWAY_INTERNAL_PORT
- export NRT_GATEWAY_INTERNAL_SECURE_PORT
- export NRT_GATEWAY_EXTERNAL_PORT
- export NRT_GATEWAY_EXTERNAL_SECURE_PORT
- export NRT_GATEWAY_CONFIG_MOUNT_PATH
- export NRT_GATEWAY_CONFIG_FILE
- export NGW_CONFIG_CONFIGMAP_NAME=$NRT_GATEWAY_APP_NAME"-config"
-
- export POLICY_AGENT_EXTERNAL_SECURE_PORT
- export ECS_EXTERNAL_SECURE_PORT
- export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME.$KUBE_NONRTRIC_NAMESPACE
- export ECS_DOMAIN_NAME=$ECS_APP_NAME.$KUBE_NONRTRIC_NAMESPACE
+ __gateway_export_vars
#Check if nonrtric namespace exists, if not create it
__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
@@ -233,25 +260,8 @@
fi
- echo " Retrieving host and ports for service..."
- NGW_HOST_NAME=$(__kube_get_service_host $NRT_GATEWAY_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+ __check_service_start $NRT_GATEWAY_APP_NAME $NRT_GATEWAY_SERVICE_PATH$NRT_GATEWAY_ALIVE_URL
- NRT_GATEWAY_EXTERNAL_PORT=$(__kube_get_service_port $NRT_GATEWAY_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
- NRT_GATEWAY_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $NRT_GATEWAY_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
-
- echo " Host IP, http port, https port: $NGW_HOST_NAME $NRT_GATEWAY_EXTERNAL_PORT $NRT_GATEWAY_EXTERNAL_SECURE_PORT"
- if [ $NGW_HTTPX == "http" ]; then
- NGW_PATH=$NGW_HTTPX"://"$NGW_HOST_NAME":"$NRT_GATEWAY_EXTERNAL_PORT
- else
- NGW_PATH=$NGW_HTTPX"://"$NGW_HOST_NAME":"$NRT_GATEWAY_EXTERNAL_SECURE_PORT
- fi
-
- __check_service_start $NRT_GATEWAY_APP_NAME $NGW_PATH$NRT_GATEWAY_ALIVE_URL
-
- # Update the curl adapter if set to rest, no change if type dmaap
- if [ $NGW_ADAPTER_TYPE == "REST" ]; then
- NGW_ADAPTER=$NGW_PATH
- fi
else
# Check if docker app shall be fully managed by the test script
__check_included_image 'NGW'
@@ -261,25 +271,7 @@
exit
fi
- # Export needed vars for docker compose
- export NRT_GATEWAY_APP_NAME
- export NRT_GATEWAY_INTERNAL_PORT
- export NRT_GATEWAY_EXTERNAL_PORT
- #export NRT_GATEWAY_INTERNAL_SECURE_PORT
- #export NRT_GATEWAY_EXTERNAL_SECURE_PORT
-
- export DOCKER_SIM_NWNAME
- export NRT_GATEWAY_HOST_MNT_DIR
- export NRT_GATEWAY_CONFIG_FILE
- export NRT_GATEWAY_CONFIG_MOUNT_PATH
- export NRT_GATEWAY_COMPOSE_DIR
-
- export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME
- export POLICY_AGENT_EXTERNAL_SECURE_PORT
- export ECS_DOMAIN_NAME=$ECS_APP_NAME
- export ECS_EXTERNAL_SECURE_PORT
-
- export NRT_GATEWAY_DISPLAY_NAME
+ __gateway_export_vars
dest_file=$SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_HOST_MNT_DIR/$NRT_GATEWAY_CONFIG_FILE
@@ -287,7 +279,7 @@
__start_container $NRT_GATEWAY_COMPOSE_DIR "" NODOCKERARGS 1 $NRT_GATEWAY_APP_NAME
- __check_service_start $NRT_GATEWAY_APP_NAME $NGW_PATH$NRT_GATEWAY_ALIVE_URL
+ __check_service_start $NRT_GATEWAY_APP_NAME $NRT_GATEWAY_SERVICE_PATH$NRT_GATEWAY_ALIVE_URL
fi
echo ""
}
diff --git a/test/common/http_proxy_api_functions.sh b/test/common/http_proxy_api_functions.sh
index 0a7718e..56ce6d4 100644
--- a/test/common/http_proxy_api_functions.sh
+++ b/test/common/http_proxy_api_functions.sh
@@ -92,7 +92,18 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__HTTPPROXY_store_docker_logs() {
- docker logs $HTTP_PROXY_APP_NAME > $1$2_httpproxy.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=HTTPPROXY" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_httpproxy.log 2>&1
+ else
+ docker logs $HTTP_PROXY_APP_NAME > $1$2_httpproxy.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__HTTPPROXY_initial_setup() {
+ :
}
#######################################################
@@ -248,9 +259,9 @@
__start_container $HTTP_PROXY_COMPOSE_DIR "" NODOCKERARGS 1 $HTTP_PROXY_APP_NAME
if [ $HTTP_PROXY_HTTPX == "http" ]; then
- HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_EXTERNAL_PORT
+ HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_INTERNAL_PORT
else
- HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_EXTERNAL_SECURE_PORT
+ HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_INTERNAL_SECURE_PORT
fi
__check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_PATH$HTTP_PROXY_ALIVE_URL
diff --git a/test/common/kube_proxy_api_functions.sh b/test/common/kube_proxy_api_functions.sh
index 59b6346..dcaaf80 100644
--- a/test/common/kube_proxy_api_functions.sh
+++ b/test/common/kube_proxy_api_functions.sh
@@ -93,7 +93,18 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__KUBEPROXY_store_docker_logs() {
- docker logs $KUBE_PROXY_APP_NAME > $1$2_kubeproxy.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=KUBEPROXY" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_kubeproxy.log 2>&1
+ else
+ docker logs $KUBE_PROXY_APP_NAME > $1$2_kubeproxy.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__KUBEPROXY_initial_setup() {
+ use_kube_proxy_http
}
#######################################################
@@ -133,6 +144,33 @@
### Kube Http Proxy functions
#########################
+# Export env vars for config files, docker compose and kube resources
+# args: -
+__kube_proxy_vars() {
+
+ export KUBE_PROXY_WEB_EXTERNAL_PORT
+ export KUBE_PROXY_WEB_INTERNAL_PORT
+ export KUBE_PROXY_EXTERNAL_PORT
+ export KUBE_PROXY_INTERNAL_PORT
+
+ export KUBE_PROXY_WEB_EXTERNAL_SECURE_PORT
+ export KUBE_PROXY_WEB_INTERNAL_SECURE_PORT
+ export KUBE_PROXY_EXTERNAL_SECURE_PORT
+ export KUBE_PROXY_INTERNAL_SECURE_PORT
+
+ export KUBE_SIM_NAMESPACE
+ export KUBE_PROXY_IMAGE
+
+ export KUBE_PROXY_APP_NAME
+ export KUBE_PROXY_DOCKER_EXTERNAL_PORT
+ export KUBE_PROXY_DOCKER_EXTERNAL_SECURE_PORT
+ export KUBE_PROXY_WEB_DOCKER_EXTERNAL_PORT
+ export KUBE_PROXY_WEB_DOCKER_EXTERNAL_SECURE_PORT
+ export DOCKER_SIM_NWNAME
+
+ export KUBE_PROXY_DISPLAY_NAME
+}
+
# Start the Kube Http Proxy in the simulator group
# args: -
# (Function for test scripts)
@@ -170,21 +208,11 @@
if [ $retcode_i -eq 0 ]; then
echo -e " Creating $KUBE_PROXY_APP_NAME deployment and service"
+
+ __kube_proxy_vars
+
export KUBE_PROXY_APP_NAME
- export KUBE_PROXY_WEB_EXTERNAL_PORT
- export KUBE_PROXY_WEB_INTERNAL_PORT
- export KUBE_PROXY_EXTERNAL_PORT
- export KUBE_PROXY_INTERNAL_PORT
-
- export KUBE_PROXY_WEB_EXTERNAL_SECURE_PORT
- export KUBE_PROXY_WEB_INTERNAL_SECURE_PORT
- export KUBE_PROXY_EXTERNAL_SECURE_PORT
- export KUBE_PROXY_INTERNAL_SECURE_PORT
-
- export KUBE_SIM_NAMESPACE
- export KUBE_PROXY_IMAGE
-
__kube_create_namespace $KUBE_SIM_NAMESPACE
# Create service
@@ -251,8 +279,43 @@
# Set proxy for all subsequent calls for all services etc
export KUBE_PROXY_PATH=$KUBE_PROXY_HTTPX"://"$CLUSTER_KUBE_PROXY_HOST":"$CLUSTER_KUBE_PROXY_PORT
export KUBE_PROXY_HTTPX
+
+ KP_PORT1=$(__kube_get_service_nodeport $KUBE_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "http")
+ KP_PORT2=$(__kube_get_service_nodeport $KUBE_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "https")
+
+ echo " $KUBE_PROXY_DISPLAY_NAME node ports (http/https): $KP_PORT1 $KP_PORT2"
+
else
- echo $YELLOW" Kube http proxy not needed in docker test. App not started"
+ # Check if docker app shall be fully managed by the test script
+ __check_included_image 'KUBEPROXY'
+ if [ $? -eq 1 ]; then
+ echo -e $RED"The Kube Proxy app is not included in this test script"$ERED
+ echo -e $RED"The Kube Proxy will not be started"$ERED
+ exit
+ fi
+
+ __kube_proxy_vars
+
+ __start_container $KUBE_PROXY_COMPOSE_DIR "" NODOCKERARGS 1 $KUBE_PROXY_APP_NAME
+
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ export KUBE_PROXY_WEB_PATH=$KUBE_PROXY_HTTPX"://"$LOCALHOST_NAME":"$KUBE_PROXY_WEB_DOCKER_EXTERNAL_PORT
+ else
+ export KUBE_PROXY_WEB_PATH=$KUBE_PROXY_HTTPX"://"$LOCALHOST_NAME":"$KUBE_PROXY_WEB_DOCKER_EXTERNAL_SECURE_PORT
+ fi
+
+ export KUBE_PROXY_PATH= # Make sure proxy is empty when checking the proxy itself
+ __check_service_start $KUBE_PROXY_APP_NAME $KUBE_PROXY_WEB_PATH$KUBE_PROXY_ALIVE_URL
+
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ export KUBE_PROXY_PATH=$KUBE_PROXY_HTTPX"://"$LOCALHOST_NAME":"$KUBE_PROXY_DOCKER_EXTERNAL_PORT
+ else
+ export KUBE_PROXY_PATH=$KUBE_PROXY_HTTPX"://"$LOCALHOST_NAME":"$KUBE_PROXY_DOCKER_EXTERNAL_SECURE_PORT
+ fi
+
+ echo " $KUBE_PROXY_DISPLAY_NAME localhost ports (http/https): $KUBE_PROXY_DOCKER_EXTERNAL_PORT $KUBE_PROXY_DOCKER_EXTERNAL_SECURE_PORT"
+
+
fi
echo ""
diff --git a/test/common/mr_api_functions.sh b/test/common/mr_api_functions.sh
index 3569f6c..c6a5a2c 100755
--- a/test/common/mr_api_functions.sh
+++ b/test/common/mr_api_functions.sh
@@ -157,168 +157,139 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__MR_store_docker_logs() {
- docker logs $MR_STUB_APP_NAME > $1$2_mr_stub.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=MR" -n $KUBE_ONAP_NAMESPACE --tail=-1 > $1$2_mr_stub.log 2>&1
+ else
+ docker logs $MR_STUB_APP_NAME > $1$2_mr_stub.log 2>&1
+ fi
}
# Store docker logs
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__DMAAPMR_store_docker_logs() {
- docker logs $MR_DMAAP_APP_NAME > $1$2mr.log 2>&1
- docker logs $MR_KAFKA_APP_NAME > $1$2_mr_kafka.log 2>&1
- docker logs $MR_ZOOKEEPER_APP_NAME > $1$2_mr_zookeeper.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ for podname in $(kubectl get pods -n $KUBE_ONAP_NAMESPACE -l "autotest=DMAAPMR" -o custom-columns=":metadata.name"); do
+ kubectl logs -n $KUBE_ONAP_NAMESPACE $podname --tail=-1 > $1$2_$podname.log 2>&1
+ done
+ else
+ docker logs $MR_DMAAP_APP_NAME > $1$2mr.log 2>&1
+ docker logs $MR_KAFKA_APP_NAME > $1$2_mr_kafka.log 2>&1
+ docker logs $MR_ZOOKEEPER_APP_NAME > $1$2_mr_zookeeper.log 2>&1
+ fi
}
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__MR_initial_setup() {
+ use_mr_http
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__DMAAPMR_initial_setup() {
+ : # handle by __MR_initial_setup
+}
+
+
#######################################################
-## Access to Message Router
-# Host name may be changed if app started by kube
-# Direct access from script
-MR_HTTPX="http"
-MR_STUB_HOST_NAME=$LOCALHOST_NAME
-MR_DMAAP_HOST_NAME=$LOCALHOST_NAME
-MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_PORT
-MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_DMAAP_LOCALHOST_PORT
-#Docker/Kube internal path
-if [ $RUNMODE == "KUBE" ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
- __check_included_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
- fi
- __check_prestarted_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
- fi
-else
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$MR_INTERNAL_PORT
- __check_included_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$MR_INTERNAL_PORT
- fi
-fi
-MR_ADAPTER_HTTP="http://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_PORT
-MR_ADAPTER_HTTPS="https://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_SECURE_PORT
-
-
-#####################
-### MR stub functions
-#####################
-
use_mr_http() {
- echo -e $BOLD"MR protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards MR"
- MR_HTTPX="http"
- MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_PORT
- MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_DMAAP_LOCALHOST_PORT
- #Docker/Kube internal path
- if [ $RUNMODE == "KUBE" ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
- __check_included_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
- fi
- __check_prestarted_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
- fi
- else
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$MR_INTERNAL_PORT
- __check_included_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$MR_INTERNAL_PORT
- fi
- fi
- echo ""
+ __mr_set_protocoll "http" $MR_INTERNAL_PORT $MR_EXTERNAL_PORT $MR_INTERNAL_PORT $MR_EXTERNAL_PORT $MR_INTERNAL_SECURE_PORT $MR_EXT_SECURE_PORT
}
use_mr_https() {
- echo -e $BOLD"MR protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards MR"
- MR_HTTPX="https"
- MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_SECURE_PORT
- MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_DMAAP_LOCALHOST_SECURE_PORT
- #Docker/Kube internal path
+ __mr_set_protocoll "https" $MR_INTERNAL_SECURE_PORT $MR_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port> <mr-stub-internal-port> <mr-stub-external-port> <mr-stub-internal-secure-port> <mr-stub-external-secure-port>
+__mr_set_protocoll() {
+ echo -e $BOLD"$MR_STUB_DISPLAY_NAME and $MR_DMAAP_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $MR_STUB_DISPLAY_NAME and $MR_DMAAP_DISPLAY_NAME"
+
+ ## Access to Dmaap mediator
+
+ MR_HTTPX=$1
+
+ # Access via test script
+ MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$2 # access from script via proxy, docker
+ MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$2 # access from script via proxy, docker
+
+ MR_SERVICE_PATH=$MR_STUB_PATH # access container->container, docker - access pod->svc, kube
+ __check_included_image "DMAAPMR"
+ if [ $? -eq 0 ]; then
+ MR_SERVICE_PATH=$MR_DMAAP_PATH # access container->container, docker - access pod->svc, kube
+ fi
+
+ # For directing calls from script to e.g.PMS via message rounter
+ # Theses case shall always go though the mr-stub
+ MR_ADAPTER_HTTP="http://"$MR_STUB_APP_NAME":"$4
+ MR_ADAPTER_HTTPS="https://"$MR_STUB_APP_NAME":"$6
+
if [ $RUNMODE == "KUBE" ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_SECURE_PORT
+ MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME.$KUBE_ONAP_NAMESPACE":"$3 # access from script via proxy, kube
+ MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME.$KUBE_ONAP_NAMESPACE":"$3 # access from script via proxy, kube
+
+ MR_SERVICE_PATH=$MR_STUB_PATH
__check_included_image "DMAAPMR"
if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_SECURE_PORT
+ MR_SERVICE_PATH=$MR_DMAAP_PATH
fi
__check_prestarted_image "DMAAPMR"
if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_SECURE_PORT
+ MR_SERVICE_PATH=$MR_DMAAP_PATH
fi
- else
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$MR_INTERNAL_SECURE_PORT
- __check_included_image "DMAAPMR"
- if [ $? -eq 0 ]; then
- MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$MR_INTERNAL_SECURE_PORT
- fi
+
+ # For directing calls from script to e.g.PMS, via message rounter
+ # These calls shall always go though the mr-stub
+ MR_ADAPTER_HTTP="http://"$MR_STUB_APP_NAME":"$5
+ MR_ADAPTER_HTTPS="https://"$MR_STUB_APP_NAME":"$7
fi
+
+ # For calls from script to the mr-stub
+ MR_STUB_ADAPTER=$MR_STUB_PATH
+ MR_STUB_ADAPTER_TYPE="REST"
+
echo ""
}
-# Create a dmaap mr topic
-# args: <topic name> <topic-description>
-__create_topic() {
- echo -ne " Creating read topic: $1"$SAMELINE
-
- json_topic="{\"topicName\":\"$1\",\"partitionCount\":\"2\", \"replicationCount\":\"3\", \"transactionEnabled\":\"false\",\"topicDescription\":\"$2\"}"
- echo $json_topic > ./tmp/$1.json
-
- curlString="$MR_DMAAP_PATH/topics/create -X POST -H Content-Type:application/json -d@./tmp/$1.json"
- topic_retries=5
- while [ $topic_retries -gt 0 ]; do
- let topic_retries=topic_retries-1
- result=$(__do_curl "$curlString")
- if [ $? -eq 0 ]; then
- topic_retries=0
- echo -e " Creating read topic: $1 $GREEN OK $EGREEN"
- fi
- if [ $? -ne 0 ]; then
- if [ $topic_retries -eq 0 ]; then
- echo -e " Creating read topic: $1 $RED Failed $ERED"
- ((RES_CONF_FAIL++))
- return 1
- else
- sleep 1
- fi
- fi
- done
- return 0
+# Export env vars for config files, docker compose and kube resources
+# args: -
+__dmaapmr_export_vars() {
+ #Docker only
+ export DOCKER_SIM_NWNAME
+ export ONAP_ZOOKEEPER_IMAGE
+ export MR_ZOOKEEPER_APP_NAME
+ export ONAP_KAFKA_IMAGE
+ export MR_KAFKA_APP_NAME
+ export ONAP_DMAAPMR_IMAGE
+ export MR_DMAAP_APP_NAME
+ export MR_DMAAP_LOCALHOST_PORT
+ export MR_INTERNAL_PORT
+ export MR_DMAAP_LOCALHOST_SECURE_PORT
+ export MR_INTERNAL_SECURE_PORT
+ export MR_DMAAP_HOST_MNT_DIR
}
-# Do a pipeclean of a topic - to overcome dmaap mr bug...
-# args: <topic> <post-url> <read-url>
-__dmaap_pipeclean() {
- pipeclean_retries=50
- echo -ne " Doing dmaap-mr pipe cleaning on topic: $1"$SAMELINE
- while [ $pipeclean_retries -gt 0 ]; do
- echo "{\"pipeclean-$1\":$pipeclean_retries}" > ./tmp/pipeclean.json
- let pipeclean_retries=pipeclean_retries-1
- curlString="$MR_DMAAP_PATH$2 -X POST -H Content-Type:application/json -d@./tmp/pipeclean.json"
- result=$(__do_curl "$curlString")
- if [ $? -ne 0 ]; then
- sleep 1
- else
- curlString="$MR_DMAAP_PATH$3"
- result=$(__do_curl "$curlString")
- if [ $? -eq 0 ]; then
- if [ $result != "[]" ]; then
- echo -e " Doing dmaap-mr pipe cleaning on topic: $1 $GREEN OK $EGREEN"
- return 0
-
- else
- sleep 1
- fi
- fi
- fi
- done
- echo -e "Doing dmaap-mr pipe cleaning on topic: $1 $RED Failed $ERED"
- return 1
+# Export env vars for config files, docker compose and kube resources
+# args: -
+__mr_export_vars() {
+ #Docker only
+ export DOCKER_SIM_NWNAME
+ export MR_STUB_APP_NAME
+ export MRSTUB_IMAGE
+ export MR_INTERNAL_PORT
+ export MR_INTERNAL_SECURE_PORT
+ export MR_STUB_LOCALHOST_PORT
+ export MR_STUB_LOCALHOST_SECURE_PORT
+ export MR_STUB_CERT_MOUNT_DIR
+ export MR_STUB_DISPLAY_NAME
}
+
# Start the Message Router stub interface in the simulator group
# args: -
# (Function for test scripts)
@@ -374,7 +345,7 @@
if [ $paramerror -ne 0 ]; then
echo -e $RED"The Message Router apps 'MR' and/or 'DMAAPMR' are not included in this test script"$ERED
echo -e $RED"The Message Router will not be started"$ERED
- echo -e $RED"Both MR and DAAMPMR - or - only MR - need to be included and/or prestarted"
+ echo -e $RED"Both MR and DAAMPMR - or - only MR - need to be included and/or prestarted"$ERED
exit
fi
@@ -384,6 +355,9 @@
fi
if [ $retcode_included_dmaapmr -eq 0 ]; then
+
+ __dmaapmr_export_vars
+
#export MR_DMAAP_APP_NAME
export MR_DMAAP_KUBE_APP_NAME=message-router
MR_DMAAP_APP_NAME=$MR_DMAAP_KUBE_APP_NAME
@@ -395,6 +369,7 @@
export ONAP_DMAAPMR_IMAGE
export MR_KAFKA_BWDS_NAME=akfak-bwds
+ export MR_KAFKA_BWDS_NAME=kaka
export KUBE_ONAP_NAMESPACE
export MR_ZOOKEEPER_APP_NAME
@@ -406,29 +381,30 @@
# TODO - Fix domain name substitution in the prop file
# Create config maps - dmaapmr app
configfile=$PWD/tmp/MsgRtrApi.properties
- cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/mr/KUBE-MsgRtrApi.properties $configfile
+ cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"$MR_DMAAP_HOST_MNT_DIR"/mr/KUBE-MsgRtrApi.properties $configfile
+
output_yaml=$PWD/tmp/dmaapmr_msgrtrapi_cfc.yaml
__kube_create_configmap dmaapmr-msgrtrapi.properties $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
configfile=$PWD/tmp/logback.xml
- cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/mr/logback.xml $configfile
+ cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"$MR_DMAAP_HOST_MNT_DIR"/mr/logback.xml $configfile
output_yaml=$PWD/tmp/dmaapmr_logback_cfc.yaml
__kube_create_configmap dmaapmr-logback.xml $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
configfile=$PWD/tmp/cadi.properties
- cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/mr/cadi.properties $configfile
+ cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"$MR_DMAAP_HOST_MNT_DIR"/mr/cadi.properties $configfile
output_yaml=$PWD/tmp/dmaapmr_cadi_cfc.yaml
__kube_create_configmap dmaapmr-cadi.properties $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
# Create config maps - kafka app
configfile=$PWD/tmp/zk_client_jaas.conf
- cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/kafka/zk_client_jaas.conf $configfile
+ cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"$MR_DMAAP_HOST_MNT_DIR"/kafka/zk_client_jaas.conf $configfile
output_yaml=$PWD/tmp/dmaapmr_zk_client_cfc.yaml
__kube_create_configmap dmaapmr-zk-client-jaas.conf $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
# Create config maps - zookeeper app
configfile=$PWD/tmp/zk_server_jaas.conf
- cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/zk/zk_server_jaas.conf $configfile
+ cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"$MR_DMAAP_HOST_MNT_DIR"/zk/zk_server_jaas.conf $configfile
output_yaml=$PWD/tmp/dmaapmr_zk_server_cfc.yaml
__kube_create_configmap dmaapmr-zk-server-jaas.conf $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
@@ -519,10 +495,13 @@
MR_ADAPTER_HTTP="http://"$MR_STUB_HOST_NAME":"$MR_EXT_PORT
MR_ADAPTER_HTTPS="https://"$MR_STUB_HOST_NAME":"$MR_EXT_SECURE_PORT
+ MR_STUB_ADAPTER=$MR_STUB_PATH
+ MR_STUB_ADAPTER_TYPE="REST"
+
__check_service_start $MR_STUB_APP_NAME $MR_STUB_PATH$MR_STUB_ALIVE_URL
echo -ne " Service $MR_STUB_APP_NAME - reset "$SAMELINE
- result=$(__do_curl $MR_STUB_APP_NAME $MR_STUB_PATH/reset)
+ result=$(__do_curl $MR_STUB_PATH/reset)
if [ $? -ne 0 ]; then
echo -e " Service $MR_STUB_APP_NAME - reset $RED Failed $ERED - will continue"
else
@@ -558,17 +537,7 @@
export TOPIC_WRITE="http://$MR_DMAAP_APP_NAME:$MR_INTERNAL_PORT/events/$MR_WRITE_TOPIC/users/mr-stub?timeout=15000&limit=100"
fi
- export DOCKER_SIM_NWNAME
- export ONAP_ZOOKEEPER_IMAGE
- export MR_ZOOKEEPER_APP_NAME
- export ONAP_KAFKA_IMAGE
- export MR_KAFKA_APP_NAME
- export ONAP_DMAAPMR_IMAGE
- export MR_DMAAP_APP_NAME
- export MR_DMAAP_LOCALHOST_PORT
- export MR_INTERNAL_PORT
- export MR_DMAAP_LOCALHOST_SECURE_PORT
- export MR_INTERNAL_SECURE_PORT
+ __dmaapmr_export_vars
if [ $retcode_dmaapmr -eq 0 ]; then
__start_container $MR_DMAAP_COMPOSE_DIR "" NODOCKERARGS 1 $MR_DMAAP_APP_NAME
@@ -590,15 +559,7 @@
echo $result | indent2
fi
- export DOCKER_SIM_NWNAME
- export MR_STUB_APP_NAME
- export MRSTUB_IMAGE
- export MR_INTERNAL_PORT
- export MR_INTERNAL_SECURE_PORT
- export MR_STUB_LOCALHOST_PORT
- export MR_STUB_LOCALHOST_SECURE_PORT
- export MR_STUB_CERT_MOUNT_DIR
- export MR_STUB_DISPLAY_NAME
+ __mr_export_vars
if [ $retcode_mr -eq 0 ]; then
__start_container $MR_STUB_COMPOSE_DIR "" NODOCKERARGS 1 $MR_STUB_APP_NAME
@@ -611,6 +572,67 @@
return 0
}
+# Create a dmaap mr topic
+# args: <topic name> <topic-description>
+__create_topic() {
+ echo -ne " Creating read topic: $1"$SAMELINE
+
+ json_topic="{\"topicName\":\"$1\",\"partitionCount\":\"2\", \"replicationCount\":\"3\", \"transactionEnabled\":\"false\",\"topicDescription\":\"$2\"}"
+ echo $json_topic > ./tmp/$1.json
+
+ curlString="$MR_DMAAP_PATH/topics/create -X POST -H Content-Type:application/json -d@./tmp/$1.json"
+ topic_retries=5
+ while [ $topic_retries -gt 0 ]; do
+ let topic_retries=topic_retries-1
+ result=$(__do_curl "$curlString")
+ if [ $? -eq 0 ]; then
+ topic_retries=0
+ echo -e " Creating read topic: $1 $GREEN OK $EGREEN"
+ fi
+ if [ $? -ne 0 ]; then
+ if [ $topic_retries -eq 0 ]; then
+ echo -e " Creating read topic: $1 $RED Failed $ERED"
+ ((RES_CONF_FAIL++))
+ return 1
+ else
+ sleep 1
+ fi
+ fi
+ done
+ return 0
+}
+
+# Do a pipeclean of a topic - to overcome dmaap mr bug...
+# args: <topic> <post-url> <read-url>
+__dmaap_pipeclean() {
+ pipeclean_retries=50
+ echo -ne " Doing dmaap-mr pipe cleaning on topic: $1"$SAMELINE
+ while [ $pipeclean_retries -gt 0 ]; do
+ echo "{\"pipeclean-$1\":$pipeclean_retries}" > ./tmp/pipeclean.json
+ let pipeclean_retries=pipeclean_retries-1
+ curlString="$MR_DMAAP_PATH$2 -X POST -H Content-Type:application/json -d@./tmp/pipeclean.json"
+ result=$(__do_curl "$curlString")
+ if [ $? -ne 0 ]; then
+ sleep 1
+ else
+ curlString="$MR_DMAAP_PATH$3"
+ result=$(__do_curl "$curlString")
+ if [ $? -eq 0 ]; then
+ if [ $result != "[]" ]; then
+ echo -e " Doing dmaap-mr pipe cleaning on topic: $1 $GREEN OK $EGREEN"
+ return 0
+
+ else
+ sleep 1
+ fi
+ fi
+ fi
+ done
+ echo -e "Doing dmaap-mr pipe cleaning on topic: $1 $RED Failed $ERED"
+ return 1
+}
+
+
### Generic test cases for varaible checking
# Tests if a variable value in the MR stub is equal to a target value and and optional timeout.
@@ -660,4 +682,28 @@
exit 1
fi
echo -e $BOLD"INFO(${BASH_LINENO[0]}): mrstub, $1 = $(__do_curl $MR_STUB_PATH/counter/$1)"$EBOLD
-}
\ No newline at end of file
+}
+
+# Send json to topic in mr-stub.
+# arg: <topic-url> <json-msg>
+# (Function for test scripts)
+mr_api_send_json() {
+ __log_test_start $@
+ if [ $# -ne 2 ]; then
+ __print_err "<topic-url> <json-msg>" $@
+ return 1
+ fi
+ query=$1
+ fname=$PWD/tmp/json_payload_to_mr.json
+ echo $2 > $fname
+ res="$(__do_curl_to_api MRSTUB POST $query $fname)"
+
+ status=${res:${#res}-3}
+ if [ $status -ne 200 ]; then
+ __log_test_fail_status_code 200 $status
+ return 1
+ fi
+
+ __log_test_pass
+ return 0
+}
diff --git a/test/common/prodstub_api_functions.sh b/test/common/prodstub_api_functions.sh
index f80e827..bb4ccf5 100644
--- a/test/common/prodstub_api_functions.sh
+++ b/test/common/prodstub_api_functions.sh
@@ -93,58 +93,49 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__PRODSTUB_store_docker_logs() {
- docker logs $PROD_STUB_APP_NAME > $1$2_prodstub.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=PRODSTUB" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_prodstub.log 2>&1
+ else
+ docker logs $PROD_STUB_APP_NAME > $1$2_prodstub.log 2>&1
+ fi
}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__PRODSTUB_initial_setup() {
+ use_prod_stub_http
+}
+
#######################################################
-
-## Access to Prod stub sim
-# Direct access
-PROD_STUB_HTTPX="http"
-PROD_STUB_HOST_NAME=$LOCALHOST_NAME
-PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_PORT
-
-#Docker/Kube internal path
-if [ $RUNMODE == "KUBE" ]; then
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_PORT
-else
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME":"$PROD_STUB_INTERNAL_PORT
-fi
-
-# Set http as the protocol to use for all communication to the Producer stub
+# Set http as the protocol to use for all communication to the Prod stub sim
# args: -
# (Function for test scripts)
use_prod_stub_http() {
- echo -e $BOLD"Producer stub protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards Producer stub"
-
- PROD_STUB_HTTPX="http"
- PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_PORT
-
- if [ $RUNMODE == "KUBE" ]; then
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_PORT
- else
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME":"$PROD_STUB_INTERNAL_PORT
- fi
-
- echo ""
+ __prod_stub_set_protocoll "http" $PROD_STUB_INTERNAL_PORT $PROD_STUB_EXTERNAL_PORT
}
-# Set https as the protocol to use for all communication to the Producer stub
+# Set https as the protocol to use for all communication to the Prod stub sim
# args: -
# (Function for test scripts)
use_prod_stub_https() {
- echo -e $BOLD"Producer stub protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards Producer stub"
+ __prod_stub_set_protocoll "https" $PROD_STUB_INTERNAL_SECURE_PORT $PROD_STUB_EXTERNAL_SECURE_PORT
+}
- PROD_STUB_HTTPX="https"
- PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_SECURE_PORT
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__prod_stub_set_protocoll() {
+ echo -e $BOLD"$PROD_STUB_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $PROD_STUB_DISPLAY_NAME"
+ ## Access to Prod stub sim
+
+ PROD_STUB_SERVICE_PATH=$1"://"$PROD_STUB_APP_NAME":"$2 # docker access, container->container and script->container via proxy
if [ $RUNMODE == "KUBE" ]; then
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_SECURE_PORT
- else
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME":"$PROD_STUB_INTERNAL_SECURE_PORT
+ PROD_STUB_SERVICE_PATH=$1"://"$PROD_STUB_APP_NAME.$KUBE_SIM_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
fi
+
echo ""
}
@@ -154,6 +145,24 @@
### Producer stub functions
###########################
+# Export env vars for config files, docker compose and kube resources
+# args:
+__prodstub_export_vars() {
+ export PROD_STUB_APP_NAME
+ export PROD_STUB_APP_NAME_ALIAS
+ export PROD_STUB_DISPLAY_NAME
+
+ export DOCKER_SIM_NWNAME
+ export KUBE_SIM_NAMESPACE
+
+ export PROD_STUB_IMAGE
+ export PROD_STUB_INTERNAL_PORT
+ export PROD_STUB_INTERNAL_SECURE_PORT
+ export PROD_STUB_EXTERNAL_PORT
+ export PROD_STUB_EXTERNAL_SECURE_PORT
+}
+
+
# Start the Producer stub in the simulator group
# args: -
# (Function for test scripts)
@@ -190,16 +199,11 @@
if [ $retcode_i -eq 0 ]; then
echo -e " Creating $PROD_STUB_APP_NAME deployment and service"
- export PROD_STUB_APP_NAME
- export KUBE_SIM_NAMESPACE
- export PROD_STUB_IMAGE
- export PROD_STUB_INTERNAL_PORT
- export PROD_STUB_INTERNAL_SECURE_PORT
- export PROD_STUB_EXTERNAL_PORT
- export PROD_STUB_EXTERNAL_SECURE_PORT
__kube_create_namespace $KUBE_SIM_NAMESPACE
+ __prodstub_export_vars
+
# Create service
input_yaml=$SIM_GROUP"/"$PROD_STUB_COMPOSE_DIR"/"svc.yaml
output_yaml=$PWD/tmp/prodstub_svc.yaml
@@ -211,24 +215,10 @@
__kube_create_instance app $PROD_STUB_APP_NAME $input_yaml $output_yaml
fi
- PROD_STUB_HOST_NAME=$(__kube_get_service_host $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE)
-
- PROD_STUB_EXTERNAL_PORT=$(__kube_get_service_port $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE "http")
- PROD_STUB_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE "https")
-
- echo " Host IP, http port, https port: $PROD_STUB_HOST_NAME $PROD_STUB_EXTERNAL_PORT $PROD_STUB_EXTERNAL_SECURE_PORT"
- if [ $PROD_STUB_HTTPX == "http" ]; then
- PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_PORT
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_PORT
- else
- PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_SECURE_PORT
- PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_SECURE_PORT
- fi
-
- __check_service_start $PROD_STUB_APP_NAME $PROD_STUB_PATH$PROD_STUB_ALIVE_URL
+ __check_service_start $PROD_STUB_APP_NAME $PROD_STUB_SERVICE_PATH$PROD_STUB_ALIVE_URL
echo -ne " Service $PROD_STUB_APP_NAME - reset "$SAMELINE
- result=$(__do_curl $PROD_STUB_PATH/reset)
+ result=$(__do_curl $PROD_STUB_SERVICE_PATH/reset)
if [ $? -ne 0 ]; then
echo -e " Service $PROD_STUB_APP_NAME - reset $RED Failed $ERED - will continue"
else
@@ -244,19 +234,11 @@
exit
fi
- export PROD_STUB_APP_NAME
- export PROD_STUB_APP_NAME_ALIAS
- export PROD_STUB_INTERNAL_PORT
- export PROD_STUB_EXTERNAL_PORT
- export PROD_STUB_INTERNAL_SECURE_PORT
- export PROD_STUB_EXTERNAL_SECURE_PORT
- export DOCKER_SIM_NWNAME
-
- export PROD_STUB_DISPLAY_NAME
+ __prodstub_export_vars
__start_container $PROD_STUB_COMPOSE_DIR "" NODOCKERARGS 1 $PROD_STUB_APP_NAME
- __check_service_start $PROD_STUB_APP_NAME $PROD_STUB_PATH$PROD_STUB_ALIVE_URL
+ __check_service_start $PROD_STUB_APP_NAME $PROD_STUB_SERVICE_PATH$PROD_STUB_ALIVE_URL
fi
echo ""
return 0
@@ -268,13 +250,11 @@
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "(${BASH_LINENO[0]}) - ${TIMESTAMP}: ${FUNCNAME[0]}" $@ >> $HTTPLOG
proxyflag=""
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- if [ $KUBE_PROXY_HTTPX == "http" ]; then
- proxyflag=" --proxy $KUBE_PROXY_PATH"
- else
- proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ proxyflag=" --proxy $KUBE_PROXY_PATH"
+ else
+ proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
fi
fi
echo " CMD: $3 $proxyflag" >> $HTTPLOG
@@ -326,7 +306,7 @@
return 1
fi
- curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/supervision/"$2
+ curlString="curl -X PUT -skw %{http_code} $PROD_STUB_SERVICE_PATH/arm/supervision/"$2
if [ $# -eq 3 ]; then
curlString=$curlString"?response="$3
fi
@@ -345,7 +325,7 @@
return 1
fi
- curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/create/$2/$3"
+ curlString="curl -X PUT -skw %{http_code} $PROD_STUB_SERVICE_PATH/arm/create/$2/$3"
if [ $# -eq 4 ]; then
curlString=$curlString"?response="$4
fi
@@ -364,7 +344,7 @@
return 1
fi
- curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/delete/$2/$3"
+ curlString="curl -X PUT -skw %{http_code} $PROD_STUB_SERVICE_PATH/arm/delete/$2/$3"
if [ $# -eq 4 ]; then
curlString=$curlString"?response="$4
fi
@@ -383,7 +363,7 @@
return 1
fi
- curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/type/$2/$3"
+ curlString="curl -X PUT -skw %{http_code} $PROD_STUB_SERVICE_PATH/arm/type/$2/$3"
__execute_curl_to_prodstub CONF $1 "$curlString"
return $?
@@ -399,7 +379,7 @@
return 1
fi
- curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_PATH/arm/type/$2/$3"
+ curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_SERVICE_PATH/arm/type/$2/$3"
__execute_curl_to_prodstub CONF $1 "$curlString"
return $?
@@ -425,7 +405,7 @@
file="./tmp/.p.json"
echo "$targetJson" > $file
- curlString="curl -X GET -skw %{http_code} $PROD_STUB_PATH/jobdata/$2/$3"
+ curlString="curl -X GET -skw %{http_code} $PROD_STUB_SERVICE_PATH/jobdata/$2/$3"
__execute_curl_to_prodstub TEST $1 "$curlString" $file
return $?
@@ -455,7 +435,7 @@
file="./tmp/.p.json"
echo "$targetJson" > $file
- curlString="curl -X GET -skw %{http_code} $PROD_STUB_PATH/jobdata/$2/$3"
+ curlString="curl -X GET -skw %{http_code} $PROD_STUB_SERVICE_PATH/jobdata/$2/$3"
__execute_curl_to_prodstub TEST $1 "$curlString" $file
return $?
@@ -481,7 +461,7 @@
file="./tmp/.p.json"
echo "$targetJson" > $file
- curlString="curl -X GET -skw %{http_code} $PROD_STUB_PATH/jobdata/$2/$3"
+ curlString="curl -X GET -skw %{http_code} $PROD_STUB_SERVICE_PATH/jobdata/$2/$3"
__execute_curl_to_prodstub TEST $1 "$curlString" $file
return $?
@@ -496,7 +476,7 @@
__print_err "<response-code> <producer-id> <job-id> " $@
return 1
fi
- curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_PATH/jobdata/$2/$3"
+ curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_SERVICE_PATH/jobdata/$2/$3"
__execute_curl_to_prodstub CONF $1 "$curlString"
return $?
@@ -511,7 +491,7 @@
# (Function for test scripts)
prodstub_equal() {
if [ $# -eq 2 ] || [ $# -eq 3 ]; then
- __var_test "PRODSTUB" "$PROD_STUB_PATH/counter/" $1 "=" $2 $3
+ __var_test "PRODSTUB" "$PROD_STUB_SERVICE_PATH/counter/" $1 "=" $2 $3
else
__print_err "Wrong args to prodstub_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
fi
diff --git a/test/common/pvccleaner_api_functions.sh b/test/common/pvccleaner_api_functions.sh
new file mode 100644
index 0000000..62c2d43
--- /dev/null
+++ b/test/common/pvccleaner_api_functions.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2020 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service management functions
+# for PVCCLEANER
+
+################ Test engine functions ################
+
+# Create the image var used during the test
+# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
+# <image-tag-suffix> is present only for images with staging, snapshot,release tags
+__PVCCLEANER_imagesetup() {
+ __check_and_create_image_var PVCCLEANER "PVC_CLEANER_IMAGE" "PVC_CLEANER_IMAGE_BASE" "PVC_CLEANER_IMAGE_TAG" REMOTE_PROXY "$PVC_CLEANER_DISPLAY_NAME"
+}
+
+# Pull image from remote repo or use locally built image
+# arg: <pull-policy-override> <pull-policy-original>
+# <pull-policy-override> Shall be used for images allowing overriding. For example use a local image when test is started to use released images
+# <pull-policy-original> Shall be used for images that does not allow overriding
+# Both var may contain: 'remote', 'remote-remove' or 'local'
+__PVCCLEANER_imagepull() {
+ __check_and_pull_image $1 "$PVC_CLEANER_DISPLAY_NAME" $PVC_CLEANER_APP_NAME PVC_CLEANER_IMAGE
+}
+
+# Build image (only for simulator or interfaces stubs owned by the test environment)
+# arg: <image-tag-suffix> (selects staging, snapshot, release etc)
+# <image-tag-suffix> is present only for images with staging, snapshot,release tags
+__PVCCLEANER_imagebuild() {
+ echo -e $RED"Image for app PVCCLEANER shall never be built"$ERED
+}
+
+# Generate a string for each included image using the app display name and a docker images format string
+# If a custom image repo is used then also the source image from the local repo is listed
+# arg: <docker-images-format-string> <file-to-append>
+__PVCCLEANER_image_data() {
+ echo -e "$PVC_CLEANER_DISPLAY_NAME\t$(docker images --format $1 $PVC_CLEANER_IMAGE)" >> $2
+ if [ ! -z "$PVC_CLEANER_IMAGE_SOURCE" ]; then
+ echo -e "-- source image --\t$(docker images --format $1 $PVC_CLEANER_IMAGE_SOURCE)" >> $2
+ fi
+}
+
+# Scale kubernetes resources to zero
+# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action.
+# This function is called for apps fully managed by the test script
+__PVCCLEANER_kube_scale_zero() {
+ :
+}
+
+# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
+# This function is called for prestarted apps not managed by the test script.
+__PVCCLEANER_kube_scale_zero_and_wait() {
+ :
+}
+
+# Delete all kube resouces for the app
+# This function is called for apps managed by the test script.
+__PVCCLEANER_kube_delete_all() {
+ :
+}
+
+# Store docker logs
+# This function is called for apps managed by the test script.
+# args: <log-dir> <file-prexix>
+__PVCCLEANER_store_docker_logs() {
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=PRODSTUB" -A --tail=-1 > $1$2_pvs_cleaner.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__PVCCLEANER_initial_setup() {
+ :
+}
+
+#######################################################
+
+# This is a system app, all usage in testcase_common.sh
\ No newline at end of file
diff --git a/test/common/rapp_catalogue_api_functions.sh b/test/common/rapp_catalogue_api_functions.sh
index 254883e..52416d3 100644
--- a/test/common/rapp_catalogue_api_functions.sh
+++ b/test/common/rapp_catalogue_api_functions.sh
@@ -57,8 +57,7 @@
# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
# This function is called for prestarted apps not managed by the test script.
__RC_kube_scale_zero_and_wait() {
- __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-rappcatalogueservice
- __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RC
+ __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app "$KUBE_NONRTRIC_NAMESPACE"-rappcatalogueservice
}
# Delete all kube resouces for the app
@@ -71,52 +70,73 @@
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__RC_store_docker_logs() {
- docker logs $RAPP_CAT_APP_NAME > $1$2_rc.log 2>&1
+ if [ $RUNMODE == "KUBE" ]; then
+ kubectl logs -l "autotest=RC" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_rc.log 2>&1
+ else
+ docker logs $RAPP_CAT_APP_NAME > $1$2_rc.log 2>&1
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__RC_initial_setup() {
+ use_rapp_catalogue_http
}
#######################################################
-## Access to RAPP Catalogue
-# Host name may be changed if app started by kube
-# Direct access from script
-RC_HTTPX="http"
-RC_HOST_NAME=$LOCALHOST_NAME
-RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_PORT
-# RC_ADAPTER used for switch between REST and DMAAP (only REST supported currently)
-RC_ADAPTER_TYPE="REST"
-RC_ADAPTER=$RC_PATH
-
-
-###########################
-### RAPP Catalogue
-###########################
-
-# Set http as the protocol to use for all communication to the RAPP Catalogue
+# Set http as the protocol to use for all communication to the Rapp catalogue
# args: -
# (Function for test scripts)
use_rapp_catalogue_http() {
- echo -e $BOLD"RAPP Catalogue protocol setting"$EBOLD
- echo -e " Using $BOLD http $EBOLD towards the RAPP Catalogue"
- RC_HTTPX="http"
- RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_PORT
- RC_ADAPTER_TYPE="REST"
- RC_ADAPTER=$RC_PATH
- echo ""
+ __rapp_catalogue_set_protocoll "http" $RAPP_CAT_INTERNAL_PORT $RAPP_CAT_EXTERNAL_PORT
}
-# Set https as the protocol to use for all communication to the RAPP Catalogue
+# Set https as the protocol to use for all communication to the Rapp catalogue
# args: -
# (Function for test scripts)
use_rapp_catalogue_https() {
- echo -e $BOLD"RAPP Catalogue protocol setting"$EBOLD
- echo -e " Using $BOLD https $EBOLD towards the RAPP Catalogue"
- RC_HTTPX="https"
- RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_SECURE_PORT
+ __rapp_catalogue_set_protocoll "https" $RAPP_CAT_INTERNAL_SECURE_PORT $RAPP_CAT_EXTERNAL_SECURE_PORT
+}
+
+# Setup paths to svc/container for internal and external access
+# args: <protocol> <internal-port> <external-port>
+__rapp_catalogue_set_protocoll() {
+ echo -e $BOLD"$RAPP_CAT_DISPLAY_NAME protocol setting"$EBOLD
+ echo -e " Using $BOLD http $EBOLD towards $RAPP_CAT_DISPLAY_NAME"
+
+ ## Access to Rapp catalogue
+
+ RC_SERVICE_PATH=$1"://"$RAPP_CAT_APP_NAME":"$2 # docker access, container->container and script->container via proxy
+ if [ $RUNMODE == "KUBE" ]; then
+ RC_SERVICE_PATH=$1"://"$RAPP_CAT_APP_NAME.$KUBE_NONRTRIC_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+ fi
+
+ # RC_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
RC_ADAPTER_TYPE="REST"
- RC_ADAPTER=$RC_PATH
+ RC_ADAPTER=$RC_SERVICE_PATH
+
echo ""
}
+# Export env vars for config files, docker compose and kube resources
+# args:
+__rapp_catalogue_export_vars() {
+
+ export RAPP_CAT_APP_NAME
+ export RAPP_CAT_DISPLAY_NAME
+
+ export DOCKER_SIM_NWNAME
+ export KUBE_NONRTRIC_NAMESPACE
+
+ export RAPP_CAT_IMAGE
+ export RAPP_CAT_INTERNAL_PORT
+ export RAPP_CAT_INTERNAL_SECURE_PORT
+ export RAPP_CAT_EXTERNAL_PORT
+ export RAPP_CAT_EXTERNAL_SECURE_PORT
+}
+
# Start the RAPP Catalogue container
# args: -
# (Function for test scripts)
@@ -158,13 +178,7 @@
#Check if nonrtric namespace exists, if not create it
__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
- export RAPP_CAT_APP_NAME
- export KUBE_NONRTRIC_NAMESPACE
- export RAPP_CAT_IMAGE
- export RAPP_CAT_INTERNAL_PORT
- export RAPP_CAT_INTERNAL_SECURE_PORT
- export RAPP_CAT_EXTERNAL_PORT
- export RAPP_CAT_EXTERNAL_SECURE_PORT
+ __rapp_catalogue_export_vars
#Create service
input_yaml=$SIM_GROUP"/"$RAPP_CAT_COMPOSE_DIR"/"svc.yaml
@@ -177,25 +191,8 @@
__kube_create_instance app $RAPP_CAT_APP_NAME $input_yaml $output_yaml
fi
- echo " Retrieving host and ports for service..."
- RC_HOST_NAME=$(__kube_get_service_host $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+ __check_service_start $RAPP_CAT_APP_NAME $RC_SERVICE_PATH$RAPP_CAT_ALIVE_URL
- RAPP_CAT_EXTERNAL_PORT=$(__kube_get_service_port $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
- RAPP_CAT_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
-
- echo " Host IP, http port, https port: $RC_HOST_NAME $RAPP_CAT_EXTERNAL_PORT $RAPP_CAT_EXTERNAL_SECURE_PORT"
- if [ $RC_HTTPX == "http" ]; then
- RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_PORT
- else
- RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_SECURE_PORT
- fi
-
- __check_service_start $RAPP_CAT_APP_NAME $RC_PATH$RAPP_CAT_ALIVE_URL
-
- # Update the curl adapter if set to rest, no change if type dmaap
- if [ $RC_ADAPTER_TYPE == "REST" ]; then
- RC_ADAPTER=$RC_PATH
- fi
else
__check_included_image 'RC'
if [ $? -eq 1 ]; then
@@ -204,18 +201,11 @@
exit
fi
- export RAPP_CAT_APP_NAME
- export RAPP_CAT_INTERNAL_PORT
- export RAPP_CAT_EXTERNAL_PORT
- export RAPP_CAT_INTERNAL_SECURE_PORT
- export RAPP_CAT_EXTERNAL_SECURE_PORT
- export DOCKER_SIM_NWNAME
-
- export RAPP_CAT_DISPLAY_NAME
+ __rapp_catalogue_export_vars
__start_container $RAPP_CAT_COMPOSE_DIR "" NODOCKERARGS 1 $RAPP_CAT_APP_NAME
- __check_service_start $RAPP_CAT_APP_NAME $RC_PATH$RAPP_CAT_ALIVE_URL
+ __check_service_start $RAPP_CAT_APP_NAME $RC_SERVICE_PATH$RAPP_CAT_ALIVE_URL
fi
echo ""
}
@@ -230,7 +220,7 @@
rc_equal() {
if [ $# -eq 2 ] || [ $# -eq 3 ]; then
#__var_test RC "$LOCALHOST_HTTP:$RC_EXTERNAL_PORT/" $1 "=" $2 $3
- __var_test RC "$RC_PATH/" $1 "=" $2 $3
+ __var_test RC "$RC_SERVICE_PATH/" $1 "=" $2 $3
else
__print_err "Wrong args to ecs_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
fi
diff --git a/test/common/ricsimulator_api_functions.sh b/test/common/ricsimulator_api_functions.sh
index 0df800f..f760313 100644
--- a/test/common/ricsimulator_api_functions.sh
+++ b/test/common/ricsimulator_api_functions.sh
@@ -51,29 +51,44 @@
# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action.
# This function is called for apps fully managed by the test script
__RICSIM_kube_scale_zero() {
- __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RICSIM
+ __kube_scale_all_resources $KUBE_A1SIM_NAMESPACE autotest RICSIM
}
# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action.
# This function is called for prestarted apps not managed by the test script.
__RICSIM_kube_scale_zero_and_wait() {
- __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-a1simulator
+ #__kube_scale_and_wait_all_resources $KUBE_A1SIM_NAMESPACE app $KUBE_A1SIM_NAMESPACE"-"$RIC_SIM_PREFIX
+ __kube_scale_and_wait_all_resources $KUBE_A1SIM_NAMESPACE app # the values of the app label is not known
}
# Delete all kube resouces for the app
# This function is called for apps managed by the test script.
__RICSIM_kube_delete_all() {
- __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RICSIM
+ __kube_delete_all_resources $KUBE_A1SIM_NAMESPACE autotest RICSIM
}
# Store docker logs
# This function is called for apps managed by the test script.
# args: <log-dir> <file-prexix>
__RICSIM_store_docker_logs() {
- rics=$(docker ps --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "status=running" --format {{.Names}})
- for ric in $rics; do
- docker logs $ric > $1$2_$ric.log 2>&1
- done
+ if [ $RUNMODE == "KUBE" ]; then
+ for podname in $(kubectl get pods -n $KUBE_A1SIM_NAMESPACE -l "autotest=RICSIM" -o custom-columns=":metadata.name"); do
+ kubectl logs -n $KUBE_A1SIM_NAMESPACE $podname --tail=-1 > $1$2_$podname.log 2>&1
+ done
+ else
+
+ rics=$(docker ps --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "status=running" --format {{.Names}})
+ for ric in $rics; do
+ docker logs $ric > $1$2_$ric.log 2>&1
+ done
+ fi
+}
+
+# Initial setup of protocol, host and ports
+# This function is called for apps managed by the test script.
+# args: -
+__RICSIM_initial_setup() {
+ use_simulator_http
}
#######################################################
@@ -152,7 +167,7 @@
echo -e " Using existing $1 statefulset and service"
echo " Using existing simulator deployment and service for statefulset $1"
echo " Setting $1 replicas=$2"
- __kube_scale statefulset $1 $KUBE_NONRTRIC_NAMESPACE $2
+ __kube_scale statefulset $1 $KUBE_A1SIM_NAMESPACE $2
echo ""
return
fi
@@ -199,7 +214,7 @@
#export needed env var for statefulset
export RIC_SIM_SET_NAME=$(echo "$1" | tr '_' '-') #kube does not accept underscore in names
- export KUBE_NONRTRIC_NAMESPACE
+ export KUBE_A1SIM_NAMESPACE
export RIC_SIM_IMAGE
#Adding 1 more instance, instance 0 is never used. This is done to keep test scripts compatible
# with docker that starts instance index on 1.....
@@ -211,7 +226,7 @@
echo -e " Creating $POLICY_AGENT_APP_NAME app and expose service"
#Check if nonrtric namespace exists, if not create it
- __kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+ __kube_create_namespace $KUBE_A1SIM_NAMESPACE
# Create service
input_yaml=$SIM_GROUP"/"$RIC_SIM_COMPOSE_DIR"/"svc.yaml
@@ -266,18 +281,10 @@
cntr=1
while [ $cntr -le $2 ]; do
app=$1"_"$cntr
- localport=0
-
- while [ $localport -eq 0 ]; do
- echo -ne " Waiting for container ${app} to publish its ports...${SAMELINE}"
- localport=$(__find_sim_port $app)
- sleep 0.5
- echo -ne " Waiting for container ${app} to publish its ports...retrying....${SAMELINE}"
- done
- echo -e " Waiting for container ${app} to publish its ports...retrying....$GREEN OK $EGREEN"
- __check_service_start $app $RIC_SIM_HOST":"$localport$RIC_SIM_ALIVE_URL
+ __check_service_start $app $RIC_SIM_HTTPX"://"$app:$RIC_SIM_PORT$RIC_SIM_ALIVE_URL
let cntr=cntr+1
done
+
fi
echo ""
return 0
@@ -291,21 +298,7 @@
#example gnb_1_2 -> gnb-1-2
set_name=$(echo $name | rev | cut -d- -f2- | rev) # Cut index part of ric name to get the name of statefulset
# example gnb-g1-2 -> gnb-g1 where gnb-g1-2 is the ric name and gnb-g1 is the set name
- echo $name"."$set_name"."$KUBE_NONRTRIC_NAMESPACE
-}
-
-# Helper function to get a the port of a specific ric simulator
-# args: <ric-id>
-# (Not for test scripts)
-__find_sim_port() {
- name=$1" " #Space appended to prevent matching 10 if 1 is desired....
- cmdstr="docker inspect --format='{{(index (index .NetworkSettings.Ports \"$RIC_SIM_PORT/tcp\") 0).HostPort}}' ${name}"
- res=$(eval $cmdstr)
- if [[ "$res" =~ ^[0-9]+$ ]]; then
- echo $res
- else
- echo "0"
- fi
+ echo $name"."$set_name"."$KUBE_A1SIM_NAMESPACE
}
# Helper function to get a the port and host name of a specific ric simulator
@@ -313,28 +306,13 @@
# (Not for test scripts)
__find_sim_host() {
if [ $RUNMODE == "KUBE" ]; then
- ricname=$(echo "$1" | tr '_' '-')
- for timeout in {1..500}; do # long waiting time needed in case of starting large number of sims
- host=$(kubectl get pod $ricname -n $KUBE_NONRTRIC_NAMESPACE -o jsonpath='{.status.podIP}' 2> /dev/null)
- if [ ! -z "$host" ]; then
- echo $RIC_SIM_HTTPX"://"$host":"$RIC_SIM_PORT
- return 0
- fi
- sleep 0.5
- done
- echo "host-not-found-fatal-error"
+ ricname=$(echo "$1" | tr '_' '-') # Kube does not accept underscore in names as docker do
+ ric_setname="${ricname%-*}" #Extract the stateful set name
+ echo $RIC_SIM_HTTPX"://"$ricname.$ric_setname.$KUBE_A1SIM_NAMESPACE":"$RIC_SIM_PORT
else
- name=$1" " #Space appended to prevent matching 10 if 1 is desired....
- cmdstr="docker inspect --format='{{(index (index .NetworkSettings.Ports \"$RIC_SIM_PORT/tcp\") 0).HostPort}}' ${name}"
- res=$(eval $cmdstr)
- if [[ "$res" =~ ^[0-9]+$ ]]; then
- echo $RIC_SIM_HOST:$res
- return 0
- else
- echo "0"
- fi
+ echo $RIC_SIM_HTTPX"://"$1":"$RIC_SIM_PORT
+
fi
- return 1
}
# Generate a UUID to use as prefix for policy ids
@@ -349,13 +327,11 @@
__execute_curl_to_sim() {
echo ${FUNCNAME[1]} "line: "${BASH_LINENO[1]} >> $HTTPLOG
proxyflag=""
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- if [ $KUBE_PROXY_HTTPX == "http" ]; then
- proxyflag=" --proxy $KUBE_PROXY_PATH"
- else
- proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ proxyflag=" --proxy $KUBE_PROXY_PATH"
+ else
+ proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
fi
fi
echo " CMD: $2 $proxyflag" >> $HTTPLOG
diff --git a/test/common/test_env-onap-guilin.sh b/test/common/test_env-onap-guilin.sh
index 59acba3..8344f38 100755
--- a/test/common/test_env-onap-guilin.sh
+++ b/test/common/test_env-onap-guilin.sh
@@ -138,6 +138,10 @@
KUBE_PROXY_IMAGE_TAG_LOCAL="latest"
#No remote image for kube proxy, local image always used
+#Kube proxy remote image and tag
+PVC_CLEANER_IMAGE_BASE="ubuntu"
+PVC_CLEANER_IMAGE_TAG_REMOTE_PROXY="20.10"
+#No local image for pvc cleaner, remote image always used
# List of app short names produced by the project
PROJECT_IMAGES_APP_NAMES="PA SDNC"
@@ -157,7 +161,9 @@
KUBE_NONRTRIC_NAMESPACE="nonrtric" # Namespace for all nonrtric components
KUBE_SIM_NAMESPACE="nonrtric-ft" # Namespace for simulators (except MR and RICSIM)
+KUBE_A1SIM_NAMESPACE="a1-sim" # Namespace for a1-p simulators (RICSIM)
KUBE_ONAP_NAMESPACE="onap" # Namespace for onap (only message router)
+KUBE_SNDC_NAMESPACE="onap" # Namespace for sdnc
POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container)
POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container)
@@ -206,6 +212,7 @@
MR_STUB_COMPOSE_DIR="mrstub" # Dir in simulator_group for mr stub for - docker-compose
MR_KAFKA_APP_NAME="kafka" # Kafka app name
MR_ZOOKEEPER_APP_NAME="zookeeper" # Zookeeper app name
+MR_DMAAP_HOST_MNT_DIR="/mnt" # Config files dir on localhost
CR_APP_NAME="callback-receiver" # Name for the Callback receiver
@@ -307,6 +314,10 @@
KUBE_PROXY_ALIVE_URL="/" # Base path for alive check
KUBE_PROXY_COMPOSE_DIR="kubeproxy" # Dir in simulator_group for docker-compose
+PVC_CLEANER_APP_NAME="pvc-cleaner" # Name for Persistent Volume Cleaner container
+PVC_CLEANER_DISPLAY_NAME="Persistent Volume Cleaner" # Display name for Persistent Volume Cleaner
+PVC_CLEANER_COMPOSE_DIR="pvc-cleaner" # Dir in simulator_group for yamls
+
########################################
# Setting for common curl-base function
########################################
diff --git a/test/common/test_env-onap-honolulu.sh b/test/common/test_env-onap-honolulu.sh
index 54e6fbe..00e5d4b 100755
--- a/test/common/test_env-onap-honolulu.sh
+++ b/test/common/test_env-onap-honolulu.sh
@@ -161,6 +161,11 @@
KUBE_PROXY_IMAGE_TAG_LOCAL="latest"
#No remote image for kube proxy, local image always used
+#Kube proxy remote image and tag
+PVC_CLEANER_IMAGE_BASE="ubuntu"
+PVC_CLEANER_IMAGE_TAG_REMOTE_PROXY="20.10"
+#No local image for pvc cleaner, remote image always used
+
# List of app short names produced by the project
PROJECT_IMAGES_APP_NAMES="PA SDNC"
@@ -180,7 +185,9 @@
KUBE_NONRTRIC_NAMESPACE="nonrtric" # Namespace for all nonrtric components
KUBE_SIM_NAMESPACE="nonrtric-ft" # Namespace for simulators (except MR and RICSIM)
+KUBE_A1SIM_NAMESPACE="a1-sim" # Namespace for a1-p simulators (RICSIM)
KUBE_ONAP_NAMESPACE="onap" # Namespace for onap (only message router)
+KUBE_SNDC_NAMESPACE="onap" # Namespace for sdnc
POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container)
POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container)
@@ -249,6 +256,7 @@
MR_STUB_COMPOSE_DIR="mrstub" # Dir in simulator_group for mr stub for - docker-compose
MR_KAFKA_APP_NAME="kafka" # Kafka app name
MR_ZOOKEEPER_APP_NAME="zookeeper" # Zookeeper app name
+MR_DMAAP_HOST_MNT_DIR="/mnt" # Config files dir on localhost
CR_APP_NAME="callback-receiver" # Name for the Callback receiver
CR_DISPLAY_NAME="Callback Reciever"
@@ -374,6 +382,10 @@
KUBE_PROXY_ALIVE_URL="/" # Base path for alive check
KUBE_PROXY_COMPOSE_DIR="kubeproxy" # Dir in simulator_group for docker-compose
+PVC_CLEANER_APP_NAME="pvc-cleaner" # Name for Persistent Volume Cleaner container
+PVC_CLEANER_DISPLAY_NAME="Persistent Volume Cleaner" # Display name for Persistent Volume Cleaner
+PVC_CLEANER_COMPOSE_DIR="pvc-cleaner" # Dir in simulator_group for yamls
+
########################################
# Setting for common curl-base function
########################################
diff --git a/test/common/test_env-onap-istanbul.sh b/test/common/test_env-onap-istanbul.sh
index 829da8f..f8c411f 100644
--- a/test/common/test_env-onap-istanbul.sh
+++ b/test/common/test_env-onap-istanbul.sh
@@ -164,6 +164,11 @@
KUBE_PROXY_IMAGE_TAG_LOCAL="latest"
#No remote image for kube proxy, local image always used
+#Kube proxy remote image and tag
+PVC_CLEANER_IMAGE_BASE="ubuntu"
+PVC_CLEANER_IMAGE_TAG_REMOTE_PROXY="20.10"
+#No local image for pvc cleaner, remote image always used
+
# List of app short names produced by the project
PROJECT_IMAGES_APP_NAMES="PA SDNC"
@@ -183,7 +188,9 @@
KUBE_NONRTRIC_NAMESPACE="nonrtric" # Namespace for all nonrtric components
KUBE_SIM_NAMESPACE="nonrtric-ft" # Namespace for simulators (except MR and RICSIM)
+KUBE_A1SIM_NAMESPACE="a1-sim" # Namespace for a1-p simulators (RICSIM)
KUBE_ONAP_NAMESPACE="onap" # Namespace for onap (only message router)
+KUBE_SNDC_NAMESPACE="onap" # Namespace for sdnc
POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container)
POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container)
@@ -252,6 +259,7 @@
MR_STUB_COMPOSE_DIR="mrstub" # Dir in simulator_group for mr stub for - docker-compose
MR_KAFKA_APP_NAME="kafka" # Kafka app name
MR_ZOOKEEPER_APP_NAME="zookeeper" # Zookeeper app name
+MR_DMAAP_HOST_MNT_DIR="/mnt2" # Config files dir on localhost
CR_APP_NAME="callback-receiver" # Name for the Callback receiver
CR_DISPLAY_NAME="Callback Reciever"
@@ -393,6 +401,10 @@
KUBE_PROXY_ALIVE_URL="/" # Base path for alive check
KUBE_PROXY_COMPOSE_DIR="kubeproxy" # Dir in simulator_group for docker-compose
+PVC_CLEANER_APP_NAME="pvc-cleaner" # Name for Persistent Volume Cleaner container
+PVC_CLEANER_DISPLAY_NAME="Persistent Volume Cleaner" # Display name for Persistent Volume Cleaner
+PVC_CLEANER_COMPOSE_DIR="pvc-cleaner" # Dir in simulator_group for yamls
+
########################################
# Setting for common curl-base function
########################################
diff --git a/test/common/test_env-oran-cherry.sh b/test/common/test_env-oran-cherry.sh
index 91b153a..43077ea 100755
--- a/test/common/test_env-oran-cherry.sh
+++ b/test/common/test_env-oran-cherry.sh
@@ -165,6 +165,11 @@
KUBE_PROXY_IMAGE_TAG_LOCAL="latest"
#No remote image for kube proxy, local image always used
+#Kube proxy remote image and tag
+PVC_CLEANER_IMAGE_BASE="ubuntu"
+PVC_CLEANER_IMAGE_TAG_REMOTE_PROXY="20.10"
+#No local image for pvc cleaner, remote image always used
+
# List of app short names produced by the project
PROJECT_IMAGES_APP_NAMES="PA ECS CP SDNC RC RICSIM"
@@ -183,7 +188,9 @@
KUBE_NONRTRIC_NAMESPACE="nonrtric" # Namespace for all nonrtric components
KUBE_SIM_NAMESPACE="nonrtric-ft" # Namespace for simulators (except MR and RICSIM)
+KUBE_A1SIM_NAMESPACE="a1-sim" # Namespace for a1-p simulators (RICSIM)
KUBE_ONAP_NAMESPACE="onap" # Namespace for onap (only message router)
+KUBE_SNDC_NAMESPACE="onap" # Namespace for sdnc
POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container)
POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container)
@@ -252,6 +259,7 @@
MR_STUB_COMPOSE_DIR="mrstub" # Dir in simulator_group for mr stub for - docker-compose
MR_KAFKA_APP_NAME="kafka" # Kafka app name
MR_ZOOKEEPER_APP_NAME="zookeeper" # Zookeeper app name
+MR_DMAAP_HOST_MNT_DIR="/mnt" # Config files dir on localhost
CR_APP_NAME="callback-receiver" # Name for the Callback receiver
@@ -374,6 +382,11 @@
KUBE_PROXY_ALIVE_URL="/" # Base path for alive check
KUBE_PROXY_COMPOSE_DIR="kubeproxy" # Dir in simulator_group for docker-compose
+
+PVC_CLEANER_APP_NAME="pvc-cleaner" # Name for Persistent Volume Cleaner container
+PVC_CLEANER_DISPLAY_NAME="Persistent Volume Cleaner" # Display name for Persistent Volume Cleaner
+PVC_CLEANER_COMPOSE_DIR="pvc-cleaner" # Dir in simulator_group for yamls
+
########################################
# Setting for common curl-base function
########################################
diff --git a/test/common/test_env-oran-d-release.sh b/test/common/test_env-oran-d-release.sh
index 385dafe..cc510d5 100755
--- a/test/common/test_env-oran-d-release.sh
+++ b/test/common/test_env-oran-d-release.sh
@@ -184,6 +184,11 @@
KUBE_PROXY_IMAGE_TAG_LOCAL="latest"
#No remote image for kube proxy, local image always used
+#Kube proxy remote image and tag
+PVC_CLEANER_IMAGE_BASE="ubuntu"
+PVC_CLEANER_IMAGE_TAG_REMOTE_PROXY="20.10"
+#No local image for pvc cleaner, remote image always used
+
# List of app short names produced by the project
PROJECT_IMAGES_APP_NAMES="PA ECS CP RC RICSIM NGW" # Add SDNC here if oran image is used
@@ -202,7 +207,9 @@
KUBE_NONRTRIC_NAMESPACE="nonrtric" # Namespace for all nonrtric components
KUBE_SIM_NAMESPACE="nonrtric-ft" # Namespace for simulators (except MR and RICSIM)
+KUBE_A1SIM_NAMESPACE="a1-sim" # Namespace for a1-p simulators (RICSIM)
KUBE_ONAP_NAMESPACE="onap" # Namespace for onap (only message router)
+KUBE_SNDC_NAMESPACE="onap" # Namespace for sdnc
POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container)
POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container)
@@ -227,7 +234,6 @@
POLICY_AGENT_CONFIG_FILE="application.yaml" # Container config file name
POLICY_AGENT_DATA_FILE="application_configuration.json" # Container data file name
POLICY_AGENT_CONTAINER_MNT_DIR="/var/policy-management-service" # Mounted dir in the container
-POLICY_AGENT_CONTAINER_MNT_DIR="/var/policy-management-service" # Mounted dir in the container
ECS_APP_NAME="enrichmentservice" # Name for ECS container
ECS_DISPLAY_NAME="Enrichment Coordinator Service" # Display name for ECS container
@@ -272,6 +278,7 @@
MR_STUB_COMPOSE_DIR="mrstub" # Dir in simulator_group for mr stub for - docker-compose
MR_KAFKA_APP_NAME="kafka" # Kafka app name
MR_ZOOKEEPER_APP_NAME="zookeeper" # Zookeeper app name
+MR_DMAAP_HOST_MNT_DIR="/mnt" # Config files dir on localhost
CR_APP_NAME="callback-receiver" # Name for the Callback receiver
@@ -438,6 +445,11 @@
KUBE_PROXY_ALIVE_URL="/" # Base path for alive check
KUBE_PROXY_COMPOSE_DIR="kubeproxy" # Dir in simulator_group for docker-compose
+
+PVC_CLEANER_APP_NAME="pvc-cleaner" # Name for Persistent Volume Cleaner container
+PVC_CLEANER_DISPLAY_NAME="Persistent Volume Cleaner" # Display name for Persistent Volume Cleaner
+PVC_CLEANER_COMPOSE_DIR="pvc-cleaner" # Dir in simulator_group for yamls
+
########################################
# Setting for common curl-base function
########################################
diff --git a/test/common/test_env-oran-e-release.sh b/test/common/test_env-oran-e-release.sh
index 9b83044..e2b53da 100755
--- a/test/common/test_env-oran-e-release.sh
+++ b/test/common/test_env-oran-e-release.sh
@@ -129,6 +129,19 @@
RIC_SIM_IMAGE_TAG_REMOTE="2.2.0"
RIC_SIM_IMAGE_TAG_REMOTE_RELEASE="2.2.0"
+# DMAAP Mediator Service
+DMAAP_MED_IMAGE_BASE="o-ran-sc/nonrtric-dmaap-mediator-producer"
+DMAAP_MED_IMAGE_TAG_LOCAL="1.0.0-SNAPSHOT"
+DMAAP_MED_IMAGE_TAG_REMOTE_SNAPSHOT="1.0.0-SNAPSHOT"
+DMAAP_MED_IMAGE_TAG_REMOTE="1.0.0"
+DMAAP_MED_IMAGE_TAG_REMOTE_RELEASE="1.0.0"
+
+# DMAAP Adapter Service
+DMAAP_ADP_IMAGE_BASE="o-ran-sc/nonrtric-dmaap-adaptor"
+DMAAP_ADP_IMAGE_TAG_LOCAL="1.0.0-SNAPSHOT"
+DMAAP_ADP_IMAGE_TAG_REMOTE_SNAPSHOT="1.0.0-SNAPSHOT"
+DMAAP_ADP_IMAGE_TAG_REMOTE="1.0.0"
+DMAAP_ADP_IMAGE_TAG_REMOTE_RELEASE="1.0.0"
#Consul remote image and tag
CONSUL_IMAGE_BASE="consul"
@@ -166,17 +179,17 @@
#ONAP Zookeeper remote image and tag
ONAP_ZOOKEEPER_IMAGE_BASE="onap/dmaap/zookeeper"
-ONAP_ZOOKEEPER_IMAGE_TAG_REMOTE_RELEASE_ONAP="6.0.3"
+ONAP_ZOOKEEPER_IMAGE_TAG_REMOTE_RELEASE_ONAP="6.1.0"
#No local image for ONAP Zookeeper, remote image always used
#ONAP Kafka remote image and tag
ONAP_KAFKA_IMAGE_BASE="onap/dmaap/kafka111"
-ONAP_KAFKA_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.0.4"
+ONAP_KAFKA_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.1.1"
#No local image for ONAP Kafka, remote image always used
#ONAP DMAAP-MR remote image and tag
ONAP_DMAAPMR_IMAGE_BASE="onap/dmaap/dmaap-mr"
-ONAP_DMAAPMR_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.1.18"
+ONAP_DMAAPMR_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.3.0"
#No local image for ONAP DMAAP-MR, remote image always used
#Kube proxy remote image and tag
@@ -184,8 +197,13 @@
KUBE_PROXY_IMAGE_TAG_LOCAL="latest"
#No remote image for kube proxy, local image always used
+#Kube proxy remote image and tag
+PVC_CLEANER_IMAGE_BASE="ubuntu"
+PVC_CLEANER_IMAGE_TAG_REMOTE_PROXY="20.10"
+#No local image for pvc cleaner, remote image always used
+
# List of app short names produced by the project
-PROJECT_IMAGES_APP_NAMES="PA ECS CP RC RICSIM NGW" # Add SDNC here if oran image is used
+PROJECT_IMAGES_APP_NAMES="PA ECS CP RC RICSIM NGW DMAAPADP DMAAPMED" # Add SDNC here if oran image is used
# List of app short names which images pulled from ORAN
ORAN_IMAGES_APP_NAMES="" # Not used
@@ -198,11 +216,26 @@
# Detailed settings per app
########################################
+# Port number variables
+# =====================
+# Port number vars <name>_INTERNAL_PORT and <name>_INTERNAL_SECURE_PORT are set as pod/container port in kube and container port in docker
+#
+# Port number vars <name>_EXTERNAL_PORT and <name>_EXTERNAL_SECURE_PORT are set as svc port in kube and localhost port in docker
+#
+# For some components, eg. MR, can be represented as the MR-STUB and/or the DMAAP MR. For these components
+# special vars nameed <name>_LOSTHOST_PORT and <name>_LOCALHOST_SECURE_PORT are used as localhost ports instead of
+# name>_EXTERNAL_PORT and <name>_EXTERNAL_SECURE_PORT ports in docker in order to prevent overalapping ports on local host
+#
+# For KUBE PROXY there are special external port for docker as the proyx exposes also the kube svc port on localhost,
+# therefore a special set of external port are needed for docker <name>_DOCKER_EXTERNAL_PORT and <name>_DOCKER_EXTERNAL_SECURE_PORT
+
DOCKER_SIM_NWNAME="nonrtric-docker-net" # Name of docker private network
KUBE_NONRTRIC_NAMESPACE="nonrtric" # Namespace for all nonrtric components
KUBE_SIM_NAMESPACE="nonrtric-ft" # Namespace for simulators (except MR and RICSIM)
+KUBE_A1SIM_NAMESPACE="a1-sim" # Namespace for a1-p simulators (RICSIM)
KUBE_ONAP_NAMESPACE="onap" # Namespace for onap (only message router)
+KUBE_SNDC_NAMESPACE="onap" # Namespace for sdnc
POLICY_AGENT_EXTERNAL_PORT=8081 # Policy Agent container external port (host -> container)
POLICY_AGENT_INTERNAL_PORT=8081 # Policy Agent container internal port (container -> container)
@@ -227,7 +260,6 @@
POLICY_AGENT_CONFIG_FILE="application.yaml" # Container config file name
POLICY_AGENT_DATA_FILE="application_configuration.json" # Container data file name
POLICY_AGENT_CONTAINER_MNT_DIR="/var/policy-management-service" # Mounted dir in the container
-POLICY_AGENT_CONTAINER_MNT_DIR="/var/policy-management-service" # Mounted dir in the container
ECS_APP_NAME="enrichmentservice" # Name for ECS container
ECS_DISPLAY_NAME="Enrichment Coordinator Service" # Display name for ECS container
@@ -272,6 +304,7 @@
MR_STUB_COMPOSE_DIR="mrstub" # Dir in simulator_group for mr stub for - docker-compose
MR_KAFKA_APP_NAME="kafka" # Kafka app name
MR_ZOOKEEPER_APP_NAME="zookeeper" # Zookeeper app name
+MR_DMAAP_HOST_MNT_DIR="/mnt2" # Config files dir on localhost
CR_APP_NAME="callback-receiver" # Name for the Callback receiver
@@ -281,6 +314,7 @@
CR_EXTERNAL_SECURE_PORT=8091 # Callback receiver container external secure port (host -> container)
CR_INTERNAL_SECURE_PORT=8091 # Callback receiver container internal secure port (container -> container)
CR_APP_CALLBACK="/callbacks" # Url for callbacks
+CR_APP_CALLBACK_MR="/callbacks-mr" # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
CR_ALIVE_URL="/" # Base path for alive check
CR_COMPOSE_DIR="cr" # Dir in simulator_group for docker-compose
@@ -434,10 +468,58 @@
KUBE_PROXY_WEB_INTERNAL_PORT=8081 # Kube Http Proxy container internal port (container -> container)
KUBE_PROXY_WEB_EXTERNAL_SECURE_PORT=8783 # Kube Proxy container external secure port (host -> container)
KUBE_PROXY_WEB_INTERNAL_SECURE_PORT=8434 # Kube Proxy container internal secure port (container -> container
+
+KUBE_PROXY_DOCKER_EXTERNAL_PORT=8732 # Kube Http Proxy container external port, doocker (host -> container)
+KUBE_PROXY_DOCKER_EXTERNAL_SECURE_PORT=8784 # Kube Proxy container external secure port, doocker (host -> container)
+KUBE_PROXY_WEB_DOCKER_EXTERNAL_PORT=8733 # Kube Http Proxy container external port, doocker (host -> container)
+KUBE_PROXY_WEB_DOCKER_EXTERNAL_SECURE_PORT=8785 # Kube Proxy container external secure port, doocker (host -> container)
+
KUBE_PROXY_PATH="" # Proxy url path, will be set if proxy is started
KUBE_PROXY_ALIVE_URL="/" # Base path for alive check
KUBE_PROXY_COMPOSE_DIR="kubeproxy" # Dir in simulator_group for docker-compose
+DMAAP_ADP_APP_NAME="dmaapadapterservice" # Name for Dmaap Adapter container
+DMAAP_ADP_DISPLAY_NAME="Dmaap Adapter Service" # Display name for Dmaap Adapter container
+DMAAP_ADP_EXTERNAL_PORT=9087 # Dmaap Adapter container external port (host -> container)
+DMAAP_ADP_INTERNAL_PORT=8084 # Dmaap Adapter container internal port (container -> container)
+DMAAP_ADP_EXTERNAL_SECURE_PORT=9088 # Dmaap Adapter container external secure port (host -> container)
+DMAAP_ADP_INTERNAL_SECURE_PORT=8435 # Dmaap Adapter container internal secure port (container -> container)
+
+#DMAAP_ADP_LOGPATH="/var/log/dmaap-adaptor-service/application.log" # Path the application log in the Dmaap Adapter container
+DMAAP_ADP_HOST_MNT_DIR="./mnt" # Mounted db dir, relative to compose file, on the host
+#MAAP_ADP_CONTAINER_MNT_DIR="/var/dmaap-adaptor-service" # Mounted dir in the container
+DMAAP_ADP_ACTUATOR="/actuator/loggers/org.oran.dmaapadapter" # Url for trace/debug
+#DMAAP_ADP_CERT_MOUNT_DIR="./cert"
+DMAAP_ADP_ALIVE_URL="/actuator/info" # Base path for alive check
+DMAAP_ADP_COMPOSE_DIR="dmaapadp" # Dir in simulator_group for docker-compose
+DMAAP_ADP_CONFIG_MOUNT_PATH="/opt/app/dmaap-adaptor-service/config" # Internal container path for configuration
+DMAAP_ADP_DATA_MOUNT_PATH="/opt/app/dmaap-adaptor-service/data" # Path in container for data file
+DMAAP_ADP_DATA_FILE="application_configuration.json" # Container data file name
+DMAAP_ADP_CONFIG_FILE=application.yaml # Config file name
+
+DMAAP_MED_APP_NAME="dmaapmediatorservice" # Name for Dmaap Mediator container
+DMAAP_MED_DISPLAY_NAME="Dmaap Mediator Service" # Display name for Dmaap Mediator container
+DMAAP_MED_EXTERNAL_PORT=8085 # Dmaap Mediator container external port (host -> container)
+DMAAP_MED_INTERNAL_PORT=8085 # Dmaap Mediator container internal port (container -> container)
+DMAAP_MED_EXTERNAL_SECURE_PORT=8185 # Dmaap Mediator container external secure port (host -> container)
+DMAAP_MED_INTERNAL_SECURE_PORT=8185 # Dmaap Mediator container internal secure port (container -> container)
+
+DMAAP_MED_LOGPATH="/var/log/dmaap-adaptor-service/application.log" # Path the application log in the Dmaap Mediator container
+DMAAP_MED_HOST_MNT_DIR="./mnt" # Mounted db dir, relative to compose file, on the host
+#MAAP_ADP_CONTAINER_MNT_DIR="/var/dmaap-adaptor-service" # Mounted dir in the container
+#DMAAP_MED_ACTUATOR="/actuator/loggers/org.oransc.enrichment" # Url for trace/debug
+#DMAAP_MED_CERT_MOUNT_DIR="./cert"
+DMAAP_MED_ALIVE_URL="/status" # Base path for alive check
+DMAAP_MED_COMPOSE_DIR="dmaapmed" # Dir in simulator_group for docker-compose
+#MAAP_MED_CONFIG_MOUNT_PATH="/app" # Internal container path for configuration
+DMAAP_MED_DATA_MOUNT_PATH="/configs" # Path in container for data file
+DMAAP_MED_DATA_FILE="type_config.json" # Container data file name
+#DMAAP_MED_CONFIG_FILE=application.yaml # Config file name
+
+PVC_CLEANER_APP_NAME="pvc-cleaner" # Name for Persistent Volume Cleaner container
+PVC_CLEANER_DISPLAY_NAME="Persistent Volume Cleaner" # Display name for Persistent Volume Cleaner
+PVC_CLEANER_COMPOSE_DIR="pvc-cleaner" # Dir in simulator_group for yamls
+
########################################
# Setting for common curl-base function
########################################
diff --git a/test/common/testcase_common.sh b/test/common/testcase_common.sh
index b63d4d1..8d832d7 100755
--- a/test/common/testcase_common.sh
+++ b/test/common/testcase_common.sh
@@ -28,6 +28,7 @@
echo " [--ricsim-prefix <prefix> ] [--use-local-image <app-nam>+] [--use-snapshot-image <app-nam>+]"
echo " [--use-staging-image <app-nam>+] [--use-release-image <app-nam>+] [--image-repo <repo-address]"
echo " [--repo-policy local|remote] [--cluster-timeout <timeout-in seconds>] [--print-stats]"
+ echo " [--override <override-environment-filename> --pre-clean]"
}
if [ $# -eq 1 ] && [ "$1" == "help" ]; then
@@ -43,7 +44,7 @@
echo "remote-remove - Same as 'remote' but will also try to pull fresh images from remote repositories"
echo "docker - Test executed in docker environment"
echo "kube - Test executed in kubernetes environment - requires an already started kubernetes environment"
- echo "--env-file - The script will use the supplied file to read environment variables from"
+ echo "--env-file <file> - The script will use the supplied file to read environment variables from"
echo "release - If this flag is given the script will use release version of the images"
echo "auto-clean - If the function 'auto_clean_containers' is present in the end of the test script then all containers will be stopped and removed. If 'auto-clean' is not given then the function has no effect."
echo "--stop-at-error - The script will stop when the first failed test or configuration"
@@ -56,6 +57,8 @@
echo "--repo-policy - Policy controlling which images to re-tag and push if param --image-repo is set. Default is 'local'"
echo "--cluster-timeout - Optional timeout for cluster where it takes time to obtain external ip/host-name. Timeout in seconds. "
echo "--print-stats - Print current test stats after each test."
+ echo "--override <file> - Override setting from the file supplied by --env-file"
+ echo "--pre-clean - Will clean kube resouces when running docker and vice versa"
echo ""
echo "List of app short names supported: "$APP_SHORT_NAMES
@@ -87,6 +90,8 @@
# default test environment variables
TEST_ENV_VAR_FILE=""
+#Override env file, will be added on top of the above file
+TEST_ENV_VAR_FILE_OVERRIDE=""
echo "Test case started as: ${BASH_SOURCE[$i+1]} "$@
@@ -98,6 +103,9 @@
# Var to hold 'auto' in case containers shall be stopped when test case ends
AUTO_CLEAN=""
+# Var to indicate pre clean, if flag --pre-clean is set the script will clean kube resouces when running docker and vice versa
+PRE_CLEAN="0"
+
# Var to hold the app names to use local images for
USE_LOCAL_IMAGES=""
@@ -607,6 +615,36 @@
fi
fi
if [ $paramerror -eq 0 ]; then
+ if [ "$1" == "--override" ]; then
+ shift;
+ TEST_ENV_VAR_FILE_OVERRIDE=$1
+ if [ -z "$1" ]; then
+ paramerror=1
+ if [ -z "$paramerror_str" ]; then
+ paramerror_str="No env file found for flag: '--override'"
+ fi
+ else
+ if [ ! -f $TEST_ENV_VAR_FILE_OVERRIDE ]; then
+ paramerror=1
+ if [ -z "$paramerror_str" ]; then
+ paramerror_str="File for '--override' does not exist : "$TEST_ENV_VAR_FILE_OVERRIDE
+ fi
+ fi
+ echo "Option set - Override env from: "$1
+ shift;
+ foundparm=0
+ fi
+ fi
+ fi
+ if [ $paramerror -eq 0 ]; then
+ if [ "$1" == "--pre-clean" ]; then
+ PRE_CLEAN=1
+ echo "Option set - Pre-clean of kube/docker resouces"
+ shift;
+ foundparm=0
+ fi
+ fi
+ if [ $paramerror -eq 0 ]; then
if [ "$1" == "--print-stats" ]; then
PRINT_CURRENT_STATS=1
echo "Option set - Print stats"
@@ -635,6 +673,10 @@
if [ -f "$TEST_ENV_VAR_FILE" ]; then
echo -e $BOLD"Sourcing env vars from: "$TEST_ENV_VAR_FILE$EBOLD
. $TEST_ENV_VAR_FILE
+ if [ ! -z "$TEST_ENV_VAR_FILE_OVERRIDE" ]; then
+ echo -e $BOLD"Sourcing override env vars from: "$TEST_ENV_VAR_FILE_OVERRIDE$EBOLD
+ . $TEST_ENV_VAR_FILE_OVERRIDE
+ fi
if [ -z "$TEST_ENV_PROFILE" ] || [ -z "$SUPPORTED_PROFILES" ]; then
echo -e $YELLOW"This test case may not work with selected test env file. TEST_ENV_PROFILE is missing in test_env file or SUPPORTED_PROFILES is missing in test case file"$EYELLOW
@@ -684,6 +726,28 @@
INCLUDED_IMAGES=$DOCKER_INCLUDED_IMAGES
fi
+echo ""
+# auto adding system apps
+echo -e $BOLD"Auto adding system apps"$EBOLD
+if [ $RUNMODE == "KUBE" ]; then
+ INCLUDED_IMAGES=$INCLUDED_IMAGES" "$TESTENV_KUBE_SYSTEM_APPS
+ TMP_APPS=$TESTENV_KUBE_SYSTEM_APPS
+else
+ INCLUDED_IMAGES=$INCLUDED_IMAGES" "$TESTENV_DOCKER_SYSTEM_APPS
+ TMP_APPS=$TESTENV_DOCKER_SYSTEM_APPS
+fi
+if [ ! -z "$TMP_APPS" ]; then
+ for iapp in "$TMP_APPS"; do
+ file_pointer=$(echo $iapp | tr '[:upper:]' '[:lower:]')
+ file_pointer="../common/"$file_pointer"_api_functions.sh"
+ echo " Auto-adding system app $iapp. Sourcing $file_pointer"
+ . $file_pointer
+ done
+else
+ echo " None"
+fi
+echo ""
+
# Check needed installed sw
tmp=$(which python3)
if [ $? -ne 0 ] || [ -z tmp ]; then
@@ -703,6 +767,15 @@
exit 1
fi
fi
+if [ $RUNMODE == "DOCKER" ]; then
+ tmp=$(docker-compose version | grep -i 'Docker Compose version')
+ if [[ "$tmp" == *'v2'* ]]; then
+ echo -e $RED"docker-compose is using docker-compose version 2"$ERED
+ echo -e $RED"The test environment only support version 1"$ERED
+ echo -e $RED"Disable version 2 by cmd 'docker-compose disable-v2' and re-run the script "$ERED
+ exit 1
+ fi
+fi
tmp=$(which kubectl)
if [ $? -ne 0 ] || [ -z tmp ]; then
@@ -1376,6 +1449,24 @@
echo -e $BOLD"======================================================="$EBOLD
echo ""
+ for imagename in $APP_SHORT_NAMES; do
+ __check_included_image $imagename
+ retcode_i=$?
+ __check_prestarted_image $imagename
+ retcode_p=$?
+ if [ $retcode_i -eq 0 ] || [ $retcode_p -eq 0 ]; then
+ # A function name is created from the app short name
+ # for example app short name 'RICMSIM' -> produce the function
+ # name __RICSIM__initial_setup
+ # This function is called and is expected to exist in the imported
+ # file for the ricsim test functions
+ # The resulting function impl shall perform initial setup of port, host etc
+
+ function_pointer="__"$imagename"_initial_setup"
+ $function_pointer
+ fi
+ done
+
}
# Function to print the test result, shall be the last cmd in a test script
@@ -1577,6 +1668,9 @@
docker ps -a --filter "label=nrttest_app=$imagename" --filter "network=$DOCKER_SIM_NWNAME" --format ' {{.Label "nrttest_dp"}}\n{{.Label "nrttest_app"}}\n{{.Names}}' >> $running_contr_file
done
+ # Kill all containers started by the test env - to speed up shut down
+ docker kill $(docker ps -a --filter "label=nrttest_app" --format '{{.Names}}') &> /dev/null
+
tab_heading1="App display name"
tab_heading2="App short name"
tab_heading3="Container name"
@@ -1767,39 +1861,47 @@
for restype in $resources; do
result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
if [ $? -eq 0 ] && [ ! -z "$result" ]; then
- deleted_resourcetypes=$deleted_resourcetypes" "$restype
for resid in $result; do
- echo -ne " Ordered caling $restype $resid from namespace $namespace with label $labelname=$labelid to 0"$SAMELINE
+ echo -ne " Ordered caling $restype $resid in namespace $namespace with label $labelname=$labelid to 0"$SAMELINE
kubectl scale $restype $resid -n $namespace --replicas=0 1> /dev/null 2> ./tmp/kubeerr
- echo -e " Ordered scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0 $GREEN OK $EGREEN"
+ echo -e " Ordered scaling $restype $resid in namespace $namespace with label $labelname=$labelid to 0 $GREEN OK $EGREEN"
done
fi
done
}
-# Scale all kube resource sets to 0 in a namespace for resources having a certain lable and label-id
+# Scale all kube resource sets to 0 in a namespace for resources having a certain lable and an optional label-id
# This function do wait for the resource to reach 0
-# args: <namespace> <label-name> <label-id>
+# args: <namespace> <label-name> [ <label-id> ]
# (Not for test scripts)
__kube_scale_and_wait_all_resources() {
namespace=$1
labelname=$2
labelid=$3
+ if [ -z "$3" ]; then
+ echo " Attempt to scale - deployment replicaset statefulset - in namespace $namespace with label $labelname"
+ else
+ echo " Attempt to scale - deployment replicaset statefulset - in namespace $namespace with label $labelname=$labelid"
+ fi
resources="deployment replicaset statefulset"
scaled_all=1
while [ $scaled_all -ne 0 ]; do
scaled_all=0
for restype in $resources; do
- result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+ if [ -z "$3" ]; then
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname')].metadata.name}')
+ else
+ result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+ fi
if [ $? -eq 0 ] && [ ! -z "$result" ]; then
for resid in $result; do
- echo -e " Ordered scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0"
+ echo -e " Ordered scaling $restype $resid in namespace $namespace with label $labelname=$labelid to 0"
kubectl scale $restype $resid -n $namespace --replicas=0 1> /dev/null 2> ./tmp/kubeerr
count=1
T_START=$SECONDS
while [ $count -ne 0 ]; do
count=$(kubectl get $restype $resid -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
- echo -ne " Scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count"$SAMELINE
+ echo -ne " Scaling $restype $resid in namespace $namespace with label $labelname=$labelid to 0, current count=$count"$SAMELINE
if [ $? -eq 0 ] && [ ! -z "$count" ]; then
sleep 0.5
else
@@ -1812,7 +1914,7 @@
count=0
fi
done
- echo -e " Scaled $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count $GREEN OK $EGREEN"
+ echo -e " Scaled $restype $resid in namespace $namespace with label $labelname=$labelid to 0, current count=$count $GREEN OK $EGREEN"
done
fi
done
@@ -1830,29 +1932,35 @@
resources="deployments replicaset statefulset services pods configmaps persistentvolumeclaims persistentvolumes"
deleted_resourcetypes=""
for restype in $resources; do
- result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+ ns_flag="-n $namespace"
+ ns_text="in namespace $namespace"
+ if [ $restype == "persistentvolumes" ]; then
+ ns_flag=""
+ ns_text=""
+ fi
+ result=$(kubectl get $restype $ns_flag -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
if [ $? -eq 0 ] && [ ! -z "$result" ]; then
deleted_resourcetypes=$deleted_resourcetypes" "$restype
for resid in $result; do
if [ $restype == "replicaset" ] || [ $restype == "statefulset" ]; then
count=1
while [ $count -ne 0 ]; do
- count=$(kubectl get $restype $resid -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
- echo -ne " Scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count"$SAMELINE
+ count=$(kubectl get $restype $resid $ns_flag -o jsonpath='{.status.replicas}' 2> /dev/null)
+ echo -ne " Scaling $restype $resid $ns_text with label $labelname=$labelid to 0, current count=$count"$SAMELINE
if [ $? -eq 0 ] && [ ! -z "$count" ]; then
sleep 0.5
else
count=0
fi
done
- echo -e " Scaled $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count $GREEN OK $EGREEN"
+ echo -e " Scaled $restype $resid $ns_text with label $labelname=$labelid to 0, current count=$count $GREEN OK $EGREEN"
fi
- echo -ne " Deleting $restype $resid from namespace $namespace with label $labelname=$labelid "$SAMELINE
- kubectl delete $restype $resid -n $namespace 1> /dev/null 2> ./tmp/kubeerr
+ echo -ne " Deleting $restype $resid $ns_text with label $labelname=$labelid "$SAMELINE
+ kubectl delete $restype $resid $ns_flag 1> /dev/null 2> ./tmp/kubeerr
if [ $? -eq 0 ]; then
- echo -e " Deleted $restype $resid from namespace $namespace with label $labelname=$labelid $GREEN OK $EGREEN"
+ echo -e " Deleted $restype $resid $ns_text with label $labelname=$labelid $GREEN OK $EGREEN"
else
- echo -e " Deleted $restype $resid from namespace $namespace with label $labelname=$labelid $GREEN Does not exist - OK $EGREEN"
+ echo -e " Deleted $restype $resid $ns_text with label $labelname=$labelid $GREEN Does not exist - OK $EGREEN"
fi
#fi
done
@@ -1860,17 +1968,23 @@
done
if [ ! -z "$deleted_resourcetypes" ]; then
for restype in $deleted_resources; do
- echo -ne " Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted..."$SAMELINE
+ ns_flag="-n $namespace"
+ ns_text="in namespace $namespace"
+ if [ $restype == "persistentvolumes" ]; then
+ ns_flag=""
+ ns_text=""
+ fi
+ echo -ne " Waiting for $restype $ns_text with label $labelname=$labelid to be deleted..."$SAMELINE
T_START=$SECONDS
result="dummy"
while [ ! -z "$result" ]; do
sleep 0.5
- result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
- echo -ne " Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
+ result=$(kubectl get $restype $ns_flag -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+ echo -ne " Waiting for $restype $ns_text with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
if [ -z "$result" ]; then
- echo -e " Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
+ echo -e " Waiting for $restype $ns_text with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
elif [ $(($SECONDS-$T_START)) -gt 300 ]; then
- echo -e " Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
+ echo -e " Waiting for $restype $ns_text with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
result=""
fi
done
@@ -2028,6 +2142,41 @@
return 0
}
+# Function to create a configmap in kubernetes
+# args: <configmap-name> <namespace> <labelname> <labelid> <path-to-data-file> <path-to-output-yaml>
+# (Not for test scripts)
+__kube_create_configmapXXXXXXXXXXXXX() {
+ echo -ne " Creating configmap $1 "$SAMELINE
+ #envsubst < $5 > $5"_tmp"
+ #cp $5"_tmp" $5 #Need to copy back to orig file name since create configmap neeed the original file name
+ kubectl create configmap $1 -n $2 --from-file=$5 --dry-run=client -o yaml > $6
+ if [ $? -ne 0 ]; then
+ echo -e " Creating configmap $1 $RED Failed $ERED"
+ ((RES_CONF_FAIL++))
+ return 1
+ fi
+
+ kubectl apply -f $6 1> /dev/null 2> ./tmp/kubeerr
+ if [ $? -ne 0 ]; then
+ echo -e " Creating configmap $1 $RED Apply failed $ERED"
+ echo " Message: $(<./tmp/kubeerr)"
+ ((RES_CONF_FAIL++))
+ return 1
+ fi
+ kubectl label configmap $1 -n $2 $3"="$4 --overwrite 1> /dev/null 2> ./tmp/kubeerr
+ if [ $? -ne 0 ]; then
+ echo -e " Creating configmap $1 $RED Labeling failed $ERED"
+ echo " Message: $(<./tmp/kubeerr)"
+ ((RES_CONF_FAIL++))
+ return 1
+ fi
+ # Log the resulting map
+ kubectl get configmap $1 -n $2 -o yaml > $6
+
+ echo -e " Creating configmap $1 $GREEN OK $EGREEN"
+ return 0
+}
+
# This function runs a kubectl cmd where a single output value is expected, for example get ip with jsonpath filter.
# The function retries up to the timeout given in the cmd flag '--cluster-timeout'
# args: <full kubectl cmd with parameters>
@@ -2055,17 +2204,19 @@
# (Not for test scripts)
__kube_clean_pvc() {
+ #using env vars setup in pvccleaner_api_functions.sh
+
export PVC_CLEANER_NAMESPACE=$2
export PVC_CLEANER_CLAIMNAME=$3
export PVC_CLEANER_RM_PATH=$4
- input_yaml=$SIM_GROUP"/pvc-cleaner/"pvc-cleaner.yaml
+ input_yaml=$SIM_GROUP"/"$PVC_CLEANER_COMPOSE_DIR"/"pvc-cleaner.yaml
output_yaml=$PWD/tmp/$2-pvc-cleaner.yaml
envsubst < $input_yaml > $output_yaml
kubectl delete -f $output_yaml 1> /dev/null 2> /dev/null # Delete the previous terminated pod - if existing
- __kube_create_instance pod pvc-cleaner $input_yaml $output_yaml
+ __kube_create_instance pod $PVC_CLEANER_APP_NAME $input_yaml $output_yaml
if [ $? -ne 0 ]; then
echo $YELLOW" Could not clean pvc for app: $1 - persistent storage not clean - tests may not work"
return 1
@@ -2085,7 +2236,7 @@
# args: -
# (Not for test scripts)
__clean_kube() {
- echo -e $BOLD"Initialize kube services//pods/statefulsets/replicaset to initial state"$EBOLD
+ echo -e $BOLD"Initialize kube pods/statefulsets/replicaset to initial state"$EBOLD
# Scale prestarted or managed apps
for imagename in $APP_SHORT_NAMES; do
@@ -2140,8 +2291,16 @@
clean_environment() {
if [ $RUNMODE == "KUBE" ]; then
__clean_kube
+ if [ $PRE_CLEAN -eq 1 ]; then
+ echo " Clean docker resouces to free up resources, may take time..."
+ ../common/clean_docker.sh 2&>1 /dev/null
+ fi
else
__clean_containers
+ if [ $PRE_CLEAN -eq 1 ]; then
+ echo " Clean kubernetes resouces to free up resources, may take time..."
+ ../common/clean_kube.sh 2&>1 /dev/null
+ fi
fi
}
@@ -2452,13 +2611,11 @@
__do_curl() {
echo ${FUNCNAME[1]} "line: "${BASH_LINENO[1]} >> $HTTPLOG
proxyflag=""
- if [ $RUNMODE == "KUBE" ]; then
- if [ ! -z "$KUBE_PROXY_PATH" ]; then
- if [ $KUBE_PROXY_HTTPX == "http" ]; then
- proxyflag=" --proxy $KUBE_PROXY_PATH"
- else
- proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
- fi
+ if [ ! -z "$KUBE_PROXY_PATH" ]; then
+ if [ $KUBE_PROXY_HTTPX == "http" ]; then
+ proxyflag=" --proxy $KUBE_PROXY_PATH"
+ else
+ proxyflag=" --proxy-insecure --proxy $KUBE_PROXY_PATH"
fi
fi
curlString="curl -skw %{http_code} $proxyflag $@"
diff --git a/test/common/testengine_config.sh b/test/common/testengine_config.sh
index e914f72..3513464 100644
--- a/test/common/testengine_config.sh
+++ b/test/common/testengine_config.sh
@@ -18,17 +18,23 @@
#
# List of short names for all supported apps, including simulators etc
-APP_SHORT_NAMES="PA ECS SDNC CP NGW RC RICSIM HTTPPROXY CBS CONSUL DMAAPMR MR CR PRODSTUB KUBEPROXY"
+APP_SHORT_NAMES="PA ECS SDNC CP NGW RC RICSIM HTTPPROXY CBS CONSUL DMAAPMR MR CR PRODSTUB KUBEPROXY DMAAPMED DMAAPADP PVCCLEANER"
# List of available apps that built and released of the project
-PROJECT_IMAGES="PA ECS SDNC CP NGW RICSIM RC"
+PROJECT_IMAGES="PA ECS SDNC CP NGW RICSIM RC DMAAPMED DMAAPADP"
# List of available apps to override with local or remote staging/snapshot/release image
-AVAILABLE_IMAGES_OVERRIDE="PA ECS SDNC CP NGW RICSIM RC"
+AVAILABLE_IMAGES_OVERRIDE="PA ECS SDNC CP NGW RICSIM RC DMAAPMED DMAAPADP"
# List of available apps where the image is built by the test environment
LOCAL_IMAGE_BUILD="MR CR PRODSTUB KUBEPROXY HTTPPROXY"
+# List of system app used only by the test env - kubernetes
+TESTENV_KUBE_SYSTEM_APPS="PVCCLEANER"
+
+# List of system app used only by the test env - docker
+TESTENV_DOCKER_SYSTEM_APPS=""
+
#Integrate a new app into the test environment
# 1 Choose a short name for the app
@@ -41,6 +47,7 @@
# This is default...so normally images shall be possible to override
# 5 If the image is built by the test script,
# add the short name to LOCAL_IMAGE_BUILD
+# 6 Special app used only by the test env is added to TESTENV_KUBE_SYSTEM_APPS and/or TESTENV_DOCKER_SYSTEM_APPS
# Summary:
# All app short name shall exist in APP_SHORT_NAMES
# Then the app short name be added to both PROJECT_IMAGES and AVAILABLE_IMAGES_OVERRIDE
diff --git a/test/cr/Dockerfile b/test/cr/Dockerfile
index 24c9033..e66d30f 100644
--- a/test/cr/Dockerfile
+++ b/test/cr/Dockerfile
@@ -20,8 +20,7 @@
FROM ${NEXUS_PROXY_REPO}python:3.8-slim-buster
#install nginx
-RUN apt-get update
-RUN apt-get install -y nginx=1.14.*
+RUN apt-get update; apt-get install -y nginx=1.14.*
COPY app/ /usr/src/app/
COPY cert/ /usr/src/app/cert/
diff --git a/test/cr/README.md b/test/cr/README.md
index c00f539..55c5cc5 100644
--- a/test/cr/README.md
+++ b/test/cr/README.md
@@ -48,7 +48,8 @@
```/counter/fetched_callbacks``` - The total number of fetched callbacks<br>
```/counter/current_messages``` - The current number of callback messages waiting to be fetched<br>
All counters also support the query parameter "id" to fetch counter for one individual id, eg ```/counter/current_messages?id=my-id```
-
+An additional counter is available to log remote hosts calling the server
+```/counter/remote_hosts``` - Lists all unique ip/host name that has sent messages on the callback endpoint<br>
### Build and start
diff --git a/test/cr/app/cr.py b/test/cr/app/cr.py
index 9e04d57..4b4d8da 100644
--- a/test/cr/app/cr.py
+++ b/test/cr/app/cr.py
@@ -24,6 +24,7 @@
import traceback
import logging
import socket
+from threading import RLock
# Disable all logging of GET on reading counters and db
class AjaxFilter(logging.Filter):
@@ -35,6 +36,8 @@
app = Flask(__name__)
+lock = RLock()
+
# list of callback messages
msg_callbacks={}
@@ -46,9 +49,11 @@
cntr_msg_callbacks=0
cntr_msg_fetched=0
cntr_callbacks={}
+hosts_set=set()
# Request and response constants
CALLBACK_URL="/callbacks/<string:id>"
+CALLBACK_MR_URL="/callbacks-mr/<string:id>" #Json list with string encoded items
APP_READ_URL="/get-event/<string:id>"
APP_READ_ALL_URL="/get-all-events/<string:id>"
DUMP_ALL_URL="/db"
@@ -59,6 +64,10 @@
SERVER_ERROR="Server error :"
TIME_STAMP="cr-timestamp"
+forced_settings={}
+forced_settings['delay']=None
+
+
# Remote host lookup and print host name
def remote_host_logging(request):
@@ -72,8 +81,10 @@
try:
name, alias, addresslist = socket.gethostbyaddr(host_ip)
print("Calling host: "+str(name))
+ hosts_set.add(name)
except Exception:
print("Calling host not possible to retrieve IP: "+str(host_ip))
+ hosts_set.add(host_ip)
#I'm alive function
@@ -93,22 +104,23 @@
global msg_callbacks
global cntr_msg_fetched
- try:
- if ((id in msg_callbacks.keys()) and (len(msg_callbacks[id]) > 0)):
- cntr_msg_fetched+=1
- cntr_callbacks[id][1]+=1
- msg=msg_callbacks[id][0]
- print("Fetching msg for id: "+id+", msg="+str(msg))
- del msg[TIME_STAMP]
- del msg_callbacks[id][0]
- return json.dumps(msg),200
- print("No messages for id: "+id)
- except Exception as e:
- print(CAUGHT_EXCEPTION+str(e))
- traceback.print_exc()
- return "",500
+ with lock:
+ try:
+ if ((id in msg_callbacks.keys()) and (len(msg_callbacks[id]) > 0)):
+ cntr_msg_fetched+=1
+ cntr_callbacks[id][1]+=1
+ msg=msg_callbacks[id][0]
+ print("Fetching msg for id: "+id+", msg="+str(msg))
+ del msg[TIME_STAMP]
+ del msg_callbacks[id][0]
+ return json.dumps(msg),200
+ print("No messages for id: "+id)
+ except Exception as e:
+ print(CAUGHT_EXCEPTION+str(e))
+ traceback.print_exc()
+ return "",500
- return "",204
+ return "",204
# Fetch all callback message for an id in an array
# URI and parameter, (GET): /get-all-events/<id>
@@ -119,24 +131,25 @@
global msg_callbacks
global cntr_msg_fetched
- try:
- if ((id in msg_callbacks.keys()) and (len(msg_callbacks[id]) > 0)):
- cntr_msg_fetched+=len(msg_callbacks[id])
- cntr_callbacks[id][1]+=len(msg_callbacks[id])
- msg=msg_callbacks[id]
- print("Fetching all msgs for id: "+id+", msg="+str(msg))
- for sub_msg in msg:
- del sub_msg[TIME_STAMP]
- del msg_callbacks[id]
- return json.dumps(msg),200
- print("No messages for id: "+id)
- except Exception as e:
- print(CAUGHT_EXCEPTION+str(e))
- traceback.print_exc()
- return "",500
+ with lock:
+ try:
+ if ((id in msg_callbacks.keys()) and (len(msg_callbacks[id]) > 0)):
+ cntr_msg_fetched+=len(msg_callbacks[id])
+ cntr_callbacks[id][1]+=len(msg_callbacks[id])
+ msg=msg_callbacks[id]
+ print("Fetching all msgs for id: "+id+", msg="+str(msg))
+ for sub_msg in msg:
+ del sub_msg[TIME_STAMP]
+ del msg_callbacks[id]
+ return json.dumps(msg),200
+ print("No messages for id: "+id)
+ except Exception as e:
+ print(CAUGHT_EXCEPTION+str(e))
+ traceback.print_exc()
+ return "",500
- msg=[]
- return json.dumps(msg),200
+ msg=[]
+ return json.dumps(msg),200
# Receive a callback message
# URI and payload, (PUT or POST): /callbacks/<id> <json messages>
@@ -150,6 +163,8 @@
try:
print("Received callback for id: "+id +", content-type="+request.content_type)
remote_host_logging(request)
+ print("raw data: str(request.data): "+str(request.data))
+ do_delay()
try:
if (request.content_type == MIME_JSON):
data = request.data
@@ -163,20 +178,79 @@
print("(Exception) Payload does not contain any json, setting empty json as payload")
traceback.print_exc()
- cntr_msg_callbacks += 1
- msg[TIME_STAMP]=str(datetime.now())
- if (id in msg_callbacks.keys()):
- msg_callbacks[id].append(msg)
- else:
- msg_callbacks[id]=[]
- msg_callbacks[id].append(msg)
+ with lock:
+ cntr_msg_callbacks += 1
+ msg[TIME_STAMP]=str(datetime.now())
+ if (id in msg_callbacks.keys()):
+ msg_callbacks[id].append(msg)
+ else:
+ msg_callbacks[id]=[]
+ msg_callbacks[id].append(msg)
- if (id in cntr_callbacks.keys()):
- cntr_callbacks[id][0] += 1
- else:
- cntr_callbacks[id]=[]
- cntr_callbacks[id].append(1)
- cntr_callbacks[id].append(0)
+ if (id in cntr_callbacks.keys()):
+ cntr_callbacks[id][0] += 1
+ else:
+ cntr_callbacks[id]=[]
+ cntr_callbacks[id].append(1)
+ cntr_callbacks[id].append(0)
+
+ except Exception as e:
+ print(CAUGHT_EXCEPTION+str(e))
+ traceback.print_exc()
+ return 'NOTOK',500
+
+ return 'OK',200
+
+
+# Receive a json callback message with payload fromatted accoirding to output frm the message router
+# URI and payload, (PUT or POST): /callbacks/<id> <json messages>
+# json is a list of string encoded json items
+# response: OK 200 or 500 for other errors
+@app.route(CALLBACK_MR_URL,
+ methods=['PUT','POST'])
+def events_write_mr(id):
+ global msg_callbacks
+ global cntr_msg_callbacks
+
+ try:
+ print("Received callback (mr) for id: "+id +", content-type="+request.content_type)
+ remote_host_logging(request)
+ print("raw data: str(request.data): "+str(request.data))
+ do_delay()
+ try:
+ #if (request.content_type == MIME_JSON):
+ if (MIME_JSON in request.content_type):
+ data = request.data
+ msg_list = json.loads(data)
+ print("Payload(json): "+str(msg_list))
+ else:
+ msg_list=[]
+ print("Payload(content-type="+request.content_type+"). Setting empty json as payload")
+ except Exception as e:
+ msg_list=[]
+ print("(Exception) Payload does not contain any json, setting empty json as payload")
+ traceback.print_exc()
+
+ with lock:
+ remote_host_logging(request)
+ for msg in msg_list:
+ print("msg (str): "+str(msg))
+ msg=json.loads(msg)
+ print("msg (json): "+str(msg))
+ cntr_msg_callbacks += 1
+ msg[TIME_STAMP]=str(datetime.now())
+ if (id in msg_callbacks.keys()):
+ msg_callbacks[id].append(msg)
+ else:
+ msg_callbacks[id]=[]
+ msg_callbacks[id].append(msg)
+
+ if (id in cntr_callbacks.keys()):
+ cntr_callbacks[id][0] += 1
+ else:
+ cntr_callbacks[id]=[]
+ cntr_callbacks[id].append(1)
+ cntr_callbacks[id].append(0)
except Exception as e:
print(CAUGHT_EXCEPTION+str(e))
@@ -233,7 +307,37 @@
else:
return Response(str("0"), status=200, mimetype=MIME_TEXT)
+@app.route('/counter/remote_hosts',
+ methods=['GET'])
+def remote_hosts():
+ global hosts_set
+ hosts=",".join(hosts_set)
+ return Response(str(hosts), status=200, mimetype=MIME_TEXT)
+
+
+#Set force delay response, in seconds, for all callbacks
+#/froceesponse?delay=<seconds>
+@app.route('/forcedelay', methods=['POST'])
+def forcedelay():
+
+ try:
+ forced_settings['delay']=int(request.args.get('delay'))
+ except Exception:
+ forced_settings['delay']=None
+ return Response("Force delay: " + str(forced_settings['delay']) + " sec set for all callback responses", 200, mimetype=MIME_TEXT)
+
+# Helper: Delay if delayed response code is set
+def do_delay():
+ if (forced_settings['delay'] is not None):
+ try:
+ val=int(forced_settings['delay'])
+ if (val < 1):
+ return Response("Force delay too short: " + str(forced_settings['delay']) + " sec", 500, mimetype=MIME_TEXT)
+ print("Delaying "+str(val)+ " sec.")
+ time.sleep(val)
+ except Exception:
+ return Response("Force delay : " + str(forced_settings['delay']) + " sec failed", 500, mimetype=MIME_TEXT)
### Admin ###
# Reset all messsages and counters
@@ -244,13 +348,16 @@
global cntr_msg_fetched
global cntr_msg_callbacks
global cntr_callbacks
+ global forced_settings
- msg_callbacks={}
- cntr_msg_fetched=0
- cntr_msg_callbacks=0
- cntr_callbacks={}
+ with lock:
+ msg_callbacks={}
+ cntr_msg_fetched=0
+ cntr_msg_callbacks=0
+ cntr_callbacks={}
+ forced_settings['delay']=None
- return Response('OK', status=200, mimetype=MIME_TEXT)
+ return Response('OK', status=200, mimetype=MIME_TEXT)
### Main function ###
diff --git a/test/cr/basic_test.sh b/test/cr/basic_test.sh
index d0bf25d..44e8526 100755
--- a/test/cr/basic_test.sh
+++ b/test/cr/basic_test.sh
@@ -65,6 +65,10 @@
RESULT="0"
do_curl GET /counter/current_messages 200
+echo "=== Get counter - remote hosts ==="
+RESULT="*"
+do_curl GET /counter/remote_hosts 200
+
echo "=== Send a request non json ==="
RESULT="*"
#create payload
@@ -235,6 +239,32 @@
do_curl GET /counter/current_messages 200
+# Check delay
+
+echo "=== Set delay 10 sec==="
+RESULT="*"
+do_curl POST /forcedelay?delay=10 200
+
+TSECONDS=$SECONDS
+echo "=== Send a request, dealyed ==="
+RESULT="*"
+#create payload
+echo "{\"DATA-MSG\":\"msg-del1\"}" > .tmp.json
+do_curl POST '/callbacks/test' 200 .tmp.json
+
+if [ $(($SECONDS-$TSECONDS)) -lt 10 ]; then
+ echo " Delay failed $(($SECONDS-$TSECONDS))"
+ echo " Exiting...."
+ exit 1
+else
+ echo " Delay OK $(($SECONDS-$TSECONDS))"
+fi
+
+
+echo "=== Fetch an event ==="
+RESULT="json:{\"DATA-MSG\":\"msg-del1\"}"
+do_curl GET '/get-event/test' 200
+
echo "********************"
echo "*** All tests ok ***"
echo "********************"
diff --git a/test/mrstub/app/main.py b/test/mrstub/app/main.py
index 90924b1..fb6d674 100644
--- a/test/mrstub/app/main.py
+++ b/test/mrstub/app/main.py
@@ -43,6 +43,8 @@
msg_requests=[]
msg_responses={}
+generic_messages={}
+
# Server info
HOST_IP = "::"
HOST_PORT = 2222
@@ -105,7 +107,7 @@
sleep(0.01)
-# Function to download messages from dmaap
+# Function to upload messages to dmaap
def dmaap_downloader():
global msg_responses
global cntr_msg_responses_submitted
@@ -365,6 +367,97 @@
return Response(json.dumps(res), status=200, mimetype=MIME_JSON)
return Response("[]", status=200, mimetype=MIME_JSON)
+# Generic POST/PUT catching all urls starting with /events/<topic>.
+# Writes the message in a que for that topic
+@app.route("/events/<path>",
+ methods=['PUT','POST'])
+def generic_write(path):
+ global generic_messages
+ global cntr_msg_responses_submitted
+ urlkey="/events/"+str(path)
+ write_method=str(request.method)
+ with lock:
+ try:
+ payload=request.json
+ print(write_method+" on "+urlkey+" json=" + json.dumps(payload))
+ topicmsgs=[]
+ if (urlkey in generic_messages.keys()):
+ topicmsgs=generic_messages[urlkey]
+ else:
+ generic_messages[urlkey]=topicmsgs
+
+ if isinstance(payload, list):
+ for listitem in payload:
+ topicmsgs.append(listitem)
+ else:
+ topicmsgs.append(payload)
+
+ cntr_msg_responses_submitted += 1
+ except Exception as e:
+ print(write_method + "on "+urlkey+"-"+CAUGHT_EXCEPTION+" "+str(e) + " "+traceback.format_exc())
+ return Response('{"message": "' + SERVER_ERROR + ' ' + str(e) + '","status":"500"}', status=200, mimetype=MIME_JSON)
+
+ return Response('{}', status=200, mimetype=MIME_JSON)
+
+# Generic GET catching all urls starting with /events/. Returns max 4096 json msgs in an array.
+# Returns only the messages previously written to the same urls
+@app.route("/events/<path:path>",
+ methods=['GET'])
+def generic_read(path):
+ global generic_messages
+ global cntr_msg_requests_fetched
+
+ urlpath="/events/"+str(path)
+ urlkey="/events/"+str(path).split("/")[0] #Extract topic
+ print("GET on topic"+urlkey)
+ limit=request.args.get('limit')
+ if (limit is None):
+ limit=4096
+ else:
+ limit=int(limit)
+ if (limit<0):
+ limit=0
+ if (limit>4096):
+ limit=4096
+ print("Limting number of returned messages to: "+str(limit))
+
+ timeout=request.args.get('timeout')
+ if (timeout is None):
+ timeout=10000
+ else:
+ timeout=min(int(timeout),60000)
+
+ start_time=int(round(time.time() * 1000))
+ current_time=int(round(time.time() * 1000))
+ topicmsgs=[]
+ if (urlkey in generic_messages.keys()):
+ topicmsgs=generic_messages[urlkey]
+
+ while(current_time<start_time+int(timeout)):
+ with lock:
+ if(len(topicmsgs)>0):
+ try:
+ msgs=''
+ cntr=0
+ while(cntr<limit and len(topicmsgs)>0):
+ if (len(msgs)>1):
+ msgs=msgs+','
+ msgs=msgs+json.dumps(json.dumps(topicmsgs.pop(0)))
+ cntr_msg_requests_fetched += 1
+ cntr=cntr+1
+ msgs='['+msgs+']'
+ print("GET on "+urlpath+" MSGs: "+msgs)
+ return Response(msgs, status=200, mimetype=MIME_JSON)
+ except Exception as e:
+ print("GET on "+urlpath+"-"+CAUGHT_EXCEPTION+" "+str(e) + " "+traceback.format_exc())
+ return Response(SERVER_ERROR+" "+str(e), status=500, mimetype=MIME_TEXT)
+ sleep(0.025) # sleep 25 milliseconds
+ current_time=int(round(time.time() * 1000))
+
+ print("timeout: "+str(timeout)+", start_time: "+str(start_time)+", current_time: "+str(current_time))
+ return Response("[]", status=200, mimetype=MIME_JSON)
+
+
### Functions for metrics read out ###
@app.route('/counter/requests_submitted',
diff --git a/test/mrstub/basic_test.sh b/test/mrstub/basic_test.sh
index dbd4297..582c36f 100755
--- a/test/mrstub/basic_test.sh
+++ b/test/mrstub/basic_test.sh
@@ -164,6 +164,17 @@
RESULT="test2-response200"
do_curl GET '/receive-response?correlationid='$CORRID 200
+
+echo "=== Send a json response ==="
+# Create minimal accepted response message, array
+echo "{\"correlationId\": \""$CORRID"\", \"message\": {\"test\":\"testresponse\"}, \"status\": \"200\"}" > .tmp.json
+RESULT="{}"
+do_curl POST /events/generic-path 200 .tmp.json
+
+echo "=== Fetch a request ==="
+RESULT="json:[{\"correlationId\": \""$CORRID"\", \"message\": {\"test\":\"testresponse\"}, \"status\": \"200\"}]"
+do_curl GET '/events/generic-path' 200
+
echo "********************"
echo "*** All tests ok ***"
echo "********************"
\ No newline at end of file
diff --git a/test/simulator-group/consul_cbs/docker-compose.yml b/test/simulator-group/consul_cbs/docker-compose.yml
index 4bf9271..105c875 100644
--- a/test/simulator-group/consul_cbs/docker-compose.yml
+++ b/test/simulator-group/consul_cbs/docker-compose.yml
@@ -15,7 +15,7 @@
# ============LICENSE_END=================================================
#
-version: '3'
+version: '3.0'
networks:
default:
diff --git a/test/simulator-group/dmaapadp/.gitignore b/test/simulator-group/dmaapadp/.gitignore
new file mode 100644
index 0000000..4aa3a7a
--- /dev/null
+++ b/test/simulator-group/dmaapadp/.gitignore
@@ -0,0 +1,2 @@
+.tmp.json
+.dockererr
\ No newline at end of file
diff --git a/test/simulator-group/dmaapadp/app.yaml b/test/simulator-group/dmaapadp/app.yaml
new file mode 100644
index 0000000..1376f38
--- /dev/null
+++ b/test/simulator-group/dmaapadp/app.yaml
@@ -0,0 +1,45 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: $DMAAP_ADP_APP_NAME
+ namespace: $KUBE_NONRTRIC_NAMESPACE
+ labels:
+ run: $DMAAP_ADP_APP_NAME
+ autotest: DMAAPADP
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ run: $DMAAP_ADP_APP_NAME
+ template:
+ metadata:
+ labels:
+ run: $DMAAP_ADP_APP_NAME
+ autotest: DMAAPADP
+ spec:
+ containers:
+ - name: $DMAAP_ADP_APP_NAME
+ image: $DMAAP_ADP_IMAGE
+ imagePullPolicy: $KUBE_IMAGE_PULL_POLICY
+ ports:
+ - name: http
+ containerPort: $DMAAP_ADP_INTERNAL_PORT
+ - name: https
+ containerPort: $DMAAP_ADP_INTERNAL_SECURE_PORT
+ volumeMounts:
+ - mountPath: $DMAAP_ADP_CONFIG_MOUNT_PATH
+ name: dmaapadp-conf-name
+ - mountPath: $DMAAP_ADP_DATA_MOUNT_PATH
+ name: dmaapadp-data-name
+ volumes:
+ - configMap:
+ defaultMode: 420
+ name: $DMAAP_ADP_CONFIG_CONFIGMAP_NAME
+ name: dmaapadp-conf-name
+ - configMap:
+ defaultMode: 420
+ name: $DMAAP_ADP_DATA_CONFIGMAP_NAME
+ name: dmaapadp-data-name
+# Selector will be set when pod is started first time
+ nodeSelector:
+
diff --git a/test/simulator-group/dmaapadp/application.yaml b/test/simulator-group/dmaapadp/application.yaml
new file mode 100644
index 0000000..b20a9d7
--- /dev/null
+++ b/test/simulator-group/dmaapadp/application.yaml
@@ -0,0 +1,71 @@
+################################################################################
+# Copyright (c) 2021 Nordix Foundation. #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+################################################################################
+
+spring:
+ profiles:
+ active: prod
+ main:
+ allow-bean-definition-overriding: true
+ aop:
+ auto: false
+management:
+ endpoints:
+ web:
+ exposure:
+ # Enabling of springboot actuator features. See springboot documentation.
+ include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+springdoc:
+ show-actuator: true
+logging:
+ # Configuration of logging
+ level:
+ ROOT: ERROR
+ org.springframework: ERROR
+ org.springframework.data: ERROR
+ org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+ org.oran.dmaapadapter: INFO
+ file:
+ name: /var/log/dmaap-adaptor-service/application.log
+server:
+ # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+ # See springboot documentation.
+ port : $DMAAP_ADP_INTERNAL_SECURE_PORT
+ http-port: $DMAAP_ADP_INTERNAL_PORT
+ ssl:
+ key-store-type: JKS
+ key-store-password: policy_agent
+ key-store: /opt/app/dmaap-adaptor-service/etc/cert/keystore.jks
+ key-password: policy_agent
+ key-alias: policy_agent
+app:
+ webclient:
+ # Configuration of the trust store used for the HTTP client (outgoing requests)
+ # The file location and the password for the truststore is only relevant if trust-store-used == true
+ # Note that the same keystore as for the server is used.
+ trust-store-used: false
+ trust-store-password: policy_agent
+ trust-store: /opt/app/dmaap-adaptor-service/etc/cert/truststore.jks
+ # Configuration of usage of HTTP Proxy for the southbound accesses.
+ # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+ http.proxy-host: $DMAAP_ADP_HTTP_PROXY_CONFIG_HOST_NAME
+ http.proxy-port: $DMAAP_ADP_HTTP_PROXY_CONFIG_PORT
+ ecs-base-url: $ECS_SERVICE_PATH
+ # Location of the component configuration file. The file will only be used if the Consul database is not used;
+ # configuration from the Consul will override the file.
+ configuration-filepath: /opt/app/dmaap-adaptor-service/data/application_configuration.json
+ dmaap-base-url: $MR_SERVICE_PATH
+ # The url used to adress this component. This is used as a callback url sent to other components.
+ dmaap-adapter-base-url: $DMAAP_ADP_SERVICE_PATH
\ No newline at end of file
diff --git a/test/simulator-group/dmaapadp/application_configuration.json b/test/simulator-group/dmaapadp/application_configuration.json
new file mode 100644
index 0000000..b6605e3
--- /dev/null
+++ b/test/simulator-group/dmaapadp/application_configuration.json
@@ -0,0 +1,9 @@
+{
+ "types": [
+ {
+ "id": "ExampleInformationType",
+ "dmaapTopicUrl": "/events/unauthenticated.dmaapadp.json/dmaapadapterproducer/msgs",
+ "useHttpProxy": ${DMMAAP_ADP_PROXY_FLAG}
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/simulator-group/dmaapadp/docker-compose.yml b/test/simulator-group/dmaapadp/docker-compose.yml
new file mode 100644
index 0000000..f9dee41
--- /dev/null
+++ b/test/simulator-group/dmaapadp/docker-compose.yml
@@ -0,0 +1,34 @@
+# ============LICENSE_START===============================================
+# Copyright (C) 2020 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+version: '3.0'
+networks:
+ default:
+ external:
+ name: ${DOCKER_SIM_NWNAME}
+services:
+ dmaap-adapter-service:
+ image: ${DMAAP_ADP_IMAGE}
+ container_name: ${DMAAP_ADP_APP_NAME}
+ ports:
+ - ${DMAAP_ADP_EXTERNAL_PORT}:${DMAAP_ADP_INTERNAL_PORT}
+ - ${DMAAP_ADP_EXTERNAL_SECURE_PORT}:${DMAAP_ADP_INTERNAL_SECURE_PORT}
+ volumes:
+ - ${DMAAP_ADP_HOST_MNT_DIR}/$DMAAP_ADP_CONFIG_FILE:${DMAAP_ADP_CONFIG_MOUNT_PATH}/$DMAAP_ADP_CONFIG_FILE
+ - ${DMAAP_ADP_HOST_MNT_DIR}/$DMAAP_ADP_DATA_FILE:${DMAAP_ADP_DATA_MOUNT_PATH}/$DMAAP_ADP_DATA_FILE
+ labels:
+ - "nrttest_app=DMAAPADP"
+ - "nrttest_dp=${DMAAP_ADP_DISPLAY_NAME}"
diff --git a/test/simulator-group/dmaapadp/svc.yaml b/test/simulator-group/dmaapadp/svc.yaml
new file mode 100644
index 0000000..62a7f7a
--- /dev/null
+++ b/test/simulator-group/dmaapadp/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: $DMAAP_ADP_APP_NAME
+ namespace: $KUBE_NONRTRIC_NAMESPACE
+ labels:
+ run: $DMAAP_ADP_APP_NAME
+ autotest: DMAAPADP
+spec:
+ type: ClusterIP
+ ports:
+ - port: $DMAAP_ADP_EXTERNAL_PORT
+ targetPort: $DMAAP_ADP_INTERNAL_PORT
+ protocol: TCP
+ name: http
+ - port: $DMAAP_ADP_EXTERNAL_SECURE_PORT
+ targetPort: $DMAAP_ADP_INTERNAL_SECURE_PORT
+ protocol: TCP
+ name: https
+ selector:
+ run: $DMAAP_ADP_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmed/.gitignore b/test/simulator-group/dmaapmed/.gitignore
new file mode 100644
index 0000000..4aa3a7a
--- /dev/null
+++ b/test/simulator-group/dmaapmed/.gitignore
@@ -0,0 +1,2 @@
+.tmp.json
+.dockererr
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmed/app.yaml b/test/simulator-group/dmaapmed/app.yaml
new file mode 100644
index 0000000..e0296fa
--- /dev/null
+++ b/test/simulator-group/dmaapmed/app.yaml
@@ -0,0 +1,51 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: $DMAAP_MED_APP_NAME
+ namespace: $KUBE_NONRTRIC_NAMESPACE
+ labels:
+ run: $DMAAP_MED_APP_NAME
+ autotest: DMAAPMED
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ run: $DMAAP_MED_APP_NAME
+ template:
+ metadata:
+ labels:
+ run: $DMAAP_MED_APP_NAME
+ autotest: DMAAPMED
+ spec:
+ containers:
+ - name: $DMAAP_MED_APP_NAME
+ image: $DMAAP_MED_IMAGE
+ imagePullPolicy: $KUBE_IMAGE_PULL_POLICY
+ ports:
+ - name: http
+ containerPort: $DMAAP_MED_INTERNAL_PORT
+ - name: https
+ containerPort: $DMAAP_MED_INTERNAL_SECURE_PORT
+ volumeMounts:
+ - mountPath: $DMAAP_MED_DATA_MOUNT_PATH/$DMAAP_MED_DATA_FILE
+ subPath: $DMAAP_MED_DATA_FILE
+ name: dmaapadp-data-name
+ env:
+ - name: INFO_PRODUCER_HOST
+ value: "$DMAAP_MED_CONF_SELF_HOST"
+ - name: INFO_PRODUCER_PORT
+ value: "$DMAAP_MED_CONF_SELF_PORT"
+ - name: INFO_COORD_ADDR
+ value: "$ECS_SERVICE_PATH"
+ - name: DMAAP_MR_ADDR
+ value: "$MR_SERVICE_PATH"
+ - name: LOG_LEVEL
+ value: "Debug"
+ volumes:
+ - configMap:
+ defaultMode: 420
+ name: $DMAAP_MED_DATA_CONFIGMAP_NAME
+ name: dmaapadp-data-name
+# Selector will be set when pod is started first time
+ nodeSelector:
+
diff --git a/test/simulator-group/dmaapmed/docker-compose.yml b/test/simulator-group/dmaapmed/docker-compose.yml
new file mode 100644
index 0000000..21fe551
--- /dev/null
+++ b/test/simulator-group/dmaapmed/docker-compose.yml
@@ -0,0 +1,40 @@
+# ============LICENSE_START===============================================
+# Copyright (C) 2020 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+version: '3.0'
+networks:
+ default:
+ external:
+ name: ${DOCKER_SIM_NWNAME}
+services:
+ dmaap-mediator-service:
+ image: ${DMAAP_MED_IMAGE}
+ container_name: ${DMAAP_MED_APP_NAME}
+
+ ports:
+ - ${DMAAP_MED_EXTERNAL_PORT}:${DMAAP_MED_INTERNAL_PORT}
+ - ${DMAAP_MED_EXTERNAL_SECURE_PORT}:${DMAAP_MED_INTERNAL_SECURE_PORT}
+ environment:
+ - INFO_PRODUCER_HOST=${DMAAP_MED_CONF_SELF_HOST}
+ - INFO_PRODUCER_PORT=${DMAAP_MED_CONF_SELF_PORT}
+ - INFO_COORD_ADDR=${ECS_SERVICE_PATH}
+ - DMAAP_MR_ADDR=${MR_SERVICE_PATH}
+ - LOG_LEVEL="Debug"
+ volumes:
+ - ${DMAAP_MED_HOST_MNT_DIR}/$DMAAP_MED_DATA_FILE:${DMAAP_MED_DATA_MOUNT_PATH}/$DMAAP_MED_DATA_FILE
+ labels:
+ - "nrttest_app=DMAAPMED"
+ - "nrttest_dp=${DMAAP_MED_DISPLAY_NAME}"
diff --git a/test/simulator-group/dmaapmed/svc.yaml b/test/simulator-group/dmaapmed/svc.yaml
new file mode 100644
index 0000000..a064cfa
--- /dev/null
+++ b/test/simulator-group/dmaapmed/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: $DMAAP_MED_APP_NAME
+ namespace: $KUBE_NONRTRIC_NAMESPACE
+ labels:
+ run: $DMAAP_MED_APP_NAME
+ autotest: DMAAPMED
+spec:
+ type: ClusterIP
+ ports:
+ - port: $DMAAP_MED_EXTERNAL_PORT
+ targetPort: $DMAAP_MED_INTERNAL_PORT
+ protocol: TCP
+ name: http
+ - port: $DMAAP_MED_EXTERNAL_SECURE_PORT
+ targetPort: $DMAAP_MED_INTERNAL_SECURE_PORT
+ protocol: TCP
+ name: https
+ selector:
+ run: $DMAAP_MED_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmed/type_config.json b/test/simulator-group/dmaapmed/type_config.json
new file mode 100644
index 0000000..8a67226
--- /dev/null
+++ b/test/simulator-group/dmaapmed/type_config.json
@@ -0,0 +1,9 @@
+{
+ "types":
+ [
+ {
+ "id": "STD_Fault_Messages",
+ "dmaapTopicUrl": "/events/unauthenticated.dmaapmed.json/dmaapmediatorproducer/STD_Fault_Messages"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/app.yaml b/test/simulator-group/dmaapmr/app.yaml
index 39756bb..2b39d15 100644
--- a/test/simulator-group/dmaapmr/app.yaml
+++ b/test/simulator-group/dmaapmr/app.yaml
@@ -80,7 +80,7 @@
imagePullPolicy: $KUBE_IMAGE_PULL_POLICY
ports:
- name: http
- containerPort: 9092
+ containerPort: 9095
env:
- name: enableCadi
value: 'false'
@@ -92,12 +92,12 @@
value: '40000'
- name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
value: 'INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT'
-# - name: KAFKA_ADVERTISED_LISTENERS
-# value: 'INTERNAL_PLAINTEXT://akfak-bwds.onap:9092'
- name: KAFKA_ADVERTISED_LISTENERS
- value: 'INTERNAL_PLAINTEXT://localhost:9092'
+ value: 'INTERNAL_PLAINTEXT://kaka:9092'
+# - name: KAFKA_ADVERTISED_LISTENERS
+# value: 'INTERNAL_PLAINTEXT://localhost:9092'
- name: KAFKA_LISTENERS
- value: 'INTERNAL_PLAINTEXT://0.0.0.0:9092'
+ value: 'EXTERNAL_PLAINTEXT://0.0.0.0:9095,INTERNAL_PLAINTEXT://0.0.0.0:9092'
- name: KAFKA_INTER_BROKER_LISTENER_NAME
value: INTERNAL_PLAINTEXT
- name: KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE
@@ -110,6 +110,7 @@
value: '1'
- name: KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS
value: '1'
+
volumeMounts:
- mountPath: /etc/kafka/secrets/jaas/zk_client_jaas.conf
subPath: zk_client_jaas.conf
@@ -167,6 +168,8 @@
value: '-Djava.security.auth.login.config=/etc/zookeeper/secrets/jaas/zk_server_jaas.conf -Dzookeeper.kerberos.removeHostFromPrincipal=true -Dzookeeper.kerberos.removeRealmFromPrincipal=true -Dzookeeper.authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider -Dzookeeper.requireClientAuthScheme=sasl'
- name: ZOOKEEPER_SERVER_ID
value: '1'
+ - name: ZOOKEEPER_SASL_ENABLED
+ value: 'false'
volumeMounts:
- mountPath: /etc/zookeeper/secrets/jaas/zk_server_jaas.conf
subPath: zk_server_jaas.conf
diff --git a/test/simulator-group/dmaapmr/docker-compose.yml b/test/simulator-group/dmaapmr/docker-compose.yml
index c468b2f..6b5c9c2 100644
--- a/test/simulator-group/dmaapmr/docker-compose.yml
+++ b/test/simulator-group/dmaapmr/docker-compose.yml
@@ -15,7 +15,7 @@
# ============LICENSE_END=================================================
#
-version: '3.5'
+version: '3.0'
networks:
default:
external:
@@ -36,10 +36,10 @@
ZOOKEEPER_AUTOPURGE_SNAP_RETAIN_COUNT: 3
ZOOKEEPER_AUTOPURGE_PURGE_INTERVAL: 24
ZOOKEEPER_CLIENT_PORT: 2181
- KAFKA_OPTS: -Djava.security.auth.login.config=/etc/zookeeper/secrets/jaas/zk_server_jaas.conf -Dzookeeper.kerberos.removeHostFromPrincipal=true -Dzookeeper.kerberos.removeRealmFromPrincipal=true -Dzookeeper.authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider -Dzookeeper.requireClientAuthScheme=sasl
+ KAFKA_OPTS: -Djava.security.auth.login.config=/etc/zookeeper/secrets/jaas/zk_server_jaas.conf -Dzookeeper.kerberos.removeHostFromPrincipal=true -Dzookeeper.kerberos.removeRealmFromPrincipal=true -Dzookeeper.authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider -Dzookeeper.requireClientAuthScheme=sasl -Dzookeeper.4lw.commands.whitelist=*
ZOOKEEPER_SERVER_ID: 1
volumes:
- - ./mnt/zk/zk_server_jaas.conf:/etc/zookeeper/secrets/jaas/zk_server_jaas.conf
+ - .${MR_DMAAP_HOST_MNT_DIR}/zk/zk_server_jaas.conf:/etc/zookeeper/secrets/jaas/zk_server_jaas.conf
networks:
- default
labels:
@@ -67,7 +67,7 @@
# Reduced the number of partitions only to avoid the timeout error for the first subscribe call in slow environment
KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 1
volumes:
- - ./mnt/kafka/zk_client_jaas.conf:/etc/kafka/secrets/jaas/zk_client_jaas.conf
+ - .${MR_DMAAP_HOST_MNT_DIR}/kafka/zk_client_jaas.conf:/etc/kafka/secrets/jaas/zk_client_jaas.conf
networks:
- default
depends_on:
@@ -85,9 +85,9 @@
environment:
enableCadi: 'false'
volumes:
- - ./mnt/mr/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
- - ./mnt/mr/logback.xml:/appl/dmaapMR1/bundleconfig/etc/logback.xml
- - ./mnt/mr/cadi.properties:/appl/dmaapMR1/etc/cadi.properties
+ - .${MR_DMAAP_HOST_MNT_DIR}/mr/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+ - .${MR_DMAAP_HOST_MNT_DIR}/mr/logback.xml:/appl/dmaapMR1/bundleconfig/etc/logback.xml
+ - .${MR_DMAAP_HOST_MNT_DIR}/mr/cadi.properties:/appl/dmaapMR1/etc/cadi.properties
networks:
- default
depends_on:
diff --git a/test/simulator-group/dmaapmr/mnt2/kafka/zk_client_jaas.conf b/test/simulator-group/dmaapmr/mnt2/kafka/zk_client_jaas.conf
new file mode 100644
index 0000000..79a7601
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt2/kafka/zk_client_jaas.conf
@@ -0,0 +1,5 @@
+Client {
+ org.apache.zookeeper.server.auth.DigestLoginModule required
+ username="kafka"
+ password="kafka_secret";
+ };
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt2/mr/KUBE-MsgRtrApi.properties b/test/simulator-group/dmaapmr/mnt2/mr/KUBE-MsgRtrApi.properties
new file mode 100644
index 0000000..7f7bc41
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt2/mr/KUBE-MsgRtrApi.properties
@@ -0,0 +1,166 @@
+# LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+## Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP service
+##
+## 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+## Both Cambria and Kafka make use of Zookeeper.
+##
+config.zk.servers=zookeeper:2181
+
+###############################################################################
+##
+## Kafka Connection
+##
+## Items below are passed through to Kafka's producer and consumer
+## configurations (after removing "kafka.")
+## if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+#kafka.metadata.broker.list={{.Values.kafka.name}}:{{.Values.kafka.port}}
+kafka.metadata.broker.list=kaka:9092
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=20000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+#(backoff*retries > zksessiontimeout)
+kafka.rebalance.backoff.ms=10000
+kafka.rebalance.max.retries=6
+
+
+###############################################################################
+##
+## Secured Config
+##
+## Some data stored in the config system is sensitive -- API keys and secrets,
+## for example. to protect it, we use an encryption layer for this section
+## of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+## Kafka expects live connections from the consumer to the broker, which
+## obviously doesn't work over connectionless HTTP requests. The Cambria
+## server proxies HTTP requests into Kafka consumer sessions that are kept
+## around for later re-use. Not doing so is costly for setup per request,
+## which would substantially impact a high volume consumer's performance.
+##
+## This complicates Cambria server failover, because we often need server
+## A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+cambria.consumer.cache.touchFreqMs=120000
+##stickforallconsumerrequests=false
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+#cambria.rateLimit.maxEmptyPollsPerMinute=30
+#cambria.rateLimitActual.delay.ms=10
+
+###############################################################################
+##
+## Metrics Reporting
+##
+## This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics
+#msgrtr.apinode.metrics.dmaap
+#metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+consumer.timeout=17
+default.partitions=3
+default.replicas=3
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=org.onap.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+enforced.topic.name.AAF=org.onap.dmaap.mr
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=org.onap.dmaap.mr
+##############################################################################
+#Mirror Maker Agent
+
+msgRtr.mirrormakeradmin.aaf=org.onap.dmaap.mr.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=org.onap.dmaap.mr.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=org.onap.dmaap.mr.mirrormakeragent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
+
+kafka.max.poll.interval.ms=300000
+kafka.heartbeat.interval.ms=60000
+kafka.session.timeout.ms=240000
+kafka.max.poll.records=1000
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt2/mr/MsgRtrApi.properties b/test/simulator-group/dmaapmr/mnt2/mr/MsgRtrApi.properties
new file mode 100644
index 0000000..4764321
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt2/mr/MsgRtrApi.properties
@@ -0,0 +1,166 @@
+# LICENSE_START=======================================================
+# org.onap.dmaap
+# ================================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+## Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP service
+##
+## 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+## Both Cambria and Kafka make use of Zookeeper.
+##
+config.zk.servers=zookeeper:2181
+
+###############################################################################
+##
+## Kafka Connection
+##
+## Items below are passed through to Kafka's producer and consumer
+## configurations (after removing "kafka.")
+## if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+#kafka.metadata.broker.list={{.Values.kafka.name}}:{{.Values.kafka.port}}
+kafka.metadata.broker.list=kafka:9092
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=20000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+#(backoff*retries > zksessiontimeout)
+kafka.rebalance.backoff.ms=10000
+kafka.rebalance.max.retries=6
+
+
+###############################################################################
+##
+## Secured Config
+##
+## Some data stored in the config system is sensitive -- API keys and secrets,
+## for example. to protect it, we use an encryption layer for this section
+## of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+## Kafka expects live connections from the consumer to the broker, which
+## obviously doesn't work over connectionless HTTP requests. The Cambria
+## server proxies HTTP requests into Kafka consumer sessions that are kept
+## around for later re-use. Not doing so is costly for setup per request,
+## which would substantially impact a high volume consumer's performance.
+##
+## This complicates Cambria server failover, because we often need server
+## A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+cambria.consumer.cache.touchFreqMs=120000
+##stickforallconsumerrequests=false
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+#cambria.rateLimit.maxEmptyPollsPerMinute=30
+#cambria.rateLimitActual.delay.ms=10
+
+###############################################################################
+##
+## Metrics Reporting
+##
+## This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics
+#msgrtr.apinode.metrics.dmaap
+#metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+consumer.timeout=17
+default.partitions=3
+default.replicas=3
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=org.onap.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+enforced.topic.name.AAF=org.onap.dmaap.mr
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=org.onap.dmaap.mr
+##############################################################################
+#Mirror Maker Agent
+
+msgRtr.mirrormakeradmin.aaf=org.onap.dmaap.mr.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=org.onap.dmaap.mr.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=org.onap.dmaap.mr.mirrormakeragent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
+
+kafka.max.poll.interval.ms=300000
+kafka.heartbeat.interval.ms=60000
+kafka.session.timeout.ms=240000
+kafka.max.poll.records=1000
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt2/mr/cadi.properties b/test/simulator-group/dmaapmr/mnt2/mr/cadi.properties
new file mode 100644
index 0000000..3cd26ad
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt2/mr/cadi.properties
@@ -0,0 +1,19 @@
+#aaf_locate_url=https://aaf-onap-test.osaaf.org:8095\
+aaf_url=https://AAF_LOCATE_URL/onap.org.osaaf.aaf.service:2.1
+aaf_env=DEV
+aaf_lur=org.onap.aaf.cadi.aaf.v2_0.AAFLurPerm
+
+cadi_truststore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.trust.jks
+cadi_truststore_password=8FyfX+ar;0$uZQ0h9*oXchNX
+
+cadi_keyfile=/appl/dmaapMR1/etc/org.onap.dmaap.mr.keyfile
+
+cadi_alias=dmaapmr@mr.dmaap.onap.org
+cadi_keystore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.p12
+cadi_keystore_password=GDQttV7)BlOvWMf6F7tz&cjy
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
+
+cadi_loglevel=INFO
+cadi_protocols=TLSv1.1,TLSv1.2
+cadi_latitude=37.78187
+cadi_longitude=-122.26147
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt2/mr/logback.xml b/test/simulator-group/dmaapmr/mnt2/mr/logback.xml
new file mode 100644
index 0000000..f02a2db
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt2/mr/logback.xml
@@ -0,0 +1,208 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright © 2019 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ============LICENSE_END=========================================================
+ -->
+
+<configuration scan="true" scanPeriod="3 seconds" debug="false">
+ <contextName>${module.ajsc.namespace.name}</contextName>
+ <jmxConfigurator />
+ <property name="logDirectory" value="${AJSC_HOME}/log" />
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>ERROR</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="INFO" class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <appender name="DEBUG" class="ch.qos.logback.core.ConsoleAppender">
+
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="ERROR" class="ch.qos.logback.core.ConsoleAppender"> class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>ERROR</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+
+
+ <!-- Msgrtr related loggers -->
+ <logger name="org.onap.dmaap.dmf.mr.service" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.service.impl" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.resources" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.resources.streamReaders" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.backends" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.backends.kafka" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.backends.memory" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.beans" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.constants" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.exception" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.listener" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.metabroker" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.metrics.publisher" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.metrics.publisher.impl" level="INFO" />
+
+
+
+ <logger name="org.onap.dmaap.dmf.mr.security" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.security.impl" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.transaction" level="INFO" />
+ <logger name="com.att.dmf.mr.transaction.impl" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.metabroker" level="INFO" />
+ <logger name="org.onap.dmaap.dmf.mr.metabroker" level="INFO" />
+
+ <logger name="org.onap.dmaap.dmf.mr.utils" level="INFO" />
+ <logger name="org.onap.dmaap.mr.filter" level="INFO" />
+
+ <!--<logger name="com.att.nsa.cambria.*" level="INFO" />-->
+
+ <!-- Msgrtr loggers in ajsc -->
+ <logger name="org.onap.dmaap.service" level="INFO" />
+ <logger name="org.onap.dmaap" level="INFO" />
+
+
+ <!-- Spring related loggers -->
+ <logger name="org.springframework" level="WARN" additivity="false"/>
+ <logger name="org.springframework.beans" level="WARN" additivity="false"/>
+ <logger name="org.springframework.web" level="WARN" additivity="false" />
+ <logger name="com.blog.spring.jms" level="WARN" additivity="false" />
+
+ <!-- AJSC Services (bootstrap services) -->
+ <logger name="ajsc" level="WARN" additivity="false"/>
+ <logger name="ajsc.RouteMgmtService" level="INFO" additivity="false"/>
+ <logger name="ajsc.ComputeService" level="INFO" additivity="false" />
+ <logger name="ajsc.VandelayService" level="WARN" additivity="false"/>
+ <logger name="ajsc.FilePersistenceService" level="WARN" additivity="false"/>
+ <logger name="ajsc.UserDefinedJarService" level="WARN" additivity="false" />
+ <logger name="ajsc.UserDefinedBeansDefService" level="WARN" additivity="false" />
+ <logger name="ajsc.LoggingConfigurationService" level="WARN" additivity="false" />
+
+ <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+ logging) -->
+ <logger name="ajsc.utils" level="WARN" additivity="false"/>
+ <logger name="ajsc.utils.DME2Helper" level="INFO" additivity="false" />
+ <logger name="ajsc.filters" level="DEBUG" additivity="false" />
+ <logger name="ajsc.beans.interceptors" level="DEBUG" additivity="false" />
+ <logger name="ajsc.restlet" level="DEBUG" additivity="false" />
+ <logger name="ajsc.servlet" level="DEBUG" additivity="false" />
+ <logger name="com.att" level="WARN" additivity="false" />
+ <logger name="com.att.ajsc.csi.logging" level="WARN" additivity="false" />
+ <logger name="com.att.ajsc.filemonitor" level="WARN" additivity="false"/>
+
+ <logger name="com.att.nsa.dmaap.util" level="INFO" additivity="false"/>
+ <logger name="com.att.cadi.filter" level="INFO" additivity="false" />
+
+
+ <!-- Other Loggers that may help troubleshoot -->
+ <logger name="net.sf" level="WARN" additivity="false" />
+ <logger name="org.apache.commons.httpclient" level="WARN" additivity="false"/>
+ <logger name="org.apache.commons" level="WARN" additivity="false" />
+ <logger name="org.apache.coyote" level="WARN" additivity="false"/>
+ <logger name="org.apache.jasper" level="WARN" additivity="false"/>
+
+ <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+ May aid in troubleshooting) -->
+ <logger name="org.apache.camel" level="WARN" additivity="false" />
+ <logger name="org.apache.cxf" level="WARN" additivity="false" />
+ <logger name="org.apache.camel.processor.interceptor" level="WARN" additivity="false"/>
+ <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" additivity="false" />
+ <logger name="org.apache.cxf.service" level="WARN" additivity="false" />
+ <logger name="org.restlet" level="DEBUG" additivity="false" />
+ <logger name="org.apache.camel.component.restlet" level="DEBUG" additivity="false" />
+ <logger name="org.apache.kafka" level="DEBUG" additivity="false" />
+ <logger name="org.apache.zookeeper" level="INFO" additivity="false" />
+ <logger name="org.I0Itec.zkclient" level="DEBUG" additivity="false" />
+
+ <!-- logback internals logging -->
+ <logger name="ch.qos.logback.classic" level="INFO" additivity="false"/>
+ <logger name="ch.qos.logback.core" level="INFO" additivity="false" />
+
+ <!-- logback jms appenders & loggers definition starts here -->
+ <!-- logback jms appenders & loggers definition starts here -->
+ <appender name="auditLogs" class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ </filter>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="perfLogs" class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ </filter>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="ASYNC-audit" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <discardingThreshold>0</discardingThreshold>
+ <appender-ref ref="Audit-Record-Queue" />
+ </appender>
+
+ <logger name="AuditRecord" level="INFO" additivity="FALSE">
+ <appender-ref ref="STDOUT" />
+ </logger>
+ <logger name="AuditRecord_DirectCall" level="INFO" additivity="FALSE">
+ <appender-ref ref="STDOUT" />
+ </logger>
+ <appender name="ASYNC-perf" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>1000</queueSize>
+ <discardingThreshold>0</discardingThreshold>
+ <appender-ref ref="Performance-Tracker-Queue" />
+ </appender>
+ <logger name="PerfTrackerRecord" level="INFO" additivity="FALSE">
+ <appender-ref ref="ASYNC-perf" />
+ <appender-ref ref="perfLogs" />
+ </logger>
+ <!-- logback jms appenders & loggers definition ends here -->
+
+ <root level="DEBUG">
+ <appender-ref ref="DEBUG" />
+ <appender-ref ref="ERROR" />
+ <appender-ref ref="INFO" />
+ <appender-ref ref="STDOUT" />
+ </root>
+
+</configuration>
diff --git a/test/simulator-group/dmaapmr/mnt2/zk/zk_server_jaas.conf b/test/simulator-group/dmaapmr/mnt2/zk/zk_server_jaas.conf
new file mode 100644
index 0000000..3d2767f
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt2/zk/zk_server_jaas.conf
@@ -0,0 +1,4 @@
+Server {
+ org.apache.zookeeper.server.auth.DigestLoginModule required
+ user_kafka="kafka_secret";
+};
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/svc.yaml b/test/simulator-group/dmaapmr/svc.yaml
index 0a02b4f..e5d5d8e 100644
--- a/test/simulator-group/dmaapmr/svc.yaml
+++ b/test/simulator-group/dmaapmr/svc.yaml
@@ -32,7 +32,7 @@
type: ClusterIP
ports:
- port: 9092
- targetPort: 9092
+ targetPort: 9095
protocol: TCP
name: http
selector:
@@ -54,4 +54,82 @@
protocol: TCP
name: http
selector:
+ run: $MR_ZOOKEEPER_APP_NAME
+
+
+# ---
+# apiVersion: v1
+# kind: Service
+# metadata:
+# name: dmaap-mr
+# namespace: $KUBE_ONAP_NAMESPACE
+# labels:
+# run: $MR_DMAAP_KUBE_APP_NAME
+# autotest: DMAAPMR
+# spec:
+# type: ClusterIP
+# ports:
+# - port: $MR_EXTERNAL_PORT
+# targetPort: $MR_INTERNAL_PORT
+# protocol: TCP
+# name: http
+# - port: $MR_EXTERNAL_SECURE_PORT
+# targetPort: $MR_INTERNAL_SECURE_PORT
+# protocol: TCP
+# name: https
+# selector:
+# run: $MR_DMAAP_KUBE_APP_NAME
+# ---
+# apiVersion: v1
+# kind: Service
+# metadata:
+# name: dmaap-kafka
+# namespace: $KUBE_ONAP_NAMESPACE
+# labels:
+# run: $MR_KAFKA_BWDS_NAME
+# autotest: DMAAPMR
+# spec:
+# type: ClusterIP
+# ports:
+# - port: 9092
+# targetPort: 9092
+# protocol: TCP
+# name: http
+# selector:
+# run: $MR_KAFKA_BWDS_NAME
+# ---
+# apiVersion: v1
+# kind: Service
+# metadata:
+# name: kafka
+# namespace: $KUBE_ONAP_NAMESPACE
+# labels:
+# run: $MR_KAFKA_BWDS_NAME
+# autotest: DMAAPMR
+# spec:
+# type: ClusterIP
+# ports:
+# - port: 9092
+# targetPort: 9092
+# protocol: TCP
+# name: http
+# selector:
+# run: $MR_KAFKA_BWDS_NAME
+# ---
+# apiVersion: v1
+# kind: Service
+# metadata:
+# name: dmaap-zookeeper
+# namespace: $KUBE_ONAP_NAMESPACE
+# labels:
+# run: $MR_ZOOKEEPER_APP_NAME
+# autotest: DMAAPMR
+# spec:
+# type: ClusterIP
+# ports:
+# - port: 2181
+# targetPort: 2181
+# protocol: TCP
+# name: http
+# selector:
run: $MR_ZOOKEEPER_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/kubeproxy/docker-compose.yml b/test/simulator-group/kubeproxy/docker-compose.yml
new file mode 100644
index 0000000..7f0f349
--- /dev/null
+++ b/test/simulator-group/kubeproxy/docker-compose.yml
@@ -0,0 +1,33 @@
+# ============LICENSE_START===============================================
+# Copyright (C) 2020 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+version: '3.0'
+networks:
+ default:
+ external:
+ name: ${DOCKER_SIM_NWNAME}
+services:
+ kubeproxy:
+ image: ${KUBE_PROXY_IMAGE}
+ container_name: ${KUBE_PROXY_APP_NAME}
+ ports:
+ - ${KUBE_PROXY_DOCKER_EXTERNAL_PORT}:${KUBE_PROXY_INTERNAL_PORT}
+ - ${KUBE_PROXY_DOCKER_EXTERNAL_SECURE_PORT}:${KUBE_PROXY_INTERNAL_SECURE_PORT}
+ - ${KUBE_PROXY_WEB_DOCKER_EXTERNAL_PORT}:${KUBE_PROXY_WEB_INTERNAL_PORT}
+ - ${KUBE_PROXY_WEB_DOCKER_EXTERNAL_SECURE_PORT}:${KUBE_PROXY_WEB_INTERNAL_SECURE_PORT}
+ labels:
+ - "nrttest_app=KUBEPROXY"
+ - "nrttest_dp=${KUBE_PROXY_DISPLAY_NAME}"
diff --git a/test/simulator-group/pvc-cleaner/pvc-cleaner.yaml b/test/simulator-group/pvc-cleaner/pvc-cleaner.yaml
index 790ee87..35cf6ea 100644
--- a/test/simulator-group/pvc-cleaner/pvc-cleaner.yaml
+++ b/test/simulator-group/pvc-cleaner/pvc-cleaner.yaml
@@ -3,11 +3,14 @@
metadata:
name: pvc-cleaner
namespace: $PVC_CLEANER_NAMESPACE
+ labels:
+ run: $PVC_CLEANER_APP_NAME
+ autotest: PVCCLEANER
spec:
restartPolicy: Never
containers:
- name: pvc-cleaner
- image: "ubuntu:20.10"
+ image: $PVC_CLEANER_IMAGE
command: ["/bin/sh","-c"]
args: ["rm -rf $PVC_CLEANER_RM_PATH/*"]
volumeMounts:
diff --git a/test/simulator-group/ric/app.yaml b/test/simulator-group/ric/app.yaml
index c139730..36e4af1 100644
--- a/test/simulator-group/ric/app.yaml
+++ b/test/simulator-group/ric/app.yaml
@@ -2,7 +2,7 @@
kind: StatefulSet
metadata:
name: $RIC_SIM_SET_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_A1SIM_NAMESPACE
labels:
run: $RIC_SIM_SET_NAME
autotest: RICSIM
diff --git a/test/simulator-group/ric/docker-compose.yml b/test/simulator-group/ric/docker-compose.yml
index 37fad42..a6358c7 100644
--- a/test/simulator-group/ric/docker-compose.yml
+++ b/test/simulator-group/ric/docker-compose.yml
@@ -23,6 +23,7 @@
default:
external:
name: ${DOCKER_SIM_NWNAME}
+
services:
g1:
image: ${RIC_SIM_IMAGE}
@@ -77,3 +78,39 @@
labels:
- "nrttest_app=RICSIM"
- "nrttest_dp=${RIC_SIM_DISPLAY_NAME}"
+
+ g4:
+ image: ${RIC_SIM_IMAGE}
+ networks:
+ - default
+ ports:
+ - ${RIC_SIM_INTERNAL_PORT}/tcp
+ - ${RIC_SIM_INTERNAL_SECURE_PORT}/tcp
+ environment:
+ - A1_VERSION=${G4_A1_VERSION}
+ - REMOTE_HOSTS_LOGGING=1
+ - ALLOW_HTTP=true
+ - DUPLICATE_CHECK=1
+ volumes:
+ - ${RIC_SIM_CERT_MOUNT_DIR}:/usr/src/app/cert:ro
+ labels:
+ - "nrttest_app=RICSIM"
+ - "nrttest_dp=${RIC_SIM_DISPLAY_NAME}"
+
+ g5:
+ image: ${RIC_SIM_IMAGE}
+ networks:
+ - default
+ ports:
+ - ${RIC_SIM_INTERNAL_PORT}/tcp
+ - ${RIC_SIM_INTERNAL_SECURE_PORT}/tcp
+ environment:
+ - A1_VERSION=${G5_A1_VERSION}
+ - REMOTE_HOSTS_LOGGING=1
+ - ALLOW_HTTP=true
+ - DUPLICATE_CHECK=1
+ volumes:
+ - ${RIC_SIM_CERT_MOUNT_DIR}:/usr/src/app/cert:ro
+ labels:
+ - "nrttest_app=RICSIM"
+ - "nrttest_dp=${RIC_SIM_DISPLAY_NAME}"
\ No newline at end of file
diff --git a/test/simulator-group/ric/svc.yaml b/test/simulator-group/ric/svc.yaml
index 902bb64..a1a3f04 100644
--- a/test/simulator-group/ric/svc.yaml
+++ b/test/simulator-group/ric/svc.yaml
@@ -2,7 +2,7 @@
kind: Service
metadata:
name: $RIC_SIM_SET_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_A1SIM_NAMESPACE
labels:
run: $RIC_SIM_SET_NAME
autotest: RICSIM
diff --git a/test/simulator-group/sdnc/app.yaml b/test/simulator-group/sdnc/app.yaml
index 13d4739..45f0f08 100644
--- a/test/simulator-group/sdnc/app.yaml
+++ b/test/simulator-group/sdnc/app.yaml
@@ -2,7 +2,7 @@
kind: Deployment
metadata:
name: $SDNC_APP_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_APP_NAME
autotest: SDNC
@@ -46,7 +46,7 @@
kind: Deployment
metadata:
name: $SDNC_DB_APP_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_DB_APP_NAME
autotest: SDNC
diff --git a/test/simulator-group/sdnc/app2.yaml b/test/simulator-group/sdnc/app2.yaml
index 48aeaf9..8861fe0 100644
--- a/test/simulator-group/sdnc/app2.yaml
+++ b/test/simulator-group/sdnc/app2.yaml
@@ -2,7 +2,7 @@
kind: Deployment
metadata:
name: $SDNC_APP_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_APP_NAME
autotest: SDNC
@@ -62,7 +62,7 @@
kind: Deployment
metadata:
name: $SDNC_DB_APP_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_DB_APP_NAME
autotest: SDNC
diff --git a/test/simulator-group/sdnc/docker-compose-2.yml b/test/simulator-group/sdnc/docker-compose-2.yml
index 9d81df5..03483a0 100644
--- a/test/simulator-group/sdnc/docker-compose-2.yml
+++ b/test/simulator-group/sdnc/docker-compose-2.yml
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# ==================================================================================
-version: '3'
+version: '3.0'
networks:
default:
diff --git a/test/simulator-group/sdnc/svc.yaml b/test/simulator-group/sdnc/svc.yaml
index 6a9cd1d..45af8b6 100644
--- a/test/simulator-group/sdnc/svc.yaml
+++ b/test/simulator-group/sdnc/svc.yaml
@@ -2,7 +2,7 @@
kind: Service
metadata:
name: $SDNC_APP_NAME
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_APP_NAME
autotest: SDNC
@@ -24,7 +24,7 @@
kind: Service
metadata:
name: dbhost
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_DB_APP_NAME
autotest: SDNC
@@ -42,7 +42,7 @@
kind: Service
metadata:
name: sdnctldb01
- namespace: $KUBE_NONRTRIC_NAMESPACE
+ namespace: $KUBE_SNDC_NAMESPACE
labels:
run: $SDNC_DB_APP_NAME
autotest: SDNC