aboutsummaryrefslogtreecommitdiffstats
path: root/test/csit
diff options
context:
space:
mode:
Diffstat (limited to 'test/csit')
-rw-r--r--test/csit/plans/dcae-bulkpm/bulkpm-suite/teardown.sh14
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml11
-rwxr-xr-xtest/csit/plans/dcaegen2-collectors-hv-ves/testsuites/setup.sh36
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore6
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile-openssl (renamed from test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile)15
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md38
-rwxr-xr-xtest/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh59
-rwxr-xr-xtest/csit/plans/dcaegen2-collectors-hv-ves/testsuites/teardown.sh5
-rw-r--r--test/csit/plans/integration/functionality1/testplan.txt1
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/assets/addSubscriber.json18
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/assets/createFeed.json18
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/assets/datafile_endpoints.json28
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gzbin0 -> 63 bytes
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/composefile/docker-compose-e2e.yml (renamed from test/csit/plans/dcae-bulkpm/bulkpm-suite/composefile/docker-compose-e2e.yml)2
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/setup.sh (renamed from test/csit/plans/dcae-bulkpm/bulkpm-suite/setup.sh)40
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/teardown.sh12
-rw-r--r--test/csit/plans/usecases/5G-bulkpm/testplan.txt (renamed from test/csit/plans/dcae-bulkpm/bulkpm-suite/testplan.txt)2
-rw-r--r--test/csit/plans/vfc-nfvo-wfengine/sanity-check/setup.sh2
-rwxr-xr-xtest/csit/run-csit.sh2
-rw-r--r--test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py20
-rw-r--r--test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot (renamed from test/csit/tests/dcae-bulkpm/testcases/e2e.robot)39
-rw-r--r--test/csit/tests/usecases/5G-bulkpm/__init__.robot (renamed from test/csit/tests/dcae-bulkpm/testcases/__init__.robot)0
-rw-r--r--test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json (renamed from test/csit/tests/dcae-bulkpm/testcases/assets/json_events/FileExistNotification.json)21
-rw-r--r--test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot (renamed from test/csit/tests/dcae-bulkpm/testcases/resources/ves_keywords.robot)3
-rw-r--r--test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py (renamed from test/csit/tests/dcae-bulkpm/testcases/resources/VesLibrary.py)4
25 files changed, 314 insertions, 82 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
new file mode 100644
index 000000000..2f527c275
--- /dev/null
+++ b/test/csit/plans/usecases/5G-bulkpm/assets/xNF.pm.xml.gz
Binary files differ
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