diff options
42 files changed, 726 insertions, 654 deletions
diff --git a/plans/aaf/aafapi/setup.sh b/plans/aaf/aafapi/setup.sh index dd6cb29e..95b35e43 100644 --- a/plans/aaf/aafapi/setup.sh +++ b/plans/aaf/aafapi/setup.sh @@ -25,52 +25,169 @@ source ${SCRIPTS}/common_functions.sh # Clone AAF Authz repo -mkdir -p $WORKSPACE/archives/aafcsit -cd $WORKSPACE/archives/aafcsit -#unset http_proxy https_proxy +mkdir -p $WORKSPACE/archives/opt +cd $WORKSPACE/archives/opt + + +HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}') +export HOST_IP=${HOST_IP} + +CURRENT_DIR=$(pwd) export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) + +NEXUS_USERNAME=anonymous +NEXUS_PASSWD=anonymous +NEXUS_DOCKER_REPO=nexus3.onap.org:10001 +AAF_DOCKER_VERSION=2.1.3 + +docker login -u $NEXUS_USERNAME -p "$NEXUS_PASSWD" $NEXUS_DOCKER_REPO + +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_cass:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_config:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_cm:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_fs:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_gui:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_hello:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_locate:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_oauth:$AAF_DOCKER_VERSION +docker pull $NEXUS_DOCKER_REPO/onap/aaf/aaf_service:$AAF_DOCKER_VERSION + +docker tag $NEXUS_DOCKER_REPO/onap/aaf/aaf_cass:$AAF_DOCKER_VERSION nexus3.onap.org:10003/onap/aaf/aaf_cass:$AAF_DOCKER_VERSION git clone --depth 1 http://gerrit.onap.org/r/aaf/authz -b master git pull -cd $WORKSPACE/archives/aafcsit/authz/auth/auth-service/src/main/resources/docker-compose +chmod -R 777 authz +cd authz +CURRENT_DIR=$(pwd) + pwd -chmod -R 777 $WORKSPACE/archives/aafcsit/authz/auth/auth-service/src/main/resources/docker-compose +if [ ! -e auth/csit/d.props ]; then + cp auth/csit/d.props.init auth/csit/d.props +fi -# start aaf containers with docker compose and configuration from docker-compose.yml -docker-compose up -d -export aaf_service=$(get_docker_compose_service aaf_container) -export cassandra_service=$(get_docker_compose_service cassandra_container) +if [ ! -e auth/docker/d.props ]; then + cp auth/docker/d.props.init auth/docker/d.props +fi -# Wait for initialization of Docker container for AAF & Cassandra -for i in {1..12}; do - if [ $(docker inspect --format '{{ .State.Running }}' $aaf_service) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' $cassandra_service) ] - then - echo "AAF Service Running" - break - else - echo sleep $i - sleep $i - fi + +NEXUS_USERNAME=anonymous +NEXUS_PASSWD=anonymous +NEXUS_DOCKER_REPO=nexus3.onap.org:10001 +sed -i "s/DOCKER_REPOSITORY=.*/DOCKER_REPOSITORY=$NEXUS_DOCKER_REPO/" auth/csit/d.props +. auth/csit/d.props + +sed -i "s/DOCKER_REPOSITORY=.*/DOCKER_REPOSITORY=$NEXUS_DOCKER_REPO/" auth/docker/d.props +. auth/docker/d.props + + +HOSTNAME=`hostname` +FQDN=aaf.api.simpledemo.onap.org +HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}') +export HOST_IP=${HOST_IP} + + +CASS_IP=`docker inspect aaf_cass | grep '"IPAddress' | head -1 | cut -d '"' -f 4` +CASS_HOST="cass.aaf.osaaf.org:"$CASS_IP + +cd auth/auth-cass/docker +if [ "`docker container ls | grep aaf_cass`" = "" ]; then + # Cassandra Install + echo Cassandra Install + bash ./dinstall.sh +fi + +CASS_IP=`docker inspect aaf_cass | grep '"IPAddress' | head -1 | cut -d '"' -f 4` +CASS_HOST="cass.aaf.osaaf.org:"$CASS_IP +if [ ! -e $WORKSPACE/archives/opt/authz/auth/csit/cass.props ]; then + cp $WORKSPACE/archives/opt/authz/auth/csit/cass.props.init $WORKSPACE/archives/opt/authz/auth/csit/cass.props +fi + +sed -i "s/CASS_HOST=.*/CASS_HOST="$CASS_HOST"/g" $WORKSPACE/archives/opt/authz/auth/csit/cass.props + +if [ ! -e $WORKSPACE/archives/opt/authz/auth/docker/cass.props ]; then + cp $WORKSPACE/archives/opt/authz/auth/docker/cass.props.init $WORKSPACE/archives/opt/authz/auth/docker/cass.props +fi + +sed -i "s/CASS_HOST=.*/CASS_HOST="$CASS_HOST"/g" $WORKSPACE/archives/opt/authz/auth/docker/cass.props +# TODO Pull from Config Dir +if [ "$LATITUDE" = "" ]; then + LATITUDE=37.781 + LONGITUDE=-122.261 + sed -i "s/LATITUDE=.*/LATITUDE=$LATITUDE/g" $WORKSPACE/archives/opt/authz/auth/csit/d.props + sed -i "s/LONGITUDE=.*/LONGITUDE=$LONGITUDE/g" $WORKSPACE/archives/opt/authz/auth/csit/d.props +fi + +sed -i "s/VERSION=.*/VERSION=$VERSION/g" $WORKSPACE/archives/opt/authz/auth/csit/d.props +sed -i "s/HOSTNAME=.*/HOSTNAME=$HOSTNAME/g" $WORKSPACE/archives/opt/authz/auth/csit/d.props +sed -i "s/HOST_IP=.*/HOST_IP=$HOST_IP/g" $WORKSPACE/archives/opt/authz/auth/csit/d.props +sed -i "s/AAF_REGISTER_AS=.*/AAF_REGISTER_AS=$FQDN/g" $WORKSPACE/archives/opt/authz/auth/csit/d.props + +pwd + +cd ../../ + +pwd + +cd csit +tty +# Need new Deployment system properties +bash ./aaf.sh + +# run it +bash ./drun.sh + +docker images + +docker ps -a + +cat /etc/sudoers + +docker logs aaf_hello + +docker logs aaf_locate + +docker logs aaf_cm + +docker logs aaf_gui + +docker logs aaf_fs + +docker logs aaf_oauth + +docker logs aaf_service + +# Wait for initialization of Docker containers +for i in {1..50}; do + if [ $(docker inspect --format '{{ .State.Running }}' aaf_hello) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' aaf_cm) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' aaf_fs) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' aaf_gui) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' aaf_oauth) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' aaf_locate) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' aaf_service) ] + then + echo "aaf Service Running" + break + else + echo sleep $i + sleep $i + fi done -AAF_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $aaf_service) -CASSANDRA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $cassandra_service) -bypass_ip_adress $AAF_IP -bypass_ip_adress $CASSANDRA_IP +AAF_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' aaf_service) +CASSANDRA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' aaf_cass) echo AAF_IP=${AAF_IP} echo CASSANDRA_IP=${CASSANDRA_IP} - # Wait for initialization of docker services for i in {1..12}; do - curl -sS -m 1 ${AAF_IP}:8101 && break + curl -k -u aaf_admin@people.osaaf.org:demo123456! https://${AAF_IP}:8100/authz/nss/org.osaaf.people && break echo sleep $i sleep $i done #Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v AAF_IP:${AAF_IP}" +ROBOT_VARIABLES="-v AAF_IP:${AAF_IP}"
\ No newline at end of file diff --git a/plans/aaf/aafapi/teardown.sh b/plans/aaf/aafapi/teardown.sh index 41e0b00e..742a1b36 100644 --- a/plans/aaf/aafapi/teardown.sh +++ b/plans/aaf/aafapi/teardown.sh @@ -17,8 +17,12 @@ # Modifications copyright (c) 2017 AT&T Intellectual Property # -kill-instance.sh $aaf_service -kill-instance.sh $cassandra_service -unset aaf_service -unset cassandra_service +kill-instance.sh aaf_service +kill-instance.sh aaf_locate +kill-instance.sh aaf_hello +kill-instance.sh aaf_cm +kill-instance.sh aaf_gui +kill-instance.sh aaf_fs +kill-instance.sh aaf_oauth +kill-instance.sh aaf_cass diff --git a/plans/dcaegen2/prh-testsuites/setup.sh b/plans/dcaegen2/prh-testsuites/setup.sh index 00892d6b..9040ae60 100644 --- a/plans/dcaegen2/prh-testsuites/setup.sh +++ b/plans/dcaegen2/prh-testsuites/setup.sh @@ -3,6 +3,7 @@ source ${SCRIPTS}/common_functions.sh export PRH_SERVICE="prh" +export SSL_PRH_SERVICE="ssl_prh" export DMAAP_SIMULATOR="dmaap_simulator" export AAI_SIMULATOR="aai_simulator" @@ -14,23 +15,24 @@ pip install -U docker docker-compose up -d --build PRH_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${PRH_SERVICE}) +SSL_PRH_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${SSL_PRH_SERVICE}) DMAAP_SIMULATOR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${DMAAP_SIMULATOR}) AAI_SIMULATOR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${AAI_SIMULATOR}) bypass_ip_adress ${PRH_IP} +bypass_ip_adress ${SSL_PRH_IP} bypass_ip_adress ${DMAAP_SIMULATOR_IP} bypass_ip_adress ${AAI_SIMULATOR_IP} echo PRH_IP=${PRH_IP} +echo SSL_PRH_IP=${SSL_PRH_IP} echo DMAAP_SIMULATOR_IP=${DMAAP_SIMULATOR_IP} echo AAI_SIMULATOR_IP=${AAI_SIMULATOR_IP} # Wait for initialization of PRH services -for i in {1..10}; do - curl -sS -m 1 localhost:8100/heartbeat && break - echo sleep ${i} - sleep ${i} -done +wait_for_service_init localhost:8100/heartbeat +wait_for_service_init localhost:8200/heartbeat # #Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v DMAAP_SIMULATOR:${DMAAP_SIMULATOR_IP}:2222 -v AAI_SIMULATOR:${AAI_SIMULATOR_IP}:3333 -v PRH:${PRH_IP}:8100" +ROBOT_VARIABLES="-v DMAAP_SIMULATOR_SETUP:${DMAAP_SIMULATOR_IP}:2224 -v AAI_SIMULATOR_SETUP:${AAI_SIMULATOR_IP}:3335" + diff --git a/plans/dcaegen2/prh-testsuites/teardown.sh b/plans/dcaegen2/prh-testsuites/teardown.sh index bd1e5ba0..45a3b8b1 100644 --- a/plans/dcaegen2/prh-testsuites/teardown.sh +++ b/plans/dcaegen2/prh-testsuites/teardown.sh @@ -16,5 +16,6 @@ # kill-instance.sh prh +kill-instance.sh ssl_prh kill-instance.sh dmaap_simulator kill-instance.sh aai_simulator diff --git a/plans/dmaap-datarouter/dr-suite/setup.sh b/plans/dmaap-datarouter/dr-suite/setup.sh index 023e2658..dedf15b0 100755 --- a/plans/dmaap-datarouter/dr-suite/setup.sh +++ b/plans/dmaap-datarouter/dr-suite/setup.sh @@ -9,7 +9,7 @@ cd $WORKSPACE/archives/dmaapdr git clone --depth 1 https://gerrit.onap.org/r/dmaap/datarouter -b master cd datarouter git pull -cd $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/ +cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources sed -i 's/10003/10001/g' docker-compose.yml # start DMaaP DR containers with docker compose and configuration from docker-compose.yml @@ -17,7 +17,7 @@ docker login -u docker -p docker nexus3.onap.org:10001 docker-compose up -d # Wait for initialization of Docker container for datarouter-node, datarouter-prov and mariadb -for i in {1..50}; do +for i in {1..10}; do if [ $(docker inspect --format '{{ .State.Running }}' datarouter-node) ] && \ [ $(docker inspect --format '{{ .State.Running }}' datarouter-prov) ] && \ [ $(docker inspect --format '{{ .State.Running }}' mariadb) ] diff --git a/plans/dmaap-datarouter/dr-suite/teardown.sh b/plans/dmaap-datarouter/dr-suite/teardown.sh index 033a0015..8e568691 100755 --- a/plans/dmaap-datarouter/dr-suite/teardown.sh +++ b/plans/dmaap-datarouter/dr-suite/teardown.sh @@ -1,4 +1,4 @@ #!/bin/bash -cd $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/ +cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources docker-compose down -v diff --git a/plans/dmaap/mrpubsub/setup.sh b/plans/dmaap/mrpubsub/setup.sh index 4a363042..5a670d28 100755 --- a/plans/dmaap/mrpubsub/setup.sh +++ b/plans/dmaap/mrpubsub/setup.sh @@ -34,40 +34,12 @@ cd $WORKSPACE/archives/dmaapmr/messageservice/src/main/resources/docker-compose cp $WORKSPACE/archives/dmaapmr/messageservice/bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/ -# start DMaaP MR containers with docker compose and configuration from docker-compose.yml -docker login -u docker -p docker nexus3.onap.org:10001 -docker-compose up -d - -# Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper -for i in {1..50}; do - if [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' dockercompose_zookeeper_1) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' dockercompose_dmaap_1) ] - then - echo "DMaaP Service Running" - break - else - echo sleep $i - sleep $i - fi -done - - -DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_dmaap_1) -KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_kafka_1) -ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_zookeeper_1) - -echo DMAAP_MR_IP=${DMAAP_MR_IP} -echo KAFKA_IP=${KAFKA_IP} -echo ZOOKEEPER_IP=${ZOOKEEPER_IP} - -# Initial docker-compose up and down is for populating kafka and zookeeper IPs in /var/tmp/MsgRtrApi.properites -docker-compose down # Update kafkfa and zookeeper properties in MsgRtrApi.propeties which will be copied to DMaaP Container sed -i -e 's/<zookeeper_host>/zookeeper/' /var/tmp/MsgRtrApi.properties sed -i -e 's/<kafka_host>:<kafka_port>/kafka:9092/' /var/tmp/MsgRtrApi.properties +# start DMaaP MR containers with docker compose and configuration from docker-compose.yml docker-compose build docker login -u docker -p docker nexus3.onap.org:10001 docker-compose up -d @@ -90,7 +62,6 @@ DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPA KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_kafka_1) ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dockercompose_zookeeper_1) -echo "After Kafka and Zookeeper ip addresses updated" echo DMAAP_MR_IP=${DMAAP_MR_IP} echo KAFKA_IP=${KAFKA_IP} echo ZOOKEEPER_IP=${ZOOKEEPER_IP} diff --git a/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml b/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml index b9085d6e..c5567d81 100644 --- a/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml +++ b/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml @@ -9,9 +9,9 @@ services: - "8443:8443" - "8080:8080" volumes: - - ./prov_data/provserver.properties:/opt/app/datartr/etc/provserver.properties - - ./prov_data/addSubscriber.txt:/opt/app/datartr/addSubscriber.txt - - ./prov_data/addFeed3.txt:/opt/app/datartr/addFeed3.txt + - ../prov_data/provserver.properties:/opt/app/datartr/etc/provserver.properties + - ../prov_data/addSubscriber.txt:/opt/app/datartr/addSubscriber.txt + - ../prov_data/addFeed3.txt:/opt/app/datartr/addFeed3.txt depends_on: mariadb_container: condition: service_healthy @@ -29,7 +29,7 @@ services: - "9443:8443" - "9090:8080" volumes: - - ./node_data/node.properties:/opt/app/datartr/etc/node.properties + - ../node_data/node.properties:/opt/app/datartr/etc/node.properties depends_on: datarouter-prov: condition: service_healthy @@ -41,7 +41,7 @@ services: ports: - "7070:7070" volumes: - - ./subscriber_data/subscriber.properties:/opt/app/subscriber/etc/subscriber.properties + - ../subscriber_data/subscriber.properties:/opt/app/subscriber/etc/subscriber.properties mariadb_container: image: mariadb:10.2.14 diff --git a/plans/usecases/5G-bulkpm/setup.sh b/plans/usecases/5G-bulkpm/setup.sh index 8dfcfe40..5139cbab 100644 --- a/plans/usecases/5G-bulkpm/setup.sh +++ b/plans/usecases/5G-bulkpm/setup.sh @@ -6,6 +6,7 @@ source ${SCRIPTS}/common_functions.sh mkdir -p $WORKSPACE/archives/dmaapmr cd $WORKSPACE/archives/dmaapmr git clone --depth 1 http://gerrit.onap.org/r/dmaap/messagerouter/messageservice -b master +sed -i 's/enableCadi: false/enableCadi: "false"/g' /$WORKSPACE/archives/dmaapmr/messageservice/src/main/resources/docker-compose/docker-compose.yml cd $WORKSPACE/archives/dmaapmr/messageservice/src/main/resources/docker-compose cp $WORKSPACE/archives/dmaapmr/messageservice/bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/ @@ -53,10 +54,11 @@ sleep 5 mkdir -p $WORKSPACE/archives/dmaapdr cd $WORKSPACE/archives/dmaapdr git clone --depth 1 https://gerrit.onap.org/r/dmaap/datarouter -b master -cd datarouter -cd $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/ -rm -rf docker-compose.yml -cp $WORKSPACE/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/docker-compose.yml +cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources +mkdir docker-compose +cd $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources/docker-compose +cp $WORKSPACE/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources/docker-compose/docker-compose.yml + docker login -u docker -p docker nexus3.onap.org:10001 docker-compose up -d docker kill datarouter-prov @@ -65,7 +67,7 @@ docker kill vescollector HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}') sed -i -e '/DMAAPHOST:/ s/:.*/: '$HOST_IP'/' docker-compose.yml MARIADB=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadb ) -sed -i 's/datarouter-mariadb/'$MARIADB'/g' $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/prov_data/provserver.properties +sed -i 's/datarouter-mariadb/'$MARIADB'/g' $WORKSPACE/archives/dmaapdr/datarouter/datarouter-docker-compose/src/main/resources/prov_data/provserver.properties docker-compose up -d # Wait for initialization of Docker container for datarouter-node, datarouter-prov and mariadb diff --git a/plans/usecases/5G-bulkpm/teardown.sh b/plans/usecases/5G-bulkpm/teardown.sh index 0c86623b..d72345e4 100644 --- a/plans/usecases/5G-bulkpm/teardown.sh +++ b/plans/usecases/5G-bulkpm/teardown.sh @@ -1,7 +1,8 @@ #!/bin/bash echo "Starting teardown script" -docker exec dfc /bin/sh -c "cat /opt/log/application.log" -sleep 5 +docker exec dfc /bin/sh -c "less /opt/log/application.log" > /tmp/dfc_docker.log +cat /tmp/dfc_docker.log +sleep 3 kill-instance.sh $DMAAP kill-instance.sh $KAFKA kill-instance.sh $ZOOKEEPER diff --git a/plans/vid/healthCheck/setup.sh b/plans/vid/healthCheck/setup.sh index a0ed2262..38dddf54 100644 --- a/plans/vid/healthCheck/setup.sh +++ b/plans/vid/healthCheck/setup.sh @@ -32,3 +32,6 @@ echo BE_IP=${BE_IP} # Pass any variables required by Robot test suites in ROBOT_VARIABLES ROBOT_VARIABLES="-v BE_IP:${BE_IP}" + +pip install assertpy +pip install requests
\ No newline at end of file diff --git a/plans/vid/healthCheck/teardown.sh b/plans/vid/healthCheck/teardown.sh index 01383179..14fd0522 100644 --- a/plans/vid/healthCheck/teardown.sh +++ b/plans/vid/healthCheck/teardown.sh @@ -18,5 +18,6 @@ # source ${WORKSPACE}/scripts/vid/kill_containers_and_remove_dataFolders.sh +docker kill so-simulator # $WORKSPACE/archives/clamp-clone deleted with archives folder when tests starts so we keep it at the end for debugging diff --git a/plans/vid/healthCheck/testplan.txt b/plans/vid/healthCheck/testplan.txt index cb5e2798..20add7af 100644 --- a/plans/vid/healthCheck/testplan.txt +++ b/plans/vid/healthCheck/testplan.txt @@ -2,3 +2,4 @@ # Place the suites in run order. vid/healthCheck vid/login +vid/https-connection diff --git a/tests/aaf/aafapi/aafapi.robot b/tests/aaf/aafapi/aafapi.robot index 0f2267be..93b6ce36 100644 --- a/tests/aaf/aafapi/aafapi.robot +++ b/tests/aaf/aafapi/aafapi.robot @@ -1,45 +1,39 @@ *** Settings *** -Suite Setup Run keywords Created header Created session +Library OperatingSystem Library RequestsLibrary +Library requests Library Collections +Library String *** Variables *** +${TARGETURL_NAMESPACE} https://${AAF_IP}:8100/authz/nss/org.osaaf.people +${TARGETURL_PERMS} https://${AAF_IP}:8100/authz/perms/user/aaf_admin@people.osaaf.org +${TARGETURL_ROLES} https://${AAF_IP}:8100/authz/roles/user/aaf_admin@people.osaaf.org +${username} aaf_admin@people.osaaf.org +${password} demo123456! -*** Test Cases *** -View information from app - [Template] Get template - /authz/nss/org.openecomp - authz/perms/user/dgl@openecomp.org - authz/roles/user/dgl@openecomp.org -Cleanup Namespace ( 424 Response - Delete dependencies and try again ) - [Tags] delete - ${resp}= Delete Request ${suite_aaf_session} authz/ns/org.openecomp.dmaapBC headers=${suite_headers} - Should Be Equal As Strings ${resp.status_code} 424 +*** Test Cases *** +View Namesapce + [Tags] get + CreateSession aaf https://${AAF_IP}:8100 + &{headers}= Create Dictionary Authorization=Basic YWFmX2FkbWluQHBlb3BsZS5vc2FhZi5vcmc6ZGVtbzEyMzQ1NiE= Content-Type=application/json Accept=application/json + ${resp}= Get Request aaf /authz/nss/org.osaaf.people headers=&{headers} + Should Be Equal As Strings ${resp.status_code} 200 log 'JSON Response Code :'${resp.text} - -Add information to app - [Template] Post template - authz/ns/org.openecomp.dmaapBC/admin/alexD@openecomp.org 403 - authz/perms/user/m99751@dmaapBC.openecomp.org 406 - -*** Keywords *** -Created session - Create Session aaf_session http://${AAF_IP}:8101 - Set Suite Variable ${suite_aaf_session} aaf_session - -Created header - ${headers}= Create Dictionary Authorization=Basic ZGdsQG9wZW5lY29tcC5vcmc6ZWNvbXBfYWRtaW4= Content-Type=application/json Accept=application/json - Set Suite Variable ${suite_headers} ${headers} - -Get template - [Arguments] ${topic} - ${resp}= Get Request ${suite_aaf_session} ${topic} headers=${suite_headers} + +View by User Permission + [Tags] get + CreateSession aaf https://${AAF_IP}:8100 + &{headers}= Create Dictionary Authorization=Basic YWFmX2FkbWluQHBlb3BsZS5vc2FhZi5vcmc6ZGVtbzEyMzQ1NiE= Content-Type=application/json Accept=application/json + ${resp}= Get Request aaf authz/perms/user/aaf_admin@people.osaaf.org headers=&{headers} Should Be Equal As Strings ${resp.status_code} 200 - log 'JSON Response Code :'${resp.text} - -Post template - [Arguments] ${topic} ${response_status_code} - ${resp}= Post Request ${suite_aaf_session} ${topic} headers=${suite_headers} - Should Be Equal As Strings ${resp.status_code} ${response_status_code} - log 'JSON Response Code :'${resp.text} + log 'JSON Response Code :'${resp.text} + +View by User Role + [Tags] get + CreateSession aaf https://${AAF_IP}:8100 + &{headers}= Create Dictionary Authorization=Basic YWFmX2FkbWluQHBlb3BsZS5vc2FhZi5vcmc6ZGVtbzEyMzQ1NiE= Content-Type=application/json Accept=application/json + ${resp}= Get Request aaf authz/roles/user/aaf_admin@people.osaaf.org headers=&{headers} + Should Be Equal As Strings ${resp.status_code} 200 + log 'JSON Response Code :'${resp.text}
\ No newline at end of file diff --git a/tests/clamp/UIs/01__Create_Holmes_model.robot b/tests/clamp/UIs/01__Create_Holmes_model.robot index e8b1429d..532a5e48 100644 --- a/tests/clamp/UIs/01__Create_Holmes_model.robot +++ b/tests/clamp/UIs/01__Create_Holmes_model.robot @@ -88,7 +88,7 @@ Save Model from Menu Set Selenium Speed ${SELENIUM_SPEED_FAST} Click Element locator=Save CL Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: save Set Selenium Speed ${SELENIUM_SPEED_SLOW} Close Browser diff --git a/tests/clamp/UIs/02__Create_TCA_model.robot b/tests/clamp/UIs/02__Create_TCA_model.robot index bdc537ea..fa63b3f4 100644 --- a/tests/clamp/UIs/02__Create_TCA_model.robot +++ b/tests/clamp/UIs/02__Create_TCA_model.robot @@ -88,7 +88,7 @@ Save Model from Menu Set Selenium Speed ${SELENIUM_SPEED_FAST} Click Element locator=Save CL Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: save Set Selenium Speed ${SELENIUM_SPEED_SLOW} Close Browser diff --git a/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot b/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot index de10a27c..ebde78b2 100644 --- a/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot +++ b/tests/clamp/UIs/04__Submit_deploy_chain_Holmes.robot @@ -51,7 +51,7 @@ Validate-Test Holmes CL Wait Until Element Is Visible locator=Validation Test timeout=60 Click Element locator=Validation Test Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:TEST + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: test Element Should Contain xpath=//*[@id="status_clds"] DESIGN Submit Holmes CL @@ -61,7 +61,7 @@ Submit Holmes CL Click Element locator=Submit Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SUBMIT + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: submit Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED Resubmit Holmes CL @@ -71,7 +71,7 @@ Resubmit Holmes CL Click Element locator=Resubmit Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESUBMIT + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: resubmit Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED Deploy Holmes CL @@ -84,7 +84,7 @@ Deploy Holmes CL Click Button locator=Deploy Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:deploy + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: deploy Element Should Contain xpath=//*[@id="status_clds"] ACTIVE Update Holmes CL @@ -94,7 +94,7 @@ Update Holmes CL Click Element locator=Update Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:UPDATE + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: update Element Should Contain xpath=//*[@id="status_clds"] ACTIVE Stop Holmes CL @@ -104,7 +104,7 @@ Stop Holmes CL Click Element locator=Stop Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:STOP + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: stop Element Should Contain xpath=//*[@id="status_clds"] STOPPED Restart Holmes CL @@ -114,7 +114,7 @@ Restart Holmes CL Click Element locator=Restart Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESTART + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: restart Element Should Contain xpath=//*[@id="status_clds"] ACTIVE UnDeploy Holmes CL @@ -124,7 +124,7 @@ UnDeploy Holmes CL Click Element locator=UnDeploy Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:undeploy + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: undeploy Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED Close Browser diff --git a/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot b/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot index 2b95530a..4a83be25 100644 --- a/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot +++ b/tests/clamp/UIs/05__Submit_deploy_chain_TCA.robot @@ -51,7 +51,7 @@ Validate-Test TCA CL Wait Until Element Is Visible locator=Validation Test timeout=60 Click Element locator=Validation Test Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:TEST + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: test Element Should Contain xpath=//*[@id="status_clds"] DESIGN Submit TCA CL @@ -61,7 +61,7 @@ Submit TCA CL Click Element locator=Submit Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SUBMIT + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: submit Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED Resubmit TCA CL @@ -71,7 +71,7 @@ Resubmit TCA CL Click Element locator=Resubmit Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESUBMIT + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: resubmit Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED Deploy TCA CL @@ -84,7 +84,7 @@ Deploy TCA CL Click Button locator=Deploy Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:deploy + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: deploy Element Should Contain xpath=//*[@id="status_clds"] ACTIVE Update TCA CL @@ -94,7 +94,7 @@ Update TCA CL Click Element locator=Update Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:UPDATE + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: update Element Should Contain xpath=//*[@id="status_clds"] ACTIVE Stop TCA CL @@ -104,7 +104,7 @@ Stop TCA CL Click Element locator=Stop Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:STOP + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: stop Element Should Contain xpath=//*[@id="status_clds"] STOPPED Restart TCA CL @@ -114,7 +114,7 @@ Restart TCA CL Click Element locator=Restart Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:RESTART + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: restart Element Should Contain xpath=//*[@id="status_clds"] ACTIVE UnDeploy TCA CL @@ -124,7 +124,7 @@ UnDeploy TCA CL Click Element locator=UnDeploy Click Button locator=Yes Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:undeploy + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful: undeploy Element Should Contain xpath=//*[@id="status_clds"] DISTRIBUTED Close Browser diff --git a/tests/dcaegen2/prh-testcases/prh_tests.robot b/tests/dcaegen2/prh-testcases/prh_tests.robot index 62698455..634f37f8 100644 --- a/tests/dcaegen2/prh-testcases/prh_tests.robot +++ b/tests/dcaegen2/prh-testcases/prh_tests.robot @@ -1,15 +1,16 @@ *** Settings *** Documentation Integration tests for PRH. ... PRH receive events from DMaaP and produce or not PNF_READY notification depends on required fields in received event. -Suite Setup Run keywords Create header Create sessions +Suite Setup Run keywords Create header AND Create sessions AND Ensure Container Is Running prh AND Ensure Container Is Exited ssl_prh +Suite Teardown Ensure Container Is Running ssl_prh +Test Teardown Reset Simulators Library resources/PrhLibrary.py Resource resources/prh_library.robot Resource ../../common.robot *** Variables *** -${DMAAP_SIMULATOR_URL} http://${DMAAP_SIMULATOR} -${AAI_SIMULATOR_URL} http://${AAI_SIMULATOR} -${PRH_URL} http://${PRH} +${DMAAP_SIMULATOR_SETUP_URL} http://${DMAAP_SIMULATOR_SETUP} +${AAI_SIMULATOR_SETUP_URL} http://${AAI_SIMULATOR_SETUP} ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_with_all_fields.json ${EVENT_WITH_IPV4} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_with_IPV4.json ${EVENT_WITH_IPV6} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_with_IPV6.json @@ -62,6 +63,7 @@ Get valid event from DMaaP and AAI is not responding [Tags] PRH AAI [Timeout] 180s ${data}= Get Data From File ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS} - Stop AAI + Ensure Container Is Exited aai_simulator Set event in DMaaP ${data} Wait Until Keyword Succeeds 100x 300ms Check PRH log java.net.UnknownHostException: aai + Ensure Container Is Running aai_simulator diff --git a/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py b/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py index 656f6fc3..dc589369 100644 --- a/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py +++ b/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py @@ -1,6 +1,7 @@ import json import docker +import time class PrhLibrary(object): @@ -35,10 +36,45 @@ class PrhLibrary(object): return correlation_id @staticmethod - def stop_aai(): + def ensure_container_is_running(name): client = docker.from_env() - container = client.containers.get('aai_simulator') - container.stop() + + if not PrhLibrary.is_in_status(client, name, "running"): + print ("starting container", name) + container = client.containers.get(name) + container.start() + PrhLibrary.wait_for_status(client, name, "running") + + PrhLibrary.print_status(client) + + @staticmethod + def ensure_container_is_exited(name): + client = docker.from_env() + + if not PrhLibrary.is_in_status(client, name, "exited"): + print ("stopping container", name) + container = client.containers.get(name) + container.stop() + PrhLibrary.wait_for_status(client, name, "exited") + + PrhLibrary.print_status(client) + + @staticmethod + def print_status(client): + print("containers status") + for c in client.containers.list(all=True): + print(c.name, " ", c.status) + + @staticmethod + def wait_for_status(client, name, status): + while not PrhLibrary.is_in_status(client, name, status): + print ("waiting for container: ", name, "to be in status: ", status) + time.sleep(3) + + @staticmethod + def is_in_status(client, name, status): + return len(client.containers.list(all=True, filters={"name": "^/"+name+"$", "status": status})) == 1 + def create_invalid_notification(self, json_file): return self.create_pnf_ready_notification(json_file).replace("\":", "\": ")\ diff --git a/tests/dcaegen2/prh-testcases/resources/docker-compose.yml b/tests/dcaegen2/prh-testcases/resources/docker-compose.yml index 67921e8e..6d646801 100644 --- a/tests/dcaegen2/prh-testcases/resources/docker-compose.yml +++ b/tests/dcaegen2/prh-testcases/resources/docker-compose.yml @@ -24,12 +24,38 @@ services: - dmaap - aai + ssl_prh: + image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:latest + command: > + --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap + --dmaap.dmaapConsumerConfiguration.dmaapPortNumber=2222 + --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap + --dmaap.dmaapProducerConfiguration.dmaapPortNumber=2222 + --aai.aaiClientConfiguration.aaiHostPortNumber=3333 + --aai.aaiClientConfiguration.aaiHost=aai + --aai.aaiClientConfiguration.aaiProtocol=http + entrypoint: + - java + - -Dspring.profiles.active=dev + - -Dlogging.level.org.onap.dcaegen2.services.prh=TRACE + - -jar + - /opt/prh-app-server.jar + ports: + - "8200:8100" + - "8533:8433" + container_name: ssl_prh + depends_on: + - dmaap + - aai + dmaap: build: context: simulator dockerfile: DMaaP_simulator ports: - "2222:2222" + - "2223:2223" + - "2224:2224" container_name: dmaap_simulator aai: @@ -38,4 +64,6 @@ services: dockerfile: AAI_simulator ports: - "3333:3333" + - "3334:3334" + - "3335:3335" container_name: aai_simulator diff --git a/tests/dcaegen2/prh-testcases/resources/prh_library.robot b/tests/dcaegen2/prh-testcases/resources/prh_library.robot index 73ce2a2c..71753875 100644 --- a/tests/dcaegen2/prh-testcases/resources/prh_library.robot +++ b/tests/dcaegen2/prh-testcases/resources/prh_library.robot @@ -10,10 +10,14 @@ Create header Set Suite Variable ${suite_headers} ${headers} Create sessions - Create Session dmaap_session ${DMAAP_SIMULATOR_URL} - Set Suite Variable ${suite_dmaap_session} dmaap_session - Create Session aai_session ${AAI_SIMULATOR_URL} - Set Suite Variable ${suite_aai_session} aai_session + Create Session dmaap_setup_session ${DMAAP_SIMULATOR_SETUP_URL} + Set Suite Variable ${dmaap_setup_session} dmaap_setup_session + Create Session aai_setup_session ${AAI_SIMULATOR_SETUP_URL} + Set Suite Variable ${aai_setup_session} aai_setup_session + +Reset Simulators + Reset AAI simulator + Reset DMaaP simulator Invalid event processing [Arguments] ${input_invalid_event_in_dmaap} @@ -21,7 +25,7 @@ Invalid event processing ${data}= Get Data From File ${input_invalid_event_in_dmaap} Set event in DMaaP ${data} ${invalid_notification}= Create invalid notification ${data} - ${notification}= Catenate SEPARATOR= \\n |org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException: Incorrect json, consumerDmaapModel can not be created: ${invalid_notification} + ${notification}= Catenate SEPARATOR= \\n |Incorrect json, consumerDmaapModel can not be created: ${invalid_notification} Wait Until Keyword Succeeds 100x 100ms Check PRH log ${notification} Valid event processing @@ -41,16 +45,24 @@ Check PRH log Check PNF_READY notification [Arguments] ${posted_event_to_dmaap} - ${resp}= Get Request ${suite_dmaap_session} /events/pnfReady headers=${suite_headers} + ${resp}= Get Request ${dmaap_setup_session} /events/pnfReady headers=${suite_headers} Should Be Equal ${resp.text} ${posted_event_to_dmaap} Set PNF name in AAI [Arguments] ${pnfs_name} ${headers}= Create Dictionary Accept=application/json Content-Type=text/html - ${resp}= Put Request ${suite_aai_session} /set_pnfs headers=${headers} data=${pnfs_name} + ${resp}= Put Request ${aai_setup_session} /set_pnfs headers=${headers} data=${pnfs_name} Should Be Equal As Strings ${resp.status_code} 200 Set event in DMaaP [Arguments] ${event_in_dmaap} - ${resp}= Put Request ${suite_dmaap_session} /set_get_event headers=${suite_headers} data=${event_in_dmaap} + ${resp}= Put Request ${dmaap_setup_session} /set_get_event headers=${suite_headers} data=${event_in_dmaap} + Should Be Equal As Strings ${resp.status_code} 200 + +Reset AAI simulator + ${resp}= Post Request ${aai_setup_session} /reset Should Be Equal As Strings ${resp.status_code} 200 + +Reset DMaaP simulator + ${resp}= Post Request ${dmaap_setup_session} /reset + Should Be Equal As Strings ${resp.status_code} 200
\ No newline at end of file diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py b/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py index c57903c3..76823b0d 100644 --- a/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py +++ b/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py @@ -1,12 +1,14 @@ +import _thread +import re +import ssl +import time from http.server import BaseHTTPRequestHandler from http.server import HTTPServer -import re -import sys pnfs = 'Empty' -class AAIHandler(BaseHTTPRequestHandler): +class AAISetup(BaseHTTPRequestHandler): def do_PUT(self): if re.search('/set_pnfs', self.path): @@ -14,9 +16,19 @@ class AAIHandler(BaseHTTPRequestHandler): content_length = int(self.headers['Content-Length']) pnfs = self.rfile.read(content_length) _header_200_and_json(self) - + + return + + def do_POST(self): + if re.search('/reset', self.path): + global pnfs + pnfs = 'Empty' + _header_200_and_json(self) + return +class AAIHandler(BaseHTTPRequestHandler): + def do_PATCH(self): pnfs_name = '/aai/v12/network/pnfs/pnf/' + pnfs.decode() if re.search('wrong_aai_record', self.path): @@ -35,21 +47,30 @@ def _header_200_and_json(self): self.end_headers() -def _main_(handler_class=AAIHandler, server_class=HTTPServer, protocol="HTTP/1.0"): +def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"): + handler_class.protocol_version = protocol + _thread.start_new_thread(_init_http_endpoints, (3333, AAIHandler)) + _thread.start_new_thread(_init_https_endpoints, (3334, AAIHandler)) + _thread.start_new_thread(_init_http_endpoints, (3335, AAISetup)) + while 1: + time.sleep(10) - if sys.argv[1:]: - port = int(sys.argv[1]) - else: - port = 3333 - server_address = ('', port) +def _init_http_endpoints(port, handler_class, server_class=HTTPServer): + server = server_class(('', port), handler_class) + sa = server.socket.getsockname() + print("Serving HTTP on", sa[0], "port", sa[1], "for", handler_class, "...") + server.serve_forever() - handler_class.protocol_version = protocol - httpd = server_class(server_address, handler_class) - sa = httpd.socket.getsockname() - print("Serving HTTP on", sa[0], "port", sa[1], "...") - httpd.serve_forever() +def _init_https_endpoints(port, handler_class, server_class=HTTPServer): + server = server_class(('', port), handler_class) + server.socket = ssl.wrap_socket(server.socket, + keyfile="certs/server.key", certfile="certs/server.crt", + ca_certs="certs/client.crt", server_side=True) + sa = server.socket.getsockname() + print("Serving HTTPS on", sa[0], "port", sa[1], "for", handler_class, "...") + server.serve_forever() if __name__ == '__main__': diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator b/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator index 89a266eb..7364769f 100644 --- a/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator +++ b/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator @@ -1,15 +1,6 @@ -FROM alpine:3.8 - -RUN apk add --no-cache python3 && \ - python3 -m ensurepip && \ - rm -r /usr/lib/python*/ensurepip && \ - pip3 install --upgrade pip setuptools && \ - if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \ - if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \ - rm -r /root/.cache +FROM python:3-alpine ADD AAI.py / - -EXPOSE 3333 +COPY certs/* /certs/ CMD [ "python", "./AAI.py" ] diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py b/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py index 96e22a14..3ff951e8 100644 --- a/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py +++ b/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py @@ -1,13 +1,15 @@ +import _thread +import re +import ssl +import time from http.server import BaseHTTPRequestHandler from http.server import HTTPServer -import re -import sys posted_event_from_prh = b'Empty' -received_event_to_get_method = 'Empty' +received_event_to_get_method = b'Empty' -class DMaaPHandler(BaseHTTPRequestHandler): +class DmaapSetup(BaseHTTPRequestHandler): def do_PUT(self): if re.search('/set_get_event', self.path): @@ -15,25 +17,42 @@ class DMaaPHandler(BaseHTTPRequestHandler): content_length = int(self.headers['Content-Length']) received_event_to_get_method = self.rfile.read(content_length) _header_200_and_json(self) - + + return + + def do_GET(self): + if re.search('/events/pnfReady', self.path): + _header_200_and_json(self) + self.wfile.write(posted_event_from_prh) + return def do_POST(self): + if re.search('/reset', self.path): + global posted_event_from_prh + global received_event_to_get_method + posted_event_from_prh = b'Empty' + received_event_to_get_method = b'Empty' + _header_200_and_json(self) + + return + + +class DMaaPHandler(BaseHTTPRequestHandler): + + def do_POST(self): if re.search('/events/unauthenticated.PNF_READY', self.path): global posted_event_from_prh content_length = int(self.headers['Content-Length']) posted_event_from_prh = self.rfile.read(content_length) _header_200_and_json(self) - + return def do_GET(self): if re.search('/events/unauthenticated.VES_PNFREG_OUTPUT/OpenDcae-c12/c12', self.path): _header_200_and_json(self) self.wfile.write(received_event_to_get_method) - elif re.search('/events/pnfReady', self.path): - _header_200_and_json(self) - self.wfile.write(posted_event_from_prh) return @@ -44,21 +63,30 @@ def _header_200_and_json(self): self.end_headers() -def _main_(handler_class=DMaaPHandler, server_class=HTTPServer, protocol="HTTP/1.0"): - - if sys.argv[1:]: - port = int(sys.argv[1]) - else: - port = 2222 - - server_address = ('', port) - +def _main_(handler_class=DMaaPHandler, protocol="HTTP/1.0"): handler_class.protocol_version = protocol - httpd = server_class(server_address, handler_class) - - sa = httpd.socket.getsockname() - print("Serving HTTP on", sa[0], "port", sa[1], "...") - httpd.serve_forever() + _thread.start_new_thread(_init_http_endpoints, (2222, DMaaPHandler)) + _thread.start_new_thread(_init_https_endpoints, (2223, DMaaPHandler)) + _thread.start_new_thread(_init_http_endpoints, (2224, DmaapSetup)) + while 1: + time.sleep(10) + + +def _init_http_endpoints(port, handler_class, server_class=HTTPServer): + server = server_class(('', port), handler_class) + sa = server.socket.getsockname() + print("Serving HTTP on", sa[0], "port", sa[1], "for", handler_class, "...") + server.serve_forever() + + +def _init_https_endpoints(port, handler_class, server_class=HTTPServer): + server = server_class(('', port), handler_class) + server.socket = ssl.wrap_socket(server.socket, + keyfile="certs/server.key", certfile="certs/server.crt", + ca_certs="certs/client.crt", server_side=True) + sa = server.socket.getsockname() + print("Serving HTTPS on", sa[0], "port", sa[1], "for", handler_class, "...") + server.serve_forever() if __name__ == '__main__': diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator b/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator index 9cf21dc9..40e1af09 100644 --- a/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator +++ b/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator @@ -1,15 +1,6 @@ -FROM alpine:3.8 - -RUN apk add --no-cache python3 && \ - python3 -m ensurepip && \ - rm -r /usr/lib/python*/ensurepip && \ - pip3 install --upgrade pip setuptools && \ - if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \ - if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \ - rm -r /root/.cache +FROM python:3-alpine ADD DMaaP.py / - -EXPOSE 2222 +COPY certs/* /certs/ CMD [ "python", "./DMaaP.py" ] diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/certs/client.crt b/tests/dcaegen2/prh-testcases/resources/simulator/certs/client.crt new file mode 100644 index 00000000..35123683 --- /dev/null +++ b/tests/dcaegen2/prh-testcases/resources/simulator/certs/client.crt @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC+DCCAeCgAwIBAgIJAKCcXOpDPyjQMA0GCSqGSIb3DQEBCwUAMBExDzANBgNV +BAMMBmNsaWVudDAeFw0xODEwMTgwNzU1NDlaFw0zODEwMTMwNzU1NDlaMBExDzAN +BgNVBAMMBmNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM/V +zZE2xloz06wO+Fj6GA26pzEFhTHpMOG20woWIkzL7N/TuTyPi24ZqzhyFvGmn71K +eDC14zYeZVTj+8OoJKRSPYcPiyGqMK46hkUNJ9LjVCLGBhqqgTGYd4YTn2FeTAiR +2/rduOD4N7AzYiJlZHcd1zls+QQOyQkFcuO4xKQiwjyC2djDx7W9qUsPZVha/9v9 +u7PcPZ7LnsAPdDSaL/bBz5aYFTX8IMo1nBIujpETCPyQoNc3h+lMilFhY4A1Nj0F +hkwF7GB9Xh7aLC2rEobVbn6s6biUq9+hg7OgTYZtQX7/SfD+6nioXSHMJNGYm7j9 +Z4Yf26BfQStd0cL9GwkCAwEAAaNTMFEwHQYDVR0OBBYEFK+hMFIwHNrVNqudmcQ+ +sLABdVMuMB8GA1UdIwQYMBaAFK+hMFIwHNrVNqudmcQ+sLABdVMuMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMzawFZ8j99zdWhavqBpTeulsisL +IthHkRT8sIBnAkimS5Bujjix8NHsaqUc/1d56KPerDWJ4tXx7Sd4+F7aNIpIkp+1 +lFxKLPU4Fnsbq/IEWAJOuVOWZ0Lug/8UcJbp0Ma/ac1t76uHBQ/mmiJUu/22FUrA +X0Udg3q/xAT2H0QLLK/s2jfR511rNOY5u9zcdKArmHoN13ZuVeZ6HMVO6U78rqZk +TTbdhO9BieARIhoPC+/G9eTV7uJyzi4n60HDpxA0j+ZsH5L6CdU5M3XATMCxpxm4 +xAnHVb0fcudNzIsqZlP0jrJdrNOKkX8qij1poKvvJ2Ap/vKtZZVPL76GHCk= +-----END CERTIFICATE----- diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/certs/client.key b/tests/dcaegen2/prh-testcases/resources/simulator/certs/client.key new file mode 100644 index 00000000..17eebd2a --- /dev/null +++ b/tests/dcaegen2/prh-testcases/resources/simulator/certs/client.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAz9XNkTbGWjPTrA74WPoYDbqnMQWFMekw4bbTChYiTMvs39O5 +PI+LbhmrOHIW8aafvUp4MLXjNh5lVOP7w6gkpFI9hw+LIaowrjqGRQ0n0uNUIsYG +GqqBMZh3hhOfYV5MCJHb+t244Pg3sDNiImVkdx3XOWz5BA7JCQVy47jEpCLCPILZ +2MPHtb2pSw9lWFr/2/27s9w9nsuewA90NJov9sHPlpgVNfwgyjWcEi6OkRMI/JCg +1zeH6UyKUWFjgDU2PQWGTAXsYH1eHtosLasShtVufqzpuJSr36GDs6BNhm1Bfv9J +8P7qeKhdIcwk0ZibuP1nhh/boF9BK13Rwv0bCQIDAQABAoIBAA2Fs6JHFhC4XoVL +VA01+GqsQkSGP2xH585HvuNhHUox2m+Vru+px0CamvFJOwTt+mauebNxoh7bS2yC +iNbqEbg/QZGQCVVfZVtwo1vKx1SJRegdSjhh75XyfZRTooMLR5cnJlDkLCs2+yiT +r0bdofO+FUq/NFR3Qc08dYUreF/VZQzGT86vgpxTqFE1xdVX3mL5X/RFYED25s/n +nw+v8uRVcb21OGsEnHar4wV5VyyG6g0nZGk4uAfLGvvYKwcmMTtKulYtqnZ+0RNI +Iqu3siXOq6BcKly+TzKZ6kpqn+hsD9V9plQ45yPOswboToOnOBanZUxsEJ1mT5lO +wbpqYoECgYEA9IbxrWMri2b5kXz8o6O33RsG6qLrkaOU8M4PJOvxn7LaD9WLbsZZ +J6vv6eXAbHqF1ZfXv52sSZu9Bug3x8cv0ItOiOCPf5T6nTrdLjnCthivNUfLHVJ8 +nonzA2YJWaYe6u5sFtUSifQaHnrAMKqoX2D1qY7SD1QWWbSoK7cRxY0CgYEA2ZYl +T7OYKGKP8Ra2mLFpwY/84n+Rx/A3p0rzZ1cge9Xldo8pGbGduI+aII+XKPC4/lDx +dhS7rbOtIA08aF8htkunSErNUiDtZ+i386KYR3JsQuDruKbk51YYWpRhBPvs0mOT +7lBSeqbJZEJ2vDMU/oNJyUOW+0eL2Jjo28URdm0CgYEA2yucsPFDVVZ9+LZTZ4TV +xvtzjplqlYZOeCvpjQlh7+cJ5slbiXWE8bb9eeLxPwnurUzFFz2G8A8ENY2seYcC +R2Slhq/oTs1Ed+sL1mP1LuwfFp1745NMmXlB9NjfJphr+9ypyyk9zaKaSplxa+16 +rsqkRk753r1arxrq5QvYhP0CgYB8nJW/wI4qys++9hAbALgdh7X/janSxMtKvw0J +KQfMhCKHNNQICAXY9j0B2tpqMvrvgzHWO2eEwnsq+QmYiKsI+OjT6SsPlxX/xXLc +UEk/2dMQtjmppcNAjbki3wl1TkZB8498E3o5Dh4Wkk3n2KV0YYI3hsMII+B+aowp +mQI4PQKBgH8MZj1WDB05mgxC3jK6wNEM+0V08xL8sooYCEST11uZ1Pj7vZmRNjWn +/4pUrIOp1P9EnrS9RsWlVgRKUo6+yvPqdmenq5k7w7dSSowmAnW68rUV+HHuueXQ +9V98fkg3hAnI7ioV19bDaL6EtMvYLg+xSq2GmKvUqRcBRmlObW1L +-----END RSA PRIVATE KEY----- diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/certs/server.crt b/tests/dcaegen2/prh-testcases/resources/simulator/certs/server.crt new file mode 100644 index 00000000..e154aee0 --- /dev/null +++ b/tests/dcaegen2/prh-testcases/resources/simulator/certs/server.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIC/jCCAeagAwIBAgIJALu8otyWP3z1MA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0xODEwMTgwNzU1MzNaFw0zODEwMTMwNzU1MzNaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMILA9ZYh8vo1ui3mNYtF185/qauRgJ5EP1ROqD445hX5T014BrlWzpsRD6B +/uGCxSwNnIE+tGChk4zQBnOSC2Pah2QjMGWUPjgWXgnL4vp1Mb4rKrVNQsaqMi7I +8aCdbO66rZirK04RD2hp09Vy7KGsK6TKjAnQn6UJJD2agHZtcMfQ5Kf/B0yZvlb6 +T3Yet+gefXH/iCZ+bzz4P1Ij6zetetw5S++SzsgxWJECfkk3ISkqu9DBLjfzacKz +ixq+twq5f+kzg3zhUBtpJ4BvC9HKiJ5ZTi/NjapmgJG1WEyhI4cVcpVwoBylJwpV +TyuVaSjVOoqprnvYre6ch9vz2JUCAwEAAaNTMFEwHQYDVR0OBBYEFGG+MZfFt5OH +Kxr4GyBu7mYArZ5aMB8GA1UdIwQYMBaAFGG+MZfFt5OHKxr4GyBu7mYArZ5aMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACoxYrR17mEPOhOxxyRp +ulAxTIbkhiskAI1YF4XRK3FtuWhiuivSyTWmNYfbuhl01U75tyQjd9TCKYKZsaM7 +MaaYWFaSlynFx9SZdKWMPv84re7xdUIzhH9dH+YsGij/ocdedfg/kyhdto88zB5C ++BGEopkOnXEZGZnuhgWVlwT9Aw4MCt9P/+3baJMU0MOSjLX+CnJZ7TsXpnupH3ej +kTPJaooiVig7V84e2jmLx4iuxDgtDSnxYN9fZeDW0SJq+7b7VlyJ9QIpQYt3kUIn +FMAtnxv6FEeMi6k5hUXmRg/XKt/K0WQ2dopwq9XQKMiyHlA4rIJ1Ar3jX3trDyCh +qBU= +-----END CERTIFICATE----- diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/certs/server.key b/tests/dcaegen2/prh-testcases/resources/simulator/certs/server.key new file mode 100644 index 00000000..e86fdc42 --- /dev/null +++ b/tests/dcaegen2/prh-testcases/resources/simulator/certs/server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAwgsD1liHy+jW6LeY1i0XXzn+pq5GAnkQ/VE6oPjjmFflPTXg +GuVbOmxEPoH+4YLFLA2cgT60YKGTjNAGc5ILY9qHZCMwZZQ+OBZeCcvi+nUxvisq +tU1CxqoyLsjxoJ1s7rqtmKsrThEPaGnT1XLsoawrpMqMCdCfpQkkPZqAdm1wx9Dk +p/8HTJm+VvpPdh636B59cf+IJn5vPPg/UiPrN6163DlL75LOyDFYkQJ+STchKSq7 +0MEuN/NpwrOLGr63Crl/6TODfOFQG2kngG8L0cqInllOL82NqmaAkbVYTKEjhxVy +lXCgHKUnClVPK5VpKNU6iqmue9it7pyH2/PYlQIDAQABAoIBAAlOS+3QqxqNXRkm +DO9glDld56eIvhTKR5VOevhTV17sADNyTQAdNcXUgWVaCKY6Bki5kmLkZfQoa5Ia +O+T5ARDV3x5fTafhdyZrdDEWFRmb2znaih7NyMEMUoHJ40SnqBy+2Sp0Mwx4ZvvD +74PSEiUiw6kQiazC05UvngxSR4zmV1pimJAKmKxQynWAeAAFZNl7CDG+aeoaI483 +ipaPaxNc/2i1bi+dva9Hsc1q5C4+hQZIbCdHpbZfZj5bA36vyBo/NcRcicomfuVh +IBFRM8J7jaet68KWqNE3db+ji3xwHwJoypwF/yKtmFueWByv/HrZnaHS2gnKQQ4K +lYbW24ECgYEA5UiqxCeZGiWW+QU3X99hUkE3FlRRp6CWlw58ffn2Ztc5uZsXf0is +EsNHT47jIKFUqkHxBHCX4vSuAcphT/FGeXo6QkRhcSfrlQrifFGfTMbNGbrGnOZU +FVjknQUig3GLfm99Ed4jpyf7ps+iqIXQXlt2F2FRWygnqOVmK2AA2KECgYEA2Kcl +PDlxBuXk0LLbVIxIMymkZS3re1Gw+WJw21GpRUUpAGcZ6EKPUC0zlB4A75rLoucb +i0DmgUNX7T5ZFczrRCjduP7MhUjM64m5Ib0/Pwci46umnLhLf6i3+Z0/QLK3iGDV +8/6FUtKOX/UU5xKUe96MysBlnPzXUG92arQed3UCgYBHB+cXU6kjp4eI5+vKwLo2 +sEtvmHmfc6mTbIJ2yIxkOcMBVCHIZewg9+xMoliM0E4ZXMpc9MCpJ+IMXfUdvgJ2 +Ob54rxR86MAb8T5PAz5Vm7UIhotnKhfccSiJ2IBjtjZf2gwmD+p9q25TtDmQ+bue +r7j670Qz+FGpCkBHqbs5YQKBgEj9Lqc2duSrCMZiq0+1nxFVgyPvL3kxUV0DFCBf +R5alsSWIlorP+bY6NDk/TnNqhBZSo83rRHzh8jpkGeElU1F4LxKHDOIOX7Muh+dc ++XTDc7ad+pir4guVDL4Ugt3KF9jjPtFfuwznEL41NCCQ+uMsW+RmoxUbfXKEyrEy +E12NAoGAGBeR3ghlmhyasnbe7TyJbCAPU/Yut1NI4Rgb4sZcN8gwI5/wkRk0QryQ +eo9th+0e98Y8Rxa0t9k0dkmGOM9WwVdBHZCyzgs6ihLzgy7nZAGi86+pe4BiqDmb +NyfiL8LW+EADax5koWLQpPqrVQ66Gy2BAx4/ODBNzr3ox64jQpE= +-----END RSA PRIVATE KEY----- diff --git a/tests/dcaegen2/prh-testcases/ssl_prh_tests.robot b/tests/dcaegen2/prh-testcases/ssl_prh_tests.robot new file mode 100644 index 00000000..49d2c45a --- /dev/null +++ b/tests/dcaegen2/prh-testcases/ssl_prh_tests.robot @@ -0,0 +1,27 @@ +*** Settings *** +Documentation Integration tests for PRH. +... PRH receive events from DMaaP and produce or not PNF_READY notification depends on required fields in received event. PRH comunicates with AAI and DMaaP through SSL +Suite Setup Run keywords Create header AND Create sessions AND Ensure Container Is Running ssl_prh AND Ensure Container Is Exited prh +Suite Teardown Ensure Container Is Running prh +Test Teardown Reset Simulators +Library resources/PrhLibrary.py +Resource resources/prh_library.robot +Resource ../../common.robot + +*** Variables *** +${DMAAP_SIMULATOR_SETUP_URL} http://${DMAAP_SIMULATOR_SETUP} +${AAI_SIMULATOR_SETUP_URL} http://${AAI_SIMULATOR_SETUP} +${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_with_all_fields.json +${EVENT_WITH_IPV4} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_with_IPV4.json +${EVENT_WITH_IPV6} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_with_IPV6.json +${EVENT_WITHOUT_IPV6_FILED} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets/json_events/event_without_IPV6_field.json + +*** Test Cases *** +Valid DMaaP event can be converted to PNF_READY notification with ssl connection to AAI + [Documentation] PRH get valid event from DMaaP with required fields - PRH produce PNF_READY notification + [Tags] PRH Valid event + [Template] Valid event processing + ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS} + ${EVENT_WITH_IPV4} + ${EVENT_WITH_IPV6} + ${EVENT_WITHOUT_IPV6_FILED} diff --git a/tests/vid/https-connection/__init__.robot b/tests/vid/https-connection/__init__.robot new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/vid/https-connection/__init__.robot diff --git a/tests/vid/https-connection/keywords.py b/tests/vid/https-connection/keywords.py new file mode 100755 index 00000000..85bca101 --- /dev/null +++ b/tests/vid/https-connection/keywords.py @@ -0,0 +1,125 @@ +import ast + +import requests +from assertpy import assert_that +from robot.api import logger +from robot.api.deco import keyword + +JSESSIONID_COOKIE = "JSESSIONID" + +_vid_to_so_request_details = { + "requestDetails": { + "cloudConfiguration": { + "lcpCloudRegionId": "RegionOne", + "tenantId": "982c540f6e69488eb6be5664255e00c0" + }, + "modelInfo": { + "modelInvariantId": "41b3c314-dfab-4501-9c5e-1c9fe5d8e151", + "modelName": "SoWs1..base_ws..module-0", + "modelType": "vfModule", + "modelVersion": "1", + "modelVersionId": "7ea96ae9-9eac-4eaa-882e-077478a6c44a" + }, + "relatedInstanceList": [{ + "relatedInstance": { + "instanceId": "0d8a98d8-d7ca-4c26-b7ab-81d3729e3b6c", + "modelInfo": { + "modelInvariantId": "a4413616-cf96-4615-a94e-0dc5a6a65430", + "modelName": "SC_WS_SW_2", + "modelType": "service", + "modelVersion": "3.0", + "modelVersionId": "0fdaaf44-3c6c-4d81-9c57-b2ce7224dbb9" + } + } + }, + { + "relatedInstance": { + "instanceId": "61c19619-2714-46f8-90c9-39734e4f545f", + "modelInfo": { + "modelCustomizationName": "SO_WS_1 0", + "modelInvariantId": "3b2c9dcb-6ef8-4c3c-8d5b-43d5776f7110", + "modelName": "SO_WS_1", + "modelType": "vnf", + "modelVersion": "1.0", + "modelVersionId": "0fdaaf44-3c6c-4d81-9c57-b2ce7224dbb9" + } + } + } + ], + "requestInfo": { + "source": "VID", + "suppressRollback": False, + "requestorId": "az2016", + "instanceName": "SC_WS_VNF_1_2" + }, + "requestParameters": { + "controllerType": "SDNC", + "userParams": [] + } + + } +} + +_expected_so_response = { + "status": 202, + "entity": { + "requestReferences": { + "instanceId": "fffcbb6c-1983-42df-9ca8-89ae8b3a46c1", + "requestId": "b2197d7e-3a7d-410e-82ba-7b7e8191bc46" + } + } +} + + +def _extract_cookie_from_headers(headers): + for i in headers["Set-Cookie"].split(";"): + if JSESSIONID_COOKIE in i: + return i + raise RuntimeError("No cookie when logging in to VID") + + +def _log_request(response): + logger.console( + "\n=========\n" + "Performing request to : {} \nBODY: {}\nHEADERS: {}" + .format(str(response.request.url), str(response.request.body), str(response.request.headers))) + logger.console( + "---------\n" + "Got response\n BODY: {} \n HEADERS: {}" + "\n=========\n".format(str(response.headers), str(response.content))) + + +@keyword('Login To VID') +def login_to_vid(): + headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'Accept-Language': 'pl,en-US;q=0.7,en;q=0.3', + 'Accept-Encoding': 'gzip, deflate', 'Referer': 'http://localhost:8080/vid/login.htm', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Content-Length': '36', + 'Cookie': 'JSESSIONID=1B4AF817AA4BCB87C07BB5B49EFE8526', + 'Connection': 'keep-alive', + 'Upgrade-Insecure-Requests': '1'} + response = requests.post("https://localhost:8443/vid/login_external", data="loginId=demo&password=Kp8bJ4SXszM0WX", + headers=headers, allow_redirects=False, verify=False) + logger.console("Performing login") + _log_request(response) + return _extract_cookie_from_headers(response.headers) + + +@keyword('Send create VF module instance request to VID') +def send_create_vfmodule_instance_request_to_vid(jsession_cookie): + response = requests.post( + "https://localhost:8443/vid/mso/mso_create_vfmodule_instance/0d8a98d8-d7ca-4c26-b7ab-81d3729e3b6c/vnfs/61c19619-2714-46f8-90c9-39734e4f545f ", + headers={"Cookie": jsession_cookie}, json=_vid_to_so_request_details, verify=False) + content = ast.literal_eval(response.content) + logger.console("Triggering VF module instance creation") + _log_request(response) + return content + + +@keyword('Response should contain valid entity') +def expect_response_from_so_was_correctly_propageted(content): + logger.console("\nActual entity" + str(content['entity'])) + logger.console("Expected entity" + str(_expected_so_response)) + assert_that(content['entity']).is_equal_to(_expected_so_response) diff --git a/tests/vid/https-connection/test1.robot b/tests/vid/https-connection/test1.robot new file mode 100644 index 00000000..2173757a --- /dev/null +++ b/tests/vid/https-connection/test1.robot @@ -0,0 +1,16 @@ +*** Settings *** +Library keywords.py +Library Collections + +*** Variables *** + + +*** Test Cases *** +Connection to SO is performed using HTTPS + ${cookies}= Login To VID + ${response}= Send create VF module instance request to VID ${cookies} + Dictionary Should Contain Item ${response} status 200 + Response should contain valid entity ${response} + + +*** Keywords *** diff --git a/tests/vid/resources/docker-compose.yml b/tests/vid/resources/docker-compose.yml index 879c23d4..4aecb6ab 100644 --- a/tests/vid/resources/docker-compose.yml +++ b/tests/vid/resources/docker-compose.yml @@ -3,32 +3,32 @@ services: vid-server: image: nexus3.onap.org:10001/onap/vid:3.0-STAGING-latest environment: - - VID_MYSQL_DBNAME=vid_openecomp_epsdk - - VID_MYSQL_PASS=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U - - ASDC_CLIENT_REST_HOST=localhost - - ASDC_CLIENT_REST_PORT=8443 + - VID_MYSQL_DBNAME=vid_openecomp_epsdk + - VID_MYSQL_PASS=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U + - VID_MSO_SERVER_URL=https://so-simulator:8443 ports: - - "8080:8080" + - "8080:8080" + - "8443:8443" container_name: vid-server links: - - vid-mariadb:vid-mariadb-docker-instance + - vid-mariadb:vid-mariadb-docker-instance vid-mariadb: image: mariadb:10 environment: - - MYSQL_DATABASE=vid_openecomp_epsdk - - MYSQL_USER=vidadmin - - MYSQL_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U - - MYSQL_ROOT_PASSWORD=LF+tp_1WqgSY + - MYSQL_DATABASE=vid_openecomp_epsdk + - MYSQL_USER=vidadmin + - MYSQL_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U + - MYSQL_ROOT_PASSWORD=LF+tp_1WqgSY container_name: vid-mariadb volumes: - - ${WORKSPACE}/data/clone/vid/lf_config/vid-my.cnf:/etc/mysql/my.cnf - - /var/lib/mysql + - ${WORKSPACE}/data/clone/vid/lf_config/vid-my.cnf:/etc/mysql/my.cnf + - /var/lib/mysql - sdc_simulator: + so-simulator: build: context: simulators - dockerfile: SDC_simulator + dockerfile: SO-simulator ports: - - "8443:8443" - container_name: sdc_simulator
\ No newline at end of file + - "8444:8443" + container_name: so-simulator
\ No newline at end of file diff --git a/tests/vid/resources/simulators/SDC_simulator b/tests/vid/resources/simulators/SDC_simulator deleted file mode 100644 index c099787d..00000000 --- a/tests/vid/resources/simulators/SDC_simulator +++ /dev/null @@ -1,15 +0,0 @@ -FROM alpine:latest - -RUN apk add --no-cache python3 && \ - python3 -m ensurepip && \ - rm -r /usr/lib/python*/ensurepip && \ - pip3 install --upgrade pip setuptools && \ - if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \ - if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \ - rm -r /root/.cache - -ADD SDC.py / - -EXPOSE 8443 - -CMD [ "python", "./SDC.py" ] diff --git a/tests/vid/resources/simulators/SO-simulator b/tests/vid/resources/simulators/SO-simulator new file mode 100644 index 00000000..54587665 --- /dev/null +++ b/tests/vid/resources/simulators/SO-simulator @@ -0,0 +1,8 @@ +FROM frolvlad/alpine-python3 + +ADD SO.py / +ADD so_post_response.json / + +EXPOSE 8443 + +CMD [ "python", "./SO.py" ]
\ No newline at end of file diff --git a/tests/vid/resources/simulators/SDC.py b/tests/vid/resources/simulators/SO.py index e99a0bdc..edc15f62 100644 --- a/tests/vid/resources/simulators/SDC.py +++ b/tests/vid/resources/simulators/SO.py @@ -1,18 +1,25 @@ -import ssl +import logging from http.server import BaseHTTPRequestHandler, HTTPServer -from sys import argv - DEFAULT_PORT = 8443 -class SDCHandler(BaseHTTPRequestHandler): +class SOHandler(BaseHTTPRequestHandler): def __init__(self, request, client_address, server): self.response_on_get = self._read_on_get_response() super().__init__(request, client_address, server) + def do_POST(self): + logging.info('POST called') + self.send_response(200) + self._set_headers() + + self.wfile.write(self.response_on_get.encode("utf-8")) + return + def do_GET(self): + logging.info('GET called') self.send_response(200) self._set_headers() @@ -25,13 +32,14 @@ class SDCHandler(BaseHTTPRequestHandler): @staticmethod def _read_on_get_response(): - with open('sdc_get_response.json', 'r') as file: + with open('so_post_response.json', 'r') as file: return file.read() if __name__ == '__main__': - SDCHandler.protocol_version = "HTTP/1.1" + logging.basicConfig(filename='output.log', level=logging.INFO) + SOHandler.protocol_version = "HTTP/1.0" - httpd = HTTPServer(('', DEFAULT_PORT), SDCHandler) - httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile='cert.pem', keyfile='key.pem') + httpd = HTTPServer(('', DEFAULT_PORT), SOHandler) + logging.info("serving on: " + str(httpd.socket.getsockname())) httpd.serve_forever() diff --git a/tests/vid/resources/simulators/cert.pem b/tests/vid/resources/simulators/cert.pem deleted file mode 100644 index cea1e37a..00000000 --- a/tests/vid/resources/simulators/cert.pem +++ /dev/null @@ -1,74 +0,0 @@ -Bag Attributes - friendlyName: 1 - localKeyID: 54 69 6D 65 20 31 35 33 35 36 31 39 34 30 35 39 30 38 -subject=/C=US/ST=Michigan/L=Southfield/O=ATT Services, Inc./OU=ASDC/CN=mtanjv9sdcf51.aic.cip.att.com -issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4 ------BEGIN CERTIFICATE----- -MIIGDzCCBPegAwIBAgIQfZLBdhhGhkOBcXuI5oF0gTANBgkqhkiG9w0BAQsFADB+ -MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd -BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVj -IENsYXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MB4XDTE1MTIwOTAwMDAwMFoX -DTE2MTIwODIzNTk1OVowgYkxCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhNaWNoaWdh -bjETMBEGA1UEBwwKU291dGhmaWVsZDEbMBkGA1UECgwSQVRUIFNlcnZpY2VzLCBJ -bmMuMQ0wCwYDVQQLDARBU0RDMSYwJAYDVQQDDB1tdGFuanY5c2RjZjUxLmFpYy5j -aXAuYXR0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOup99Ff -gk02lwXv535Y1FCCE8vL47BKj96h6to8rXwwN+9W+xiVEIgDXKOWBC7W8iEP2tOd -Smzi3wsZIivaFh2yPGtj1z0a7WuA7wNw1fJF4WGr4VFaxHbMBaPOZHa3D+iIduWP -H/t6ECEzfGRRtTt+mVCpV8Rx+v/q8d0yO114u/WBtbGGlIPDJcrHLRODnjM+mkjq -EwfoR9qqqjbJhjUkUujGM/qVKm3YAjMIZ1ldteRXUew4xI/Foo6u3hqJwbYIJf3r -fzWCt+fIyktDsm/c1w9HcX+8R0alK90bjC2D5auukIfbmhxd4MR9NBAH0SFleQtw -SQLN6GYMVexhUEECAwEAAaOCAnswggJ3MCgGA1UdEQQhMB+CHW10YW5qdjlzZGNm -NTEuYWljLmNpcC5hdHQuY29tMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0G -A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBhBgNVHSAEWjBYMFYGBmeBDAEC -AjBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAlBggrBgEF -BQcCAjAZGhdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSMEGDAWgBRfYM9h -kFXfhEMUimAqsvV69EMY7zArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vc3Muc3lt -Y2IuY29tL3NzLmNybDBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6 -Ly9zcy5zeW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zcy5zeW1jYi5jb20v -c3MuY3J0MIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHYA3esdK3oNT6Ygi4GtgWhw -fi6OnQHVXIiNPRHEzbbsvswAAAFRh4XRnAAABAMARzBFAiBXZqph5qeHUUnY8OkH -jJLo454/8c9IBB7asjEYWYoBPQIhAKAwvP8KfqilgawBkuRV7r41P8Xd3Yi72RQO -1Dvpi8rkAHcApLkJkLQYWBSHuxOizGdwCjw1mAT5G9+443fNDsgN3BAAAAFRh4XR -3AAABAMASDBGAiEAon+cZcRpSsuo1aiCtaN3aAG0EqJb/1jJ4m4Q/qo1nEoCIQCr -KrBNyywa4OTmSVSAsyazbnMr5ldimxNORhhtyGeFLDANBgkqhkiG9w0BAQsFAAOC -AQEAG3/Mq8F0wbCpOOMCq4dZwgLENBjor9b9UljQZ+sgt7Nn00bfGdxY4MKtOTiK -9ks/nV9sW0KyvhsZvLPPgdSCnu0MZogWQsKqQDkIkJoHtFRSaYTT1vLAIoKz/dN+ -SBS71EzFH92lMfiFtAjfTrFady0/6z7lp4VZwbXLWjHw6LQESENc29Xw1jpCVkg8 -iB2n/qCFfyw3HuvP+eW2TLmnHOl0tda1vrYKCXT2n7HepiJM3g9yLjb/w3MuxEmw -dj1DqRemXtOUJW0mQXn1mRBjXEunzHoCr3GaeSU6G3RbIzXr34Hsv4IbggkhRula -gQIYidtDmw0PS1kyaFvlhZkd1g== ------END CERTIFICATE----- -Bag Attributes - friendlyName: CN=Symantec Class 3 Secure Server CA - G4,OU=Symantec Trust Network,O=Symantec Corporation,C=US -subject=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4 -issuer=/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 ------BEGIN CERTIFICATE----- -MIIFODCCBCCgAwIBAgIQUT+5dDhwtzRAQY0wkwaZ/zANBgkqhkiG9w0BAQsFADCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW -ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB+MQsw -CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV -BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVjIENs -YXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEAstgFyhx0LbUXVjnFSlIJluhL2AzxaJ+aQihiw6UwU35VEYJb -A3oNL+F5BMm0lncZgQGUWfm893qZJ4Itt4PdWid/sgN6nFMl6UgfRk/InSn4vnlW -9vf92Tpo2otLgjNBEsPIPMzWlnqEIRoiBAMnF4scaGGTDw5RgDMdtLXO637QYqzu -s3sBdO9pNevK1T2p7peYyo2qRA4lmUoVlqTObQJUHypqJuIGOmNIrLRM0XWTUP8T -L9ba4cYY9Z/JJV3zADreJk20KQnNDz0jbxZKgRb78oMQw7jW2FUyPfG9D72MUpVK -Fpd6UiFjdS8W+cRmvvW1Cdj/JwDNRHxvSz+w9wIDAQABo4IBYzCCAV8wEgYDVR0T -AQH/BAgwBgEB/wIBADAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2Iu -Y29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB/wQEAwIBBjAvBggrBgEFBQcBAQQjMCEw -HwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wawYDVR0gBGQwYjBgBgpg -hkgBhvhFAQc2MFIwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20v -Y3BzMCgGCCsGAQUFBwICMBwaGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20vcnBhMCkG -A1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTUzNDAdBgNVHQ4E -FgQUX2DPYZBV34RDFIpgKrL1evRDGO8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnz -Qzn6Aq8zMTMwDQYJKoZIhvcNAQELBQADggEBAF6UVkndji1l9cE2UbYD49qecxny -H1mrWH5sJgUs+oHXXCMXIiw3k/eG7IXmsKP9H+IyqEVv4dn7ua/ScKAyQmW/hP4W -Ko8/xabWo5N9Q+l0IZE1KPRj6S7t9/Vcf0uatSDpCr3gRRAMFJSaXaXjS5HoJJtG -QGX0InLNmfiIEfXzf+YzguaoxX7+0AjiJVgIcWjmzaLmFN5OUiQt/eV5E1PnXi8t -TRttQBVSK/eHiXgSgW7ZTaoteNTCLD0IX4eRnh8OsN4wUmSGiaqdZpwOdgyA8nTY -Kvi4Os7X1g8RvmurFPW9QaAiY4nxug9vKWNmLT+sjHLF+8fk1A/yO0+MKcc= ------END CERTIFICATE-----
\ No newline at end of file diff --git a/tests/vid/resources/simulators/key.pem b/tests/vid/resources/simulators/key.pem deleted file mode 100644 index 641d13fa..00000000 --- a/tests/vid/resources/simulators/key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDrqffRX4JNNpcF -7+d+WNRQghPLy+OwSo/eoeraPK18MDfvVvsYlRCIA1yjlgQu1vIhD9rTnUps4t8L -GSIr2hYdsjxrY9c9Gu1rgO8DcNXyReFhq+FRWsR2zAWjzmR2tw/oiHbljx/7ehAh -M3xkUbU7fplQqVfEcfr/6vHdMjtdeLv1gbWxhpSDwyXKxy0Tg54zPppI6hMH6Efa -qqo2yYY1JFLoxjP6lSpt2AIzCGdZXbXkV1HsOMSPxaKOrt4aicG2CCX96381grfn -yMpLQ7Jv3NcPR3F/vEdGpSvdG4wtg+WrrpCH25ocXeDEfTQQB9EhZXkLcEkCzehm -DFXsYVBBAgMBAAECggEBAOkwoYCzIktnFh+Q2R9DpKsZW59QXDfoP95LmAlk+0Gk -sOSKzCHx9o6vzO4uFmuG08Z1WtIElU2TXKMttotv3Gx8Hp8hBy12xLGYvmlIMNvv -2+n62xTWXQs0LOx+4Rg7Yml1Bzl1227KxMUlnhPiahO53NldB/Th2D197OA0wVtl -o3d753CNs+vVk1Z8RTUWrW1ZNHdfQNa1zrNo3Q5/evnlt+mAhFbUIKB3FgMk4N4/ -EjnTH6d+MEUD1sVCNruxqv8PZzRzzJEU/8gzy0WAPFAGOOC7hgU3n7dIEEkjvoIw -HlZD5c6I+3AzYq08CtUwWI09pNVlznqoOY6d548YusUCgYEA9cHOUXiafXFupqpT -HwE18Yk5sqISpPwS8yip4NPPUv+W9qvCpdkFvV3HRMlICWJGoerRsALEQYY5fsvY -7lk1avunprbIa9XLUrvb4ydJYynFhKjXkfTAmyCmbvH8t10BfDNuXT098+4M4HpG -YW2Arl9Db7RoOBwQtPFX2RmYOM8CgYEA9Xx4TbsbT1C6c49aDZmuFeBXDEaMTDYS -CC50MqMQpfoqS5QVyjl7JzP/dIz9CcUExFz7MOmYCp8yocXnLwxGDrZjZMkwEz15 -8WUGj4WMpSpUSRmGEVnoVE5bRazq37vhbOwh8gcKhF1ifVgwm+Rjs+4g6DwmSR8l -4CVK6lWrCe8CgYEA5QR7kR6z0Wywse4N0dnd/D1mIFq6xzcFLcZaMOMR1IXMmAjO -NqF8oNDQjwCH+f60VdWvHLgnTeyYjdnHSa6mghEMVecF9L/iXzIjopaM5DUcFRkG -8sRD7QxLLR6i4/lvFeAT3B3jKvtO0q4AAnD6NwUdoe5cJNW6l/REalNYsK8CgYBw -n7lF2CiwW9YevE7RXIc8rB7jl943/LqLHFzc+mjh7QLIh9jzXSm+E6IIY8KXX9dP -C2WGzDSf8ue0xmnI8PWXPGAfVhoDSboPYI0A/YFIKUJgAyC6ByiKvSQstCdRnA3Q -/giY1Fgj4AAWh4ZNjxua6g4Y3bem5m5nBlT3a3Q76wKBgQDSMFNfVNWautPQvcYB -iu9oQhbXVkjh+ToFWq6pW4VaWhEf/6hqvihc6PcB7FXJ1v1/ybko6cIgVmFUt43s -it1q5aLy3v6GTS/UnDZI3r5oECEuLeUqnHm3qilbatUtwvxghgdwGK+YG0yTfS3y -GqdNDH5YdJJMyiLdQlLIzJb/XQ== ------END PRIVATE KEY----- diff --git a/tests/vid/resources/simulators/sdc_get_response.json b/tests/vid/resources/simulators/sdc_get_response.json deleted file mode 100644 index 9f7e118c..00000000 --- a/tests/vid/resources/simulators/sdc_get_response.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "service": { - "uuid": "2763bc78-8523-482f-895b-0c0db7364224", - "invariantUuid": "abb2dc66-b211-49d2-ab2f-8774694136fa", - "name": "Bare2", - "version": "1.0", - "toscaModelURL": null, - "category": "Network L1-3", - "serviceType": "", - "serviceRole": "", - "description": "Bare2", - "serviceEcompNaming": "true", - "instantiationType": "ClientConfig", - "inputs": {} - }, - "vnfs": { - "95e654c0-676b-4386-8a69 0": { - "uuid": "d6395498-7ecb-4eba-bf84-4380f6e9cdcf", - "invariantUuid": "16262b97-bcb1-4033-8f9f-a3016eaf1ec3", - "description": "vendor software product", - "name": "95e654c0-676b-4386-8a69", - "version": "1.0", - "customizationUuid": "34a3b91d-8d73-4412-bf4e-c6456741007f", - "inputs": {}, - "commands": {}, - "properties": { - "vf_module_id": "vTrafficPNG", - "repo_url_blob": "https://nexus.onap.org/content/sites/raw", - "unprotected_private_subnet_id": "zdfw1fwl01_unprotected_sub", - "public_net_id": "PUT THE PUBLIC NETWORK ID HERE", - "vfw_private_ip_0": "192.168.10.100", - "onap_private_subnet_id": "PUT THE ONAP PRIVATE NETWORK NAME HERE", - "onap_private_net_cidr": "10.0.0.0/16", - "image_name": "PUT THE VM IMAGE NAME HERE (UBUNTU 1404)", - "flavor_name": "PUT THE VM FLAVOR NAME HERE (m1.medium suggested)", - "vnf_id": "vPNG_Firewall_demo_app", - "vpg_name_0": "zdfw1fwl01pgn01", - "vpg_private_ip_1": "10.0.100.2", - "vsn_private_ip_0": "192.168.20.250", - "vpg_private_ip_0": "192.168.10.200", - "protected_private_net_cidr": "192.168.20.0/24", - "unprotected_private_net_cidr": "192.168.10.0/24", - "nf_naming": "{ecomp_generated_naming=true}", - "multi_stage_design": "false", - "onap_private_net_id": "PUT THE ONAP PRIVATE NETWORK NAME HERE", - "unprotected_private_net_id": "zdfw1fwl01_unprotected", - "availability_zone_max_count": "1", - "demo_artifacts_version": "1.2.1", - "pub_key": "PUT YOUR PUBLIC KEY HERE", - "key_name": "vfw_key", - "repo_url_artifacts": "https://nexus.onap.org/content/repositories/releases", - "install_script_version": "1.2.1", - "cloud_env": "PUT openstack OR rackspace HERE" - }, - "type": "VF", - "modelCustomizationName": "95e654c0-676b-4386-8a69 0", - "vfModules": { - "95e654c0676b43868a690..95e654c0676b43868a69..base_vpkg..module-0": { - "uuid": "12082e9d-a854-48cc-8243-e24b26199856", - "invariantUuid": "239419df-3375-49fe-9dd4-73b3393858ba", - "customizationUuid": "32c824f7-5910-4d7a-88ad-188d4905675d", - "description": null, - "name": "95e654c0676b43868a69..base_vpkg..module-0", - "version": "1", - "volumeGroupAllowed": false, - "commands": {}, - "modelCustomizationName": "95e654c0676b43868a69..base_vpkg..module-0", - "properties": { - "min_vf_module_instances": { - "name": "min_vf_module_instances", - "value": 1, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "The minimum instances of this VF-Module", - "default": null, - "type": "integer" - }, - "vf_module_label": { - "name": "vf_module_label", - "value": "base_vpkg", - "entrySchema": null, - "required": true, - "constraints": [], - "description": "Alternate textual key used to reference this VF-Module model. Must be unique within the VNF model\n", - "default": null, - "type": "string" - }, - "max_vf_module_instances": { - "name": "max_vf_module_instances", - "value": 1, - "entrySchema": null, - "required": false, - "constraints": [], - "description": "The maximum instances of this VF-Module", - "default": null, - "type": "integer" - }, - "vfc_list": { - "name": "vfc_list", - "value": null, - "entrySchema": { - "description": "<vfc_id>:<count>", - "type": "string" - }, - "required": false, - "constraints": [], - "description": "Identifies the set of VM types and their count included in the VF-Module\n", - "default": null, - "type": "map" - }, - "vf_module_type": { - "name": "vf_module_type", - "value": "Base", - "entrySchema": null, - "required": true, - "constraints": [], - "description": "", - "default": null, - "type": "string" - }, - "vf_module_description": { - "name": "vf_module_description", - "value": null, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "Description of the VF-modules contents and purpose (e.g. \"Front-End\" or \"Database Cluster\")\n", - "default": null, - "type": "string" - }, - "initial_count": { - "name": "initial_count", - "value": 1, - "entrySchema": null, - "required": false, - "constraints": [], - "description": "The initial count of instances of the VF-Module. The value must be in the range between min_vfmodule_instances and max_vfmodule_instances. If no value provided the initial count is the min_vfmodule_instances.\n", - "default": null, - "type": "integer" - }, - "volume_group": { - "name": "volume_group", - "value": false, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "\"true\" indicates that this VF Module model requires attachment to a Volume Group. VID operator must select the Volume Group instance to attach to a VF-Module at deployment time.\n", - "default": false, - "type": "boolean" - }, - "availability_zone_count": { - "name": "availability_zone_count", - "value": null, - "entrySchema": null, - "required": false, - "constraints": [], - "description": "Quantity of Availability Zones needed for this VF-Module (source: Extracted from VF-Module HEAT template)\n", - "default": null, - "type": "integer" - }, - "isBase": { - "name": "isBase", - "value": false, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "Whether this module should be deployed before other modules", - "default": false, - "type": "boolean" - } - } - } - }, - "volumeGroups": {} - } - }, - "networks": {}, - "configurations": {}, - "serviceProxies": {}, - "vfModules": { - "95e654c0676b43868a690..95e654c0676b43868a69..base_vpkg..module-0": { - "uuid": "12082e9d-a854-48cc-8243-e24b26199856", - "invariantUuid": "239419df-3375-49fe-9dd4-73b3393858ba", - "customizationUuid": "32c824f7-5910-4d7a-88ad-188d4905675d", - "description": null, - "name": "95e654c0676b43868a69..base_vpkg..module-0", - "version": "1", - "volumeGroupAllowed": false, - "commands": {}, - "modelCustomizationName": "95e654c0676b43868a69..base_vpkg..module-0", - "properties": { - "min_vf_module_instances": { - "name": "min_vf_module_instances", - "value": 1, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "The minimum instances of this VF-Module", - "default": null, - "type": "integer" - }, - "vf_module_label": { - "name": "vf_module_label", - "value": "base_vpkg", - "entrySchema": null, - "required": true, - "constraints": [], - "description": "Alternate textual key used to reference this VF-Module model. Must be unique within the VNF model\n", - "default": null, - "type": "string" - }, - "max_vf_module_instances": { - "name": "max_vf_module_instances", - "value": 1, - "entrySchema": null, - "required": false, - "constraints": [], - "description": "The maximum instances of this VF-Module", - "default": null, - "type": "integer" - }, - "vfc_list": { - "name": "vfc_list", - "value": null, - "entrySchema": { - "description": "<vfc_id>:<count>", - "type": "string" - }, - "required": false, - "constraints": [], - "description": "Identifies the set of VM types and their count included in the VF-Module\n", - "default": null, - "type": "map" - }, - "vf_module_type": { - "name": "vf_module_type", - "value": "Base", - "entrySchema": null, - "required": true, - "constraints": [], - "description": "", - "default": null, - "type": "string" - }, - "vf_module_description": { - "name": "vf_module_description", - "value": null, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "Description of the VF-modules contents and purpose (e.g. \"Front-End\" or \"Database Cluster\")\n", - "default": null, - "type": "string" - }, - "initial_count": { - "name": "initial_count", - "value": 1, - "entrySchema": null, - "required": false, - "constraints": [], - "description": "The initial count of instances of the VF-Module. The value must be in the range between min_vfmodule_instances and max_vfmodule_instances. If no value provided the initial count is the min_vfmodule_instances.\n", - "default": null, - "type": "integer" - }, - "volume_group": { - "name": "volume_group", - "value": false, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "\"true\" indicates that this VF Module model requires attachment to a Volume Group. VID operator must select the Volume Group instance to attach to a VF-Module at deployment time.\n", - "default": false, - "type": "boolean" - }, - "availability_zone_count": { - "name": "availability_zone_count", - "value": null, - "entrySchema": null, - "required": false, - "constraints": [], - "description": "Quantity of Availability Zones needed for this VF-Module (source: Extracted from VF-Module HEAT template)\n", - "default": null, - "type": "integer" - }, - "isBase": { - "name": "isBase", - "value": false, - "entrySchema": null, - "required": true, - "constraints": [], - "description": "Whether this module should be deployed before other modules", - "default": false, - "type": "boolean" - } - } - } - }, - "volumeGroups": {}, - "pnfs": {} -}
\ No newline at end of file diff --git a/tests/vid/resources/simulators/so_post_response.json b/tests/vid/resources/simulators/so_post_response.json new file mode 100644 index 00000000..391231dc --- /dev/null +++ b/tests/vid/resources/simulators/so_post_response.json @@ -0,0 +1,9 @@ +{ + "status": 202, + "entity": { + "requestReferences": { + "instanceId": "fffcbb6c-1983-42df-9ca8-89ae8b3a46c1", + "requestId": "b2197d7e-3a7d-410e-82ba-7b7e8191bc46" + } + } +}
\ No newline at end of file |