aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/clamp/APIs/01__Create_CL_Holmes.robot26
-rw-r--r--tests/clamp/APIs/02__Create_CL_TCA.robot40
-rw-r--r--tests/clamp/APIs/03__VariousApis.robot37
-rw-r--r--tests/clamp/APIs/04__Verify_API_Models.robot67
-rwxr-xr-xtests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot74
-rwxr-xr-xtests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot2
-rw-r--r--tests/dcaegen2-collectors-hv-ves/testcases/__init__.robot2
-rw-r--r--tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot4
-rw-r--r--tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/too-big-payload/dcae-too-big-payload-request.json24
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml88
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json12
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/meas_result.xml24
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/no_managed_element.xml27
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/no_measdata.xml11
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/valid_metadata.json12
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/assets/valid_pm.xml678
-rw-r--r--tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot131
-rw-r--r--tests/dcaegen2/prh-testcases/resources/.env3
-rw-r--r--tests/dcaegen2/prh-testcases/resources/consul.d/cbs.json10
-rw-r--r--tests/dcaegen2/prh-testcases/resources/docker-compose.yml54
-rw-r--r--tests/multicloud-fcaps/provision/sanity_test_multicloud.robot20
-rw-r--r--tests/multicloud-k8s/data/create_rbdefinition.json7
-rw-r--r--tests/multicloud-k8s/multicloud-k8s-test.robot66
-rw-r--r--tests/multicloud-lenovo/provision/sanity_test_multicloud.robot22
-rw-r--r--tests/policy/api/api-test.robot4
-rw-r--r--tests/policy/distribution/distribution-test.robot10
-rw-r--r--tests/policy/xacml-pdp/xacml-pdp-test.robot28
-rw-r--r--tests/usecases/5G-bulkpm/BulkpmE2E.robot2
28 files changed, 1291 insertions, 194 deletions
diff --git a/tests/clamp/APIs/01__Create_CL_Holmes.robot b/tests/clamp/APIs/01__Create_CL_Holmes.robot
index ce4c8df6..be63f22f 100644
--- a/tests/clamp/APIs/01__Create_CL_Holmes.robot
+++ b/tests/clamp/APIs/01__Create_CL_Holmes.robot
@@ -19,29 +19,3 @@ Get Requests health check ok
Create the sessions
${resp}= Get Request ${clamp_session} /restservices/clds/v1/healthcheck
Should Be Equal As Strings ${resp.status_code} 200
-
-Get Requests verify test template found
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/cldsTempate/template-names
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain Match ${resp} *templateHolmes1*
- Should Contain Match ${resp} *templateHolmes2*
- Should Not Contain Match ${resp} *templateHolmes99*
-
-Put Requests to add Close Loop ClHolmes1
- ${data}= Get Binary File ${CURDIR}${/}data${/}createClHolmes1.json
- &{headers}= Create Dictionary Content-Type=application/json
- ${resp}= Put Request ${clamp_session} /restservices/clds/v1/clds/model/ClHolmes1 data=${data} headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Put Requests to add Close Loop ClHolmes2
- ${data}= Get Binary File ${CURDIR}${/}data${/}createClHolmes2.json
- &{headers}= Create Dictionary Content-Type=application/json
- ${resp}= Put Request ${clamp_session} /restservices/clds/v1/clds/model/ClHolmes2 data=${data} headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Get Requests verify CL1 found
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model-names
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain Match ${resp} *ClHolmes1*
- Should Contain Match ${resp} *ClHolmes2*
- Should Not Contain Match ${resp} *ClHolmes99*
diff --git a/tests/clamp/APIs/02__Create_CL_TCA.robot b/tests/clamp/APIs/02__Create_CL_TCA.robot
deleted file mode 100644
index 15ab4b16..00000000
--- a/tests/clamp/APIs/02__Create_CL_TCA.robot
+++ /dev/null
@@ -1,40 +0,0 @@
-*** Settings ***
-Library Collections
-Library RequestsLibrary
-Library OperatingSystem
-Library json
-
-*** Variables ***
-${login} admin
-${passw} password
-
-*** Test Cases ***
-Get Requests health check ok
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/healthcheck
- Should Be Equal As Strings ${resp.status_code} 200
-
-Get Requests verify test template found
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/cldsTempate/template-names
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain Match ${resp} *templateTCA1*
- Should Contain Match ${resp} *CA2*
- Should Not Contain Match ${resp} *templateTCA99*
-
-Put Requests to add Close Loop ClHolmes1
- ${data}= Get Binary File ${CURDIR}${/}data${/}createClTCA1.json
- &{headers}= Create Dictionary Content-Type=application/json
- ${resp}= Put Request ${clamp_session} /restservices/clds/v1/clds/model/ClTCA1 data=${data} headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Put Requests to add Close Loop ClHolmes2
- ${data}= Get Binary File ${CURDIR}${/}data${/}createClTCA2.json
- &{headers}= Create Dictionary Content-Type=application/json
- ${resp}= Put Request ${clamp_session} /restservices/clds/v1/clds/model/ClTCA2 data=${data} headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Get Requests verify CL1 found
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model-names
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain Match ${resp} *ClTCA1*
- Should Contain Match ${resp} *ClTCA2*
- Should Not Contain Match ${resp} *ClTCA99*
diff --git a/tests/clamp/APIs/03__VariousApis.robot b/tests/clamp/APIs/03__VariousApis.robot
deleted file mode 100644
index f3272839..00000000
--- a/tests/clamp/APIs/03__VariousApis.robot
+++ /dev/null
@@ -1,37 +0,0 @@
-*** Settings ***
-Library Collections
-Library RequestsLibrary
-Library OperatingSystem
-Library json
-
-*** Variables ***
-${login} admin
-${passw} password
-
-*** Test Cases ***
-Get Clamp properties
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/cldsInfo
- Dictionary Should Contain Key ${resp.json()} userName
- Dictionary Should Contain Key ${resp.json()} permissionReadCl
-
-Get Clamp Info
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/cldsInfo
- Dictionary Should Contain Key ${resp.json()} userName
- Dictionary Should Contain Key ${resp.json()} cldsVersion
-
-Get model bpmn by name
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model/bpmn/ClHolmes1
- Should Contain Match ${resp} *StartEvent_*
- Should Contain Match ${resp} *VesCollector_*
- Should Contain Match ${resp} *Holmes_*
- Should Contain Match ${resp} *Policy_*
- Should Contain Match ${resp} *EndEvent_*
-
-Get model names
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model-names
- Should Contain Match ${resp} *ClHolmes1*
- Should Contain Match ${resp} *ClHolmes2*
- Should Contain Match ${resp} *ClTCA1*
- Should Contain Match ${resp} *ClTCA2*
- Should Not Contain Match ${resp} *ClHolmes99*
- Should Not Contain Match ${resp} *ClTCA99*
diff --git a/tests/clamp/APIs/04__Verify_API_Models.robot b/tests/clamp/APIs/04__Verify_API_Models.robot
deleted file mode 100644
index 9a29a918..00000000
--- a/tests/clamp/APIs/04__Verify_API_Models.robot
+++ /dev/null
@@ -1,67 +0,0 @@
-*** Settings ***
-Library Collections
-Library RequestsLibrary
-Library OperatingSystem
-Library json
-
-*** Variables ***
-${login} admin
-${passw} password
-
-*** Test Cases ***
-Verify HolmesModel1
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model/ClHolmes1
- Should Contain Match ${resp} *plateHolmes1*
- Should Contain Match ${resp} *DC1*
- Should Contain Match ${resp} *DC2*
- Should Contain Match ${resp} *Policy1*
- Should Contain Match ${resp} *vnfRecipe*
- Should Contain Match ${resp} *180*
- Should Contain Match ${resp} *345*
- Should Contain Match ${resp} *Config Policy name1*
-
-Verify HolmesModel2
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model/ClHolmes2
- Should Contain Match ${resp} *plateHolmes2*
- Should Contain Match ${resp} *DC2*
- Should Contain Match ${resp} *DC3*
- Should Contain Match ${resp} *Policy2*
- Should Contain Match ${resp} *vnfRecipe*
- Should Contain Match ${resp} *migrate*
- Should Contain Match ${resp} *360*
- Should Contain Match ${resp} *345*
- Should Contain Match ${resp} *Config Policy Name2*
-
-Verify TCAModel1
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model/ClTCA1
- Should Contain Match ${resp} *plateTCA1*
- Should Contain Match ${resp} *enbRecipe*
- Should Contain Match ${resp} *DC1*
- Should Contain Match ${resp} *DC2*
- Should Contain Match ${resp} *Policy3*
- Should Contain Match ${resp} *345*
- Should Contain Match ${resp} *200*
- Should Contain Match ${resp} *ONSET*
-
-Verify TCAModel2
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model/ClTCA2
- Should Contain Match ${resp} *lateTCA2*
- Should Contain Match ${resp} *enbRecipe*
- Should Contain Match ${resp} *DC1*
- Should Contain Match ${resp} *DC2*
- Should Contain Match ${resp} *DC3*
- Should Contain Match ${resp} *Policy4*
- Should Contain Match ${resp} *tcaPol*
- Should Contain Match ${resp} *345*
- Should Contain Match ${resp} *300*
- Should Contain Match ${resp} *VM*
-
-Get model names
- ${resp}= Get Request ${clamp_session} /restservices/clds/v1/clds/model-names
- Should Contain Match ${resp} *ClHolmes1*
- Should Contain Match ${resp} *ClHolmes2*
- Should Contain Match ${resp} *ClTCA1*
- Should Contain Match ${resp} *ClTCA2*
- Should Not Contain Match ${resp} *ClTCA99*
- Should Not Contain Match ${resp} *ClHolmes99*
-
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot
new file mode 100755
index 00000000..7020042b
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot
@@ -0,0 +1,74 @@
+*** Settings ***
+Library OperatingSystem
+Library RequestsLibrary
+
+*** Variables ***
+
+
+*** Test Cases ***
+
+Heartbeat test
+ [Documentation] Check DFC heartbeat
+ Heartbeat I'm living
+
+Stop test
+ [Documentation] Check DFC stop
+ Stop Datafile Service has already been stopped!
+
+Start test
+ [Documentation] Check DFC start
+ Start Datafile Service has been started!
+
+Heartbeat test - secure
+ [Documentation] Check DFC heartbeat, secure
+ Heartbeat-secure I'm living
+
+Stop test - secure
+ [Documentation] Check DFC stop, secure
+ Stop-secure Datafile Service has already been stopped!
+
+
+Start test - secure
+ [Documentation] Check DFC start, secure
+ Start-secure Datafile Service has been started!
+
+
+#PRobably move definitions of common Keywords to a common file
+
+*** Keywords ***
+#Probably simplyfy the test cases by using variables for port numbers/urls etc
+Heartbeat
+ [Arguments] ${respbody}
+ Create Session session http://localhost:8100/heartbeat
+ ${resp}= Get Request session /
+ Should Be Equal ${resp.text} ${respbody}
+
+Heartbeat-secure
+ [Arguments] ${respbody}
+ Create Session session https://localhost:8433/heartbeat
+ ${resp}= Get Request session /
+ Should Be Equal ${resp.text} ${respbody}
+
+Stop
+ [Arguments] ${respbody}
+ Create Session session http://localhost:8100/stopDatafile
+ ${resp}= Get Request session /
+ Should Be Equal ${resp.text} ${respbody}
+
+Stop-secure
+ [Arguments] ${respbody}
+ Create Session session https://localhost:8433/stopDatafile
+ ${resp}= Get Request session /
+ Should Be Equal ${resp.text} ${respbody}
+
+Start
+ [Arguments] ${respbody}
+ Create Session session http://localhost:8100/start
+ ${resp}= Get Request session /
+ Should Be Equal ${resp.text} ${respbody}
+
+Start-secure
+ [Arguments] ${respbody}
+ Create Session session https://localhost:8433/start
+ ${resp}= Get Request session /
+ Should Be Equal ${resp.text} ${respbody}
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot
new file mode 100755
index 00000000..c5ea9c60
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation Management Interface suite
diff --git a/tests/dcaegen2-collectors-hv-ves/testcases/__init__.robot b/tests/dcaegen2-collectors-hv-ves/testcases/__init__.robot
index 60580083..2b6a5786 100644
--- a/tests/dcaegen2-collectors-hv-ves/testcases/__init__.robot
+++ b/tests/dcaegen2-collectors-hv-ves/testcases/__init__.robot
@@ -40,7 +40,7 @@ ${HTTP_METHOD_URL} http://
${CONSUL_CONTAINER_HOST} consul
${CONSUL_CONTAINER_PORT} 8500
-${CONSUL_VES_HV_CONFIGURATION_KEY_PATH} /v1/kv/veshv-config
+${CONSUL_VES_HV_CONFIGURATION_KEY_PATH} /v1/kv/dcae-hv-ves-collector
${DCAE_APP_CONTAINER_HOST} dcae-app-simulator
${DCAE_APP_CONTAINER_PORT} 6063
diff --git a/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot b/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot
index 1850df61..c22c936f 100644
--- a/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot
+++ b/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot
@@ -37,7 +37,8 @@ Too big payload message handling
Send Messages From xNF Simulators ${XNF_SIMULATOR} ${XNF_TOO_BIG_PAYLOAD_REQUEST}
Wait until keyword succeeds 60 sec 5 sec
- ... Assert Dcae App Consumed Less Equal Than ${DCAE_APP_API_MESSAGES_COUNT_URL} ${AMOUNT_25000}
+ ... Assert Dcae App Consumed ${DCAE_APP_API_MESSAGES_COUNT_URL} ${AMOUNT_25000}
+ Assert Dcae App Consumed Proper Messages ${DCAE_APP_API_MESSAGES_VALIDATION_URL} ${DCAE_TOO_BIG_PAYLOAD_REQUEST}
Invalid wire frame message handling
@@ -85,6 +86,7 @@ ${XNF_INVALID_GPB_DATA_REQUEST} ${VES_HV_SCENARIOS}/invalid-gpb-d
${XNF_UNSUPPORTED_DOMAIN_REQUEST} ${VES_HV_SCENARIOS}/unsupported-domain/xnf-unsupported-domain-request.json
${DCAE_FIXED_PAYLOAD_REQUEST} ${VES_HV_SCENARIOS}/fixed-payload/dcae-fixed-payload-request.json
+${DCAE_TOO_BIG_PAYLOAD_REQUEST} ${VES_HV_SCENARIOS}/too-big-payload/dcae-too-big-payload-request.json
${DCAE_INVALID_WIRE_FRAME_REQUEST} ${VES_HV_SCENARIOS}/invalid-wire-frame/dcae-invalid-wire-frame-request.json
${DCAE_INVALID_GPB_DATA_REQUEST} ${VES_HV_SCENARIOS}/invalid-gpb-data/dcae-invalid-gpb-data-request.json
${DCAE_UNSUPPORTED_DOMAIN_REQUEST} ${VES_HV_SCENARIOS}/unsupported-domain/dcae-unsupported-domain-request.json
diff --git a/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/too-big-payload/dcae-too-big-payload-request.json b/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/too-big-payload/dcae-too-big-payload-request.json
new file mode 100644
index 00000000..1820d08f
--- /dev/null
+++ b/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/too-big-payload/dcae-too-big-payload-request.json
@@ -0,0 +1,24 @@
+[
+ {
+ "commonEventHeader": {
+ "version": "sample-version",
+ "domain": "perf3gpp",
+ "sequence": 1,
+ "priority": 1,
+ "eventId": "sample-event-id",
+ "eventName": "sample-event-name",
+ "eventType": "sample-event-type",
+ "startEpochMicrosec": 120034455,
+ "lastEpochMicrosec": 120034455,
+ "nfNamingCode": "sample-nf-naming-code",
+ "nfcNamingCode": "sample-nfc-naming-code",
+ "reportingEntityId": "sample-reporting-entity-id",
+ "reportingEntityName": "sample-reporting-entity-name",
+ "sourceId": "sample-source-id",
+ "sourceName": "sample-source-name",
+ "vesEventListenerVersion": "7.2.0"
+ },
+ "messageType": "VALID",
+ "messagesAmount": 25000
+ }
+]
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml
new file mode 100644
index 00000000..4d20d4b4
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader fileFormatVersion="32.435 V7.0" vendorName="Company NN" dnPrefix="DC=a1.companyNN.com,SubNetwork=1,IRPAgent=1">
+ <fileSender localDn="SubNetwork=CountryNN,MeContext=MEC-Gbg-1,ManagedElement=RNC-Gbg-1" elementType="RNC"/>
+ <measCollec beginTime="2000-03-01T14:00:00+02:00"/>
+ </fileHeader>
+ <measData>
+ <managedElement 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="12">86,87,2,6,77,96,75,33,24</r>
+ <r p="13">40</r>
+ <r p="14">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>
+ <measCollec endTime="2000-03-01T14:15:00+02:00"/>
+ </fileFooter>
+</measCollecFile>
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json b/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json
new file mode 100644
index 00000000..0abf8e3e
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json
@@ -0,0 +1,12 @@
+{
+ "productName": "gnb",
+ "vendorName": "Anon",
+ "lastEpochMicrosec": "1538478000000",
+ "sourceName": "oteNB5309",
+ "startEpochMicrosec": "1538478900000",
+ "timeZoneOffset": "UTC+05.00",
+ "location": "ftpes://192.168.0.101:22/ftp/rop/A20161224.1045-1100.bin.gz",
+ "compression": "gzip",
+ "fileFormatType": "org.3GPP.32.435#measCollec",
+ "fileFormatVersion": "V9"
+ } \ No newline at end of file
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/meas_result.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/meas_result.xml
new file mode 100644
index 00000000..269fdf1d
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/meas_result.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader dnPrefix="some dnPrefix" vendorName="FooBar Ltd"
+ fileFormatVersion="32.435 V10.0">
+ <fileSender localDn="Dublin"/>
+ <measCollec beginTime="2018-10-02T12:00:00+01:00"/>
+ </fileHeader>
+ <measData>
+ <managedElement swVersion="r0.1" localDn="Dublin"/>
+ <measInfo measInfoId="some measInfoId">
+ <job jobId="jobId"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measTypes>a b c</measTypes>
+ <measValue measObjLdn="objLdn">
+ <measResults>76 27 98</measResults>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ </measData>
+ <fileFooter>
+ <measCollec endTime="2018-10-02T12:15:00+01:00"/>
+ </fileFooter>
+</measCollecFile>
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/no_managed_element.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/no_managed_element.xml
new file mode 100644
index 00000000..23e5c215
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/no_managed_element.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader dnPrefix="some dnPrefix" vendorName="FooBar Ltd"
+ fileFormatVersion="32.435 V10.0">
+ <fileSender localDn="Dublin"/>
+ <measCollec beginTime="2018-10-02T12:00:00+01:00"/>
+ </fileHeader>
+ <measData>
+ <measInfo measInfoId="some measInfoId">
+ <job jobId="some job Id"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="some duration"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">a</measType>
+ <measType p="2">b</measType>
+ <measType p="3">c</measType>
+ <measValue measObjLdn="some measObjLdn">
+ <r p="1">86</r>
+ <r p="2">67</r>
+ <r p="3">14</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ </measData>
+ <fileFooter>
+ <measCollec endTime="2018-10-02T12:15:00+01:00"/>
+ </fileFooter>
+</measCollecFile> \ No newline at end of file
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/no_measdata.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/no_measdata.xml
new file mode 100644
index 00000000..855b2e91
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/no_measdata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader dnPrefix="some dnPrefix" vendorName="FooBar Ltd"
+ fileFormatVersion="32.435 V10.0">
+ <fileSender localDn="Dublin"/>
+ <measCollec beginTime="2018-10-02T12:00:00+01:00"/>
+ </fileHeader>
+ <fileFooter>
+ <measCollec endTime="2018-10-02T12:15:00+01:00"/>
+ </fileFooter>
+</measCollecFile>
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/valid_metadata.json b/tests/dcaegen2-pmmapper/pmmapper/assets/valid_metadata.json
new file mode 100644
index 00000000..da809d7b
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/valid_metadata.json
@@ -0,0 +1,12 @@
+{
+ "productName": "gnb",
+ "vendorName": "Ericsson",
+ "lastEpochMicrosec": "1538478000000",
+ "sourceName": "oteNB5309",
+ "startEpochMicrosec": "1538478900000",
+ "timeZoneOffset": "UTC+05.00",
+ "location": "ftpes://192.168.0.101:22/ftp/rop/A20161224.1045-1100.bin.gz",
+ "compression": "gzip",
+ "fileFormatType": "org.3GPP.32.435#measCollec",
+ "fileFormatVersion": "V9"
+ } \ No newline at end of file
diff --git a/tests/dcaegen2-pmmapper/pmmapper/assets/valid_pm.xml b/tests/dcaegen2-pmmapper/pmmapper/assets/valid_pm.xml
new file mode 100644
index 00000000..989b241f
--- /dev/null
+++ b/tests/dcaegen2-pmmapper/pmmapper/assets/valid_pm.xml
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader dnPrefix="SubNetwork=NETSimW,MeContext=LTE73dg2ERBS00019" vendorName="Ericsson AB" fileFormatVersion="32.435 V10.0">
+ <fileSender localDn="Dublin"/>
+ <measCollec beginTime="2018-10-02T12:00:00Z"/>
+ </fileHeader>
+ <measData>
+ <managedElement swVersion="r0.1" localDn="Dublin"/>
+ <measInfo measInfoId="ENodeBFunction">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmLicConnectedUsersLevSamp</measType>
+ <measType p="2">pmPagS1Discarded</measType>
+ <measType p="3">pmRrcConnBrEnbMax</measType>
+ <measType p="4">pmLic5MHzSectorCarrierActual</measType>
+ <measType p="5">pmLic5Plus5MHzScTddActual</measType>
+ <measType p="6">pmZtemporary34</measType>
+ <measType p="7">pmLicDlCapLicense</measType>
+ <measType p="8">pmPagS1EdrxReceived</measType>
+ <measType p="9">pmZtemporary35</measType>
+ <measType p="10">pmLicConnectedUsersLevSum</measType>
+ <measType p="11">pmLicDlPrbCapLicense</measType>
+ <measType p="12">pmPagS1RecDistr</measType>
+ <measType p="13">pmRrcConnBrEnbLevSamp</measType>
+ <measType p="14">pmLicUlPrbCapLicense</measType>
+ <measType p="15">pmPagS1EdrxDiscarded</measType>
+ <measType p="16">pmRimAssocMax</measType>
+ <measType p="17">pmLicUlCapLicense</measType>
+ <measType p="18">pmLicConnectedUsersDistr</measType>
+ <measType p="19">pmMoFootprintMax</measType>
+ <measType p="20">pmLic5Plus5MHzScFddActual</measType>
+ <measType p="21">pmLicConnectedUsersTimeCong</measType>
+ <measType p="22">pmPagS1Received</measType>
+ <measType p="23">pmPagS1DiscDistr</measType>
+ <measType p="24">pmRimReportErr</measType>
+ <measType p="25">pmLicConnectedUsersMax</measType>
+ <measType p="26">pmRrcConnBrEnbLevSum</measType>
+ <measType p="27">pmLicConnectedUsersActual</measType>
+ <measType p="28">pmLicConnectedUsersLicense</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1">
+ <r p="1">4</r>
+ <r p="2">6</r>
+ <r p="3">68</r>
+ <r p="4">2759</r>
+ <r p="5">2738</r>
+ <r p="6">50</r>
+ <r p="7">20</r>
+ <r p="8">8</r>
+ <r p="9">45</r>
+ <r p="10">9</r>
+ <r p="11">87</r>
+ <r p="12">86,87,2,6,77,96,75,33,24</r>
+ <r p="13">40</r>
+ <r p="14">90</r>
+ <r p="15">2</r>
+ <r p="16">98</r>
+ <r p="17">75</r>
+ <r p="18">36,30,45,68,74,44,64,83,17,52,36,99,46,59,71,24,49,33,83,75,43,30,74,28</r>
+ <r p="19">83</r>
+ <r p="20">2634</r>
+ <r p="21">10</r>
+ <r p="22">69</r>
+ <r p="23">58,2,40,80,81,47,73,100,91</r>
+ <r p="24">32</r>
+ <r p="25">37</r>
+ <r p="26">16</r>
+ <r p="27">38</r>
+ <r p="28">92</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="EUtranCellRelation">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmHoExeSuccLteInterFRedirectCsg</measType>
+ <measType p="2">pmHoPrepSuccNonMob</measType>
+ <measType p="3">pmZtemporary73</measType>
+ <measType p="4">pmHoOscInterF</measType>
+ <measType p="5">pmLbQualifiedUe</measType>
+ <measType p="6">pmHoPrepAttLteInterFRedirectCsg</measType>
+ <measType p="7">pmZtemporary74</measType>
+ <measType p="8">pmLbTpAcceptedUe</measType>
+ <measType p="9">pmHoExeSuccLteInterF</measType>
+ <measType p="10">pmHoExeAttLteIntraFTuneOut</measType>
+ <measType p="11">pmHoPrepSuccLteIntraF</measType>
+ <measType p="12">pmLbTpEvalUe</measType>
+ <measType p="13">pmHoPrepAttLteInterFMbms</measType>
+ <measType p="14">pmHoExeAttLteSpifho</measType>
+ <measType p="15">pmCaRedirectQualifiedUe</measType>
+ <measType p="16">pmHoWrongCellReestIntraF</measType>
+ <measType p="17">pmAtoQualifiedUe</measType>
+ <measType p="18">pmHoWrongCellInterF</measType>
+ <measType p="19">pmHoExeAttLteInterFMbms</measType>
+ <measType p="20">pmHoExeAttLteIntraF</measType>
+ <measType p="21">pmZtemporary76</measType>
+ <measType p="22">pmHoExeAttNonMob</measType>
+ <measType p="23">pmHoExeSuccNonMob</measType>
+ <measType p="24">pmHoTooEarlyHoIntraF</measType>
+ <measType p="25">pmCaRedirectMeasRepUe</measType>
+ <measType p="26">pmHoPrepSuccLteInterFUl</measType>
+ <measType p="27">pmHoExeSuccLteInterFLb</measType>
+ <measType p="28">pmHoExeSuccLteIntraF</measType>
+ <measType p="29">pmHoExeSuccLteInterFMbms</measType>
+ <measType p="30">pmHoWrongCellReestInterF</measType>
+ <measType p="31">pmHoPrepSuccLteInterFRedirectCsg</measType>
+ <measType p="32">pmHoExeAttLteInterFRedirectCsg</measType>
+ <measType p="33">pmSpifhoReportedUe</measType>
+ <measType p="34">pmZtemporary75</measType>
+ <measType p="35">pmZtemporary79</measType>
+ <measType p="36">pmHoPrepAttLteSpifho</measType>
+ <measType p="37">pmAtoMeasRepUe</measType>
+ <measType p="38">pmHoTooEarlyHoInterF</measType>
+ <measType p="39">pmZtemporary78</measType>
+ <measType p="40">pmHoPrepAttLteInterFUl</measType>
+ <measType p="41">pmHoExeOutAttLteInterFQci1</measType>
+ <measType p="42">pmHoExeAttLteInterF</measType>
+ <measType p="43">pmZtemporary36</measType>
+ <measType p="44">pmZtemporary77</measType>
+ <measType p="45">pmHoPrepAttLteInterF</measType>
+ <measType p="46">pmHoPrepSuccLteInterFCaRedirect</measType>
+ <measType p="47">pmHoPrepSuccLteInterFLb</measType>
+ <measType p="48">pmZtemporary72</measType>
+ <measType p="49">pmHoExeSuccLteIntraFTuneOut</measType>
+ <measType p="50">pmHoExecSuccLteInterFCaRedirect</measType>
+ <measType p="51">pmHoExecAttLteInterFCaRedirect</measType>
+ <measType p="52">pmHoPrepAttLteInterFLb</measType>
+ <measType p="53">pmHoOscIntraF</measType>
+ <measType p="54">pmHoPrepAttLteIntraF</measType>
+ <measType p="55">pmHoPrepSuccLteInterF</measType>
+ <measType p="56">pmHoTooLateHoInterF</measType>
+ <measType p="57">pmHoPrepAttLteInterFCaRedirect</measType>
+ <measType p="58">pmHoExeAttLteInterFLb</measType>
+ <measType p="59">pmHoTooLateHoIntraF</measType>
+ <measType p="60">pmHoPrepSuccLteInterFMbms</measType>
+ <measType p="61">pmHoPrepAttNonMob</measType>
+ <measType p="62">pmLbTpUlAcceptedUe</measType>
+ <measType p="63">pmHoExeSuccLteSpifho</measType>
+ <measType p="64">pmHoExeOutSuccLteInterFQci1</measType>
+ <measType p="65">pmLbMeasRepUe</measType>
+ <measType p="66">pmHoPrepSuccLteSpifho</measType>
+ <measType p="67">pmHoWrongCellIntraF</measType>
+<measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,EUtranCellFDD=LTE73dg2ERBS00019-1,EUtranFreqRelation=1,EUtranCellRelation=3">
+ <r p="1">2</r>
+ <r p="2">5</r>
+ <r p="3">91</r>
+ <r p="4">4</r>
+ <r p="5">37</r>
+ <r p="6">57</r>
+ <r p="7">23</r>
+ <r p="8">57</r>
+ <r p="9">94</r>
+ <r p="10">1</r>
+ <r p="11">88</r>
+ <r p="12">88</r>
+ <r p="13">92</r>
+ <r p="14">54</r>
+ <r p="15">43</r>
+ <r p="16">15</r>
+ <r p="17">97</r>
+ <r p="18">58</r>
+ <r p="19">40</r>
+ <r p="20">57</r>
+ <r p="21">24</r>
+ <r p="22">94</r>
+ <r p="23">92</r>
+ <r p="24">40</r>
+ <r p="25">2</r>
+ <r p="26">52</r>
+ <r p="27">17</r>
+ <r p="28">70</r>
+ <r p="29">40</r>
+ <r p="30">24</r>
+ <r p="31">64</r>
+ <r p="32">49</r>
+ <r p="33">11</r>
+ <r p="34">52</r>
+ <r p="35">74</r>
+ <r p="36">73</r>
+ <r p="37">45</r>
+ <r p="38">26</r>
+ <r p="39">74</r>
+ <r p="40">16</r>
+ <r p="41">80</r>
+ <r p="42">41</r>
+ <r p="43">99</r>
+ <r p="44">36</r>
+ <r p="45">73</r>
+ <r p="46">86</r>
+ <r p="47">92</r>
+ <r p="48">49</r>
+ <r p="49">22</r>
+ <r p="50">36</r>
+ <r p="51">43</r>
+ <r p="52">98</r>
+ <r p="53">74</r>
+ <r p="54">23</r>
+ <r p="55">76</r>
+ <r p="56">78</r>
+ <r p="57">22</r>
+ <r p="58">57</r>
+ <r p="59">37</r>
+ <r p="60">78</r>
+ <r p="61">56</r>
+ <r p="62">21</r>
+ <r p="63">44</r>
+ <r p="64">70</r>
+ <r p="65">6</r>
+ <r p="66">29</r>
+ <r p="67">75</r>
+ <suspect>false</suspect>
+ </measValue>
+<measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,EUtranCellFDD=LTE73dg2ERBS00019-1,EUtranFreqRelation=1,EUtranCellRelation=4">
+ <r p="1">22</r>
+ <r p="2">59</r>
+ <r p="3">10</r>
+ <r p="4">79</r>
+ <r p="5">17</r>
+ <r p="6">20</r>
+ <r p="7">47</r>
+ <r p="8">92</r>
+ <r p="9">41</r>
+ <r p="10">11</r>
+ <r p="11">6</r>
+ <r p="12">9</r>
+ <r p="13">54</r>
+ <r p="14">37</r>
+ <r p="15">8</r>
+ <r p="16">66</r>
+ <r p="17">96</r>
+ <r p="18">65</r>
+ <r p="19">66</r>
+ <r p="20">91</r>
+ <r p="21">44</r>
+ <r p="22">73</r>
+ <r p="23">86</r>
+ <r p="24">7</r>
+ <r p="25">33</r>
+ <r p="26">54</r>
+ <r p="27">97</r>
+ <r p="28">54</r>
+ <r p="29">39</r>
+ <r p="30">3</r>
+ <r p="31">28</r>
+ <r p="32">20</r>
+ <r p="33">65</r>
+ <r p="34">85</r>
+ <r p="35">59</r>
+ <r p="36">53</r>
+ <r p="37">41</r>
+ <r p="38">9</r>
+ <r p="39">60</r>
+ <r p="40">65</r>
+ <r p="41">55</r>
+ <r p="42">12</r>
+ <r p="43">83</r>
+ <r p="44">44</r>
+ <r p="45">96</r>
+ <r p="46">30</r>
+ <r p="47">16</r>
+ <r p="48">64</r>
+ <r p="49">58</r>
+ <r p="50">53</r>
+ <r p="51">80</r>
+ <r p="52">58</r>
+ <r p="53">66</r>
+ <r p="54">13</r>
+ <r p="55">51</r>
+ <r p="56">44</r>
+ <r p="57">93</r>
+ <r p="58">82</r>
+ <r p="59">38</r>
+ <r p="60">38</r>
+ <r p="61">17</r>
+ <r p="62">26</r>
+ <r p="63">64</r>
+ <r p="64">49</r>
+ <r p="65">63</r>
+ <r p="66">43</r>
+ <r p="67">46</r>
+ <suspect>false</suspect>
+ </measValue>
+<measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,EUtranCellFDD=LTE73dg2ERBS00019-1,EUtranFreqRelation=1,EUtranCellRelation=5">
+ <r p="1">78</r>
+ <r p="2">37</r>
+ <r p="3">1</r>
+ <r p="4">11</r>
+ <r p="5">85</r>
+ <r p="6">26</r>
+ <r p="7">13</r>
+ <r p="8">1</r>
+ <r p="9">75</r>
+ <r p="10">3</r>
+ <r p="11">92</r>
+ <r p="12">4</r>
+ <r p="13">33</r>
+ <r p="14">93</r>
+ <r p="15">41</r>
+ <r p="16">70</r>
+ <r p="17">14</r>
+ <r p="18">52</r>
+ <r p="19">81</r>
+ <r p="20">82</r>
+ <r p="21">72</r>
+ <r p="22">38</r>
+ <r p="23">26</r>
+ <r p="24">52</r>
+ <r p="25">65</r>
+ <r p="26">93</r>
+ <r p="27">59</r>
+ <r p="28">59</r>
+ <r p="29">70</r>
+ <r p="30">3</r>
+ <r p="31">22</r>
+ <r p="32">40</r>
+ <r p="33">94</r>
+ <r p="34">19</r>
+ <r p="35">92</r>
+ <r p="36">11</r>
+ <r p="37">73</r>
+ <r p="38">51</r>
+ <r p="39">6</r>
+ <r p="40">71</r>
+ <r p="41">43</r>
+ <r p="42">64</r>
+ <r p="43">49</r>
+ <r p="44">88</r>
+ <r p="45">74</r>
+ <r p="46">15</r>
+ <r p="47">67</r>
+ <r p="48">42</r>
+ <r p="49">94</r>
+ <r p="50">16</r>
+ <r p="51">10</r>
+ <r p="52">38</r>
+ <r p="53">18</r>
+ <r p="54">7</r>
+ <r p="55">20</r>
+ <r p="56">99</r>
+ <r p="57">51</r>
+ <r p="58">87</r>
+ <r p="59">69</r>
+ <r p="60">74</r>
+ <r p="61">34</r>
+ <r p="62">74</r>
+ <r p="63">8</r>
+ <r p="64">15</r>
+ <r p="65">66</r>
+ <r p="66">84</r>
+ <r p="67">71</r>
+ <suspect>false</suspect>
+ </measValue>
+<measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,EUtranCellFDD=LTE73dg2ERBS00019-1,EUtranFreqRelation=1,EUtranCellRelation=6">
+ <r p="1">70</r>
+ <r p="2">3</r>
+ <r p="3">65</r>
+ <r p="4">56</r>
+ <r p="5">36</r>
+ <r p="6">62</r>
+ <r p="7">97</r>
+ <r p="8">82</r>
+ <r p="9">18</r>
+ <r p="10">82</r>
+ <r p="11">41</r>
+ <r p="12">80</r>
+ <r p="13">31</r>
+ <r p="14">84</r>
+ <r p="15">44</r>
+ <r p="16">34</r>
+ <r p="17">78</r>
+ <r p="18">35</r>
+ <r p="19">3</r>
+ <r p="20">76</r>
+ <r p="21">41</r>
+ <r p="22">64</r>
+ <r p="23">51</r>
+ <r p="24">30</r>
+ <r p="25">49</r>
+ <r p="26">56</r>
+ <r p="27">72</r>
+ <r p="28">25</r>
+ <r p="29">43</r>
+ <r p="30">51</r>
+ <r p="31">84</r>
+ <r p="32">99</r>
+ <r p="33">71</r>
+ <r p="34">74</r>
+ <r p="35">28</r>
+ <r p="36">44</r>
+ <r p="37">28</r>
+ <r p="38">47</r>
+ <r p="39">43</r>
+ <r p="40">78</r>
+ <r p="41">56</r>
+ <r p="42">7</r>
+ <r p="43">66</r>
+ <r p="44">65</r>
+ <r p="45">29</r>
+ <r p="46">19</r>
+ <r p="47">47</r>
+ <r p="48">48</r>
+ <r p="49">21</r>
+ <r p="50">25</r>
+ <r p="51">32</r>
+ <r p="52">58</r>
+ <r p="53">64</r>
+ <r p="54">88</r>
+ <r p="55">23</r>
+ <r p="56">22</r>
+ <r p="57">98</r>
+ <r p="58">37</r>
+ <r p="59">80</r>
+ <r p="60">52</r>
+ <r p="61">30</r>
+ <r p="62">27</r>
+ <r p="63">26</r>
+ <r p="64">65</r>
+ <r p="65">71</r>
+ <r p="66">91</r>
+ <r p="67">64</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="EUtranFreqRelation">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmCaRedirectMeasuredUe</measType>
+ <measType p="2">pmMbmsInterestIndicationNonServ</measType>
+ <measType p="3">pmMbmsInterestIndication</measType>
+ <measType p="4">pmLbMeasuredUe</measType>
+ <measType p="5">pmMbmsInterestIndicationPCell</measType>
+ <measType p="6">pmMbmsInterestIndicationSCell</measType>
+ <measType p="7">pmSpifhoMeasuredUe</measType>
+ <measType p="8">pmAtoMeasuredUe</measType>
+<measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,EUtranCellFDD=LTE73dg2ERBS00019-1,EUtranFreqRelation=1">
+ <r p="1">14</r>
+ <r p="2">25</r>
+ <r p="3">60</r>
+ <r p="4">63</r>
+ <r p="5">10</r>
+ <r p="6">71</r>
+ <r p="7">16</r>
+ <r p="8">43</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="EnergyMeter">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmPowerConsumption</measType>
+ <measType p="2">pmVoltage</measType>
+ <measType p="3">pmConsumedEnergy</measType>
+ <measType p="4">pmConsumedEnergyAccumulated</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,Equipment=1,FieldReplaceableUnit=1,EFuse=1,EnergyMeter=1">
+ <r p="1">44,88,3,61,33,74,92,10,14,83,96,34,13,7,6,92,77,1,69,5,85,19,11,11,12,56,93,94,0,48,96,50,83,20,66,31,90,9,97,11,30,40,89,20,64,84,7,24,76,61,5,39,55,39,31,70,96,58,38,38,39,48,20,55,9,71,49,56,39,59,91,45,2,81,5,31,35,34,8,91,20,65,8,57,89,45,5,83,12,55,84,3,20,54,73,96,45,35,99,52,42,17,92,47,86,87,29,93,34,59,66,50,46,40,84,76,72,90,75,28,98,87,36,44,24,0,57,35,77,34,29,69,90,86,47,61,76,39,22,59,15,4,80,7,99,83,54,25,25,53</r>
+ <r p="2">19,69,83,75,92,1,65,86,80,24,2,89,61,38,47,76,4,80,19,57,76,28,74,20,19,49,10,99,50,98,7,57,2,1,28,97,92,56,39,48,33,72,58,86,77,91,15,14,78,50,10,78,67,5,76,98,50,4,80,38,13,16,63,27,68,72,95,33,98,60,50,26,91,52,61,57,89,23,81,10,54,85,30,25,69,54,86,28,33,67,1,92,61,38,78,24,78,49,65,15,39,71,49,70,2,20,33,39,9,23,94,25,95,40,66,13,59,91,27,27,16,63,81,84,68,84,87,21,86,70,69,55,97,66,35,49,7,70,37,69,51,42,13,5,84,1,63,47,77,71</r>
+ <r p="3">39</r>
+ <r p="4">2460</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="EthernetPort">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">ifHCOutBroadcastPkts</measType>
+ <measType p="2">ifHCOutUcastPkts</measType>
+ <measType p="3">ifOutErrors</measType>
+ <measType p="4">ifHCInUcastPkts</measType>
+ <measType p="5">ifInErrors</measType>
+ <measType p="6">ifHCInBroadcastPkts</measType>
+ <measType p="7">ifOutDiscards</measType>
+ <measType p="8">ifInUnknownTags</measType>
+ <measType p="9">ifInOctetRatePercentiles</measType>
+ <measType p="10">ifHCInMulticastPkts</measType>
+ <measType p="11">ifHCOutOctets</measType>
+ <measType p="12">ifHCInOctets</measType>
+ <measType p="13">ifInUnknownProtos</measType>
+ <measType p="14">ifTotalLossOfSignalDuration</measType>
+ <measType p="15">ifInDiscards</measType>
+ <measType p="16">ifHCOutMulticastPkts</measType>
+ <measType p="17">ifMaxLossOfSignalDuration</measType>
+ <measType p="18">ifHCLossOfSignal</measType>
+ <measType p="19">ifOutOctetRatePercentiles</measType>
+ <measType p="20">ifMinLossOfSignalDuration</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,Transport=1,EthernetPort=1">
+ <r p="1">86</r>
+ <r p="2">67</r>
+ <r p="3">14</r>
+ <r p="4">17</r>
+ <r p="5">5</r>
+ <r p="6">6</r>
+ <r p="7">82</r>
+ <r p="8">51</r>
+ <r p="9">72,28,74,73,54,70,74</r>
+ <r p="10">98</r>
+ <r p="11">35</r>
+ <r p="12">96</r>
+ <r p="13">90</r>
+ <r p="14">43</r>
+ <r p="15">24</r>
+ <r p="16">36</r>
+ <r p="17">93</r>
+ <r p="18">21</r>
+ <r p="19">67,33,63,55,85,18,76</r>
+ <r p="20">63</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="ExternalENodeBFunction">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmZtemporary222</measType>
+ <measType p="2">pmEranCaPartnerBlock</measType>
+ <measType p="3">pmEenbPktLateDlCa</measType>
+ <measType p="4">pmCaCrntiUnavail</measType>
+ <measType p="5">pmEenbPktLostDlCa</measType>
+ <measType p="6">pmEenbPktDiscDlCa</measType>
+ <measType p="7">pmZtemporary223</measType>
+ <measType p="8">pmEenbPktTransDlCa</measType>
+ <measType p="9">pmEenbPktRecDlCa</measType>
+ <measType p="10">pmZtemporary206</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,EUtraNetwork=1,ExternalENodeBFunction=1">
+ <r p="1">30</r>
+ <r p="2">66</r>
+ <r p="3">51</r>
+ <r p="4">20</r>
+ <r p="5">95</r>
+ <r p="6">69</r>
+ <r p="7">83</r>
+ <r p="8">0</r>
+ <r p="9">100</r>
+ <r p="10">44</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="ExternalGeranCell">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmRimAssocAtt</measType>
+ <measType p="2">pmRimAssocAttRetry</measType>
+ <measType p="3">pmRimUpdateReceived</measType>
+ <measType p="4">pmRimAssocRemoved</measType>
+ <measType p="5">pmZtemporary99</measType>
+ <measType p="6">pmZtemporary98</measType>
+ <measType p="7">pmRimAssocTO</measType>
+ <measType p="8">pmRimAssocSucc</measType>
+ <measType p="9">pmRimUpdateAckSent</measType>
+ <measType p="10">pmRimReportErr</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,GeraNetwork=1,ExternalGeranCell=1">
+ <r p="1">89</r>
+ <r p="2">4</r>
+ <r p="3">70</r>
+ <r p="4">48</r>
+ <r p="5">89</r>
+ <r p="6">72</r>
+ <r p="7">38</r>
+ <r p="8">1</r>
+ <r p="9">2</r>
+ <r p="10">10</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="ExternalUtranCellFDD">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmRimAssocSucc</measType>
+ <measType p="2">pmRimAssocRemoved</measType>
+ <measType p="3">pmZtemporary100</measType>
+ <measType p="4">pmRimUpdateReceived</measType>
+ <measType p="5">pmRimAssocTO</measType>
+ <measType p="6">pmRimUpdateAckSent</measType>
+ <measType p="7">pmZtemporary101</measType>
+ <measType p="8">pmRimAssocAttRetry</measType>
+ <measType p="9">pmRimReportErr</measType>
+ <measType p="10">pmRimAssocAtt</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,ENodeBFunction=1,UtraNetwork=1,UtranFrequency=1,ExternalUtranCellFDD=1">
+ <r p="1">62</r>
+ <r p="2">46</r>
+ <r p="3">45</r>
+ <r p="4">68</r>
+ <r p="5">39</r>
+ <r p="6">37</r>
+ <r p="7">81</r>
+ <r p="8">19</r>
+ <r p="9">73</r>
+ <r p="10">49</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="NodeBFunction">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmCapacityOfNodeBUlCeExt</measType>
+ <measType p="2">pmCapacityOfNodeBDlCe</measType>
+ <measType p="3">pmCapacityNodeBLimitUlCe</measType>
+ <measType p="4">pmCapacityNodeBLimitDlCe</measType>
+ <measType p="5">pmCapacityOfNodeBUlCe</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,NodeBFunction=1">
+ <r p="1">51,27,56,76,61,76,24,1,24,52,61,6,85,94,53,97,14,80,60,79,58,88,69,81,98,94,78,70,26,10,61,9,94,46,33,55,51,3,31,67,11,39,33,22,3,9,94</r>
+ <r p="2">14,46,49,30,86,1,55,50,52,41</r>
+ <r p="3">2620</r>
+ <r p="4">2849</r>
+ <r p="5">87,4,90,14,22,9,36,94,60,72</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ <measInfo measInfoId="NodeBLocalCellGroup">
+ <job jobId="1_USERDEF.ALL_COUNTERS.Profile_1.Continuous_Y.MEASJOB"/>
+ <granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
+ <repPeriod duration="PT900S"/>
+ <measType p="1">pmSumCapacityUlCe</measType>
+ <measType p="2">pmSetupRejSwLoad</measType>
+ <measType p="3">pmCapacityOfDlCe</measType>
+ <measType p="4">pmCapacityOfUlCeExt</measType>
+ <measType p="5">pmCapacityAllocAttDlCe</measType>
+ <measType p="6">pmNoUlHwLimitEul</measType>
+ <measType p="7">pmCapacityLimitDlCe</measType>
+ <measType p="8">pmCapacityAllocRejDlCe</measType>
+ <measType p="9">pmSetupAttempts</measType>
+ <measType p="10">pmCpcUlActivityFactor</measType>
+ <measType p="11">pmSumCapacityUlCeEulFach</measType>
+ <measType p="12">pmCapacityOfUlCe</measType>
+ <measType p="13">pmCapacityAllocAttUlCe</measType>
+ <measType p="14">pmSamplesCapacityUlCe</measType>
+ <measType p="15">pmCapacityAllocRejUlCe</measType>
+ <measType p="16">pmIsUsersRatio</measType>
+ <measType p="17">pmSamplesCapacityDlCe</measType>
+ <measType p="18">pmSumCapacityUlCeStatic</measType>
+ <measType p="19">pmCapacityUlCeEulFach</measType>
+ <measType p="20">pmHwCePoolEul</measType>
+ <measType p="21">pmSetupFailures</measType>
+ <measType p="22">pmCapacityLimitUlCe</measType>
+ <measType p="23">pmStaticHwCePoolEul</measType>
+ <measType p="24">pmSumCapacityDlCe</measType>
+ <measType p="25">pmSamplesCapacityUlCeStatic</measType>
+ <measValue measObjLdn="ManagedElement=LTE73dg2ERBS00019,NodeBFunction=1,NodeBLocalCellGroup=1">
+ <r p="1">91</r>
+ <r p="2">5</r>
+ <r p="3">61,11,27,47,65,88,67,59,78,51</r>
+ <r p="4">97,81,23,87,89,44,11,68,77,0,72,5,45,11,11,56,11,1,87,86,83,5,36,37,82,25,99,77,5,72,90,23,74,99,53,72,48,13,52,24,90,74,2,15,63,96,27</r>
+ <r p="5">2</r>
+ <r p="6">72</r>
+ <r p="7">2503</r>
+ <r p="8">70</r>
+ <r p="9">24</r>
+ <r p="10">33,38,12,21,91,0,52,84,99,32,40,8,15,39,92,27,41,43,63,41</r>
+ <r p="11">93</r>
+ <r p="12">10,100,48,71,68,59,69,36,64,66</r>
+ <r p="13">14</r>
+ <r p="14">88</r>
+ <r p="15">75</r>
+ <r p="16">18</r>
+ <r p="17">84</r>
+ <r p="18">17</r>
+ <r p="19">90,24,50,62,83,25,7,36,85,70,63</r>
+ <r p="20">6,63,96,1,94,85,82,17,30,46,39,59,11,14,7,60,61,36,1,39,20,82,77,95,50,26,43,81,2,95,84,32,1,70,31,48,11,24,2,43,74,94,46,99,63,47,68,28,62,22,54,91,84,81,46,50,45,32,25,100,14,67,86,62,85,22,80,18,19,21,45,59,41,81,70,65,43,28,93,91,36,20,17,56,9,78,31,98,44,97,45,2,72,85,61,65,21,23,95,36,90,10,19,60,41,96,84,25,96,91,33,73,48,46,92,82,8,80,8,88,21,95,61,86,58,89,48,86,63</r>
+ <r p="21">83</r>
+ <r p="22">2824</r>
+ <r p="23">7,66,20,8,41,18,98,71,57,28,13,53,53,77,70,31,99,62,50,19,63,3,75,43,17,91,30,34,21,62,77,67,90,11,66,11,77,51,27,55,95,66,98,45,67,60,76,42,55,94,17,87,61,8,52,24,71,7,36,5,73,63,59</r>
+ <r p="24">38</r>
+ <r p="25">65</r>
+ <suspect>false</suspect>
+ </measValue>
+ </measInfo>
+ </measData>
+ <fileFooter>
+ <measCollec endTime="2018-10-02T12:15:00Z"/>
+ </fileFooter>
+</measCollecFile> \ No newline at end of file
diff --git a/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot b/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
index a05defb5..a9474672 100644
--- a/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
+++ b/tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
@@ -14,42 +14,119 @@ ${CLI_EXEC_CLI_CONFIG} { head -n 5 | tail -1;} < /tmp/pmmapper
${CLI_EXEC_CLI_SUBS} curl -k https://${DR_PROV_IP}:8443/internal/prov
${PMMAPPER_BASE_URL} http://${PMMAPPER_IP}:8081
${DELIVERY_ENDPOINT} /delivery
+${HEALTHCHECK_ENDPOINT} /healthcheck
+${NO_MANAGED_ELEMENT_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/no_managed_element.xml
+${NO_MEASDATA_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/no_measdata.xml
+${MEASD_RESULT_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/meas_result.xml
+${VALID_METADATA_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/valid_metadata.json
+${DIFF_VENDOR_METADATA} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/diff_vendor_metadata.json
+${CLI_EXEC_CLI_PM_LOG} docker exec pmmapper /bin/sh -c "tail -5 /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
+${PUBLISH_NODE_URL} https://${DR_NODE_IP}:8443/publish/1/pm.xml
+${PM_DATA_FILE_PATH} %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml
+${PUBLISH_CONTENT_TYPE} application/octet-stream
+
*** Test Cases ***
Verify PM Mapper Receive Configuraton From Config Binding Service
[Tags] PM_MAPPER_01
[Documentation] Verify 3gpp pm mapper successfully receive config data from CBS
- ${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_CONFIG} shell=yes
- Log ${cli_cmd_output.stdout}
- Should Be Equal As Strings ${cli_cmd_output.rc} 0
- Should Contain ${cli_cmd_output.stdout} Received pm-mapper configuration
+ CheckLog ${CLI_EXEC_CLI_CONFIG} Received pm-mapper configuration
Verify 3GPP PM Mapper Subscribes to Data Router
[Tags] PM_MAPPER_02
[Documentation] Verify 3gpp pm mapper subscribes to data router
- ${cli_cmd_output}= Run Process ${CLI_EXEC_CLI_SUBS} shell=yes
- Log ${cli_cmd_output.stdout}
- Should Be Equal As Strings ${cli_cmd_output.rc} 0
- Should Contain ${cli_cmd_output.stdout} 3gpppmmapper
+ CheckLog ${CLI_EXEC_CLI_SUBS} 3gpppmmapper
+ CheckLog ${CLI_EXEC_CLI_SUBS} "privilegedSubscriber":true
+
+
+Verify Health Check returns 200 when a REST GET request to healthcheck url
+ [Tags] PM_MAPPER_03
+ [Documentation] Verify Health Check returns 200 when a REST GET request to healthcheck url
+ [Timeout] 1 minute
+ ${resp}= Get Request mapper_session ${HEALTHCHECK_ENDPOINT}
+ VerifyResponse ${resp.status_code} 200
Verify 3GPP PM Mapper responds appropriately when no metadata is provided
- [Tags] PM_MAPPER_10
+ [Tags] PM_MAPPER_04
[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
- ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT} data='${EMPTY}' headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 400
- Should Be Equal As Strings ${resp.content} Missing Metadata.
+ ${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
Verify 3GPP PM Mapper responds appropriately when invalid metadata is provided
- [Tags] PM_MAPPER_11
+ [Tags] PM_MAPPER_05
[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=1 X-ATT-DR-META='not metadata' Content-Type=application/xml
- ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT} data='${EMPTY}' headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 400
- Should Be Equal As Strings ${resp.content} Malformed Metadata.
+ ${headers}= Create Dictionary X-ONAP-RequestID=2 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
+
+Verify 3GPP PM Mapper received pushed PM data from Data Router
+ [Tags] PM_MAPPER_06
+ [Documentation] Verify 3GPP PM Mapper received pushed PM data from Data Router
+ [Timeout] 1 minute
+ ${PM_DATA}= Get File ${PM_DATA_FILE_PATH}
+ ${valid_metatdata} Get File ${VALID_METADATA_PATH}
+ ${resp}= PutCall ${PUBLISH_NODE_URL} 3 ${PM_DATA} ${PUBLISH_CONTENT_TYPE} ${valid_metatdata.replace("\n","")} pmmapper
+ VerifyResponse ${resp.status_code} 204
+ Sleep 10s
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation successful
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=3
+
+Verify that PM Mapper logs successful when a file that contains measdata is provided
+ [Tags] PM_MAPPER_07
+ [Documentation] Verify that PM Mapper logs successful when a file that contains measdata is provided
+ [Timeout] 1 minute
+ ${valid_meas_result_content}= Get File ${MEASD_RESULT_PATH}
+ ${valid_metatdata} Get File ${VALID_METADATA_PATH}
+ ${headers}= Create Dictionary X-ONAP-RequestID=4 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=4 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
+ ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/filename data=${valid_meas_result_content} headers=${headers}
+ VerifyResponse ${resp.status_code} 200
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation successful
+ 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_08
+ [Documentation] Verify that PM Mapper logs successful when a file that contains no measdata is provided
+ [Timeout] 1 minute
+ ${valid_no_measdata_content}= Get File ${NO_MEASDATA_PATH}
+ ${valid_metatdata} Get File ${VALID_METADATA_PATH}
+ ${headers}= Create Dictionary X-ONAP-RequestID=5 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=3 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
+ ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/filename data=${valid_no_measdata_content} headers=${headers}
+ VerifyResponse ${resp.status_code} 200
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation successful
+ 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_09
+ [Documentation] Verify 3gpp pm mapper responds with an error when no managed element content is provided
+ [Timeout] 1 minute
+ ${no_managed_element_content}= Get File ${NO_MANAGED_ELEMENT_PATH}
+ ${valid_metatdata} Get File ${VALID_METADATA_PATH}
+ ${headers}= Create Dictionary X-ONAP-RequestID=6 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=2 X-DMAAP-DR-META=${valid_metatdata.replace("\n","")}
+ ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/filename data=${no_managed_element_content} headers=${headers}
+ VerifyResponse ${resp.status_code} 200
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} XML validation failed
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=6
+
+Verify that PM Mapper correctly identifies a file that should not be mapped based on metadata filtering.
+ [Tags] PM_MAPPER_10
+ [Documentation] Verify that PM Mapper correctly identifies a file that should not be mapped based on metadata filtering.
+ [Timeout] 1 minute
+ ${valid_meas_result_content}= Get File ${MEASD_RESULT_PATH}
+ ${diff_vendor_metadata}= Get File ${DIFF_VENDOR_METADATA}
+ ${headers}= Create Dictionary X-ONAP-RequestID=7 Content-Type=application/xml X-DMAAP-DR-PUBLISH-ID=2 X-DMAAP-DR-META=${diff_vendor_metadata.replace("\n","")}
+ ${resp}= Put Request mapper_session ${DELIVERY_ENDPOINT}/filename data=${valid_meas_result_content} headers=${headers}
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} Metadata does not match any filters,
+ CheckLog ${CLI_EXEC_CLI_PM_LOG} RequestID=7
+
+
*** Keywords ***
@@ -57,4 +134,22 @@ PostCall
[Arguments] ${url} ${data}
${headers}= Create Dictionary Accept=application/json Content-Type=application/json
${resp}= Evaluate requests.post('${url}',data='${data}', headers=${headers},verify=False) requests
- [Return] ${resp} \ No newline at end of file
+ [Return] ${resp}
+
+PutCall
+ [Arguments] ${url} ${request_id} ${data} ${content_type} ${meta} ${user}
+ ${headers}= Create Dictionary X-ONAP-RequestID=${request_id} X-DMAAP-DR-META=${meta} Content-Type=${content_type} X-DMAAP-DR-ON-BEHALF-OF=${user} Authorization=Basic cG1tYXBwZXI6cG1tYXBwZXI=
+ ${resp}= Evaluate requests.put('${url}', data="""${data}""", headers=${headers}, verify=False, allow_redirects=False) requests
+ [Return] ${resp}
+
+
+CheckLog
+ [Arguments] ${cli_exec_log_Path} ${string_to_check_in_log}
+ ${cli_cmd_output}= Run Process ${cli_exec_log_Path} shell=yes
+ Log ${cli_cmd_output.stdout}
+ Should Be Equal As Strings ${cli_cmd_output.rc} 0
+ Should Contain ${cli_cmd_output.stdout} ${string_to_check_in_log}
+
+VerifyResponse
+ [Arguments] ${actual_response_value} ${expected_response_value}
+ Should Be Equal As Strings ${actual_response_value} ${expected_response_value} \ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/resources/.env b/tests/dcaegen2/prh-testcases/resources/.env
index 889f7d41..a558a2e8 100644
--- a/tests/dcaegen2/prh-testcases/resources/.env
+++ b/tests/dcaegen2/prh-testcases/resources/.env
@@ -1,2 +1,5 @@
LOG_LEVEL=INFO
PRH_LOG_LEVEL=TRACE
+HOSTNAME=dcae-prh
+CONSUL_HOST=consul
+CONFIG_BINDING_SERVICE=cbs
diff --git a/tests/dcaegen2/prh-testcases/resources/consul.d/cbs.json b/tests/dcaegen2/prh-testcases/resources/consul.d/cbs.json
new file mode 100644
index 00000000..9d1b34f9
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/resources/consul.d/cbs.json
@@ -0,0 +1,10 @@
+{
+ "service": {
+ "name": "cbs",
+ "tags": [
+ "cbs"
+ ],
+ "port": 10000,
+ "address": "cbs"
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/resources/docker-compose.yml b/tests/dcaegen2/prh-testcases/resources/docker-compose.yml
index 92d62526..8b6ea128 100644
--- a/tests/dcaegen2/prh-testcases/resources/docker-compose.yml
+++ b/tests/dcaegen2/prh-testcases/resources/docker-compose.yml
@@ -1,4 +1,4 @@
-version: '3'
+version: "3"
services:
prh:
image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:latest
@@ -13,8 +13,12 @@ services:
ports:
- "8100:8100"
- "8433:8433"
+ environment:
+ - LOG_LEVEL
+ - PRH_LOG_LEVEL
container_name: prh
depends_on:
+ - cbs
- dmaap-bc
- aai
@@ -41,8 +45,15 @@ services:
- "8533:8433"
volumes:
- ./simulator/certs:/tmp/certs
+ environment:
+ - LOG_LEVEL
+ - PRH_LOG_LEVEL
+ - HOSTNAME
+ - CONSUL_HOST
+ - CONFIG_BINDING_SERVICE
container_name: ssl_prh
depends_on:
+ - cbs
- dmaap-bc
- aai
@@ -65,3 +76,44 @@ services:
- "3334:3334"
- "3335:3335"
container_name: aai_simulator
+
+ consul:
+ image: docker.io/consul:1.0.6
+ ports:
+ - "8500:8500"
+ command: ["agent", "-bootstrap", "-client=0.0.0.0", "-server", "-config-dir=/consul/consul.d"]
+ volumes:
+ - ./consul.d/:/consul/consul.d
+
+ consul-cfg:
+ image: docker.io/consul:1.0.6
+ restart: on-failure
+ command: ["kv", "put", "-http-addr=http://consul-server:8500", "dcae-prh", '{
+ "dmaap.dmaapConsumerConfiguration.dmaapHostName":"dmaap-bc",
+ "dmaap.dmaapConsumerConfiguration.dmaapPortNumber":2223,
+ "dmaap.dmaapConsumerConfiguration.dmaapProtocol":"https",
+ "dmaap.dmaapProducerConfiguration.dmaapHostName":"dmaap-bc",
+ "dmaap.dmaapProducerConfiguration.dmaapPortNumber":2223,
+ "dmaap.dmaapProducerConfiguration.dmaapProtocol":"https",
+ "aai.aaiClientConfiguration.aaiHostPortNumber":3334,
+ "aai.aaiClientConfiguration.aaiHost":"aai",
+ "aai.aaiClientConfiguration.aaiProtocol":"https",
+ "security.enableAaiCertAuth":"true",
+ "security.enableDmaapCertAuth":"true",
+ "security.keyStorePath":"/tmp/certs/org.onap.dcae.jks",
+ "security.keyStorePasswordPath":"/tmp/certs/keystore.password",
+ "security.trustStorePath":"/tmp/certs/org.onap.dcae.trust.jks",
+ "security.trustStorePasswordPath":"/tmp/certs/truststore.password"
+ }'
+ ]
+ depends_on:
+ - consul
+
+ cbs:
+ image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app:2.2.4
+ ports:
+ - "10000:10000"
+ environment:
+ - CONSUL_HOST
+ depends_on:
+ - consul-cfg
diff --git a/tests/multicloud-fcaps/provision/sanity_test_multicloud.robot b/tests/multicloud-fcaps/provision/sanity_test_multicloud.robot
new file mode 100644
index 00000000..d4013dee
--- /dev/null
+++ b/tests/multicloud-fcaps/provision/sanity_test_multicloud.robot
@@ -0,0 +1,20 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${querysample_fcaps_url} /samples
+
+*** Test Cases ***
+FcapsSampleTest
+ [Documentation] query sample info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${SERVICE_IP}:${SERVICE_PORT} headers=${headers}
+ ${resp}= Get Request web_session ${querysample_fcaps_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ Should Be Equal ${response_json['status']} active
diff --git a/tests/multicloud-k8s/data/create_rbdefinition.json b/tests/multicloud-k8s/data/create_rbdefinition.json
new file mode 100644
index 00000000..370c3c79
--- /dev/null
+++ b/tests/multicloud-k8s/data/create_rbdefinition.json
@@ -0,0 +1,7 @@
+{
+ "uuid": "7eb09e38-4363-9942-1234-3beb2e95fd85",
+ "name": "test-rbdef",
+ "chart-name": "testchart",
+ "description": "testing resource bundle definition api",
+ "service-type": "firewall"
+} \ No newline at end of file
diff --git a/tests/multicloud-k8s/multicloud-k8s-test.robot b/tests/multicloud-k8s/multicloud-k8s-test.robot
new file mode 100644
index 00000000..36d4e668
--- /dev/null
+++ b/tests/multicloud-k8s/multicloud-k8s-test.robot
@@ -0,0 +1,66 @@
+*** Settings ***
+Suite Setup Run keywords Check k8splugin API Docker Container Created header Created session
+Library OperatingSystem
+Library RequestsLibrary
+
+*** Variables ***
+
+*** Test Cases ***
+Create Definition
+ [Template] Post template
+ /v1/rb/definition create_rbdefinition.json
+
+Get Definition
+ [Template] Get template
+ /v1/rb/definition
+ /v1/rb/definition/7eb09e38-4363-9942-1234-3beb2e95fd85
+
+Delete Definition
+ [Template] Delete template
+ /v1/rb/definition/7eb09e38-4363-9942-1234-3beb2e95fd85
+
+*** Keywords ***
+Created session
+ Create Session multicloud_k8s_session http://${SERVICE_IP}:${SERVICE_PORT}
+ Set Suite Variable ${suite_multicloud_k8s_session} multicloud_k8s_session
+
+Created header
+ ${headers}= Create Dictionary Content-Type=application/json Accept=application/json
+ Set Suite Variable ${suite_headers} ${headers}
+
+Delete template
+ [Documentation] Deletes from Definition
+ [Arguments] ${topic}
+ ${resp}= Delete Request ${suite_multicloud_k8s_session} ${topic} headers=${suite_headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 204
+
+Post template
+ [Documentation] Create A Definition
+ [Arguments] ${topic} ${file}
+ ${data} Get Binary File ${CURDIR}${/}data${/}${file}
+ ${resp}= Post Request ${suite_multicloud_k8s_session} ${topic} data=${data} headers=${suite_headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 201
+
+Get template
+ [Documentation] Gets from Definition
+ [Arguments] ${topic}
+ ${resp}= Get Request ${suite_multicloud_k8s_session} ${topic} headers=${suite_headers}
+ Log To Console *********************
+ Log To Console response = ${resp}
+ Log To Console body = ${resp.text}
+ Should Be Equal As Integers ${resp.status_code} 200
+
+Check k8splugin API Docker Container
+ [Documentation] Checks if k8splugin docker container is running
+ ${rc} ${output}= Run and Return RC and Output docker ps
+ Log To Console *********************
+ Log To Console retrurn_code = ${rc}
+ Log To Console output = ${output}
+ Should Be Equal As Integers ${rc} 0
+ Should Contain ${output} nexus3.onap.org:10001/onap/multicloud/k8s
diff --git a/tests/multicloud-lenovo/provision/sanity_test_multicloud.robot b/tests/multicloud-lenovo/provision/sanity_test_multicloud.robot
new file mode 100644
index 00000000..ed799edf
--- /dev/null
+++ b/tests/multicloud-lenovo/provision/sanity_test_multicloud.robot
@@ -0,0 +1,22 @@
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_lenovo_url} /api/multicloud-thinkcloud/v0/swagger.json
+
+
+*** Test Cases ***
+ThinkCloudSwaggerTest
+ [Documentation] query swagger info rest test
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${SERVICE_IP}:${SERVICE_PORT} headers=${headers}
+ ${resp}= Get Request web_session ${queryswagger_lenovo_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${swagger_version}= Convert To String ${response_json['swagger']}
+ Should Be Equal ${swagger_version} 2.0
diff --git a/tests/policy/api/api-test.robot b/tests/policy/api/api-test.robot
index 7ea24738..bf2c12b7 100644
--- a/tests/policy/api/api-test.robot
+++ b/tests/policy/api/api-test.robot
@@ -11,7 +11,7 @@ Healthcheck
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 /healthcheck headers=${headers}
+ ${resp}= Get Request policy /policy/api/v1/healthcheck headers=${headers}
Log Received response from policy ${resp.text}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As Strings ${resp.json()['code']} 200
@@ -22,7 +22,7 @@ Statistics
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 /statistics headers=${headers}
+ ${resp}= Get Request policy /policy/api/v1/statistics headers=${headers}
Log Received response from policy ${resp.text}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As Strings ${resp.json()['code']} 200
diff --git a/tests/policy/distribution/distribution-test.robot b/tests/policy/distribution/distribution-test.robot
index 2ee11806..34dd169c 100644
--- a/tests/policy/distribution/distribution-test.robot
+++ b/tests/policy/distribution/distribution-test.robot
@@ -15,3 +15,13 @@ Healthcheck
Log Received response from policy ${resp.text}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As Strings ${resp.json()['code']} 200
+Statistics
+ [Documentation] Runs Policy Distribution Statistics
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_DISTRIBUTION_IP}:6969
+ ${session}= Create Session policy https://${POLICY_DISTRIBUTION_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /statistics headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['code']} 200
diff --git a/tests/policy/xacml-pdp/xacml-pdp-test.robot b/tests/policy/xacml-pdp/xacml-pdp-test.robot
new file mode 100644
index 00000000..1a626c03
--- /dev/null
+++ b/tests/policy/xacml-pdp/xacml-pdp-test.robot
@@ -0,0 +1,28 @@
+*** Settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Test Cases ***
+Healthcheck
+ [Documentation] Runs Policy Xacml PDP Health check
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PDPX_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PDPX_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/pdpx/v1/healthcheck headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['code']} 200
+
+Statistics
+ [Documentation] Runs Policy Xacml PDP Statistics
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PDPX_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PDPX_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/pdpx/v1/statistics headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['code']} 200
diff --git a/tests/usecases/5G-bulkpm/BulkpmE2E.robot b/tests/usecases/5G-bulkpm/BulkpmE2E.robot
index ad1ac310..2541501f 100644
--- a/tests/usecases/5G-bulkpm/BulkpmE2E.robot
+++ b/tests/usecases/5G-bulkpm/BulkpmE2E.robot
@@ -18,7 +18,7 @@ ${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_FILECONSUMER} docker exec fileconsumer-node /bin/sh -c "ls /opt/app/subscriber/delivery | grep .gz"
-${CLI_EXEC_CLI_DFC_LOG} docker exec dfc /bin/sh -c "cat /opt/log/application.log" > /tmp/dfc_docker.log.robot
+${CLI_EXEC_CLI_DFC_LOG} docker exec dfc /bin/sh -c "cat /var/log/ONAP/application.log" > /tmp/dfc_docker.log.robot
${CLI_EXEC_CLI_DFC_LOG_GREP} grep "Publish to DR successful!" /tmp/dfc_docker.log.robot
${CLI_EXEC_CLI_FILECONSUMER_CP} docker cp fileconsumer-node:/opt/app/subscriber/delivery/xNF.pm.xml.gz.M %{WORKSPACE}