From 4b97e33295086748108ecb042461719fb09600ba Mon Sep 17 00:00:00 2001 From: rajendrajaiswal Date: Thu, 27 Sep 2018 16:21:19 +0100 Subject: Renaming 5G Bulk PM to usecase/5G-bulkpm Issue-ID: INT-649 Change-Id: I4921756a70952ce42e36af023d1131227fc29ecc Signed-off-by: Rajendra Jaiswal --- .../bulkpm-suite/assets/addSubscriber.json | 18 --- .../bulkpm-suite/assets/createFeed.json | 18 --- .../bulkpm-suite/assets/datafile_endpoints.json | 28 ---- .../dcae-bulkpm/bulkpm-suite/assets/xNF.pm.xml.gz | Bin 63 -> 0 bytes .../composefile/docker-compose-e2e.yml | 81 ------------ test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh | 141 --------------------- .../plans/dcae-bulkpm/bulkpm-suite/teardown.sh | 12 -- .../plans/dcae-bulkpm/bulkpm-suite/testplan.txt | 3 - .../usecases/5G-bulkpm/assets/addSubscriber.json | 18 +++ .../usecases/5G-bulkpm/assets/createFeed.json | 18 +++ .../5G-bulkpm/assets/datafile_endpoints.json | 28 ++++ .../plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz | Bin 0 -> 63 bytes .../5G-bulkpm/composefile/docker-compose-e2e.yml | 81 ++++++++++++ test/csit/plans/usecases/5G-bulkpm/setup.sh | 141 +++++++++++++++++++++ test/csit/plans/usecases/5G-bulkpm/teardown.sh | 12 ++ test/csit/plans/usecases/5G-bulkpm/testplan.txt | 3 + .../tests/dcae-bulkpm/testcases/BulkpmE2E.robot | 69 ---------- .../tests/dcae-bulkpm/testcases/__init__.robot | 2 - .../assets/json_events/FileExistNotification.json | 33 ----- .../dcae-bulkpm/testcases/resources/VesLibrary.py | 25 ---- .../testcases/resources/ves_keywords.robot | 39 ------ test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot | 69 ++++++++++ test/csit/tests/usecases/5G-bulkpm/__init__.robot | 2 + .../assets/json_events/FileExistNotification.json | 33 +++++ .../5G-bulkpm/resources/bulkpm_keywords.robot | 38 ++++++ .../usecases/5G-bulkpm/resources/xNFLibrary.py | 25 ++++ 26 files changed, 468 insertions(+), 469 deletions(-) delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/addSubscriber.json delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/createFeed.json delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/datafile_endpoints.json delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/xNF.pm.xml.gz delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/teardown.sh delete mode 100644 test/csit/plans/dcae-bulkpm/bulkpm-suite/testplan.txt create mode 100644 test/csit/plans/usecases/5G-bulkpm/assets/addSubscriber.json create mode 100644 test/csit/plans/usecases/5G-bulkpm/assets/createFeed.json create mode 100644 test/csit/plans/usecases/5G-bulkpm/assets/datafile_endpoints.json create mode 100644 test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz create mode 100644 test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml create mode 100644 test/csit/plans/usecases/5G-bulkpm/setup.sh create mode 100644 test/csit/plans/usecases/5G-bulkpm/teardown.sh create mode 100644 test/csit/plans/usecases/5G-bulkpm/testplan.txt delete mode 100644 test/csit/tests/dcae-bulkpm/testcases/BulkpmE2E.robot delete mode 100644 test/csit/tests/dcae-bulkpm/testcases/__init__.robot delete mode 100644 test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json delete mode 100644 test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py delete mode 100644 test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot create mode 100644 test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot create mode 100644 test/csit/tests/usecases/5G-bulkpm/__init__.robot create mode 100644 test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json create mode 100644 test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot create mode 100644 test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py (limited to 'test') diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/addSubscriber.json b/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/addSubscriber.json deleted file mode 100644 index 612c4626a..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/addSubscriber.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "delivery":{ - "url":"http://fileconsumer:7070", - "user":"LOGIN", - "password":"PASSWORD", - "use100":true - }, - "follow_redirect":false, - "metadataOnly":false, - "suspend":false, - "groupid":0, - "links":{ - "self": "https://dmaap-dr-prov/subscribe/1", - "log": "https://dmaap-dr-prov/feedlog/1", - "feed": "https://dmaap-dr-prov/feed/1" - }, - "subscriber":"admin" - } \ No newline at end of file diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/createFeed.json b/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/createFeed.json deleted file mode 100644 index fdcc7eef6..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/createFeed.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "DefaultFeed", - "version": "m1.0", - "description": "Default feed", - "business_description": "Default Feed", - "suspend": false, - "deleted": false, - "changeowner": true, - "authorization": { - "classification": "unclassified", - "endpoint_addrs": [], - "endpoint_ids": [ - { - "password": "dradmin", - "id": "dradmin" - }] - } - } \ No newline at end of file diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/datafile_endpoints.json b/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/datafile_endpoints.json deleted file mode 100644 index 17c7078e9..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/datafile_endpoints.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "configs": { - "dmaap": { - "dmaapConsumerConfiguration": { - "dmaapHostName": "dmaapmrhost", - "dmaapPortNumber": 3904, - "dmaapTopicName": "/events/unauthenticated.VES_NOTIFICATION_OUTPUT", - "dmaapProtocol": "http", - "dmaapUserName": "admin", - "dmaapUserPassword": "admin", - "dmaapContentType": "application/json", - "consumerId": "C12", - "consumerGroup": "OpenDcae-c12", - "timeoutMS": -1, - "messageLimit": 1 - }, - "dmaapProducerConfiguration": { - "dmaapHostName": "dmaapdrhost", - "dmaapPortNumber": 8443, - "dmaapTopicName": "publish", - "dmaapProtocol": "https", - "dmaapUserName": "dradmin", - "dmaapUserPassword": "dradmin", - "dmaapContentType": "application/octet-stream" - } - } - } -} \ No newline at end of file diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/xNF.pm.xml.gz b/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/xNF.pm.xml.gz deleted file mode 100644 index 2f527c275..000000000 Binary files a/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/xNF.pm.xml.gz and /dev/null differ diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml b/test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml deleted file mode 100644 index 16db4afad..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml +++ /dev/null @@ -1,81 +0,0 @@ -version: '2.1' -services: - datarouter-prov: - image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov - container_name: datarouter-prov - hostname: dmaap-dr-prov - ports: - - "443:8443" - - "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 - depends_on: - mariadb_container: - condition: service_healthy - healthcheck: - test: ["CMD", "curl", "-f", "http://dmaap-dr-prov:8080/internal/prov"] - interval: 10s - timeout: 10s - retries: 5 - - datarouter-node: - image: nexus3.onap.org:10001/onap/dmaap/datarouter-node - container_name: datarouter-node - hostname: dmaap-dr-node - ports: - - "9443:8443" - - "9090:8080" - volumes: - - ./node_data/node.properties:/opt/app/datartr/etc/node.properties - depends_on: - datarouter-prov: - condition: service_healthy - - datarouter-subscriber: - image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber - container_name: fileconsumer-node - hostname: subscriber.com - ports: - - "7070:7070" - volumes: - - ./subscriber_data/subscriber.properties:/opt/app/subscriber/etc/subscriber.properties - - mariadb_container: - image: mariadb:10.2.14 - container_name: mariadb - ports: - - "3306:3306" - environment: - MYSQL_ROOT_PASSWORD: datarouter - MYSQL_DATABASE: datarouter - MYSQL_USER: datarouter - MYSQL_PASSWORD: datarouter - healthcheck: - test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "--silent"] - interval: 10s - timeout: 30s - retries: 5 - - sftp: - container_name: sftp - image: atmoz/sftp - ports: - - "2222:22" - volumes: - - /host/upload:/home/admin - command: admin:admin:1001 - - dfc: - container_name: dfc - image: quay.io/martin_yan_seu/datafile - ports: - - "8433:8433" - - ves: - container_name: vescollector - image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.1 - environment: - DMAAPHOST: \ No newline at end of file diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh b/test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh deleted file mode 100644 index b0ea68195..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash -# Place the scripts in run order: -source ${SCRIPTS}/common_functions.sh - -# Clone DMaaP Message Router repo -mkdir -p $WORKSPACE/archives/dmaapmr -cd $WORKSPACE/archives/dmaapmr -git clone --depth 1 http://gerrit.onap.org/r/dmaap/messagerouter/messageservice -b master -git pull -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 - -ZOOKEEPER=$(docker ps -a -q --filter="name=zookeeper_1") -KAFKA=$(docker ps -a -q --filter="name=kafka_1") -DMAAP=$(docker ps -a -q --filter="name=dmaap_1") - -# Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper -for i in {1..50}; do -if [ $(docker inspect --format '{{ .State.Running }}' $KAFKA) ] && \ -[ $(docker inspect --format '{{ .State.Running }}' $ZOOKEEPER) ] && \ -[ $(docker inspect --format '{{ .State.Running }}' $DMAAP) ] -then - echo "DMaaP Service Running" - break -else - echo sleep $i - sleep $i -fi -done - -# Get IP address of DMAAP, KAFKA, Zookeeper -KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $KAFKA) -ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ZOOKEEPER) -DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $DMAAP) - -sleep 2 -# Shutdown DMAAP Container -docker kill $DMAAP - -# Initial docker-compose up and down is for populating kafka and zookeeper IPs in /var/tmp/MsgRtrApi.properites -sed -i -e '/config.zk.servers=/ s/=.*/='$ZOOKEEPER_IP'/' /var/tmp/MsgRtrApi.properties -sed -i -e '/kafka.metadata.broker.list=/ s/=.*/='$KAFKA_IP':9092/' /var/tmp/MsgRtrApi.properties - -# 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 -sleep 5 - -# Clone DMaaP Data Router repo -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/test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/docker-compose.yml -docker login -u docker -p docker nexus3.onap.org:10001 -docker-compose up -d -docker kill datarouter-prov -docker kill datarouter-node -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/172.100.0.2/'$MARIADB'/g' $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/prov_data/provserver.properties -docker-compose up -d - -# Wait for initialization of Docker container for datarouter-node, datarouter-prov and mariadb -for i in {1..50}; do - if [ $(docker inspect --format '{{ .State.Running }}' datarouter-node) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' datarouter-prov) ] && \ - [ $(docker inspect --format '{{ .State.Running }}' mariadb) ] - then - echo "DR Service Running" - break - else - echo sleep $i - sleep $i - fi -done - -sleep 5 - -# Get IP address of datarrouger-prov, datarouter-node, fileconsumer-node. -DR_PROV_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' datarouter-prov) -DR_NODE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' datarouter-node) -DR_SUBSCIBER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' fileconsumer-node) -DR_GATEWAY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' datarouter-prov) - -echo DR_PROV_IP=${DR_PROV_IP} -echo DR_NODE_IP=${DR_NODE_IP} -echo DR_GATEWAY_IP=${DR_GATEWAY_IP} -echo DR_SUBSCIBER_IP=${DR_SUBSCIBER_IP} - -docker exec -i datarouter-prov sh -c "curl -k -X PUT https://$DR_PROV_IP:8443/internal/api/NODES?val=dmaap-dr-node\|$DR_GATEWAY_IP" -docker exec -i datarouter-prov sh -c "curl -k -X PUT https://$DR_PROV_IP:8443/internal/api/PROV_AUTH_ADDRESSES?val=dmaap-dr-prov\|$DR_GATEWAY_IP" -docker exec datarouter-prov /bin/sh -c "echo '${DR_NODE_IP}' dmaap-dr-node >> /etc/hosts" -docker exec datarouter-node /bin/sh -c "echo '${DR_PROV_IP}' dmaap-dr-prov >> /etc/hosts" -docker exec datarouter-node /bin/sh -c "echo '${DR_SUBSCIBER_IP}' dmaap-dr-subscriber >> /etc/hosts" - -# Get IP address of DMAAP, KAFKA, Zookeeper -DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $DMAAP) -KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $KAFKA) -ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ZOOKEEPER) -VESC_IP=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' vescollector) -SFTP_IP=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sftp) - -export VESC_IP=${VESC_IP} -export HOST_IP=${HOST_IP} -export DMAAP_MR_IP=${DMAAP_MR_IP} - -#Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DR_NODE_IP:${DR_NODE_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v VESC_IP:${VESC_IP} -v DR_SUBSCIBER_IP:${DR_SUBSCIBER_IP}" - -pip install jsonschema uuid -# Wait container ready -sleep 2 - -# Data File Collector configuration : -cp $WORKSPACE/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/datafile_endpoints.json /tmp/ -sed -i 's/dmaapmrhost/'${DMAAP_MR_IP}'/g' /tmp/datafile_endpoints.json -sed -i 's/dmaapdrhost/'${DR_PROV_IP}'/g' /tmp/datafile_endpoints.json -docker cp /tmp/datafile_endpoints.json dfc:/config/ -docker restart dfc - -# SFTP Configuration: -# Update the File Ready Notification with actual sftp ip address and copy pm files to sftp server. -cp $WORKSPACE/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json $WORKSPACE/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotificationUpdated.json -sed -i 's/sftpserver/'${SFTP_IP}'/g' $WORKSPACE/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotificationUpdated.json -docker cp $WORKSPACE/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/xNF.pm.xml.gz sftp:/home/admin/ - -# Data Router Configuration: -# Create default feed and create file consumer subscriber on data router -curl -v -X POST -H "Content-Type:application/vnd.att-dr.feed" -H "X-ATT-DR-ON-BEHALF-OF:dradmin" --data-ascii @$WORKSPACE/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/createFeed.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443 -cp $WORKSPACE/test/csit/plans/dcae-bulkpm/bulkpm-suite/assets/addSubscriber.json /tmp/addSubscriber.json -sed -i 's/fileconsumer/'${DR_SUBSCIBER_IP}'/g' /tmp/addSubscriber.json -curl -v -X POST -H "Content-Type:application/vnd.att-dr.subscription" -H "X-ATT-DR-ON-BEHALF-OF:dradmin" --data-ascii @/tmp/addSubscriber.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443/subscribe/1 \ No newline at end of file diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/teardown.sh b/test/csit/plans/dcae-bulkpm/bulkpm-suite/teardown.sh deleted file mode 100644 index c55f43989..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/teardown.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -echo "Starting teardown script" -kill-instance.sh $DMAAP -kill-instance.sh $KAFKA -kill-instance.sh $ZOOKEEPER -kill-instance.sh vescollector -kill-instance.sh datarouter-node -kill-instance.sh datarouter-prov -kill-instance.sh fileconsumer-node -kill-instance.sh mariadb -kill-instance.sh dfc -kill-instance.sh sftp \ No newline at end of file diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/testplan.txt b/test/csit/plans/dcae-bulkpm/bulkpm-suite/testplan.txt deleted file mode 100644 index 25a5d6e8b..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/testplan.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Test suites are relative paths under [integration.git]/test/csit/tests/. -# Place the suites in run order. -dcae-bulkpm/testcases diff --git a/test/csit/plans/usecases/5G-bulkpm/assets/addSubscriber.json b/test/csit/plans/usecases/5G-bulkpm/assets/addSubscriber.json new file mode 100644 index 000000000..612c4626a --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/assets/addSubscriber.json @@ -0,0 +1,18 @@ +{ + "delivery":{ + "url":"http://fileconsumer:7070", + "user":"LOGIN", + "password":"PASSWORD", + "use100":true + }, + "follow_redirect":false, + "metadataOnly":false, + "suspend":false, + "groupid":0, + "links":{ + "self": "https://dmaap-dr-prov/subscribe/1", + "log": "https://dmaap-dr-prov/feedlog/1", + "feed": "https://dmaap-dr-prov/feed/1" + }, + "subscriber":"admin" + } \ No newline at end of file diff --git a/test/csit/plans/usecases/5G-bulkpm/assets/createFeed.json b/test/csit/plans/usecases/5G-bulkpm/assets/createFeed.json new file mode 100644 index 000000000..fdcc7eef6 --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/assets/createFeed.json @@ -0,0 +1,18 @@ +{ + "name": "DefaultFeed", + "version": "m1.0", + "description": "Default feed", + "business_description": "Default Feed", + "suspend": false, + "deleted": false, + "changeowner": true, + "authorization": { + "classification": "unclassified", + "endpoint_addrs": [], + "endpoint_ids": [ + { + "password": "dradmin", + "id": "dradmin" + }] + } + } \ No newline at end of file diff --git a/test/csit/plans/usecases/5G-bulkpm/assets/datafile_endpoints.json b/test/csit/plans/usecases/5G-bulkpm/assets/datafile_endpoints.json new file mode 100644 index 000000000..17c7078e9 --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/assets/datafile_endpoints.json @@ -0,0 +1,28 @@ +{ + "configs": { + "dmaap": { + "dmaapConsumerConfiguration": { + "dmaapHostName": "dmaapmrhost", + "dmaapPortNumber": 3904, + "dmaapTopicName": "/events/unauthenticated.VES_NOTIFICATION_OUTPUT", + "dmaapProtocol": "http", + "dmaapUserName": "admin", + "dmaapUserPassword": "admin", + "dmaapContentType": "application/json", + "consumerId": "C12", + "consumerGroup": "OpenDcae-c12", + "timeoutMS": -1, + "messageLimit": 1 + }, + "dmaapProducerConfiguration": { + "dmaapHostName": "dmaapdrhost", + "dmaapPortNumber": 8443, + "dmaapTopicName": "publish", + "dmaapProtocol": "https", + "dmaapUserName": "dradmin", + "dmaapUserPassword": "dradmin", + "dmaapContentType": "application/octet-stream" + } + } + } +} \ No newline at end of file diff --git a/test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz b/test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz new file mode 100644 index 000000000..2f527c275 Binary files /dev/null and b/test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz differ diff --git a/test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml b/test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml new file mode 100644 index 000000000..16db4afad --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml @@ -0,0 +1,81 @@ +version: '2.1' +services: + datarouter-prov: + image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov + container_name: datarouter-prov + hostname: dmaap-dr-prov + ports: + - "443:8443" + - "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 + depends_on: + mariadb_container: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-f", "http://dmaap-dr-prov:8080/internal/prov"] + interval: 10s + timeout: 10s + retries: 5 + + datarouter-node: + image: nexus3.onap.org:10001/onap/dmaap/datarouter-node + container_name: datarouter-node + hostname: dmaap-dr-node + ports: + - "9443:8443" + - "9090:8080" + volumes: + - ./node_data/node.properties:/opt/app/datartr/etc/node.properties + depends_on: + datarouter-prov: + condition: service_healthy + + datarouter-subscriber: + image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber + container_name: fileconsumer-node + hostname: subscriber.com + ports: + - "7070:7070" + volumes: + - ./subscriber_data/subscriber.properties:/opt/app/subscriber/etc/subscriber.properties + + mariadb_container: + image: mariadb:10.2.14 + container_name: mariadb + ports: + - "3306:3306" + environment: + MYSQL_ROOT_PASSWORD: datarouter + MYSQL_DATABASE: datarouter + MYSQL_USER: datarouter + MYSQL_PASSWORD: datarouter + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "--silent"] + interval: 10s + timeout: 30s + retries: 5 + + sftp: + container_name: sftp + image: atmoz/sftp + ports: + - "2222:22" + volumes: + - /host/upload:/home/admin + command: admin:admin:1001 + + dfc: + container_name: dfc + image: quay.io/martin_yan_seu/datafile + ports: + - "8433:8433" + + ves: + container_name: vescollector + image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.1 + environment: + DMAAPHOST: \ No newline at end of file diff --git a/test/csit/plans/usecases/5G-bulkpm/setup.sh b/test/csit/plans/usecases/5G-bulkpm/setup.sh new file mode 100644 index 000000000..f27bfba51 --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/setup.sh @@ -0,0 +1,141 @@ +#!/bin/bash +# Place the scripts in run order: +source ${SCRIPTS}/common_functions.sh + +# Clone DMaaP Message Router repo +mkdir -p $WORKSPACE/archives/dmaapmr +cd $WORKSPACE/archives/dmaapmr +git clone --depth 1 http://gerrit.onap.org/r/dmaap/messagerouter/messageservice -b master +git pull +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 + +ZOOKEEPER=$(docker ps -a -q --filter="name=zookeeper_1") +KAFKA=$(docker ps -a -q --filter="name=kafka_1") +DMAAP=$(docker ps -a -q --filter="name=dmaap_1") + +# Wait for initialization of Docker contaienr for DMaaP MR, Kafka and Zookeeper +for i in {1..50}; do +if [ $(docker inspect --format '{{ .State.Running }}' $KAFKA) ] && \ +[ $(docker inspect --format '{{ .State.Running }}' $ZOOKEEPER) ] && \ +[ $(docker inspect --format '{{ .State.Running }}' $DMAAP) ] +then + echo "DMaaP Service Running" + break +else + echo sleep $i + sleep $i +fi +done + +# Get IP address of DMAAP, KAFKA, Zookeeper +KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $KAFKA) +ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ZOOKEEPER) +DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $DMAAP) + +sleep 2 +# Shutdown DMAAP Container +docker kill $DMAAP + +# Initial docker-compose up and down is for populating kafka and zookeeper IPs in /var/tmp/MsgRtrApi.properites +sed -i -e '/config.zk.servers=/ s/=.*/='$ZOOKEEPER_IP'/' /var/tmp/MsgRtrApi.properties +sed -i -e '/kafka.metadata.broker.list=/ s/=.*/='$KAFKA_IP':9092/' /var/tmp/MsgRtrApi.properties + +# 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 +sleep 5 + +# Clone DMaaP Data Router repo +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/test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/docker-compose.yml +docker login -u docker -p docker nexus3.onap.org:10001 +docker-compose up -d +docker kill datarouter-prov +docker kill datarouter-node +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/172.100.0.2/'$MARIADB'/g' $WORKSPACE/archives/dmaapdr/datarouter/docker-compose/prov_data/provserver.properties +docker-compose up -d + +# Wait for initialization of Docker container for datarouter-node, datarouter-prov and mariadb +for i in {1..50}; do + if [ $(docker inspect --format '{{ .State.Running }}' datarouter-node) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' datarouter-prov) ] && \ + [ $(docker inspect --format '{{ .State.Running }}' mariadb) ] + then + echo "DR Service Running" + break + else + echo sleep $i + sleep $i + fi +done + +sleep 5 + +# Get IP address of datarrouger-prov, datarouter-node, fileconsumer-node. +DR_PROV_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' datarouter-prov) +DR_NODE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' datarouter-node) +DR_SUBSCIBER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' fileconsumer-node) +DR_GATEWAY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' datarouter-prov) + +echo DR_PROV_IP=${DR_PROV_IP} +echo DR_NODE_IP=${DR_NODE_IP} +echo DR_GATEWAY_IP=${DR_GATEWAY_IP} +echo DR_SUBSCIBER_IP=${DR_SUBSCIBER_IP} + +docker exec -i datarouter-prov sh -c "curl -k -X PUT https://$DR_PROV_IP:8443/internal/api/NODES?val=dmaap-dr-node\|$DR_GATEWAY_IP" +docker exec -i datarouter-prov sh -c "curl -k -X PUT https://$DR_PROV_IP:8443/internal/api/PROV_AUTH_ADDRESSES?val=dmaap-dr-prov\|$DR_GATEWAY_IP" +docker exec datarouter-prov /bin/sh -c "echo '${DR_NODE_IP}' dmaap-dr-node >> /etc/hosts" +docker exec datarouter-node /bin/sh -c "echo '${DR_PROV_IP}' dmaap-dr-prov >> /etc/hosts" +docker exec datarouter-node /bin/sh -c "echo '${DR_SUBSCIBER_IP}' dmaap-dr-subscriber >> /etc/hosts" + +# Get IP address of DMAAP, KAFKA, Zookeeper +DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $DMAAP) +KAFKA_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $KAFKA) +ZOOKEEPER_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ZOOKEEPER) +VESC_IP=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' vescollector) +SFTP_IP=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sftp) + +export VESC_IP=${VESC_IP} +export HOST_IP=${HOST_IP} +export DMAAP_MR_IP=${DMAAP_MR_IP} + +#Pass any variables required by Robot test suites in ROBOT_VARIABLES +ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DR_NODE_IP:${DR_NODE_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v VESC_IP:${VESC_IP} -v DR_SUBSCIBER_IP:${DR_SUBSCIBER_IP}" + +pip install jsonschema uuid +# Wait container ready +sleep 2 + +# Data File Collector configuration : +cp $WORKSPACE/test/csit/plans/usecases/5G-bulkpm/assets/datafile_endpoints.json /tmp/ +sed -i 's/dmaapmrhost/'${DMAAP_MR_IP}'/g' /tmp/datafile_endpoints.json +sed -i 's/dmaapdrhost/'${DR_PROV_IP}'/g' /tmp/datafile_endpoints.json +docker cp /tmp/datafile_endpoints.json dfc:/config/ +docker restart dfc + +# SFTP Configuration: +# Update the File Ready Notification with actual sftp ip address and copy pm files to sftp server. +cp $WORKSPACE/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json $WORKSPACE/test/csit/tests/usecases/5G-bulkpm-bulkpm/testcases/assets/json_events/FileExistNotificationUpdated.json +sed -i 's/sftpserver/'${SFTP_IP}'/g' $WORKSPACE/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotificationUpdated.json +docker cp $WORKSPACE/test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz sftp:/home/admin/ + +# Data Router Configuration: +# Create default feed and create file consumer subscriber on data router +curl -v -X POST -H "Content-Type:application/vnd.att-dr.feed" -H "X-ATT-DR-ON-BEHALF-OF:dradmin" --data-ascii @$WORKSPACE/test/csit/plans/usecases/5G-bulkpm/assets/createFeed.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443 +cp $WORKSPACE/test/csit/plans/usecases/5G-bulkpm/assets/addSubscriber.json /tmp/addSubscriber.json +sed -i 's/fileconsumer/'${DR_SUBSCIBER_IP}'/g' /tmp/addSubscriber.json +curl -v -X POST -H "Content-Type:application/vnd.att-dr.subscription" -H "X-ATT-DR-ON-BEHALF-OF:dradmin" --data-ascii @/tmp/addSubscriber.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443/subscribe/1ii @/tmp/addSubscriber.json --post301 --location-trusted -k https://${DR_PROV_IP}:8443/subscribe/1 \ No newline at end of file diff --git a/test/csit/plans/usecases/5G-bulkpm/teardown.sh b/test/csit/plans/usecases/5G-bulkpm/teardown.sh new file mode 100644 index 000000000..c55f43989 --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/teardown.sh @@ -0,0 +1,12 @@ +#!/bin/bash +echo "Starting teardown script" +kill-instance.sh $DMAAP +kill-instance.sh $KAFKA +kill-instance.sh $ZOOKEEPER +kill-instance.sh vescollector +kill-instance.sh datarouter-node +kill-instance.sh datarouter-prov +kill-instance.sh fileconsumer-node +kill-instance.sh mariadb +kill-instance.sh dfc +kill-instance.sh sftp \ No newline at end of file diff --git a/test/csit/plans/usecases/5G-bulkpm/testplan.txt b/test/csit/plans/usecases/5G-bulkpm/testplan.txt new file mode 100644 index 000000000..c4e1c4271 --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/testplan.txt @@ -0,0 +1,3 @@ +# Test suites are relative paths under [integration.git]/test/csit/tests/. +# Place the suites in run order. +usecases/5G-bulkpm diff --git a/test/csit/tests/dcae-bulkpm/testcases/BulkpmE2E.robot b/test/csit/tests/dcae-bulkpm/testcases/BulkpmE2E.robot deleted file mode 100644 index aa391ad8c..000000000 --- a/test/csit/tests/dcae-bulkpm/testcases/BulkpmE2E.robot +++ /dev/null @@ -1,69 +0,0 @@ -*** Settings *** -Documentation Testing E2E VES,Dmaap,DFC,DR with File Ready event feed from xNF -Library RequestsLibrary -Library OperatingSystem -Library Collections -Library Process -Resource resources/ves_keywords.robot - - -*** Variables *** -${VESC_URL} http://%{VESC_IP}:8080 -${GLOBAL_APPLICATION_ID} robot-ves -${VES_ANY_EVENT_PATH} /eventListener/v7 -${HEADER_STRING} content-type=application/json -${EVENT_DATA_FILE} %{WORKSPACE}/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotificationUpdated.json - -${TARGETURL_TOPICS} http://${DMAAP_MR_IP}:3904/topics -${TARGETURL_SUBSCR} http://${DMAAP_MR_IP}:3904/events/unauthenticated.VES_NOTIFICATION_OUTPUT/OpenDcae-c12/C12?timeout=1000 -${CLI_EXEC_CLI} curl -k https://${DR_PROV_IP}:8443/internal/prov -${CLI_EXEC_CLI_DFC} docker exec dfc /bin/sh -c "ls /target | grep .gz" - -*** Test Cases *** - -Send VES File Ready Event to VES Collector - [Tags] Bulk_PM_E2E_01 - [Documentation] Send VES File Ready Event - ${evtdata}= Get Event Data From File ${EVENT_DATA_FILE} - ${headers}= Create Header From String ${HEADER_STRING} - ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} - Sleep 2s - ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} - Sleep 2s - ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} - Sleep 2s - ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} - Log Receive HTTP Status code ${resp.status_code} - Should Be Equal As Strings ${resp.status_code} 202 - -Check VES Notification Topic is existing in Message Router - [Tags] Bulk_PM_E2E_02 - [Documentation] Get the VES Notification topic on message router - [Timeout] 1 minute - Sleep 10s - ${resp}= GetCall ${TARGETURL_TOPICS} - log ${TARGETURL_TOPICS} - log 'JSON Response Code :'${resp} - ${topics}= Evaluate $resp.json().get('topics') - log ${topics} - ${ListLength}= Get Length ${topics} - log ${ListLength} - List Should Contain Value ${topics} unauthenticated.VES_NOTIFICATION_OUTPUT - -Verify Downloaded PM file from xNF exist on Data File Collector - [Tags] Bulk_PM_E2E_03 - [Documentation] Check the PM XML file exists on the File Consumer Simulator - ${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_DFC} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - Should Contain ${cli_cmd_output.stdout} xNF.pm.xml.gz - - -Verify Default Feed And File Consumer Subscription On Datarouter - [Tags] Bulk_PM_E2E_04 - [Documentation] Verify Default Feed And File Consumer Subscription On Datarouter - ${cli_cmd_output}= Run Process ${CLI_EXEC_CLI} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - Should Contain ${cli_cmd_output.stdout} https://dmaap-dr-prov/publish/1 - Should Contain ${cli_cmd_output.stdout} http://${DR_SUBSCIBER_IP}:7070 \ No newline at end of file diff --git a/test/csit/tests/dcae-bulkpm/testcases/__init__.robot b/test/csit/tests/dcae-bulkpm/testcases/__init__.robot deleted file mode 100644 index 7114fd447..000000000 --- a/test/csit/tests/dcae-bulkpm/testcases/__init__.robot +++ /dev/null @@ -1,2 +0,0 @@ -*** Settings *** -Documentation 5G Bulk PM E2E Testcases diff --git a/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json b/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json deleted file mode 100644 index 4064ea312..000000000 --- a/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "event": { - "commonEventHeader": { - "version": "4.0.1", - "vesEventListenerVersion": "7.0.1", - "domain": "notification", - "eventName": "Noti_RnNode-Ericsson_FileReady", - "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1", - "lastEpochMicrosec": 8745745764578, - "priority": "Normal", - "reportingEntityName": "otenb5309", - "sequence": 0, - "sourceName": "oteNB5309", - "startEpochMicrosec": 8745745764578, - "timeZoneOffset": "UTC+05.30" - }, - "notificationFields": { - "changeIdentifier": "PM_MEAS_FILES", - "changeType": "FileReady", - "notificationFieldsVersion": "2.0", - "arrayOfNamedHashMap": [ - { "name": "xNF.pm.xml.gz", - "hashMap":{ - "location": "sftp://admin:admin@sftpserver:22/xNF.pm.xml.gz", - "compression": "gzip", - "fileFormatType": "org.3GPP.32.435#measCollec", - "fileFormatVersion": "V10" - } - } - ] - } -} -} \ No newline at end of file diff --git a/test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py b/test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py deleted file mode 100644 index d1ec9811d..000000000 --- a/test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py +++ /dev/null @@ -1,25 +0,0 @@ -''' -Created on Aug 18, 2017 - -@author: sw6830 -''' -from robot.api import logger -from Queue import Queue -import uuid, time, json, threading,os, platform, subprocess,paramiko - -class VesLibrary(object): - - def __init__(self): - pass - - def create_header_from_string(self, dictStr): - logger.info("Enter create_header_from_string: dictStr") - return dict(u.split("=") for u in dictStr.split(",")) - - def Generate_UUID(self): - """generate a uuid""" - return uuid.uuid4() - -if __name__ == '__main__': - lib = VesLibrary() - time.sleep(100000) \ No newline at end of file diff --git a/test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot b/test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot deleted file mode 100644 index 76bc33f47..000000000 --- a/test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot +++ /dev/null @@ -1,39 +0,0 @@ - *** Settings *** -Documentation The main interface for interacting with VES. It handles low level stuff like managing the http request library and VES required fields -Library RequestsLibrary -Library ../resources/VesLibrary.py -Library OperatingSystem -Library Collections -Library requests -Library Collections -Library String - -*** Variables *** - -*** Keywords *** - -Get Event Data From File - [Arguments] ${jsonfile} - ${data}= OperatingSystem.Get File ${jsonfile} - #Should Not Be_Equal ${data} None - [return] ${data} - -Publish Event To VES Collector - [Documentation] Send an event to VES Collector - [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} - Log Creating session ${url} - ${session}= Create Session dcaegen2-d1 ${url} - ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders} - #Log Received response from dcae ${resp.json()} - [return] ${resp} -PostCall - [Arguments] ${url} ${data} - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= Evaluate requests.post('${url}',data='${data}', headers=${headers},verify=False) requests - [Return] ${resp} - -GetCall - [Arguments] ${url} - ${resp}= Evaluate requests.get('${url}') requests - [Return] ${resp} - \ No newline at end of file diff --git a/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot b/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot new file mode 100644 index 000000000..9098b1abe --- /dev/null +++ b/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot @@ -0,0 +1,69 @@ +*** Settings *** +Documentation Testing E2E VES,Dmaap,DFC,DR with File Ready event feed from xNF +Library RequestsLibrary +Library OperatingSystem +Library Collections +Library Process +Resource resources/bulkpm_keywords.robot + + +*** Variables *** +${VESC_URL} http://%{VESC_IP}:8080 +${GLOBAL_APPLICATION_ID} robot-ves +${VES_ANY_EVENT_PATH} /eventListener/v7 +${HEADER_STRING} content-type=application/json +${EVENT_DATA_FILE} %{WORKSPACE}/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotificationUpdated.json + +${TARGETURL_TOPICS} http://${DMAAP_MR_IP}:3904/topics +${TARGETURL_SUBSCR} http://${DMAAP_MR_IP}:3904/events/unauthenticated.VES_NOTIFICATION_OUTPUT/OpenDcae-c12/C12?timeout=1000 +${CLI_EXEC_CLI} curl -k https://${DR_PROV_IP}:8443/internal/prov +${CLI_EXEC_CLI_DFC} docker exec dfc /bin/sh -c "ls /target | grep .gz" + +*** Test Cases *** + +Send VES File Ready Event to VES Collector + [Tags] Bulk_PM_E2E_01 + [Documentation] Send VES File Ready Event + ${evtdata}= Get Event Data From File ${EVENT_DATA_FILE} + ${headers}= Create Header From String ${HEADER_STRING} + ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} + Sleep 2s + ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} + Sleep 2s + ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} + Sleep 2s + ${resp}= Publish Event To VES Collector ${VESC_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} + Log Receive HTTP Status code ${resp.status_code} + Should Be Equal As Strings ${resp.status_code} 202 + +Check VES Notification Topic is existing in Message Router + [Tags] Bulk_PM_E2E_02 + [Documentation] Get the VES Notification topic on message router + [Timeout] 1 minute + Sleep 10s + ${resp}= GetCall ${TARGETURL_TOPICS} + log ${TARGETURL_TOPICS} + log 'JSON Response Code :'${resp} + ${topics}= Evaluate $resp.json().get('topics') + log ${topics} + ${ListLength}= Get Length ${topics} + log ${ListLength} + List Should Contain Value ${topics} unauthenticated.VES_NOTIFICATION_OUTPUT + +Verify Downloaded PM file from xNF exist on Data File Collector + [Tags] Bulk_PM_E2E_03 + [Documentation] Check the PM XML file exists on the File Consumer Simulator + ${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_DFC} shell=yes + Log ${cli_cmd_output.stdout} + Should Be Equal As Strings ${cli_cmd_output.rc} 0 + Should Contain ${cli_cmd_output.stdout} xNF.pm.xml.gz + + +Verify Default Feed And File Consumer Subscription On Datarouter + [Tags] Bulk_PM_E2E_04 + [Documentation] Verify Default Feed And File Consumer Subscription On Datarouter + ${cli_cmd_output}= Run Process ${CLI_EXEC_CLI} shell=yes + Log ${cli_cmd_output.stdout} + Should Be Equal As Strings ${cli_cmd_output.rc} 0 + Should Contain ${cli_cmd_output.stdout} https://dmaap-dr-prov/publish/1 + Should Contain ${cli_cmd_output.stdout} http://${DR_SUBSCIBER_IP}:7070 \ No newline at end of file diff --git a/test/csit/tests/usecases/5G-bulkpm/__init__.robot b/test/csit/tests/usecases/5G-bulkpm/__init__.robot new file mode 100644 index 000000000..7114fd447 --- /dev/null +++ b/test/csit/tests/usecases/5G-bulkpm/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation 5G Bulk PM E2E Testcases diff --git a/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json b/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json new file mode 100644 index 000000000..4064ea312 --- /dev/null +++ b/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json @@ -0,0 +1,33 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.0.1", + "vesEventListenerVersion": "7.0.1", + "domain": "notification", + "eventName": "Noti_RnNode-Ericsson_FileReady", + "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1", + "lastEpochMicrosec": 8745745764578, + "priority": "Normal", + "reportingEntityName": "otenb5309", + "sequence": 0, + "sourceName": "oteNB5309", + "startEpochMicrosec": 8745745764578, + "timeZoneOffset": "UTC+05.30" + }, + "notificationFields": { + "changeIdentifier": "PM_MEAS_FILES", + "changeType": "FileReady", + "notificationFieldsVersion": "2.0", + "arrayOfNamedHashMap": [ + { "name": "xNF.pm.xml.gz", + "hashMap":{ + "location": "sftp://admin:admin@sftpserver:22/xNF.pm.xml.gz", + "compression": "gzip", + "fileFormatType": "org.3GPP.32.435#measCollec", + "fileFormatVersion": "V10" + } + } + ] + } +} +} \ No newline at end of file diff --git a/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot b/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot new file mode 100644 index 000000000..6859ea0df --- /dev/null +++ b/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot @@ -0,0 +1,38 @@ + *** Settings *** +Documentation The main interface for interacting with VES. It handles low level stuff like managing the http request library and VES required fields +Library RequestsLibrary +Library ../resources/xNFLibrary.py +Library OperatingSystem +Library Collections +Library requests +Library Collections +Library String + +*** Variables *** + +*** Keywords *** + +Get Event Data From File + [Arguments] ${jsonfile} + ${data}= OperatingSystem.Get File ${jsonfile} + #Should Not Be_Equal ${data} None + [return] ${data} + +Publish Event To VES Collector + [Documentation] Send an event to VES Collector + [Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} + Log Creating session ${url} + ${session}= Create Session dcaegen2-d1 ${url} + ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders} + #Log Received response from dcae ${resp.json()} + [return] ${resp} +PostCall + [Arguments] ${url} ${data} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= Evaluate requests.post('${url}',data='${data}', headers=${headers},verify=False) requests + [Return] ${resp} + +GetCall + [Arguments] ${url} + ${resp}= Evaluate requests.get('${url}') requests + [Return] ${resp} diff --git a/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py b/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py new file mode 100644 index 000000000..01574f778 --- /dev/null +++ b/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py @@ -0,0 +1,25 @@ +''' +Created on Aug 18, 2017 + +@author: sw6830 +''' +from robot.api import logger +from Queue import Queue +import uuid, time, json, threading,os, platform, subprocess,paramiko + +class xNFLibrary(object): + + def __init__(self): + pass + + def create_header_from_string(self, dictStr): + logger.info("Enter create_header_from_string: dictStr") + return dict(u.split("=") for u in dictStr.split(",")) + + def Generate_UUID(self): + """generate a uuid""" + return uuid.uuid4() + +if __name__ == '__main__': + lib = xNFLibrary() + time.sleep(100000) \ No newline at end of file -- cgit 1.2.3-korg