aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh8
-rwxr-xr-xplans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt1
-rw-r--r--plans/sdnc/sdnc_netconf_tls_post_deploy/setup.sh4
-rw-r--r--plans/sdnc/sdnc_netconf_tls_post_deploy/teardown.sh1
-rw-r--r--plans/usecases-5G-bulkpm/5G-bulkpm/assets/dfc/datafile_endpoints.json1
-rw-r--r--plans/usecases-5G-bulkpm/5G-bulkpm/composefile/docker-compose-e2e.yml2
-rw-r--r--plans/usecases-5G-bulkpm/5G-bulkpm/setup.sh7
-rwxr-xr-xscripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh56
-rw-r--r--scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml1
-rwxr-xr-xscripts/sdnc/netconf-pnp-simulator/docker-compose.yml2
-rw-r--r--tests/dcaegen2-collectors-datafile/resources/common-keywords.robot10
-rwxr-xr-xtests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot29
-rwxr-xr-xtests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/StrictHostChecking.robot112
-rwxr-xr-xtests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/__init__.robot2
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/PM202007171301+020024C202007171207+0200-1215+0200_45678.xml88
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot58
-rw-r--r--tests/dcaegen2/testcases/01__no_auth_tests.robot107
-rw-r--r--tests/dcaegen2/testcases/02__cert_basic_auth_tests.robot (renamed from tests/dcaegen2/testcases/dcae_ves.robot)123
-rw-r--r--tests/dcaegen2/testcases/__init__.robot9
-rw-r--r--tests/dcaegen2/testcases/resources/DMaaP.py9
-rw-r--r--tests/dcaegen2/testcases/resources/DcaeLibrary.py12
-rw-r--r--tests/dcaegen2/testcases/resources/dcae_keywords.robot25
-rw-r--r--tests/policy/api/api-test.robot35
-rw-r--r--tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env1
-rw-r--r--tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env1
-rw-r--r--tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py62
-rw-r--r--tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot2
-rw-r--r--tests/usecases-5G-bulkpm/5G-bulkpm/BulkpmE2E.robot4
28 files changed, 545 insertions, 227 deletions
diff --git a/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh b/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh
index bdee34ee..7736d4a7 100644
--- a/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh
+++ b/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh
@@ -52,11 +52,11 @@ docker build -t drsim_common:latest .
cd $SIMGROUP_ROOT
#Copy ftp config for the ftp servers
-cp -r ../ftps-sftp-server/configuration .
-cp -r ../ftps-sftp-server/tls .
+cp -r ../ftpes-sftp-server/configuration .
+cp -r ../ftpes-sftp-server/tls .
-cd ../ftps-sftp-server
-docker build -t ftps_vsftpd:latest -f Dockerfile-ftps .
+cd ../ftpes-sftp-server
+docker build -t ftpes_vsftpd:latest -f Dockerfile-ftpes .
#All containers will be started and stopped via the robot tests.
diff --git a/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt b/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt
index 30d7a2d7..052ab7c8 100755
--- a/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt
+++ b/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt
@@ -1,3 +1,4 @@
# Test suites are relative paths under [integration/csit.git]/tests/.
# Place the suites in run order.
dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite
+dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite
diff --git a/plans/sdnc/sdnc_netconf_tls_post_deploy/setup.sh b/plans/sdnc/sdnc_netconf_tls_post_deploy/setup.sh
index 2a0451d1..a2020aee 100644
--- a/plans/sdnc/sdnc_netconf_tls_post_deploy/setup.sh
+++ b/plans/sdnc/sdnc_netconf_tls_post_deploy/setup.sh
@@ -30,7 +30,6 @@ chmod +x "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config
export TEMP_DIR_PATH=${TEMP_DIR_PATH}
# Create temp directory to bind with docker containers
-mkdir -m 755 -p "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/tmp
mkdir -m 755 -p "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/certs
mkdir -m 755 -p "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/cert-data
@@ -54,6 +53,9 @@ echo "Reinstall pyOpenSSL library."
pip uninstall pyopenssl -y
pip install pyopenssl==17.5.0
+# Install PYJKS for .jks files management
+pip install pyjks
+
# Disable Proxy - for local run
unset http_proxy https_proxy
diff --git a/plans/sdnc/sdnc_netconf_tls_post_deploy/teardown.sh b/plans/sdnc/sdnc_netconf_tls_post_deploy/teardown.sh
index 2f451d50..b780ed49 100644
--- a/plans/sdnc/sdnc_netconf_tls_post_deploy/teardown.sh
+++ b/plans/sdnc/sdnc_netconf_tls_post_deploy/teardown.sh
@@ -21,6 +21,5 @@ docker-compose -f "${SCRIPTS}"/sdnc/netconf-pnp-simulator/docker-compose.yml dow
make clear -C "${WORKSPACE}"/plans/sdnc/sdnc_netconf_tls_post_deploy/certs
-rm -rf "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/tmp
rm -rf "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/certs
rm -rf "${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/cert-data \ No newline at end of file
diff --git a/plans/usecases-5G-bulkpm/5G-bulkpm/assets/dfc/datafile_endpoints.json b/plans/usecases-5G-bulkpm/5G-bulkpm/assets/dfc/datafile_endpoints.json
index 6abfb566..bd13327b 100644
--- a/plans/usecases-5G-bulkpm/5G-bulkpm/assets/dfc/datafile_endpoints.json
+++ b/plans/usecases-5G-bulkpm/5G-bulkpm/assets/dfc/datafile_endpoints.json
@@ -10,6 +10,7 @@
"dmaap.security.keyStorePath": "/opt/app/datafile/etc/cert/cert.jks",
"dmaap.security.keyStorePasswordPath": "/opt/app/datafile/etc/cert/jks.pass",
"dmaap.security.enableDmaapCertAuth": "false",
+ "sftp.security.strictHostKeyChecking": "true",
"streams_publishes": {
"PM_MEAS_FILES": {
"type": "data_router",
diff --git a/plans/usecases-5G-bulkpm/5G-bulkpm/composefile/docker-compose-e2e.yml b/plans/usecases-5G-bulkpm/5G-bulkpm/composefile/docker-compose-e2e.yml
index e2f16a7c..dff4824c 100644
--- a/plans/usecases-5G-bulkpm/5G-bulkpm/composefile/docker-compose-e2e.yml
+++ b/plans/usecases-5G-bulkpm/5G-bulkpm/composefile/docker-compose-e2e.yml
@@ -110,6 +110,8 @@ services:
tmp_bulk-pm-network:
aliases:
- dcaegen2-datafile-collector
+ environment:
+ KNOWN_HOSTS_FILE_PATH: "/home/datafile/.ssh/known_hosts"
cbs-sim:
container_name: config-binding-service-sim
diff --git a/plans/usecases-5G-bulkpm/5G-bulkpm/setup.sh b/plans/usecases-5G-bulkpm/5G-bulkpm/setup.sh
index 1f5f26df..8cb3d9f8 100644
--- a/plans/usecases-5G-bulkpm/5G-bulkpm/setup.sh
+++ b/plans/usecases-5G-bulkpm/5G-bulkpm/setup.sh
@@ -78,6 +78,11 @@ DR_GATEWAY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway
DMAAP_MR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dmaap-message-router-server)
VESC_IP=$(docker inspect '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dcaegen2-vescollector)
+#Add SFTP server pubilc key to known hosts of datafile collector
+HOST_NAMES=$(docker inspect -f '{{ range .NetworkSettings.Networks}}{{join .Aliases ","}}{{end}}' sftp)
+KEY_ENTRY=$(echo $HOST_NAMES "$(docker exec sftp cat /etc/ssh/ssh_host_rsa_key.pub)" | sed -e 's/\w*@\w*$//')
+docker exec -i -u root dcaegen2-datafile-collector sh -c "echo $KEY_ENTRY >> /home/datafile/.ssh/known_hosts"
+
# Add gateway IP to DR Prov
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"
@@ -116,4 +121,4 @@ export VESC_PORT=8080
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 DMAAP_MR_IP:${DMAAP_MR_IP} -v VESC_IP:${VESC_IP} -v VESC_PORT:${VESC_PORT}" \ No newline at end of file
+ROBOT_VARIABLES="-v DR_PROV_IP:${DR_PROV_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v VESC_IP:${VESC_IP} -v VESC_PORT:${VESC_PORT}"
diff --git a/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh
index 808b0b17..38b78f2d 100755
--- a/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh
+++ b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh
@@ -1,12 +1,30 @@
#!/bin/bash
+#function to load sftp servers keys to dfc app depending on KNOWN_HOSTS environment variable
+# when KNOWN_HOSTS == "all_hosts_keys" or is not set, public keys of all sftp servers are loaded
+# when KNOWN_HOSTS == "known_hosts_empty", empty known hosts file is created
+# for other strings known hosts file is not created
+function load-sftp-servers-keys() {
+ if [ -z "$KNOWN_HOSTS" ] || [ "$KNOWN_HOSTS" == "all_hosts_keys" ]; then
+ SFTP_SERVERS="$(docker ps -q --filter='name=dfc_sftp')"
+
+ for SFTP_SERVER in $SFTP_SERVERS; do
+ HOST_NAMES=$(docker inspect -f '{{ join .NetworkSettings.Networks.dfcnet.Aliases ","}}' $SFTP_SERVER)
+ KEY_ENTRY=$(echo $HOST_NAMES "$(docker exec $SFTP_SERVER cat /etc/ssh/ssh_host_rsa_key.pub)" |
+ sed -e 's/\w*@\w*$//')
+ docker exec -u root dfc_app0 sh -c "echo $KEY_ENTRY >> /home/datafile/.ssh/known_hosts"
+ done
+ elif [ "$KNOWN_HOSTS" == "known_hosts_empty" ]; then
+ docker exec -u root dfc_app0 sh -c "touch /home/datafile/.ssh/known_hosts"
+ fi
+}
+
set -x
#Start DFC app
-
DOCKER_SIM_NWNAME="dfcnet"
echo "Creating docker network $DOCKER_SIM_NWNAME, if needed"
-docker network ls| grep $DOCKER_SIM_NWNAME > /dev/null || docker network create $DOCKER_SIM_NWNAME
+docker network ls | grep $DOCKER_SIM_NWNAME >/dev/null || docker network create $DOCKER_SIM_NWNAME
docker-compose up -d
@@ -14,21 +32,23 @@ DFC_APP="$(docker ps -q --filter='name=dfc_app0')"
#Wait for initialization of docker containers for dfc app and all simulators
for i in {1..10}; do
- if [ $(docker inspect --format '{{ .State.Running }}' $DFC_APP) ]
- then
- echo "DFC app Running"
- # enable TRACE logging of DFC
- docker exec $DFC_APP /bin/sh -c " sed -i 's/org.onap.dcaegen2.collectors.datafile: WARN/org.onap.dcaegen2.collectors.datafile: TRACE/g' /opt/app/datafile/config/application.yaml"
-
- #enable TRACE logging of spring-framework
- docker exec $DFC_APP /bin/sh -c " sed -i 's/org.springframework.data: ERROR/org.springframework.data: TRACE/g' /opt/app/datafile/config/application.yaml"
-
- docker restart $DFC_APP
- sleep 10
-
- break
- else
- echo sleep $i
- sleep $i
+ if [ $(docker inspect --format '{{ .State.Running }}' $DFC_APP) ]; then
+ echo "DFC app Running"
+
+ load-sftp-servers-keys
+
+ # enable TRACE logging of DFC
+ docker exec $DFC_APP /bin/sh -c " sed -i 's/org.onap.dcaegen2.collectors.datafile: WARN/org.onap.dcaegen2.collectors.datafile: TRACE/g' /opt/app/datafile/config/application.yaml"
+
+ #enable TRACE logging of spring-framework
+ docker exec $DFC_APP /bin/sh -c " sed -i 's/org.springframework.data: ERROR/org.springframework.data: TRACE/g' /opt/app/datafile/config/application.yaml"
+
+ docker restart $DFC_APP
+ sleep 10
+
+ break
+ else
+ echo sleep $i
+ sleep $i
fi
done
diff --git a/scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml b/scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml
index 02e0eb6d..f92d19f6 100644
--- a/scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml
+++ b/scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml
@@ -22,3 +22,4 @@ services:
CONSUL_PORT: 8500
CONFIG_BINDING_SERVICE: "config-binding-service"
HOSTNAME: "dfc_app0"
+ KNOWN_HOSTS_FILE_PATH: "/home/datafile/.ssh/known_hosts"
diff --git a/scripts/sdnc/netconf-pnp-simulator/docker-compose.yml b/scripts/sdnc/netconf-pnp-simulator/docker-compose.yml
index 67a75c94..d8e723ba 100755
--- a/scripts/sdnc/netconf-pnp-simulator/docker-compose.yml
+++ b/scripts/sdnc/netconf-pnp-simulator/docker-compose.yml
@@ -2,7 +2,7 @@ version: '3'
services:
netconf-pnp-simulator:
- image: nexus3.onap.org:10001/onap/integration/simulators/netconf-pnp-simulator:2.8.5
+ image: nexus3.onap.org:10001/onap/integration/simulators/netconf-pnp-simulator:2.8.6
container_name: netconf-simulator
restart: always
ports:
diff --git a/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot b/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot
index a36833e1..c425fe2a 100644
--- a/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot
+++ b/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot
@@ -44,3 +44,13 @@ Start DFC
${cli_cmd_output}= Run Process ${DFC_ROOT}/dfc-start.sh cwd=${DFC_ROOT} env:SIMGROUP_ROOT=${SIMGROUP_ROOT}
Log To Console Dfc-start:
Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+
+
+Test Teardown
+ [Documentation] Cleanup containers
+ ${cli_cmd_output}= Run Process ${SIMGROUP_ROOT}/simulators-kill.sh
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+ ${cli_cmd_output}= Run Process ${DFC_ROOT}/dfc-kill.sh
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+ ${cli_cmd_output}= Run Process ${DFC_ROOT}/../dfc-containers-clean.sh stderr=STDOUT
+ Log To Console Dfc containter clean: ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot b/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot
index 5b9048ff..8213c702 100755
--- a/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot
+++ b/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot
@@ -33,27 +33,26 @@ Verify single event with single 50MB SFTP file. From event poll to published fil
Verify Single Event From Event Poll To Published File 50 --tc102 SFTP
-######## Single file, FTPS
-Verify single event with single 1MB FTPS file. From event poll to published file
+######## Single file, FTPES
+Verify single event with single 1MB FTPES file. From event poll to published file
[TAGS] DFC_FUNCTIONAL_10
- [Documentation] Verify single event with single FTPS 1MB file from event poll to published file.
- Verify Single Event From Event Poll To Published File 1 --tc200 FTPS
+ [Documentation] Verify single event with single FTPES 1MB file from event poll to published file.
+ Verify Single Event From Event Poll To Published File 1 --tc200 FTPES
-Verify single event with single 1MB FTPS file. From event poll to published file
+Verify single event with single 5MB FTPES file. From event poll to published file
[TAGS] DFC_FUNCTIONAL_11
- [Documentation] Verify single event with single FTPS 5MB file from event poll to published file.
- Verify Single Event From Event Poll To Published File 5 --tc201 FTPS
+ [Documentation] Verify single event with single FTPES 5MB file from event poll to published file.
+ Verify Single Event From Event Poll To Published File 5 --tc201 FTPES
-Verify single event with single 1MB FTPS file. From event poll to published file
+Verify single event with single 50MB FTEPS file. From event poll to published file
[TAGS] DFC_FUNCTIONAL_12
- [Documentation] Verify single event with single FTPS 50MB file from event poll to published file.
- Verify Single Event From Event Poll To Published File 50 --tc202 FTPS
+ [Documentation] Verify single event with single FTPES 50MB file from event poll to published file.
+ Verify Single Event From Event Poll To Published File 50 --tc202 FTPES
*** Keywords ***
Verify Single Event From Event Poll To Published File
[Documentation] Keyword to verify single event with file with given parameters.
[Arguments] ${file_size_in_mb} ${mr_tc} ${ftp_type}
- ${cli_cmd_output}= Run Process ${DFC_ROOT}/../dfc-containers-clean.sh
Set Environment Variable MR_TC ${mr_tc}
Set Environment Variable FILE_SIZE ${file_size_in_mb}MB
Set Environment Variable FTP_TYPE ${ftp_type}
@@ -85,10 +84,8 @@ Verify Single Event From Event Poll To Published File
Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Query Not Published Equal 1 #Verify 1 query response for not published files
Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Published Files Equal 1 #Verify 1 file published to DR sim
DR Redir Sim Downloaded Volume Equal ${file_size_in_mb} 000 000 #Verify correct number of bytes published file data in DR redir sim
- ${cli_cmd_output}= Run Process ${SIMGROUP_ROOT}/simulators-kill.sh
- Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
- ${cli_cmd_output}= Run Process ${DFC_ROOT}/dfc-kill.sh
- Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+
+ [Teardown] Test Teardown
Set Default Environment Variables
[Documentation] Set default environment variables for simulators setup
@@ -104,4 +101,4 @@ Set Default Environment Variables
Set Environment Variable DR_FEEDS 2:A
Set Environment Variable DR_REDIR_SIM drsim_redir
Set Environment Variable SFTP_SIMS sftp-server0:22
- Set Environment Variable FTPS_SIMS ftpes-server-vsftpd0:21
+ Set Environment Variable FTPES_SIMS ftpes-server-vsftpd0:21
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/StrictHostChecking.robot b/tests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/StrictHostChecking.robot
new file mode 100755
index 00000000..3962d4e5
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/StrictHostChecking.robot
@@ -0,0 +1,112 @@
+*** Settings ***
+Library OperatingSystem
+Library RequestsLibrary
+Library Process
+
+Resource ../../resources/common-keywords.robot
+
+Test Teardown
+
+*** Variables ***
+${CONSUL_UPL_APP} /usr/bin/curl -v http://127.0.0.1:8500/v1/kv/dfc_app0?dc=dc1 -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'X-Requested-With: XMLHttpRequest' --data-binary @${SIMGROUP_ROOT}/consul/c12_feed2_PM_MEAS.json
+${CONSUL_UPL_APP_INSECURE_SFTP} /usr/bin/curl -v http://127.0.0.1:8500/v1/kv/dfc_app0?dc=dc1 -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'X-Requested-With: XMLHttpRequest' --data-binary @${SIMGROUP_ROOT}/consul/c12_feed2_PM_MEAS_no_strict_host_key_checking.json
+${CONSUL_GET_APP} /usr/bin/curl -v http://127.0.0.1:8500/v1/kv/dfc_app0?raw
+${CBS_GET_MERGED_CONFIG} /usr/bin/curl -v http://127.0.0.1:10000/service_component_all/dfc_app0
+
+*** Test Cases ***
+
+######### Single file, SFTP, various SFTP Strict host key checking settings
+
+Verify single event with SFTP file, when host known and strict host key checking enabled. From event poll to published file
+ [TAGS] DFC_STRICT_HOST_KEY_CHECKING_1
+ [Documentation] Verify single event with SFTP file, when host known and strict host key checking enabled. From event poll to published file.
+ [Setup] Setup Strict Host Key Checking Test ${CONSUL_UPL_APP} all_hosts_keys
+
+ Wait Until Keyword Succeeds 1 minute 10 sec MR Sim Emitted Files Equal 1 #Verify 1 file emitted from MR sim
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Query Not Published Equal 1 #Verify 1 query response for not published files
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Published Files Equal 1 #Verify 1 file published to DR sim
+ DR Redir Sim Downloaded Volume Equal 1 000 000 #Verify 1 000 000 bytes published file data in DR redir sim
+
+ [Teardown] Test Teardown
+
+Verify single event with SFTP file, when host unknown and strict host key checking disabled. From event poll to published file
+ [TAGS] DFC_STRICT_HOST_KEY_CHECKING_2
+ [Documentation] Verify single event with SFTP file, when host unknown and strict host key checking disabled. From event poll to published file.
+ [Setup] Setup Strict Host Key Checking Test ${CONSUL_UPL_APP_INSECURE_SFTP} known_hosts_empty
+
+ Wait Until Keyword Succeeds 1 minute 10 sec MR Sim Emitted Files Equal 1 #Verify 1 file emitted from MR sim
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Query Not Published Equal 1 #Verify 1 query response for not published files
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Published Files Equal 1 #Verify 1 file published to DR sim
+ DR Redir Sim Downloaded Volume Equal 1 000 000 #Verify 1 000 000 bytes published file data in DR redir sim
+
+ [Teardown] Test Teardown
+
+Verify single event with SFTP file, when no known hosts file and strict host key checking enabled. From event poll to published file
+ [TAGS] DFC_STRICT_HOST_KEY_CHECKING_3
+ [Documentation] Verify single event with SFTP file, when host unknown and strict host key checking enabled. File not published.
+ [Setup] Setup Strict Host Key Checking Test ${CONSUL_UPL_APP} no_known_hosts_file
+
+ Wait Until Keyword Succeeds 1 minute 10 sec MR Sim Emitted Files Equal 1 #Verify 1 file emitted from MR sim
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Query Not Published Equal 1 #Verify 1 query response for not published files
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Published Files Equal 1 #Verify 1 file published to DR sim
+ DR Redir Sim Downloaded Volume Equal 1 000 000 #Verify 1 000 000 bytes published file data in DR redir sim
+
+ [Teardown] Test Teardown
+
+
+
+Verify single event with SFTP file, when host unknown and strict host key checking enabled. File not published
+ [TAGS] DFC_STRICT_HOST_KEY_CHECKING_4
+ [Documentation] Verify single event with SFTP file, when host unknown and strict host key checking enabled. File not published.
+ [Setup] Setup Strict Host Key Checking Test ${CONSUL_UPL_APP} known_hosts_empty
+ Wait Until Keyword Succeeds 1 minute 10 sec MR Sim Emitted Files Equal 1 #Verify 1 file emitted from MR sim
+ Wait Until Keyword Succeeds 1 minute 10 sec DR Sim Query Not Published Equal 1 #Verify 1 query response for not published files
+ Sleep 60
+ DR Sim Published Files Equal 0 #Verify no file was published to DR sim
+ [Teardown] Test Teardown
+
+*** Keywords ***
+
+Setup Strict Host Key Checking Test
+ [Documentation] Sets up strict host key checking test with single 1MB file
+ [Arguments] ${consul_config_request} ${known_hosts_file}
+ Set Environment Variable MR_TC --tc100
+ Set Environment Variable DR_TC --tc normal
+ Set Environment Variable DR_REDIR_TC --tc normal
+ Set Environment Variable MR_GROUPS OpenDcae-c12:PM_MEAS_FILES
+ Set Environment Variable MR_FILE_PREFIX_MAPPING PM_MEAS_FILES:A
+ Set Environment Variable DR_REDIR_FEEDS 2:A
+ Set Environment Variable FTP_FILE_PREFIXES A
+ Set Environment Variable NUM_FTPFILES 1
+ Set Environment Variable NUM_PNFS 1
+ Set Environment Variable FILE_SIZE 1MB
+ Set Environment Variable FTP_TYPE SFTP
+ Set Environment Variable NUM_FTP_SERVERS 1
+ Set Environment Variable DR_FEEDS 2:A
+ Set Environment Variable DR_REDIR_SIM drsim_redir
+ Set Environment Variable SFTP_SIMS sftp-server0:22
+ Set Environment Variable FTPS_SIMS ftpes-server-vsftpd0:21
+
+ ${cli_cmd_output}= Run Process ./simulators-start.sh cwd=${SIMGROUP_ROOT}
+ Log To Console Simulator-start:
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+ MR Sim Emitted Files Equal 0 #Verify 0 file emitted from MR sim
+ DR Sim Published Files Equal 0 #Verify 0 file published to DR sim
+
+ ${cli_cmd_output}= Run Process ${consul_config_request} shell=yes
+ Log To Console Consul APP write:
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+
+ ${cli_cmd_output}= Run Process ${CONSUL_GET_APP} shell=yes
+ Log To Console Consul APP read:
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+
+ ${cli_cmd_output}= Run Process ${CBS_GET_MERGED_CONFIG} shell=yes
+ Log To Console CBS merged configuration:
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
+
+ Sleep 10
+
+ ${cli_cmd_output}= Run Process ${DFC_ROOT}/dfc-start.sh cwd=${DFC_ROOT} env:KNOWN_HOSTS=${known_hosts_file}
+ Log To Console Dfc-start:
+ Log To Console ${cli_cmd_output.stdout} ${cli_cmd_output.stderr}
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/__init__.robot b/tests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/__init__.robot
new file mode 100755
index 00000000..77743849
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/testsuites/Strict-Host-Checking-suite/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation DFC Strict Host Checking test suite. Single event with single file.
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/PM202007171301+020024C202007171207+0200-1215+0200_45678.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/PM202007171301+020024C202007171207+0200-1215+0200_45678.xml
new file mode 100644
index 00000000..8d42d62c
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/PM202007171301+020024C202007171207+0200-1215+0200_45678.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measDataFile xmlns="http://www.3gpp.org/ftp/specs/archive/28_series/28.532#measData"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/28_series/28.532#measData http://www.3gpp.org/ftp/specs/archive/28_series/28.532#measData">
+ <fileHeader fileFormatVersion="28.532 V7.0" vendorName="Company NN" dnPrefix="DC=a1.companyNN.com,SubNetwork=1,IRPAgent=1">
+ <fileSender senderName="SubNetwork=CountryNN,MeContext=MEC-Gbg-1,ManagedElement=RNC-Gbg-1"/>
+ <measData beginTime="2000-03-01T14:00:00+02:00"/>
+ </fileHeader>
+ <measData>
+ <measEntity localDn="SubNetwork=CountryNN,MeContext=MEC-Gbg-1,ManagedElement=RNC-Gbg-1" userLabel="RNC Telecomville"/>
+ <measInfo>
+ <job jobId="1231"/>
+ <granPeriod duration="PT900S" endTime="2000-03-01T14:14:30+02:00"/>
+ <repPeriod duration="PT1800S"/>
+ <measType p="1">attTCHSeizures</measType>
+ <measType p="2">succTCHSeizures</measType>
+ <measType p="3">attImmediateAssignProcs</measType>
+ <measType p="4">succImmediateAssignProcs</measType>
+ <measValue measObjLdn="RncFunction=RF-1,UtranCell=Gbg-997">
+ <r p="1">234</r>
+ <r p="2">345</r>
+ <r p="3">567</r>
+ <r p="4">789</r>
+ </measValue>
+ <measValue measObjLdn="RncFunction=RF-1,UtranCell=Gbg-998">
+ <r p="1">890</r>
+ <r p="2">901</r>
+ <r p="3">123</r>
+ <r p="4">234</r>
+ </measValue>
+ <measValue measObjLdn="RncFunction=RF-1,UtranCell=Gbg-999">
+ <r p="1">456</r>
+ <r p="2">567</r>
+ <r p="3">678</r>
+ <r p="4">789</r>
+ <suspect>true</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="ENodeBFunction">
+ <job jobId="1232"/>
+ <granPeriod duration="PT900S" endTime="2000-03-01T14:14:30+02:00"/>
+ <repPeriod duration="PT1800S"/>
+ <measType p="1">attTCHSeizures1</measType>
+ <measType p="2">succTCHSeizures2</measType>
+ <measType p="3">attImmediateAssignProcs3</measType>
+ <measType p="4">succImmediateAssignProcs4</measType>
+ <measValue measObjLdn="ManagedElement=RNC-Gbg-1,ENodeBFunction=1">
+ <r p="1">4</r>
+ <r p="2">86,87,2,6,77,96,75,33,24</r>
+ <r p="3">40</r>
+ <r p="4">90</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo>
+ <job jobId="1233"/>
+ <granPeriod duration="PT900S" endTime="2000-03-01T14:14:30+02:00"/>
+ <repPeriod duration="PT1800S"/>
+ <measType p="1">attTCHSeizures5</measType>
+ <measType p="2">succTCHSeizures6</measType>
+ <measType p="3">attImmediateAssignProcs7</measType>
+ <measType p="4">succImmediateAssignProcs8</measType>
+ <measValue measObjLdn="RncFunction=RF-1,UtranCell=Gbg-997">
+ <r p="1">238</r>
+ <r p="2">344</r>
+ <r p="3">563</r>
+ <r p="4">787</r>
+ </measValue>
+ <measValue measObjLdn="RncFunction=RF-1,UtranCell=Gbg-998">
+ <r p="1">898</r>
+ <r p="2">905</r>
+ <r p="3">127</r>
+ <r p="4">238</r>
+ </measValue>
+ <measValue measObjLdn="RncFunction=RF-1,UtranCell=Gbg-999">
+ <r p="1">454</r>
+ <r p="2">569</r>
+ <r p="3">672</r>
+ <r p="4">785</r>
+ <suspect>true</suspect>
+ </measValue>
+ </measInfo>
+ </measData>
+ <fileFooter>
+ <measData endTime="2000-03-01T14:15:00+02:00"/>
+ </fileFooter>
+</measDataFile>
diff --git a/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot b/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
index 0b18320f..cd6f265e 100644
--- a/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
+++ b/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
@@ -7,8 +7,7 @@ Library Process
Library String
Test Setup Create Session mapper_session ${PMMAPPER_BASE_URL}
-Test Teardown Delete All Sessions
-
+Test Teardown CleanSessionsAndLogs
*** Variables ***
${CLI_EXEC_CLI_CONFIG} { head -n 10 | tail -5;} < /tmp/pmmapper.log
@@ -23,12 +22,14 @@ ${VALID_METADATA_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pm
${NR_VALID_METADATA_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/valid_metadata.json
${DIFF_VENDOR_METADATA} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json
${NON_XML_FILE} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json
-${CLI_EXEC_CLI_PM_LOG} docker exec pmmapper /bin/sh -c "tail -15 /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
+${CLI_EXEC_CLI_PM_LOG} docker exec pmmapper /bin/sh -c "cat /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
+${CLI_EXEC_CLI_PM_LOG_CLEAR} docker exec pmmapper /bin/sh -c "echo -n "" > /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
${PUBLISH_NODE_URL} https://${DR_NODE_IP}:8443/publish/1
${TYPE-A_PM_DATA_FILE_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml
${TYPE-C_PM_DATA_FILE_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/C20190328.0000-0015.xml
${NR-TYPE-A_PM_DATA_FILE_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/A20181004.0000-1000-0015-1000_5G.xml
${NR-TYPE-C_PM_DATA_FILE_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/C20190329.0000-0015.xml
+${NR-TYPE-PM_DATA_FILE_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/new_radio/PM202007171301+020024C202007171207+0200-1215+0200_45678.xml
${CLI_EXEC_VENDOR_FILTER} curl 'http://${CONSUL_IP}:8500/v1/kv/pmmapper?dc=dc1' -X PUT -H 'Accept: application/^Con' -H 'Content-Type: application/json' -H 'X-Requested-With: XMLHttpRequest' --data @$WORKSPACE/tests/dcaegen2-pmmapper/pmmapper/assets/vendor_filter_config.json
${CLI_EXEC_PM_FILTER} curl 'http://${CONSUL_IP}:8500/v1/kv/pmmapper?dc=dc1' -X PUT -H 'Accept: application/^Con' -H 'Content-Type: application/json' -H 'X-Requested-With: XMLHttpRequest' --data @$WORKSPACE/tests/dcaegen2-pmmapper/pmmapper/assets/pm_filter_config.json
${CLI_EXEC_PM_FILTER_regex} curl 'http://${CONSUL_IP}:8500/v1/kv/pmmapper?dc=dc1' -X PUT -H 'Accept: application/^Con' -H 'Content-Type: application/json' -H 'X-Requested-With: XMLHttpRequest' --data @$WORKSPACE/tests/dcaegen2-pmmapper/pmmapper/assets/pm_filter_regex_config.json
@@ -53,43 +54,43 @@ Verify 3GPP PM Mapper responds appropriately when no metadata is provided
[Tags] PM_MAPPER_03
[Documentation] Verify 3GPP PM Mapper responds 400 with the message "Missing Metadata." when no metadata is provided
[Timeout] 1 minute
- ${headers}= Create Dictionary X-ONAP-RequestID=1 Content-Type=application/xml
+ ${headers}= Create Dictionary X-ONAP-RequestID=3 Content-Type=application/xml
${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/filename data='${EMPTY}' headers=${headers}
VerifyResponse ${resp.status_code} 400
VerifyResponse ${resp.content} Missing Metadata.
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=1
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=3
Verify 3GPP PM Mapper responds appropriately when invalid metadata is provided
[Tags] PM_MAPPER_04
[Documentation] Verify 3GPP PM Mapper responds 400 with the message "Malformed Metadata." when invalid metadata is provided
[Timeout] 1 minute
- ${headers}= Create Dictionary X-ONAP-RequestID=2 X-DMAAP-DR-META='not metadata' Content-Type=application/xml
+ ${headers}= Create Dictionary X-ONAP-RequestID=4 X-DMAAP-DR-META='not metadata' Content-Type=application/xml
${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/filename data='${EMPTY}' headers=${headers}
VerifyResponse ${resp.status_code} 400
VerifyResponse ${resp.content} Malformed Metadata.
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=2
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=4
Verify that PM Mapper logs successful when a file that contains no measdata is provided
[Tags] PM_MAPPER_05
[Documentation] Verify that PM Mapper logs successful when a file that contains no measdata is provided
[Timeout] 1 minute
- SendToDatarouter ${NO_MEASDATA_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=3
+ SendToDatarouter ${NO_MEASDATA_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=5
CheckLog ${CLI_EXEC_CLI_PM_LOG} MeasData is empty
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=3
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=5
Verify that PM Mapper throws Event failed validation against schema error when no managed element content is provided
[Tags] PM_MAPPER_06
[Documentation] Verify 3gpp pm mapper responds with an error when no managed element content is provided
[Timeout] 1 minute
- SendToDatarouter ${NO_MANAGED_ELEMENT_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=4
+ SendToDatarouter ${NO_MANAGED_ELEMENT_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=6
CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation failed
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=4
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=6
Verify that PM Mapper maps Type-C xml file and publish 3gpp perf VES evnets to message router
[Tags] PM_MAPPER_07
[Documentation] Verify that PM Mapper maps Type-C xml file and publish 3gpp perf VES evnets to message router.
[Timeout] 1 minute
- SendToDatarouter ${TYPE-C_PM_DATA_FILE_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=5
+ SendToDatarouter ${TYPE-C_PM_DATA_FILE_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=7
CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
Verify 3GPP PM Mapper maps Type-A file based on counter filtering and publish 3gpp perf VES evnets to message router
@@ -99,7 +100,7 @@ Verify 3GPP PM Mapper maps Type-A file based on counter filtering and publish 3g
${cli_cmd_output}= Run Process ${CLI_EXEC_PM_FILTER} shell=yes
${resp}= Get Request mapper_session ${RECONFIGURE_ENDPOINT}
Sleep 5s
- SendToDatarouter ${TYPE-A_PM_DATA_FILE_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=6
+ SendToDatarouter ${TYPE-A_PM_DATA_FILE_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=8
CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
Verify that PM Mapper correctly identifies a file that should not be mapped based on metadata filtering.
@@ -110,17 +111,17 @@ Verify that PM Mapper correctly identifies a file that should not be mapped base
Should Be Equal As Strings ${cli_cmd_output.rc} 0
${resp}= Get Request mapper_session ${RECONFIGURE_ENDPOINT}
Sleep 5s
- SendToDatarouter ${TYPE-A_PM_DATA_FILE_PATH} ${DIFF_VENDOR_METADATA} X-ONAP-RequestID=7
+ SendToDatarouter ${TYPE-A_PM_DATA_FILE_PATH} ${DIFF_VENDOR_METADATA} X-ONAP-RequestID=9
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=9
CheckLog ${CLI_EXEC_CLI_PM_LOG} Metadata does not match any filters
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=7
Verify that PM Mapper correctly identifies a non-xml file.
[Tags] PM_MAPPER_10
[Documentation] Verify that PM Mapper correctly identifies a non-xml file.
[Timeout] 1 minute
- SendToDatarouter ${NON_XML_FILE} ${VALID_METADATA_PATH} X-ONAP-RequestID=8
+ SendToDatarouter ${NON_XML_FILE} ${VALID_METADATA_PATH} X-ONAP-RequestID=10
CheckLog ${CLI_EXEC_CLI_PM_LOG} PM measurement file must have an extension of .xml
- CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=8
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=10
Verify that PM Mapper correctly maps an NR Type-A file based on counter filtering and publish 3gpp perf VES events to message router.
[Tags] PM_MAPPER_11
@@ -129,15 +130,15 @@ Verify that PM Mapper correctly maps an NR Type-A file based on counter filterin
${cli_cmd_output}= Run Process ${CLI_EXEC_PM_FILTER} shell=yes
${resp}= Get Request mapper_session ${RECONFIGURE_ENDPOINT}
Sleep 5s
- SendToDatarouter ${NR-TYPE-A_PM_DATA_FILE_PATH} ${NR_VALID_METADATA_PATH} X-ONAP-RequestID=11
+ SendToDatarouter ${NR-TYPE-A_PM_DATA_FILE_PATH} ${NR_VALID_METADATA_PATH} X-ONAP-RequestID=11
CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
Verify that PM Mapper correctly maps an NR Type-C file based on counter filtering and publish 3gpp perf VES events to message router.
[Tags] PM_MAPPER_12
[Documentation] Verify that PM Mapper maps an NR Type-C xml file and publish 3gpp perf VES evnets to message router.
[Timeout] 1 minute
- SendToDatarouter ${NR-TYPE-C_PM_DATA_FILE_PATH} ${NR_VALID_METADATA_PATH} X-ONAP-RequestID=12
- CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
+ SendToDatarouter ${NR-TYPE-C_PM_DATA_FILE_PATH} ${NR_VALID_METADATA_PATH} X-ONAP-RequestID=12
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
Verify 3GPP PM Mapper maps Type-A file based on counter filtering with regexp
[Tags] PM_MAPPER_13
@@ -146,7 +147,7 @@ Verify 3GPP PM Mapper maps Type-A file based on counter filtering with regexp
${cli_cmd_output}= Run Process ${CLI_EXEC_PM_FILTER_regex} shell=yes
${resp}= Get Request mapper_session ${RECONFIGURE_ENDPOINT}
Sleep 5s
- SendToDatarouter ${TYPE-A_PM_DATA_FILE_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=6
+ SendToDatarouter ${TYPE-A_PM_DATA_FILE_PATH} ${VALID_METADATA_PATH} X-ONAP-RequestID=13
CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
Verify that password receive from CBS are successfully encrypted
@@ -155,6 +156,14 @@ Verify that password receive from CBS are successfully encrypted
CheckLog ${CLI_EXEC_CLI_CONFIG} "aaf_password": *****
CheckLog ${CLI_EXEC_CLI_CONFIG} "password": *****
+Verify that PM Mapper correctly maps an NR Type-PM file based on counter filtering and publish 3gpp perf VES events to message router.
+ [Tags] PM_MAPPER_15
+ [Documentation] Verify that PM Mapper maps an NR Type-PM xml file and publish 3gpp perf VES evnets to message router.
+ [Timeout] 1 minute
+ SendToDatarouter ${NR-TYPE-PM_DATA_FILE_PATH} ${NR_VALID_METADATA_PATH} X-ONAP-RequestID=15
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=15
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} Successfully published VES events to messagerouter
+
*** Keywords ***
SendToDatarouter
@@ -182,3 +191,10 @@ CheckLog
VerifyResponse
[Arguments] ${actual_response_value} ${expected_response_value}
Should Be Equal As Strings ${actual_response_value} ${expected_response_value}
+
+ClearLogs
+ Run Process ${CLI_EXEC_CLI_PM_LOG_CLEAR} shell=yes
+
+CleanSessionsAndLogs
+ Delete All Sessions
+ ClearLogs
diff --git a/tests/dcaegen2/testcases/01__no_auth_tests.robot b/tests/dcaegen2/testcases/01__no_auth_tests.robot
new file mode 100644
index 00000000..7e7f9767
--- /dev/null
+++ b/tests/dcaegen2/testcases/01__no_auth_tests.robot
@@ -0,0 +1,107 @@
+*** Settings ***
+Resource ./resources/dcae_keywords.robot
+*** Test Cases ***
+VES Collector HTTP Health Check
+ [Tags] DCAE-VESC-R1 DCAE-VESC-HC
+ [Documentation] Run healthcheck over HTTP
+ Run Healthcheck ${http_session}
+
+Publish Single VES VNF Measurement Event API V7
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with valid data to /eventListener/v7 endpoint and expect 202 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7} 202 ab305d54-85b4-a31b-7db2-fb6b9e546015
+
+Publish Single VES VNF Measurement Event with Standard Defined Fields API V7
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with valid data with Standard Defined Fields to /eventListener/v7 endpoint and expect 202 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7_STND_DEF_FIELDS} 202 stndDefined-gNB-Nokia-PowerLost unauthenticated.SEC_OTHER_OUTPUT
+
+Publish Single VES VNF Measurement Event with wrong JSON
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with invalid data to /eventListener/v7 endpoint and expect 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_INVALID_JSON_V7} 400
+
+Publish Single VES VNF Measurement Event with missing mandatory parameter
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with lack of one of the mandatory parameters "domain" to /eventListener/v7 endpoint and expect 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_MISSING_MANDATORY_PARAMETER_V7} 400
+
+Publish Single VES VNF Measurement Event with empty json
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with empty json to /eventListener/v7 endpoint and expect 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_EMPTY_JSON} 400
+
+Publish Single VES VNF Measurement Event with parameter out of schema
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with parameter which is not defined in schema and send to /eventListener/v7 endpoint. Expected 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_PARAMETER_OUT_OF_SCHEMA_V7} 400
+
+Publish Single VES VNF Measurement Event with No Auth over HTTPS
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event over HTTPS with authentication disabled and expect ConnectionError
+ @{err_content} Create List Errno 111
+ Send Request And Expect Error Publish Event To VES Collector ${https_basic_auth_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7} ConnectionError:* @{err_content}
+
+Publish Single VES VoLTE Fault Event
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with valid data to /eventListener/v5 endpoint and expect 202 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_DATA_FILE} 202 ab305d54-85b4-a31b-7db2-fb6b9e546015
+
+Publish Single VES VNF Measurement Event API V5
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single measurement event with valid data to /eventListener/v5 endpoint and expect 202 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_MEASURE_FILE} 202 0b2b5790-3673-480a-a4bd-5a00b88e5af6
+
+Publish VES VoLTE Fault Batch Events
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event with valid data to /eventListener/v5/eventBatch endpoint and expect 202 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_PATH} ${EVENT_BATCH_DATA_FILE} 202 ab305d54-85b4-a31b-7db2-fb6b9e546025
+
+Publish VES Batch Events with empty json
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post empty json to /eventListener/v7/eventBatch endpoint and expect 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_ENDPOINT_V7} ${VES_EMPTY_JSON} 400
+
+Publish VES Batch Events with missing mandatory parameter
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post event list where one of the events doesn't have mandatory domain param, to /eventListener/v7/eventBatch endpoint and expect 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_ENDPOINT_V7} ${VES_BATCH_MISSING_MANDATORY_PARAM_V7} 400
+
+Publish VES Batch Events wih parameter out of schema
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post event list where one of the events have additional dummy param, to /eventListener/v7/eventBatch endpoint and expect 400 Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_ENDPOINT_V7} ${VES_BATCH_PARAM_OUT_OF_SCHEMA_V7} 400
+
+Publish VES Event With Invalid Method
+ [Tags] DCAE-VESC-R1
+ [Documentation] Use invalid Put instead of Post method to expect 405 Response Status Code
+ Log Send HTTP Request with invalid method Put instead of Post
+ Send Request And Validate Response Publish Event To VES Collector With Put Method ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_DATA_FILE} 405
+
+Publish VES Event With Invalid URL Path
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event to invalid url path and expect 404 Response Status Code
+ Log Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} /listener/v5/ ${EVENT_DATA_FILE} 404
+
+Publish 'Other' Registration Event
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post an event aligned with “other” domain and expect HTTP 202 Accepeted Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_PNF_REGISTRATION} 202 QTFCOC540002E-reg
+
+Publish VES Event With Invalid Method V7
+ [Tags] DCAE-VESC-R1
+ [Documentation] Use invalid Put instead of Post method to expect 405 Response Status Code
+ Log Send HTTP Request with invalid method Put instead of Post
+ Send Request And Validate Response Publish Event To VES Collector With Put Method ${http_session} ${VES_EVENTLISTENER_V7} ${EVENT_DATA_FILE} 405
+
+Publish VES Event With Invalid URL Path V7
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post single event to invalid url path and expect 404 Response Status Code
+ Log Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} /listener/v7/ ${EVENT_DATA_FILE} 404
+
+Publish PNF Registration Event
+ [Tags] DCAE-VESC-R1
+ [Documentation] Post PNF Registration event and expect HTTP 202 Accepeted Response Status Code
+ Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${EVENT_PNF_REGISTRATION_V7} 202 registration_38407540
diff --git a/tests/dcaegen2/testcases/dcae_ves.robot b/tests/dcaegen2/testcases/02__cert_basic_auth_tests.robot
index 5c96f48b..1e221ce9 100644
--- a/tests/dcaegen2/testcases/dcae_ves.robot
+++ b/tests/dcaegen2/testcases/02__cert_basic_auth_tests.robot
@@ -1,128 +1,6 @@
*** Settings ***
-Documentation Run healthchecks for DCAE VES
-... Testing /eventListener/v7 and /eventListener/v7/eventBatch endpoints for DCEA VES v7.
-... Testing /eventListener/v5 and /eventListener/v5/eventBatch for DCEA VES v5 with various event feeds from VoLTE, vFW and PNF
-Library RequestsLibrary
-Library OperatingSystem
-Library Collections
-Library DcaeLibrary
Resource ./resources/dcae_keywords.robot
-
-Test Teardown Cleanup VES Events
-Suite Setup Run keywords VES Collector Suite Setup DMaaP Generate Certs Create sessions Create header
-Suite Teardown Run keywords VES Collector Suite Shutdown DMaaP Remove Certs
-
*** Test Cases ***
-
-#No authentication tests
-
-VES Collector HTTP Health Check
- [Tags] DCAE-VESC-R1 DCAE-VESC-HC
- [Documentation] Run healthcheck over HTTP
- Run Healthcheck ${http_session}
-
-Publish Single VES VNF Measurement Event API V7
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with valid data to /eventListener/v7 endpoint and expect 202 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7} 202 ab305d54-85b4-a31b-7db2-fb6b9e546015
-
-Publish Single VES VNF Measurement Event with Standard Defined Fields API V7
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with valid data with Standard Defined Fields to /eventListener/v7 endpoint and expect 202 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7_STND_DEF_FIELDS} 202 stndDefined-gNB-Nokia-PowerLost
-
-Publish Single VES VNF Measurement Event with wrong JSON
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with invalid data to /eventListener/v7 endpoint and expect 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_INVALID_JSON_V7} 400
-
-Publish Single VES VNF Measurement Event with missing mandatory parameter
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with lack of one of the mandatory parameters "domain" to /eventListener/v7 endpoint and expect 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_MISSING_MANDATORY_PARAMETER_V7} 400
-
-Publish Single VES VNF Measurement Event with empty json
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with empty json to /eventListener/v7 endpoint and expect 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_EMPTY_JSON} 400
-
-Publish Single VES VNF Measurement Event with parameter out of schema
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with parameter which is not defined in schema and send to /eventListener/v7 endpoint. Expected 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${VES_PARAMETER_OUT_OF_SCHEMA_V7} 400
-
-Publish Single VES VNF Measurement Event with No Auth over HTTPS
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event over HTTPS with authentication disabled and expect ConnectionError
- @{err_content} Create List Errno 111
- Send Request And Expect Error Publish Event To VES Collector ${https_basic_auth_session} ${VES_EVENTLISTENER_V7} ${VES_VALID_JSON_V7} ConnectionError:* @{err_content}
-
-Publish Single VES VoLTE Fault Event
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with valid data to /eventListener/v5 endpoint and expect 202 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_DATA_FILE} 202 ab305d54-85b4-a31b-7db2-fb6b9e546015
-
-Publish Single VES VNF Measurement Event API V5
- [Tags] DCAE-VESC-R1
- [Documentation] Post single measurement event with valid data to /eventListener/v5 endpoint and expect 202 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_MEASURE_FILE} 202 0b2b5790-3673-480a-a4bd-5a00b88e5af6
-
-Publish VES VoLTE Fault Batch Events
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event with valid data to /eventListener/v5/eventBatch endpoint and expect 202 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_PATH} ${EVENT_BATCH_DATA_FILE} 202 ab305d54-85b4-a31b-7db2-fb6b9e546025
-
-Publish VES Batch Events with empty json
- [Tags] DCAE-VESC-R1
- [Documentation] Post empty json to /eventListener/v7/eventBatch endpoint and expect 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_ENDPOINT_V7} ${VES_EMPTY_JSON} 400
-
-Publish VES Batch Events with missing mandatory parameter
- [Tags] DCAE-VESC-R1
- [Documentation] Post event list where one of the events doesn't have mandatory domain param, to /eventListener/v7/eventBatch endpoint and expect 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_ENDPOINT_V7} ${VES_BATCH_MISSING_MANDATORY_PARAM_V7} 400
-
-Publish VES Batch Events wih parameter out of schema
- [Tags] DCAE-VESC-R1
- [Documentation] Post event list where one of the events have additional dummy param, to /eventListener/v7/eventBatch endpoint and expect 400 Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_BATCH_EVENT_ENDPOINT_V7} ${VES_BATCH_PARAM_OUT_OF_SCHEMA_V7} 400
-
-Publish VES Event With Invalid Method
- [Tags] DCAE-VESC-R1
- [Documentation] Use invalid Put instead of Post method to expect 405 Response Status Code
- Log Send HTTP Request with invalid method Put instead of Post
- Send Request And Validate Response Publish Event To VES Collector With Put Method ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_DATA_FILE} 405
-
-Publish VES Event With Invalid URL Path
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event to invalid url path and expect 404 Response Status Code
- Log Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path
- Send Request And Validate Response Publish Event To VES Collector ${http_session} /listener/v5/ ${EVENT_DATA_FILE} 404
-
-Publish 'Other' Registration Event
- [Tags] DCAE-VESC-R1
- [Documentation] Post an event aligned with “other” domain and expect HTTP 202 Accepeted Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_ANY_EVENT_PATH} ${EVENT_PNF_REGISTRATION} 202 QTFCOC540002E-reg
-
-Publish VES Event With Invalid Method V7
- [Tags] DCAE-VESC-R1
- [Documentation] Use invalid Put instead of Post method to expect 405 Response Status Code
- Log Send HTTP Request with invalid method Put instead of Post
- Send Request And Validate Response Publish Event To VES Collector With Put Method ${http_session} ${VES_EVENTLISTENER_V7} ${EVENT_DATA_FILE} 405
-
-Publish VES Event With Invalid URL Path V7
- [Tags] DCAE-VESC-R1
- [Documentation] Post single event to invalid url path and expect 404 Response Status Code
- Log Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path
- Send Request And Validate Response Publish Event To VES Collector ${http_session} /listener/v7/ ${EVENT_DATA_FILE} 404
-
-Publish PNF Registration Event
- [Tags] DCAE-VESC-R1
- [Documentation] Post PNF Registration event and expect HTTP 202 Accepeted Response Status Code
- Send Request And Validate Response Publish Event To VES Collector ${http_session} ${VES_EVENTLISTENER_V7} ${EVENT_PNF_REGISTRATION_V7} 202 registration_38407540
-
-# Auth by certificate and basic auth username / password
-
Enable VESC HTTPS with certBasicAuth
[Tags] DCAE-VESC-R1 DCAE-VESC-HC
[Documentation] Enable VESC Https and Authentication and Run Health Check
@@ -132,7 +10,6 @@ Enable VESC HTTPS with certBasicAuth
VES Collector HTTP Health Check with certBasicAuth
[Tags] DCAE-VESC-R1 DCAE-VESC-HC
[Documentation] Run healthcheck over HTTP with certBasicAuth
- Enable VESC with certBasicAuth
Run Healthcheck ${http_session}
Healthcheck with Outdated Cert
diff --git a/tests/dcaegen2/testcases/__init__.robot b/tests/dcaegen2/testcases/__init__.robot
index e69de29b..9f34cd82 100644
--- a/tests/dcaegen2/testcases/__init__.robot
+++ b/tests/dcaegen2/testcases/__init__.robot
@@ -0,0 +1,9 @@
+*** Settings ***
+Documentation Run healthchecks for DCAE VES
+... Testing /eventListener/v7 and /eventListener/v7/eventBatch endpoints for DCEA VES v7.
+... Testing /eventListener/v5 and /eventListener/v5/eventBatch for DCEA VES v5 with various event feeds from VoLTE, vFW and PNF
+Resource ./resources/dcae_keywords.robot
+
+Test Teardown Cleanup VES Events
+Suite Setup Run keywords VES Collector Suite Setup DMaaP Generate Certs Create sessions Create header
+Suite Teardown Run keywords VES Collector Suite Shutdown DMaaP Remove Certs \ No newline at end of file
diff --git a/tests/dcaegen2/testcases/resources/DMaaP.py b/tests/dcaegen2/testcases/resources/DMaaP.py
index 500afd5d..4c245614 100644
--- a/tests/dcaegen2/testcases/resources/DMaaP.py
+++ b/tests/dcaegen2/testcases/resources/DMaaP.py
@@ -106,14 +106,16 @@ class DMaaPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
'''
if resp_code == 0:
+ topic = self.extract_topic_from_path()
content_len = int(self.headers.getheader('content-length', 0))
post_body = self.rfile.read(content_len)
indx = post_body.index("{")
if indx != 0:
post_body = post_body[indx:]
-
- if not enque_event(post_body):
+
+ event = "\""+topic+"\":" + post_body
+ if not enque_event(event):
print "enque event fails"
global EvtSchema
@@ -180,6 +182,9 @@ class DMaaPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
'''
return
+ def extract_topic_from_path(self):
+ return self.path["/events/".__len__():]
+
def do_GET(self):
"""Serve a GET request."""
f = self.send_head()
diff --git a/tests/dcaegen2/testcases/resources/DcaeLibrary.py b/tests/dcaegen2/testcases/resources/DcaeLibrary.py
index 6b96826c..a9d5def8 100644
--- a/tests/dcaegen2/testcases/resources/DcaeLibrary.py
+++ b/tests/dcaegen2/testcases/resources/DcaeLibrary.py
@@ -88,6 +88,18 @@ class DcaeLibrary(object):
return
@staticmethod
+ def dmaap_message_receive_on_topic(evtobj, topic):
+
+ evt_str = DMaaP.deque_event()
+ while evt_str != None:
+ if evtobj in evt_str and topic in evt_str:
+ logger.info("DMaaP Receive Expected Publish Event:\n" + evt_str)
+ logger.info("On Expected Topic:\n" + topic)
+ return 'true'
+ evt_str = DMaaP.deque_event()
+ return 'false'
+
+ @staticmethod
def dmaap_message_receive(evtobj, action='contain'):
evt_str = DMaaP.deque_event()
diff --git a/tests/dcaegen2/testcases/resources/dcae_keywords.robot b/tests/dcaegen2/testcases/resources/dcae_keywords.robot
index 89a87868..059372fb 100644
--- a/tests/dcaegen2/testcases/resources/dcae_keywords.robot
+++ b/tests/dcaegen2/testcases/resources/dcae_keywords.robot
@@ -18,23 +18,23 @@ Create sessions
${wrong_certs}= Create List ${VESC_WRONG_CERT} ${VESC_WRONG_KEY}
${outdated_certs}= Create List ${VESC_OUTDATED_CERT} ${VESC_OUTDATED_KEY}
Create Session dcae_vesc_url ${VESC_URL}
- Set Suite Variable ${http_session} dcae_vesc_url
+ Set Global Variable ${http_session} dcae_vesc_url
Create Session dcae_vesc_url_https ${VESC_URL_HTTPS} auth=${auth} disable_warnings=1
- Set Suite Variable ${https_basic_auth_session} dcae_vesc_url_https
+ Set Global Variable ${https_basic_auth_session} dcae_vesc_url_https
Create Session dcae_vesc_url_https_wrong_auth ${VESC_URL_HTTPS} auth=${wrong_auth} disable_warnings=1
- Set Suite Variable ${https_wrong_auth_session} dcae_vesc_url_https_wrong_auth
+ Set Global Variable ${https_wrong_auth_session} dcae_vesc_url_https_wrong_auth
Create Client Cert Session dcae_vesc_url_https_cert ${VESC_URL_HTTPS} client_certs=${certs} disable_warnings=1
- Set Suite Variable ${https_valid_cert_session} dcae_vesc_url_https_cert
+ Set Global Variable ${https_valid_cert_session} dcae_vesc_url_https_cert
Create Client Cert Session dcae_vesc_url_https_wrong_cert ${VESC_URL_HTTPS} client_certs=${wrong_certs} disable_warnings=1 verify=${False}
- Set Suite Variable ${https_invalid_cert_session} dcae_vesc_url_https_wrong_cert
+ Set Global Variable ${https_invalid_cert_session} dcae_vesc_url_https_wrong_cert
Create Client Cert Session dcae_vesc_url_https_outdated_cert ${VESC_URL_HTTPS} client_certs=${outdated_certs} disable_warnings=1 verify=${False}
- Set Suite Variable ${https_outdated_cert_session} dcae_vesc_url_https_outdated_cert
+ Set Global Variable ${https_outdated_cert_session} dcae_vesc_url_https_outdated_cert
Create Session dcae_vesc_url_https_wo_auth ${VESC_URL_HTTPS} disable_warnings=1
- Set Suite Variable ${https_no_cert_no_auth_session} dcae_vesc_url_https_wo_auth
+ Set Global Variable ${https_no_cert_no_auth_session} dcae_vesc_url_https_wo_auth
Create header
${headers}= Create Dictionary Content-Type=application/json
- Set Suite Variable ${suite_headers} ${headers}
+ Set Global Variable ${suite_headers} ${headers}
Get DCAE Nodes
[Documentation] Get DCAE Nodes from Consul Catalog
@@ -141,19 +141,20 @@ Publish Event To VES Collector With Put Method
Send Request And Validate Response
[Documentation] Post singel event to passed url with passed data and validate received response
- [Arguments] ${keyword} ${session} ${evtpath} ${evtjson} ${resp_code} ${msg_code}=None
+ [Arguments] ${keyword} ${session} ${evtpath} ${evtjson} ${resp_code} ${msg_code}=None ${topic}=None
${evtdata}= Get Data From File ${evtjson}
${resp}= Run Keyword ${keyword} ${session} ${evtpath} ${evtdata}
Log Receive HTTPS Status code ${resp.status_code}
Should Be Equal As Strings ${resp.status_code} ${resp_code}
${isEmpty}= Is Json Empty ${resp}
Run Keyword If '${isEmpty}' == False Log ${resp.json()}
- Run Keyword If '${msg_code}' != 'None' Check Whether Message Received ${msg_code}
+ Run Keyword If '${msg_code}' != 'None' Check Whether Message Received ${msg_code} ${topic}
Check Whether Message Received
[Documentation] Validare if message has been received
- [Arguments] ${msg_code}
- ${ret}= DMaaP Message Receive ${msg_code}
+ [Arguments] ${msg_code} ${topic}
+ ${ret}= Run Keyword If '${topic}' != 'None' DMaaP Message Receive On Topic ${msg_code} ${topic}
+ ... ELSE DMaaP Message Receive ${msg_code}
Should Be Equal As Strings ${ret} true
Send Request And Expect Error
diff --git a/tests/policy/api/api-test.robot b/tests/policy/api/api-test.robot
index 76c1bdc6..d3df9cc9 100644
--- a/tests/policy/api/api-test.robot
+++ b/tests/policy/api/api-test.robot
@@ -128,16 +128,43 @@ RetrievePoliciesOfType
Dictionary Should Contain Key ${resp.json()['topology_template']['policies'][0]} onap.restart.tca
Dictionary Should Contain Key ${expjsonobject['topology_template']['policies'][0]} onap.restart.tca
-DeleteSpecificPolicyV1
- [Documentation] Delete the Monitoring Policy Version 1 of the TCA Policy Type
+RetrieveAllPolicies
+ [Documentation] Retrieve all Policies
+ ${auth}= Create List healthcheck zb!XztG34
+ ${expjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1.json
+ Log Creating session https://${POLICY_API_IP}:6969
+ ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/api/v1/policies headers=${headers}
+ Log Received response from policy ${resp.text}
+ ${expjsonobject} To Json ${expjson}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${expjsonobject['topology_template']['policies'][0]} onap.restart.tca
+
+RetrieveSpecificPolicy
+ [Documentation] Retrieve a specific Policy named 'onap.restart.tca' and version '1.0.0'
+ ${auth}= Create List healthcheck zb!XztG34
+ ${expjson}= Get file ${CURDIR}/data/vCPE.policy.monitoring.input.tosca.v1.json
+ Log Creating session https://${POLICY_API_IP}:6969
+ ${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/api/v1/policies/onap.restart.tca/versions/1.0.0/ headers=${headers}
+ Log Received response from policy ${resp.text}
+ ${expjsonobject} To Json ${expjson}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Dictionary Should Contain Key ${resp.json()['topology_template']['policies'][0]} onap.restart.tca
+ Dictionary Should Contain Key ${expjsonobject['topology_template']['policies'][0]} onap.restart.tca
+
+DeleteSpecificPolicy
+ [Documentation] Delete a specific Policy named 'onap.restart.tca' and version '1.0.0'
${auth}= Create List healthcheck zb!XztG34
Log Creating session https://${POLICY_API_IP}:6969
${session}= Create Session policy https://${POLICY_API_IP}:6969 auth=${auth}
${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= Delete Request policy /policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/1.0.0 headers=${headers}
+ ${resp}= Delete Request policy /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 headers=${headers}
Log Received response from policy ${resp.text}
Should Be Equal As Strings ${resp.status_code} 200
- ${resp}= Delete Request policy /policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/1.0.0 headers=${headers}
+ ${resp}= Delete Request policy /policy/api/v1/policies/onap.restart.tca/versions/1.0.0 headers=${headers}
Should Be Equal As Strings ${resp.status_code} 404
DeleteSpecificPolicyV2
diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env b/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env
index 557860de..e85ab6cc 100644
--- a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env
+++ b/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env
@@ -2,6 +2,7 @@
REQUEST_TIMEOUT=30000
OUTPUT_PATH=/var/certs
CA_NAME=RA
+OUTPUT_TYPE=P12
KEYSTORE_PATH=/etc/onap/aaf/certservice/certs/certServiceClient-keystore.jks
KEYSTORE_PASSWORD=secret
TRUSTSTORE_PATH=/etc/onap/aaf/certservice/certs/truststore.jks
diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env b/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env
index 28411797..57894753 100644
--- a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env
+++ b/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env
@@ -2,6 +2,7 @@
REQUEST_TIMEOUT=30000
OUTPUT_PATH=/var/certs
CA_NAME=RA
+OUTPUT_TYPE=JKS
KEYSTORE_PATH=/etc/onap/aaf/certservice/certs/certServiceClient-keystore.jks
KEYSTORE_PASSWORD=secret
TRUSTSTORE_PATH=/etc/onap/aaf/certservice/certs/truststore.jks
diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py b/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py
index ceff9742..b2399dfb 100644
--- a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py
+++ b/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py
@@ -25,6 +25,7 @@ import shutil
import subprocess
import docker
+import jks
from OpenSSL import crypto
from docker.types import Mount
@@ -42,8 +43,10 @@ class ClientManager:
self.serverKeyPem = mount_path + '/server_key.pem'
self.serverCertPem = mount_path + '/server_cert.pem'
self.keystoreJksPath = mount_path + '/keystore.jks'
+ self.keystoreP12Path = mount_path + '/keystore.p12'
self.keystorePassPath = mount_path + '/keystore.pass'
self.truststoreJksPath = mount_path + '/truststore.jks'
+ self.truststoreP12Path = mount_path + '/truststore.p12'
self.truststorePassPath = mount_path + '/truststore.pass'
# Function Create docker container.
@@ -65,10 +68,27 @@ class ClientManager:
exitcode = container.wait()
return exitcode
+ # Function to validate keystore/truststore can be opened with generated pass-phrase.
+ def can_open_keystore_and_truststore_with_pass(self, container_name):
+ if container_name != NETCONF_PNP_SIM_CONTAINER_NAME:
+ return self.can_open_keystore_and_truststore_jks_files()
+ else:
+ return self.can_open_keystore_and_truststore_p12_files()
+
# Function to validate keystore.jks/truststore.jks can be opened with generated pass-phrase.
- def can_open_keystore_and_truststore_with_pass(self):
- can_open_keystore = self.can_open_jks_file_with_pass_file(self.keystorePassPath, self.keystoreJksPath)
- can_open_truststore = self.can_open_jks_file_with_pass_file(self.truststorePassPath, self.truststoreJksPath)
+ def can_open_keystore_and_truststore_jks_files(self):
+ try:
+ jks.KeyStore.load(self.keystoreJksPath, open(self.keystorePassPath, 'rb').read())
+ jks.KeyStore.load(self.truststoreJksPath, open(self.truststorePassPath, 'rb').read())
+ return True
+ except Exception as e:
+ print("UnExpected Error in validating keystore.jks/truststore.jks: {0}".format(e))
+ return False
+
+ # Function to validate keystore.p12/truststore.p12 can be opened with generated pass-phrase.
+ def can_open_keystore_and_truststore_p12_files(self):
+ can_open_keystore = self.can_open_p12_file_with_pass_file(self.keystorePassPath, self.keystoreP12Path)
+ can_open_truststore = self.can_open_p12_file_with_pass_file(self.truststorePassPath, self.truststoreP12Path)
return can_open_keystore & can_open_truststore
# Method for Uploading Certificate in SDNC-Container.
@@ -76,9 +96,9 @@ class ClientManager:
def can_install_keystore_and_truststore_certs(self, cmd, container_name):
continue_exec = True
if container_name == NETCONF_PNP_SIM_CONTAINER_NAME:
- print("Generating PEM files for {0} from JKS files".format(container_name))
- continue_exec = self.create_pem(self.keystorePassPath, self.keystoreJksPath, self.truststorePassPath,
- self.truststoreJksPath)
+ print("Generating PEM files for {0} from P12 files".format(container_name))
+ continue_exec = self.create_pem(self.keystorePassPath, self.keystoreP12Path, self.truststorePassPath,
+ self.truststoreP12Path)
if continue_exec:
print("Initiate Configuration Push for : {0}".format(container_name))
resp_code = self.execute_bash_config(cmd, container_name)
@@ -89,19 +109,22 @@ class ClientManager:
print("Execution Failed for: {0}".format(container_name))
return False
- def create_pem(self, keystore_pass_file_path, keystore_jks_file_path, truststore_pass_file_path,
- truststore_jks_file_path):
+ def create_pem(self, keystore_pass_path, keystore_p12_path, truststore_pass_path, truststore_p12_path):
# Create [server_key.pem, server_cert.pem, ca.pem] files for Netconf-Pnp-Simulation/TLS Configuration.
try:
- keystore_p12 = self.get_pkcs12(keystore_pass_file_path, keystore_jks_file_path)
- truststore_p12 = self.get_pkcs12(truststore_pass_file_path, truststore_jks_file_path)
with open(self.serverKeyPem, "wb+") as key_file:
- key_file.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, keystore_p12.get_privatekey()))
+ key_file.write(crypto.dump_privatekey(crypto.FILETYPE_PEM,
+ self.get_pkcs12(keystore_pass_path,
+ keystore_p12_path).get_privatekey()))
with open(self.serverCertPem, "wb+") as server_cert_file:
- server_cert_file.write(crypto.dump_certificate(crypto.FILETYPE_PEM, keystore_p12.get_certificate()))
+ server_cert_file.write(crypto.dump_certificate(crypto.FILETYPE_PEM,
+ self.get_pkcs12(keystore_pass_path,
+ keystore_p12_path).get_certificate()))
with open(self.caCertPem, "wb+") as ca_cert_file:
ca_cert_file.write(
- crypto.dump_certificate(crypto.FILETYPE_PEM, truststore_p12.get_ca_certificates()[0]))
+ crypto.dump_certificate(crypto.FILETYPE_PEM,
+ self.get_pkcs12(truststore_pass_path,
+ truststore_p12_path).get_ca_certificates()[0]))
return True
except IOError as err:
print("I/O Error: {0}".format(err))
@@ -110,12 +133,12 @@ class ClientManager:
print("UnExpected Error: {0}".format(e))
return False
- def can_open_jks_file_with_pass_file(self, pass_file_path, jks_file_path):
+ def can_open_p12_file_with_pass_file(self, pass_file_path, p12_file_path):
try:
- if jks_file_path.split('/')[-1] == 'truststore.jks':
- pkcs12 = self.get_pkcs12(pass_file_path, jks_file_path).get_ca_certificates()[0]
+ if p12_file_path.split('/')[-1] == 'truststore.p12':
+ pkcs12 = self.get_pkcs12(pass_file_path, p12_file_path).get_ca_certificates()[0]
else:
- pkcs12 = self.get_pkcs12(pass_file_path, jks_file_path).get_certificate()
+ pkcs12 = self.get_pkcs12(pass_file_path, p12_file_path).get_certificate()
if pkcs12 is None:
return False
return True
@@ -143,11 +166,10 @@ class ClientManager:
shutil.rmtree(self.mount_path)
@staticmethod
- def get_pkcs12(pass_file_path, jks_file_path):
+ def get_pkcs12(pass_file_path, p12_file_path):
# Load PKCS12 Object
password = open(pass_file_path, 'rb').read()
- p12 = crypto.load_pkcs12(open(jks_file_path, 'rb').read(), password)
- return p12
+ return crypto.load_pkcs12(open(p12_file_path, 'rb').read(), password)
@staticmethod
def execute_bash_config(cmd, container_name):
diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot b/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot
index 8e36e65f..a7fbcccc 100644
--- a/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot
+++ b/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot
@@ -76,7 +76,7 @@ Run Cert Service Client And Validate JKS File Creation And Client Exit Code
[Documentation] Run Cert Service Client Container And Validate Exit Code For SDNC
[Arguments] ${env_file} ${CONTAINER_NAME} ${expected_exit_code}
${exit_code}= Run Client Container ${DOCKER_CLIENT_IMAGE} ${CLIENT_CONTAINER_NAME} ${env_file} ${CERT_SERVICE_ADDRESS}${CERT_SERVICE_ENDPOINT} ${CERT_SERVICE_NETWORK}
- ${can_open}= Can Open Keystore And Truststore With Pass
+ ${can_open}= Can Open Keystore And Truststore With Pass ${CONTAINER_NAME}
${install_certs}= Can Install Keystore And Truststore Certs ${CONF_SCRIPT} ${CONTAINER_NAME}
Remove Client Container And Save Logs ${CLIENT_CONTAINER_NAME} positive_path
Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return: ${exitcode} exit code, but expected: ${expected_exit_code}
diff --git a/tests/usecases-5G-bulkpm/5G-bulkpm/BulkpmE2E.robot b/tests/usecases-5G-bulkpm/5G-bulkpm/BulkpmE2E.robot
index fe3b1cec..660c5f64 100644
--- a/tests/usecases-5G-bulkpm/5G-bulkpm/BulkpmE2E.robot
+++ b/tests/usecases-5G-bulkpm/5G-bulkpm/BulkpmE2E.robot
@@ -25,7 +25,7 @@ ${CLI_EXEC_CLI_DFC_LOG_GREP} grep "Datafile file published" %{WORKSP
${CLI_EXEC_CLI_FILECONSUMER_CP} docker cp fileconsumer-node:/opt/app/subscriber/delivery/A20181002.0000-1000-0015-1000_5G.xml.M %{WORKSPACE}
${CLI_EXEC_RENAME_METADATA} mv %{WORKSPACE}/A20181002.0000-1000-0015-1000_5G.xml.M %{WORKSPACE}/archives/metadata.json
${CLI_EXEC_CLI_PMMAPPER_LOG} docker exec dcaegen2-pm-mapper /bin/sh -c "cat /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log" > %{WORKSPACE}/archives/pmmapper_docker.log
-${CLI_EXEC_CLI_PMMAPPER_LOG_GREP} grep "XML validation successful Event" %{WORKSPACE}/archives/pmmapper_docker.log
+${CLI_EXEC_CLI_PMMAPPER_LOG_GREP} grep "XML validation successful" %{WORKSPACE}/archives/pmmapper_docker.log
${CLI_EXEC_CLI_PMMAPPER_LOG_GREP_VES} grep "Successfully published VES events to messagerouter" %{WORKSPACE}/archives/pmmapper_docker.log
${metadataSchemaPath} %{WORKSPACE}/tests/usecases-5G-bulkpm/5G-bulkpm/assets/metadata.schema.json
${metadataJsonPath} %{WORKSPACE}/archives/metadata.json
@@ -113,7 +113,7 @@ Verify PM-Mapper successfully receives uncompressed the PM XML file
${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_PMMAPPER_LOG_GREP} shell=yes
Log ${cli_cmd_output.stdout}
Should Be Equal As Strings ${cli_cmd_output.rc} 0
- Should Contain ${cli_cmd_output.stdout} XML validation successful Event
+ Should Contain ${cli_cmd_output.stdout} XML validation successful
Verify PM-Mapper successfully publishes VES event the Message Router
[Tags] Bulk_PM_E2E_08