diff options
Diffstat (limited to 'test')
33 files changed, 339 insertions, 92 deletions
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 e3035f0c1..000000000 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/teardown.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -echo "Starting teardown script" -cd $WORKSPACE/test/csit/scripts -./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 subscriber-node -./kill-instance.sh mariadb -./kill-instance.sh dfc -./kill-instance.sh sftp -sudo sed -i '/dmaap/d' /etc/hosts
\ No newline at end of file diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml index 1673715cb..2a928217d 100644 --- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml @@ -42,12 +42,15 @@ services: command: ["-server", "-bootstrap"] ves-hv-collector: - image: $DOCKER_REGISTRY/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:latest + image: ${DOCKER_REGISTRY_PREFIX}onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:latest ports: - "6060:6060" - "6061:6061/tcp" entrypoint: ["java", "-Dio.netty.leakDetection.level=paranoid", "-cp", "*:", "org.onap.dcae.collectors.veshv.main.MainKt"] - command: ["--listen-port", "6061","--config-url", "http://consul:8500/v1/kv/veshv-config"] + command: ["--listen-port", "6061", + "--config-url", "http://consul:8500/v1/kv/veshv-config", + "--key-store-password", "onaponap", + "--trust-store-password", "onaponap"] healthcheck: interval: 10s timeout: 5s @@ -61,7 +64,7 @@ services: - ves-hv-default unencrypted-ves-hv-collector: - image: $DOCKER_REGISTRY/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:latest + image: ${DOCKER_REGISTRY_PREFIX}onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:latest ports: - "7060:6060" - "7061:6061/tcp" @@ -80,7 +83,7 @@ services: - ves-hv-default dcae-app-simulator: - image: $DOCKER_REGISTRY/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-dcae-app-simulator:latest + image: ${DOCKER_REGISTRY_PREFIX}onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-dcae-app-simulator:latest ports: - "6063:6063/tcp" command: ["--listen-port", "6063", "--kafka-bootstrap-servers", "kafka:9092", "--kafka-topics", "ves_hvRanMeas"] diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/setup.sh b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/setup.sh index 6b527fc22..6f72521af 100755 --- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/setup.sh +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/setup.sh @@ -2,14 +2,25 @@ set -euo pipefail -pip uninstall -y docker-py -pip install docker - -COMPOSE_VERSION=1.22.0 -COMPOSE_LOCATION='/usr/local/bin/docker-compose' -sudo curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o ${COMPOSE_LOCATION} -sudo chmod +x ${COMPOSE_LOCATION} - +if [[ $# -eq 1 ]] && [[ $1 == "local-test-run" ]]; then + echo "Building locally - assuming all dependencies are installed" + export DOCKER_REGISTRY="" + export DOCKER_REGISTRY_PREFIX="" + export WORKSPACE=$(git rev-parse --show-toplevel) +else + echo "Default run - install all dependencies" + + pip uninstall -y docker-py + pip install docker + + COMPOSE_VERSION=1.22.0 + COMPOSE_LOCATION='/usr/local/bin/docker-compose' + sudo curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o ${COMPOSE_LOCATION} + sudo chmod +x ${COMPOSE_LOCATION} + + export DOCKER_REGISTRY="nexus3.onap.org:10001" + export DOCKER_REGISTRY_PREFIX="${DOCKER_REGISTRY}/" +fi echo "Removing not used docker networks" docker network prune -f @@ -19,14 +30,11 @@ echo "Creating network for containers: ${CONTAINERS_NETWORK}" docker network create ${CONTAINERS_NETWORK} cd ssl -make FILE=client -make FILE=server -make FILE=invalid_client CA=invalid_trust +./gen-certs.sh cd .. -export DOCKER_REGISTRY="nexus3.onap.org:10001" docker-compose up -d -mkdir ${WORKSPACE}/archives/containers_logs +mkdir -p ${WORKSPACE}/archives/containers_logs -export ROBOT_VARIABLES="--pythonpath ${WORKSPACE}/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries"
\ No newline at end of file +export ROBOT_VARIABLES="--pythonpath ${WORKSPACE}/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries" diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore new file mode 100644 index 000000000..0729569ce --- /dev/null +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore @@ -0,0 +1,6 @@ +*.crt +*.key +*.srl +*.csr +*.pkcs12 +*.p12 diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile-openssl index 5fddc6b1d..a32d30dd0 100644 --- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile-openssl @@ -1,12 +1,13 @@ FILE=sample -CA_PASSWD=onap +PASSWD=onaponap +CA_PASSWD=onaponap SUBJ=/C=PL/ST=DL/L=Wroclaw/O=Nokia/OU=MANO CA=trust sign: $(FILE).crt clean: - rm -f *.crt *.key *.srl *.csr + rm -f *.crt *.key *.srl *.csr *.pkcs12 generate-ca-certificate: $(CA).crt @@ -16,6 +17,11 @@ create-public-key: $(FILE).pub create-sign-request: $(FILE).csr +create-key-store: $(FILE).ks.pkcs12 + +create-trust-store: $(CA).crt + openssl pkcs12 -export -in $(CA).crt -CAfile $(CA).crt -out $(CA).pkcs12 -nokeys -noiter -nomaciter -passout pass:$(PASSWD) + $(CA).crt: openssl req -new -x509 -keyout $(CA).key -out $(CA).crt -days 365 -passout pass:$(CA_PASSWD) -subj "$(SUBJ)" @@ -29,4 +35,7 @@ $(FILE).csr: $(FILE).key openssl req -new -sha256 -key $(FILE).key -out $(FILE).csr -subj "$(SUBJ)" $(FILE).crt: $(CA).crt $(FILE).csr - openssl x509 -req -days 360 -in $(FILE).csr -CA $(CA).crt -CAkey $(CA).key -out $(FILE).crt -CAcreateserial -passin pass:$(CA_PASSWD)
\ No newline at end of file + openssl x509 -req -days 360 -in $(FILE).csr -CA $(CA).crt -CAkey $(CA).key -out $(FILE).crt -CAcreateserial -passin pass:$(CA_PASSWD) + +$(FILE).ks.pkcs12: $(FILE).key $(FILE).crt $(CA).crt + openssl pkcs12 -export -in $(FILE).crt -inkey $(FILE).key -CAfile $(CA).crt -out $(FILE).ks.pkcs12 -noiter -nomaciter -passout pass:$(PASSWD) diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md index 174c16641..c2819d249 100644 --- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md @@ -1,5 +1,23 @@ # Generating SSL certificates +## Java keytool way (recommended) + +To generate: + +```shell +./gen-certs.sh +``` + +To clean (remove generated files): + +```shell +./gen-certs.sh clean +``` + +## OpenSSL way (currently might not work) + +> Add `-f Makefile-openssl` to each command + Typical usage: ```shell @@ -7,12 +25,30 @@ make FILE=client make FILE=server ``` +or (to generate PKCS12 key and trust stores): + +```shell +make create-key-store FILE=client +make create-key-store FILE=server +make create-trust-store +``` + Will generate CA certificate and signed client and server certificates. More "low-level" usage: ```shell make generate-ca-certificate -make generate-private-key FILE=client +make generate-private-key FILE=client make sign FILE=client ``` + +# Connecting to a server + +First generate *client* and *server* certificates. Then start a server with it's cert and make ca.crt a trusted certification authority. + +After that you can: + +```shell +./connect.sh client localhost:8600 < file_with_a_data_to_be_sent.dat +``` diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh new file mode 100755 index 000000000..34572f7a7 --- /dev/null +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +set -eu -o pipefail -o xtrace + +STORE_PASS=onaponap +CN_PREFIX=dcaegen2-hvves +DNAME_PREFIX="C=PL,ST=DL,L=Wroclaw,O=Nokia,OU=MANO,CN=${CN_PREFIX}" + +store_opts="-storetype PKCS12 -storepass ${STORE_PASS} -noprompt" + +function gen_key() { + local key_name="$1" + local ca="$2" + local keystore="-keystore ${key_name}.p12 ${store_opts}" + keytool -genkey -alias ${key_name} \ + ${keystore} \ + -keyalg RSA \ + -validity 730 \ + -keysize 2048 \ + -dname "${DNAME_PREFIX}-${key_name}" + keytool -import -trustcacerts -alias ${ca} -file ${ca}.crt ${keystore} + + keytool -certreq -alias ${key_name} -keyalg RSA ${keystore} | \ + keytool -alias ${ca} -gencert -ext "san=dns:${CN_PREFIX}-${ca}" ${store_opts} -keystore ${ca}.p12 | \ + keytool -alias ${key_name} -importcert ${keystore} +} + + +function gen_ca() { + local ca="$1" + keytool -genkeypair ${store_opts} -alias ${ca} -dname "${DNAME_PREFIX}-${ca}" -keystore ${ca}.p12 + keytool -export -alias ${ca} -file ${ca}.crt ${store_opts} -keystore ${ca}.p12 +} + +function gen_truststore() { + local name="$1" + local trusted_ca="$2" + keytool -import -trustcacerts -alias ca -file ${trusted_ca}.crt ${store_opts} -keystore ${name}.p12 +} + +function clean() { + rm -f *.crt *.p12 +} + +if [[ $# -eq 0 ]]; then + gen_ca ca + gen_ca untrustedca + gen_truststore trust ca + gen_truststore untrustedtrust untrustedca + gen_key client ca + gen_key server ca + gen_key untrustedclient untrustedca +elif [[ $1 == "clean" ]]; then + clean +else + echo "usage: $0 [clean]" + exit 1 +fi + diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/teardown.sh b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/teardown.sh index 246fb8363..fe922ed09 100755 --- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/teardown.sh +++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/teardown.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash cd ssl -make clean +./gen-certs.sh clean cd .. COMPOSE_LOGS_FILE=${WORKSPACE}/archives/containers_logs/docker-compose.log @@ -12,6 +12,5 @@ docker-compose rm -f docker network rm ${CONTAINERS_NETWORK} if grep "LEAK:" ${COMPOSE_LOGS_FILE}; then - echo "Teardown failed. Memory leak detected in docker-compose logs." - exit 1 + echo "WARNING: Memory leak detected in docker-compose logs." fi diff --git a/test/csit/plans/integration/functionality1/testplan.txt b/test/csit/plans/integration/functionality1/testplan.txt index 7a29ca53d..9221b4751 100644 --- a/test/csit/plans/integration/functionality1/testplan.txt +++ b/test/csit/plans/integration/functionality1/testplan.txt @@ -1,4 +1,5 @@ # Test suites are relative paths under [integration.git]/test/csit/tests/. # Place the suites in run order. +# Temporary change to trigger verify job. integration/suite1 integration/suite2 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 Binary files differnew file mode 100644 index 000000000..2f527c275 --- /dev/null +++ b/test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml b/test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml index 435ff4904..16db4afad 100644 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml +++ b/test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml @@ -36,7 +36,7 @@ services: datarouter-subscriber: image: nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber - container_name: subscriber-node + container_name: fileconsumer-node hostname: subscriber.com ports: - "7070:7070" diff --git a/test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh b/test/csit/plans/usecases/5G-bulkpm/setup.sh index c9f5318dd..f27bfba51 100644 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh +++ b/test/csit/plans/usecases/5G-bulkpm/setup.sh @@ -57,13 +57,14 @@ 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 +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 -sed -i -e '/DMAAPHOST:/ s/:.*/: '$DMAAP_MR_IP'/' docker-compose.yml +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 @@ -84,16 +85,12 @@ done sleep 5 -# Get IP address of datarrouger-prov, datarouter-node, subscriber-node, subscriber-node. +# 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}}' subscriber-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) -#Add the DR_NODE_IP to /etc/hosts -echo "${DR_NODE_IP} dmaap-dr-node" >> /etc/hosts -echo "${DR_PROV_IP} dmaap-dr-prov" >> /etc/hosts - echo DR_PROV_IP=${DR_PROV_IP} echo DR_NODE_IP=${DR_NODE_IP} echo DR_GATEWAY_IP=${DR_GATEWAY_IP} @@ -110,16 +107,35 @@ DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPA 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} -echo "${DMAAP_MR_IP} dmaap-mr" >> /etc/hosts - #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}" +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
\ No newline at end of file +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/dcae-bulkpm/bulkpm-suite/testplan.txt b/test/csit/plans/usecases/5G-bulkpm/testplan.txt index 25a5d6e8b..c4e1c4271 100644 --- a/test/csit/plans/dcae-bulkpm/bulkpm-suite/testplan.txt +++ b/test/csit/plans/usecases/5G-bulkpm/testplan.txt @@ -1,3 +1,3 @@ # Test suites are relative paths under [integration.git]/test/csit/tests/. # Place the suites in run order. -dcae-bulkpm/testcases +usecases/5G-bulkpm diff --git a/test/csit/plans/vfc-nfvo-wfengine/sanity-check/setup.sh b/test/csit/plans/vfc-nfvo-wfengine/sanity-check/setup.sh index f990aa5a7..e7c755fa8 100644 --- a/test/csit/plans/vfc-nfvo-wfengine/sanity-check/setup.sh +++ b/test/csit/plans/vfc-nfvo-wfengine/sanity-check/setup.sh @@ -74,7 +74,7 @@ IMAGE_MGRSERVICE_NAME="${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/${IMAGE}" # Start wfengine-mgrservice #docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_IP=$SERVICE_IP -e SERVICE_PORT=8805 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_MGRSERVICE_NAME} -# docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_PORT=10550 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_MGRSERVICE_NAME} +#docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_PORT=10550 -e OPENPALETTE_MSB_IP=${MSB_IAG_IP} -e OPENPALETTE_MSB_PORT=80 ${IMAGE_MGRSERVICE_NAME} docker run -d --name vfc_wfengine_mgrservice -p 8805:10550 -e SERVICE_PORT=10550 -e OPENPALETTE_MSB_IP=${WFENGINE_ACTIVITI_IP} -e OPENPALETTE_MSB_PORT=8080 ${IMAGE_MGRSERVICE_NAME} ##docker run -d --name ${IMAGE} -e OPENPALETTE_MSB_IP=${WFENGINEACTIVITIR_IP} -e OPENPALETTE_MSB_PORT=8080 ${IMAGE_MGRSERVICE_NAME} diff --git a/test/csit/run-csit.sh b/test/csit/run-csit.sh index a048a0d69..40cd9ee6d 100755 --- a/test/csit/run-csit.sh +++ b/test/csit/run-csit.sh @@ -152,7 +152,7 @@ SUITES=$( xargs -a testplan.txt ) echo ROBOT_VARIABLES=${ROBOT_VARIABLES} echo "Starting Robot test suites ${SUITES} ..." set +e -pybot -N ${TESTPLAN} -v WORKSPACE:/tmp ${ROBOT_VARIABLES} ${TESTOPTIONS} ${SUITES} +python -m robot.run -N ${TESTPLAN} -v WORKSPACE:/tmp ${ROBOT_VARIABLES} ${TESTOPTIONS} ${SUITES} RESULT=$? set -e echo "RESULT: " $RESULT diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py index 26d5a91c2..f6a978754 100644 --- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py +++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py @@ -6,7 +6,7 @@ from time import sleep XNF_SIMULATOR_NAME = "xNF Simulator" SIMULATOR_IMAGE_NAME = "onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-xnf-simulator" -SIMULATOR_IMAGE_FULL_NAME = os.getenv("DOCKER_REGISTRY") + "/" + SIMULATOR_IMAGE_NAME + ":latest" +SIMULATOR_IMAGE_FULL_NAME = os.getenv("DOCKER_REGISTRY_PREFIX") + SIMULATOR_IMAGE_NAME + ":latest" WORKSPACE_ENV = os.getenv("WORKSPACE") certificates_dir_path = WORKSPACE_ENV + "/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/" collector_certs_lookup_dir = "/etc/ves-hv/" @@ -128,11 +128,11 @@ class XnfSimulator: should_disable_ssl, should_connect_to_unencrypted_hv_ves): self.port = port - cert_name_prefix = "" if should_use_valid_certs else "invalid_" + cert_name_prefix = "" if should_use_valid_certs else "untrusted" certificates_path_with_file_prefix = collector_certs_lookup_dir + cert_name_prefix - self.cert_path = certificates_path_with_file_prefix + "client.crt" - self.key_path = certificates_path_with_file_prefix + "client.key" - self.trust_cert_path = certificates_path_with_file_prefix + "trust.crt" + self.key_store_path = certificates_path_with_file_prefix + "client.p12" + self.trust_store_path = certificates_path_with_file_prefix + "trust.p12" + self.sec_store_passwd = "onaponap" self.disable_ssl = should_disable_ssl self.hv_collector_host = "unencrypted-ves-hv-collector" \ if should_connect_to_unencrypted_hv_ves else "ves-hv-collector" @@ -141,10 +141,12 @@ class XnfSimulator: startup_command = ["--listen-port", self.port, "--ves-host", self.hv_collector_host, "--ves-port", "6061", - "--cert-file", self.cert_path, - "--private-key-file", self.key_path, - "--trust-cert-file", self.trust_cert_path] - if (self.disable_ssl): + "--key-store", self.key_store_path, + "--trust-store", self.trust_store_path, + "--key-store-password", self.sec_store_passwd, + "--trust-store-password", self.sec_store_passwd + ] + if self.disable_ssl: startup_command.append("--ssl-disable") return startup_command diff --git a/test/csit/tests/dcae-bulkpm/testcases/e2e.robot b/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot index 69c795341..9098b1abe 100644 --- a/test/csit/tests/dcae-bulkpm/testcases/e2e.robot +++ b/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot @@ -3,7 +3,8 @@ Documentation Testing E2E VES,Dmaap,DFC,DR with File Ready event feed from xNF Library RequestsLibrary Library OperatingSystem Library Collections -Resource resources/ves_keywords.robot +Library Process +Resource resources/bulkpm_keywords.robot *** Variables *** @@ -11,23 +12,33 @@ ${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/FileExistNotification.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] DCAE-VESC-R1 - [Documentation] Post single event and expect 200 Response + [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 - [Documentation] Get the count of the Topics + [Tags] Bulk_PM_E2E_02 + [Documentation] Get the VES Notification topic on message router [Timeout] 1 minute Sleep 10s ${resp}= GetCall ${TARGETURL_TOPICS} @@ -38,3 +49,21 @@ Check VES Notification Topic is existing in Message Router ${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/usecases/5G-bulkpm/__init__.robot index 7114fd447..7114fd447 100644 --- a/test/csit/tests/dcae-bulkpm/testcases/__init__.robot +++ b/test/csit/tests/usecases/5G-bulkpm/__init__.robot diff --git a/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json b/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json index 96068e39a..4064ea312 100644 --- a/test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json +++ b/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json @@ -18,13 +18,16 @@ "changeIdentifier": "PM_MEAS_FILES", "changeType": "FileReady", "notificationFieldsVersion": "2.0", - "additionalFields": - { - "location": "ftpes://192.168.0.101:22/ftp/rop/A20161224.1030-1045.bin.gz", - "compression": "gzip", - "fileformatType": "org.3GPP.32.435#measCollec", - "fileFormatVersion": "V10" - } - } + "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 +} +}
\ No newline at end of file diff --git a/test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot b/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot index 76bc33f47..6859ea0df 100644 --- a/test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot +++ b/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot @@ -1,7 +1,7 @@ *** 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 ../resources/xNFLibrary.py Library OperatingSystem Library Collections Library requests @@ -36,4 +36,3 @@ GetCall [Arguments] ${url} ${resp}= Evaluate requests.get('${url}') requests [Return] ${resp} -
\ No newline at end of file diff --git a/test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py b/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py index d1ec9811d..01574f778 100644 --- a/test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py +++ b/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py @@ -7,7 +7,7 @@ from robot.api import logger from Queue import Queue import uuid, time, json, threading,os, platform, subprocess,paramiko -class VesLibrary(object): +class xNFLibrary(object): def __init__(self): pass @@ -21,5 +21,5 @@ class VesLibrary(object): return uuid.uuid4() if __name__ == '__main__': - lib = VesLibrary() + lib = xNFLibrary() time.sleep(100000)
\ No newline at end of file diff --git a/test/ete/labs/gwu/onap-openstack-template.env b/test/ete/labs/gwu/onap-openstack-template.env index 53139b542..09f180b73 100644 --- a/test/ete/labs/gwu/onap-openstack-template.env +++ b/test/ete/labs/gwu/onap-openstack-template.env @@ -95,7 +95,7 @@ parameters: # # ########################### - dcae_deployment_profile: R2MVP + dcae_deployment_profile: R3MVP ################################ # # diff --git a/test/ete/labs/huawei/onap-openstack-template.env b/test/ete/labs/huawei/onap-openstack-template.env index e6e2a2cbf..25098e2db 100644 --- a/test/ete/labs/huawei/onap-openstack-template.env +++ b/test/ete/labs/huawei/onap-openstack-template.env @@ -95,7 +95,7 @@ parameters: # # ########################### - dcae_deployment_profile: R2MVP + dcae_deployment_profile: R3MVP ################################ # # diff --git a/test/ete/labs/tlab/onap-openstack-template.env b/test/ete/labs/tlab/onap-openstack-template.env index dcdb7d574..3d36a98b3 100644 --- a/test/ete/labs/tlab/onap-openstack-template.env +++ b/test/ete/labs/tlab/onap-openstack-template.env @@ -96,7 +96,7 @@ parameters: # # ########################### - dcae_deployment_profile: R2MVP + dcae_deployment_profile: R3MVP ################################ # # diff --git a/test/ete/labs/windriver/onap-openstack-template.env b/test/ete/labs/windriver/onap-openstack-template.env index 90d901d79..ba7f25ca6 100644 --- a/test/ete/labs/windriver/onap-openstack-template.env +++ b/test/ete/labs/windriver/onap-openstack-template.env @@ -95,7 +95,7 @@ parameters: # # ########################### - dcae_deployment_profile: R2MVP + dcae_deployment_profile: R3MVP ################################ # # diff --git a/test/mocks/pnfsimulator/README.md b/test/mocks/pnfsimulator/README.md index 14b62eecc..567c5d06b 100644 --- a/test/mocks/pnfsimulator/README.md +++ b/test/mocks/pnfsimulator/README.md @@ -36,13 +36,25 @@ After that again execute sftp command: *sftp -P 2222 -i ssh/ssh_host_rsa_key sft In order to disable usage of SSH keys and start using password, change in *docker-compose.yml* service *sftp-service* entry *command* from *sftp-user::1001* to *sftp-user:password:1001* ###FTPES support -PNF Simulator allows to serve files via FTPES server. FTPES server has predefined user: onap with password: pano. -In order to connect we execute command *ftp-ssl host* and then enter user name and password. -In order to download execute command while logged in*get file_name*. -In order to add a new file execute command while logged in*put file_name*. +PNF Simulator allows to serve files via FTPES server. FTPES server has predefined user *onap* with password *pano*. + +####FTPES support with TLS enabled +By default TLS support is enabled. In order to verify connection, please use *FileZilla* for testing. + +####FTPES support for TLS disabled +For local testing TLS may be disabled, but it's not recommended. +In order to set up such configuration, comment or remove in *ftpes-server* service section in *docker-compose.yml* following entries: +- *./ftpes/tls/:/etc/ssl/private/* +- *ADDED_FLAGS: --tls=2* + +After that execute *./simulator.sh stop* and when it's finished *./simulator.sh start* . + +In order to connect execute command *ftp -p localhost 2221* and, when requested, provide user and password. +In order to download a file execute, while still being logged in, *get file-name-to-be-downloaded*. + ###Developer mode -For development of PNF Simulator, run *simulator.sh* start-dev in order to run Netopeer. +For development of PNF Simulator, run *simulator.sh* start-dev in order to run minimal necessary set of supporting services such as Netopeer of FTP servers. After that it is possible to run PNF Simulator from IDE. diff --git a/test/mocks/pnfsimulator/docker-compose.yml b/test/mocks/pnfsimulator/docker-compose.yml index 3d23e00c9..214a7733a 100644 --- a/test/mocks/pnfsimulator/docker-compose.yml +++ b/test/mocks/pnfsimulator/docker-compose.yml @@ -45,11 +45,14 @@ services: image: stilliard/pure-ftpd:latest ports: - "2221:21" + - "30000-30009:30000-30009" volumes: + - ./ftpes/files:/home/ftpusers/onap - ./ftpes/userpass/:/etc/pure-ftpd/passwd/ - ./ftpes/tls/:/etc/ssl/private/ - - ./ftpes/files:/home/onap + environment: PUBLICHOST: localhost ADDED_FLAGS: --tls=2 + FTP_USER_HOME: onap restart: on-failure
\ No newline at end of file diff --git a/test/mocks/pnfsimulator/ftpes/files/ftpes-noone.txt b/test/mocks/pnfsimulator/ftpes/files/ftpes-noone.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/mocks/pnfsimulator/ftpes/files/ftpes-noone.txt diff --git a/test/mocks/pnfsimulator/ftpes/files/onap/ftpes-onap.txt b/test/mocks/pnfsimulator/ftpes/files/onap/ftpes-onap.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/mocks/pnfsimulator/ftpes/files/onap/ftpes-onap.txt |