PRH BBS tests - part 2
Issue-ID: INT-989
Change-Id: Ifa55723579d763e4bede7dbc373c7605dccb9b0e
Signed-off-by: kurczews <krzysztof.kurczewski@nokia.com>
diff --git a/tests/dcaegen2/prh-testcases/assets/aai-missing-entry/incorrect-aai-entry.json b/tests/dcaegen2/prh-testcases/assets/aai-missing-entry/incorrect-aai-entry.json
new file mode 100644
index 0000000..d0db0a1
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/aai-missing-entry/incorrect-aai-entry.json
@@ -0,0 +1,23 @@
+{
+ "pnf-name": "wrong-record",
+ "pnf-name2": "example-pnf-name2-val-58071",
+ "pnf-name2-source": "example-pnf-name2-source-val-22408",
+ "pnf-id": "example-pnf-id-val-55834",
+ "equip-type": "example-equip-type-val-5497",
+ "equip-vendor": "example-equip-vendor-val-85730",
+ "equip-model": "example-equip-model-val-38526",
+ "management-option": "example-management-option-val-15776",
+ "ipaddress-v4-oam": "example-ipaddress-v4-oam-val-33556",
+ "sw-version": "example-sw-version-val-64239",
+ "in-maint": true,
+ "frame-id": "example-frame-id-val-76733",
+ "serial-number": "example-serial-number-val-79366",
+ "ipaddress-v4-loopback-0": "example-ipaddress-v4-loopback0-val-34781",
+ "ipaddress-v6-loopback-0": "example-ipaddress-v6-loopback0-val-29979",
+ "ipaddress-v4-aim": "example-ipaddress-v4-aim-val-53703",
+ "ipaddress-v6-aim": "example-ipaddress-v6-aim-val-93386",
+ "ipaddress-v6-oam": "example-ipaddress-v6-oam-val-92665",
+ "inv-status": "example-inv-status-val-8477",
+ "prov-status": "example-prov-status-val-68268",
+ "nf-role": "example-nf-role-val-68489"
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/aai-missing-entry/ves-event.json b/tests/dcaegen2/prh-testcases/assets/aai-missing-entry/ves-event.json
new file mode 100644
index 0000000..d8f3c90
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/aai-missing-entry/ves-event.json
@@ -0,0 +1,37 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "startEpochMicrosec": 1540212137393,
+ "sourceId": "val13",
+ "eventId": "registration_40212137",
+ "nfcNamingCode": "oam",
+ "internalHeaderFields": {
+ "collectorTimeStamp": "Mon, 10 22 2018 12:42:18 UTC"
+ },
+ "eventType": "pnfRegistration",
+ "priority": "Normal",
+ "version": "4.0.1",
+ "reportingEntityName": "NOK6061ZW8",
+ "sequence": 0,
+ "domain": "pnfRegistration",
+ "lastEpochMicrosec": 1540212137393,
+ "eventName": "pnfRegistration_Nokia_5gDu",
+ "vesEventListenerVersion": "7.0.1",
+ "sourceName": "NOK6061ZW8",
+ "nfNamingCode": "gNB"
+ },
+ "pnfRegistrationFields": {
+ "unitType": "val8",
+ "serialNumber": "6061ZW9",
+ "pnfRegistrationFieldsVersion": "2.0",
+ "manufactureDate": "1540212137393",
+ "modelNumber": "val6",
+ "lastServiceDate": "1540212137393",
+ "unitFamily": "BBU",
+ "vendorName": "Nokia",
+ "oamV4IpAddress": "val3",
+ "oamV6IpAddress": "val4",
+ "softwareVersion": "val7"
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/aai-not-responding/ves-event.json b/tests/dcaegen2/prh-testcases/assets/aai-not-responding/ves-event.json
new file mode 100644
index 0000000..d8f3c90
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/aai-not-responding/ves-event.json
@@ -0,0 +1,37 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "startEpochMicrosec": 1540212137393,
+ "sourceId": "val13",
+ "eventId": "registration_40212137",
+ "nfcNamingCode": "oam",
+ "internalHeaderFields": {
+ "collectorTimeStamp": "Mon, 10 22 2018 12:42:18 UTC"
+ },
+ "eventType": "pnfRegistration",
+ "priority": "Normal",
+ "version": "4.0.1",
+ "reportingEntityName": "NOK6061ZW8",
+ "sequence": 0,
+ "domain": "pnfRegistration",
+ "lastEpochMicrosec": 1540212137393,
+ "eventName": "pnfRegistration_Nokia_5gDu",
+ "vesEventListenerVersion": "7.0.1",
+ "sourceName": "NOK6061ZW8",
+ "nfNamingCode": "gNB"
+ },
+ "pnfRegistrationFields": {
+ "unitType": "val8",
+ "serialNumber": "6061ZW9",
+ "pnfRegistrationFieldsVersion": "2.0",
+ "manufactureDate": "1540212137393",
+ "modelNumber": "val6",
+ "lastServiceDate": "1540212137393",
+ "unitFamily": "BBU",
+ "vendorName": "Nokia",
+ "oamV4IpAddress": "val3",
+ "oamV6IpAddress": "val4",
+ "softwareVersion": "val7"
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-missing-field/invalid-ves-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-missing-field/invalid-ves-event.json
new file mode 100644
index 0000000..52024d6
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-missing-field/invalid-ves-event.json
@@ -0,0 +1,16 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "sourceName": ""
+ },
+ "pnfRegistrationFields": {
+ "oamV4IpAddress": "10.18.123.236",
+ "oamV6IpAddress": "2001:0db8:85a3:0000:0000:8a2a:0370:7334",
+ "serialNumber": "",
+ "vendorName": "",
+ "modelNumber": "",
+ "unitType": "",
+ "additionalFields": {}
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-not-array/invalid-ves-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-not-array/invalid-ves-event.json
new file mode 100644
index 0000000..f6afb1d
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-not-array/invalid-ves-event.json
@@ -0,0 +1,15 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "sourceName":"NOK6061ZW1"
+ },
+ "pnfRegistrationFields": {
+ "oamV4IpAddress":"10.16.123.234",
+ "oamV6IpAddress":"2001:0db8:85a3:0000:0000:8a2e:0370:7334",
+ "serialNumber":"NOkkaaa123",
+ "vendorName":"equipVendor",
+ "modelNumber":"equipModel",
+ "unitType":"equipType",
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/bbs_registration/aai-entry.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/aai-entry.json
similarity index 100%
rename from tests/dcaegen2/prh-testcases/assets/bbs_registration/aai-entry.json
rename to tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/aai-entry.json
diff --git a/tests/dcaegen2/prh-testcases/assets/bbs_registration/expected-logical-link.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/expected-logical-link.json
similarity index 100%
rename from tests/dcaegen2/prh-testcases/assets/bbs_registration/expected-logical-link.json
rename to tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/expected-logical-link.json
diff --git a/tests/dcaegen2/prh-testcases/assets/bbs_registration/expected-pnf-ready-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/expected-pnf-ready-event.json
similarity index 100%
rename from tests/dcaegen2/prh-testcases/assets/bbs_registration/expected-pnf-ready-event.json
rename to tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/expected-pnf-ready-event.json
diff --git a/tests/dcaegen2/prh-testcases/assets/bbs_registration/ves-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/ves-event.json
similarity index 100%
rename from tests/dcaegen2/prh-testcases/assets/bbs_registration/ves-event.json
rename to tests/dcaegen2/prh-testcases/assets/ves-event-with-attachment-point/ves-event.json
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/aai-entry.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/aai-entry.json
new file mode 100644
index 0000000..1378f58
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/aai-entry.json
@@ -0,0 +1,23 @@
+{
+ "pnf-name": "NOK6061ZW8",
+ "pnf-name2": "example-pnf-name2-val-58071",
+ "pnf-name2-source": "example-pnf-name2-source-val-22408",
+ "pnf-id": "example-pnf-id-val-55834",
+ "equip-type": "example-equip-type-val-5497",
+ "equip-vendor": "example-equip-vendor-val-85730",
+ "equip-model": "example-equip-model-val-38526",
+ "management-option": "example-management-option-val-15776",
+ "ipaddress-v4-oam": "example-ipaddress-v4-oam-val-33556",
+ "sw-version": "example-sw-version-val-64239",
+ "in-maint": true,
+ "frame-id": "example-frame-id-val-76733",
+ "serial-number": "example-serial-number-val-79366",
+ "ipaddress-v4-loopback-0": "example-ipaddress-v4-loopback0-val-34781",
+ "ipaddress-v6-loopback-0": "example-ipaddress-v6-loopback0-val-29979",
+ "ipaddress-v4-aim": "example-ipaddress-v4-aim-val-53703",
+ "ipaddress-v6-aim": "example-ipaddress-v6-aim-val-93386",
+ "ipaddress-v6-oam": "example-ipaddress-v6-oam-val-92665",
+ "inv-status": "example-inv-status-val-8477",
+ "prov-status": "example-prov-status-val-68268",
+ "nf-role": "example-nf-role-val-68489"
+}
\ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/expected-pnf-ready-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/expected-pnf-ready-event.json
new file mode 100644
index 0000000..6c92285
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/expected-pnf-ready-event.json
@@ -0,0 +1,3 @@
+{
+ "correlationId": "NOK6061ZW8"
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/ves-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/ves-event.json
new file mode 100644
index 0000000..8fbfff3
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-additional-fields/ves-event.json
@@ -0,0 +1,39 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "startEpochMicrosec": 1540212137393,
+ "sourceId": "val13",
+ "eventId": "registration_40212137",
+ "nfcNamingCode": "oam",
+ "internalHeaderFields": {
+ "collectorTimeStamp": "Mon, 10 22 2018 12:42:18 UTC"
+ },
+ "eventType": "pnfRegistration",
+ "priority": "Normal",
+ "version": "4.0.1",
+ "reportingEntityName": "NOK6061ZW8",
+ "sequence": 0,
+ "domain": "pnfRegistration",
+ "lastEpochMicrosec": 1540212137393,
+ "eventName": "pnfRegistration_Nokia_5gDu",
+ "vesEventListenerVersion": "7.0.1",
+ "sourceName": "NOK6061ZW8",
+ "nfNamingCode": "gNB"
+ },
+ "pnfRegistrationFields": {
+ "unitType": "val8",
+ "serialNumber": "6061ZW9",
+ "pnfRegistrationFieldsVersion": "2.0",
+ "manufactureDate": "1540212137393",
+ "modelNumber": "val6",
+ "lastServiceDate": "1540212137393",
+ "unitFamily": "BBU",
+ "vendorName": "Nokia",
+ "oamV4IpAddress": "val3",
+ "oamV6IpAddress": "val4",
+ "softwareVersion": "val7",
+ "additionalFields": {
+ }
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/aai-entry.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/aai-entry.json
new file mode 100644
index 0000000..1378f58
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/aai-entry.json
@@ -0,0 +1,23 @@
+{
+ "pnf-name": "NOK6061ZW8",
+ "pnf-name2": "example-pnf-name2-val-58071",
+ "pnf-name2-source": "example-pnf-name2-source-val-22408",
+ "pnf-id": "example-pnf-id-val-55834",
+ "equip-type": "example-equip-type-val-5497",
+ "equip-vendor": "example-equip-vendor-val-85730",
+ "equip-model": "example-equip-model-val-38526",
+ "management-option": "example-management-option-val-15776",
+ "ipaddress-v4-oam": "example-ipaddress-v4-oam-val-33556",
+ "sw-version": "example-sw-version-val-64239",
+ "in-maint": true,
+ "frame-id": "example-frame-id-val-76733",
+ "serial-number": "example-serial-number-val-79366",
+ "ipaddress-v4-loopback-0": "example-ipaddress-v4-loopback0-val-34781",
+ "ipaddress-v6-loopback-0": "example-ipaddress-v6-loopback0-val-29979",
+ "ipaddress-v4-aim": "example-ipaddress-v4-aim-val-53703",
+ "ipaddress-v6-aim": "example-ipaddress-v6-aim-val-93386",
+ "ipaddress-v6-oam": "example-ipaddress-v6-oam-val-92665",
+ "inv-status": "example-inv-status-val-8477",
+ "prov-status": "example-prov-status-val-68268",
+ "nf-role": "example-nf-role-val-68489"
+}
\ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/expected-pnf-ready-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/expected-pnf-ready-event.json
new file mode 100644
index 0000000..75cb4a2
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/expected-pnf-ready-event.json
@@ -0,0 +1,6 @@
+{
+ "additionalFields": {
+ "attachmentPoint": ""
+ },
+ "correlationId": "NOK6061ZW8"
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/ves-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/ves-event.json
new file mode 100644
index 0000000..d90869e
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-with-empty-attachment-point/ves-event.json
@@ -0,0 +1,40 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "startEpochMicrosec": 1540212137393,
+ "sourceId": "val13",
+ "eventId": "registration_40212137",
+ "nfcNamingCode": "oam",
+ "internalHeaderFields": {
+ "collectorTimeStamp": "Mon, 10 22 2018 12:42:18 UTC"
+ },
+ "eventType": "pnfRegistration",
+ "priority": "Normal",
+ "version": "4.0.1",
+ "reportingEntityName": "NOK6061ZW8",
+ "sequence": 0,
+ "domain": "pnfRegistration",
+ "lastEpochMicrosec": 1540212137393,
+ "eventName": "pnfRegistration_Nokia_5gDu",
+ "vesEventListenerVersion": "7.0.1",
+ "sourceName": "NOK6061ZW8",
+ "nfNamingCode": "gNB"
+ },
+ "pnfRegistrationFields": {
+ "unitType": "val8",
+ "serialNumber": "6061ZW9",
+ "pnfRegistrationFieldsVersion": "2.0",
+ "manufactureDate": "1540212137393",
+ "modelNumber": "val6",
+ "lastServiceDate": "1540212137393",
+ "unitFamily": "BBU",
+ "vendorName": "Nokia",
+ "oamV4IpAddress": "val3",
+ "oamV6IpAddress": "val4",
+ "softwareVersion": "val7",
+ "additionalFields": {
+ "attachmentPoint": ""
+ }
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/aai-entry.json b/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/aai-entry.json
new file mode 100644
index 0000000..1378f58
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/aai-entry.json
@@ -0,0 +1,23 @@
+{
+ "pnf-name": "NOK6061ZW8",
+ "pnf-name2": "example-pnf-name2-val-58071",
+ "pnf-name2-source": "example-pnf-name2-source-val-22408",
+ "pnf-id": "example-pnf-id-val-55834",
+ "equip-type": "example-equip-type-val-5497",
+ "equip-vendor": "example-equip-vendor-val-85730",
+ "equip-model": "example-equip-model-val-38526",
+ "management-option": "example-management-option-val-15776",
+ "ipaddress-v4-oam": "example-ipaddress-v4-oam-val-33556",
+ "sw-version": "example-sw-version-val-64239",
+ "in-maint": true,
+ "frame-id": "example-frame-id-val-76733",
+ "serial-number": "example-serial-number-val-79366",
+ "ipaddress-v4-loopback-0": "example-ipaddress-v4-loopback0-val-34781",
+ "ipaddress-v6-loopback-0": "example-ipaddress-v6-loopback0-val-29979",
+ "ipaddress-v4-aim": "example-ipaddress-v4-aim-val-53703",
+ "ipaddress-v6-aim": "example-ipaddress-v6-aim-val-93386",
+ "ipaddress-v6-oam": "example-ipaddress-v6-oam-val-92665",
+ "inv-status": "example-inv-status-val-8477",
+ "prov-status": "example-prov-status-val-68268",
+ "nf-role": "example-nf-role-val-68489"
+}
\ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/expected-pnf-ready-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/expected-pnf-ready-event.json
new file mode 100644
index 0000000..4ac7f6e
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/expected-pnf-ready-event.json
@@ -0,0 +1,3 @@
+{
+ "correlationId": "NOK6061ZW8"
+}
\ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/ves-event.json b/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/ves-event.json
new file mode 100644
index 0000000..d8f3c90
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/assets/ves-event-without-additional-fields/ves-event.json
@@ -0,0 +1,37 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "startEpochMicrosec": 1540212137393,
+ "sourceId": "val13",
+ "eventId": "registration_40212137",
+ "nfcNamingCode": "oam",
+ "internalHeaderFields": {
+ "collectorTimeStamp": "Mon, 10 22 2018 12:42:18 UTC"
+ },
+ "eventType": "pnfRegistration",
+ "priority": "Normal",
+ "version": "4.0.1",
+ "reportingEntityName": "NOK6061ZW8",
+ "sequence": 0,
+ "domain": "pnfRegistration",
+ "lastEpochMicrosec": 1540212137393,
+ "eventName": "pnfRegistration_Nokia_5gDu",
+ "vesEventListenerVersion": "7.0.1",
+ "sourceName": "NOK6061ZW8",
+ "nfNamingCode": "gNB"
+ },
+ "pnfRegistrationFields": {
+ "unitType": "val8",
+ "serialNumber": "6061ZW9",
+ "pnfRegistrationFieldsVersion": "2.0",
+ "manufactureDate": "1540212137393",
+ "modelNumber": "val6",
+ "lastServiceDate": "1540212137393",
+ "unitFamily": "BBU",
+ "vendorName": "Nokia",
+ "oamV4IpAddress": "val3",
+ "oamV6IpAddress": "val4",
+ "softwareVersion": "val7"
+ }
+ }
+}
diff --git a/tests/dcaegen2/prh-testcases/bbs_tests.robot b/tests/dcaegen2/prh-testcases/bbs_tests.robot
deleted file mode 100644
index e9bc999..0000000
--- a/tests/dcaegen2/prh-testcases/bbs_tests.robot
+++ /dev/null
@@ -1,27 +0,0 @@
-*** Settings ***
-Documentation Integration tests for PRH.
-... PRH receive events from DMaaP and produce or not PNF_READY notification depends on required fields in received event.
-Suite Setup Run keywords Create Headers AND Create sessions AND Ensure Container Is Running prh AND Ensure Container Is Exited ssl_prh
-Suite Teardown Ensure Container Is Running ssl_prh
-Test Teardown Reset Simulators
-
-#Suite Setup Run keywords Create headers AND Create sessions AND Ensure Container Is Running prh AND Ensure Container Is Exited ssl_prh
-#Suite Teardown Run keywords Ensure Container Is Running ssl_prh AND Ensure Container Is Exited prh AND Reset Simulators
-#Test Teardown Reset Simulators
-Library resources/PrhLibrary.py
-Resource resources/prh_library2.robot
-Resource ../../common.robot
-
-*** Variables ***
-${TEST_CASE_DIR} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets
-
-${DMAAP_SIMULATOR_SETUP_URL} http://${DMAAP_SIMULATOR_SETUP}
-${AAI_SIMULATOR_SETUP_URL} http://${AAI_SIMULATOR_SETUP}
-${CONSUL_SETUP_URL} http://${CONSUL_SETUP}
-
-*** Test Cases ***
-
-Correct VES event with additional fields
- [Tags] PRH
- [Template] VES event with additional fields
- ${TEST_CASE_DIR}/bbs_registration
\ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/prh_tests2.robot b/tests/dcaegen2/prh-testcases/prh_tests2.robot
new file mode 100644
index 0000000..7f0531b
--- /dev/null
+++ b/tests/dcaegen2/prh-testcases/prh_tests2.robot
@@ -0,0 +1,53 @@
+*** Settings ***
+Documentation Integration tests for PRH.
+... PRH receive events from DMaaP and produce or not PNF_READY notification depends on required fields in received event.
+Suite Setup Run keywords Create Headers AND Create sessions AND Ensure Container Is Running prh AND Ensure Container Is Exited ssl_prh
+Suite Teardown Ensure Container Is Running ssl_prh
+Test Teardown Reset Simulators
+
+Library resources/PrhLibrary.py
+Resource resources/prh_library2.robot
+Resource ../../common.robot
+
+*** Variables ***
+${TEST_CASES_DIR} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets
+
+${DMAAP_SIMULATOR_SETUP_URL} http://${DMAAP_SIMULATOR_SETUP}
+${AAI_SIMULATOR_SETUP_URL} http://${AAI_SIMULATOR_SETUP}
+${CONSUL_SETUP_URL} http://${CONSUL_SETUP}
+
+*** Test Cases ***
+Simple BBS case event
+ [Documentation] PRH get from DMaaP valid event with valid attachment point
+ [Tags] PRH Valid event Attachment point
+ [Template] Verify PNF ready sent and logical link created
+ ${TEST_CASES_DIR}/ves-event-with-attachment-point
+
+Simple registration event
+ [Documentation] PRH get from DMaaP valid event without valid attachment point
+ [Tags] PRH Valid event
+ [Template] Verify PNF ready sent
+ ${TEST_CASES_DIR}/ves-event-without-additional-fields
+ ${TEST_CASES_DIR}/ves-event-with-empty-additional-fields
+ ${TEST_CASES_DIR}/ves-event-with-empty-attachment-point
+
+Should not sent PNF ready when DMaaP event is invalid
+ [Documentation] PRH get from DMaaP event with missing required field
+ [Tags] PRH Invalid event
+ [Template] Verify event with missing required field is logged
+ ${TEST_CASES_DIR}/ves-event-missing-field
+
+Should not sent PNF ready when DMaaP event is not JSON array
+ [Documentation] Event from DMaaP is not JSON array
+ [Tags] PRH Invalid event
+ Verify incorrect JSON event is logged ${TEST_CASES_DIR}/ves-event-not-array
+
+Should not sent PNF ready when AAI record doesn't exist
+ [Documentation] PRH get from DMaaP valid event but given PNF doesn't exists in AAI
+ [Tags] PRH Missing AAI record
+ Verify missing AAI record is logged ${TEST_CASES_DIR}/aai-missing-entry
+
+Should not sent PNF ready when AAI is not responding
+ [Documentation] PRH get from DMaaP valid event but AAI is not responding
+ [Tags] PRH AAI not responding
+ Verify AAI not responding is logged ${TEST_CASES_DIR}/aai-not-responding
diff --git a/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py b/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py
index 597f864..f6439be 100644
--- a/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py
+++ b/tests/dcaegen2/prh-testcases/resources/PrhLibrary.py
@@ -10,7 +10,8 @@
pass
@staticmethod
- def check_for_log(search_for):
+ def find_log_entry(search_for):
+ print (type(search_for))
client = docker.from_env()
container = client.containers.get('prh')
print ("Check for log searches for pattern: ", search_for )
@@ -126,4 +127,4 @@
@staticmethod
def is_in_status(client, name, status):
- return len(client.containers.list(all=True, filters={"name": "^/"+name+"$", "status": status})) == 1
+ return len(client.containers.list(all=True, filters={"name": "^/"+name+"$", "status": status})) == 1
\ No newline at end of file
diff --git a/tests/dcaegen2/prh-testcases/resources/prh_library.robot b/tests/dcaegen2/prh-testcases/resources/prh_library.robot
index cfe1d99..36b1a1c 100644
--- a/tests/dcaegen2/prh-testcases/resources/prh_library.robot
+++ b/tests/dcaegen2/prh-testcases/resources/prh_library.robot
@@ -16,7 +16,7 @@
Set Suite Variable ${aai_setup_session} aai_setup_session
Create Session consul_setup_session ${CONSUL_SETUP_URL}
Set Suite Variable ${consul_setup_session} consul_setup_session
- Sleep 60s
+ Sleep 10s
Reset Simulators
Reset AAI simulator
@@ -33,7 +33,7 @@
Set PNF name in AAI ${pnf_name}
Set PNF content in AAI ${aai_entry_to_be_set}
${expected_event_pnf_ready_in_dpaap}= create pnf ready_notification as pnf ready ${data}
- Wait Until Keyword Succeeds 10x 3000ms Check PNF_READY notification ${expected_event_pnf_ready_in_dpaap}
+ Wait Until Keyword Succeeds 30x 3000ms Check PNF_READY notification ${expected_event_pnf_ready_in_dpaap}
Invalid event processing
[Arguments] ${input_invalid_event_in_dmaap}
@@ -46,12 +46,12 @@
Check PRH log
[Arguments] ${searched_log}
- ${status}= Check for log ${searched_log}
+ ${status}= Find log entry ${searched_log}
Should Be Equal As Strings ${status} True
Check PNF_READY notification
[Arguments] ${expected_event_pnf_ready_in_dpaap}
- ${resp}= Get Request ${dmaap_setup_session} /setup/get_pnf_ready headers=${suite_headers}
+ ${resp}= Get Request ${dmaap_setup_session} /setup/pnf_ready headers=${suite_headers}
Should Be Equal ${resp.text} ${expected_event_pnf_ready_in_dpaap}
Set PNF name in AAI
@@ -74,7 +74,7 @@
Set event in DMaaP
[Arguments] ${event_in_dmaap}
- ${resp}= Put Request ${dmaap_setup_session} /setup/set_ves_event headers=${suite_headers} data=${event_in_dmaap}
+ ${resp}= Put Request ${dmaap_setup_session} /setup/ves_event headers=${suite_headers} data=${event_in_dmaap}
Should Be Equal As Strings ${resp.status_code} 200
Reset AAI simulator
@@ -89,4 +89,4 @@
Check CBS ready
${resp}= Get Request ${consul_setup_session} /v1/catalog/service/cbs
Should Be Equal As Strings ${resp.status_code} 200
- Log CBS ${resp.content}
\ No newline at end of file
+ Log CBS ${resp.content}
diff --git a/tests/dcaegen2/prh-testcases/resources/prh_library2.robot b/tests/dcaegen2/prh-testcases/resources/prh_library2.robot
index 99939a0..ecc92f2 100644
--- a/tests/dcaegen2/prh-testcases/resources/prh_library2.robot
+++ b/tests/dcaegen2/prh-testcases/resources/prh_library2.robot
@@ -1,21 +1,57 @@
*** Settings ***
Library RequestsLibrary
-Library Collections
+Library PrhLibrary.py
Resource ../../../common.robot
*** Keywords ***
-VES event with additional fields
+Verify PNF ready sent
[Arguments] ${test_case_directory}
${pnf_entry}= Get Data From File ${test_case_directory}/aai-entry.json
${ves_event}= Get Data From File ${test_case_directory}/ves-event.json
${expected_pnf_ready_event}= Get Data From File ${test_case_directory}/expected-pnf-ready-event.json
- ${expected_logical_link}= Get Data From File ${test_case_directory}/expected-logical-link.json
Add PNF entry in AAI ${pnf_entry}
Set VES event in DMaaP ${ves_event}
Wait Until Keyword Succeeds 10x 3000ms Check CBS ready
Wait Until Keyword Succeeds 10x 3000ms Check recorded PNF_READY notification ${expected_pnf_ready_event}
+
+Verify PNF ready sent and logical link created
+ [Arguments] ${test_case_directory}
+ ${expected_logical_link}= Get Data From File ${test_case_directory}/expected-logical-link.json
+ Verify PNF ready sent ${test_case_directory}
Check recorded Logical Link ${expected_logical_link}
+Verify event with missing required field is logged
+ [Arguments] ${test_case_directory}
+ ${invalid_ves_event}= Get Data From File ${test_case_directory}/invalid-ves-event.json
+ Set VES event in DMaaP ${invalid_ves_event}
+ ${error_msg}= Create event parsing error ${invalid_ves_event}
+ Wait Until Keyword Succeeds 10x 3000ms Check PRH log ${error_msg}
+
+Verify incorrect JSON event is logged
+ [Timeout] 60s
+ [Arguments] ${test_case_directory}
+ ${invalid_ves_event}= Get Data From File ${test_case_directory}/invalid-ves-event.json
+ Set VES event in DMaaP ${invalid_ves_event}
+ # TODO hangs build
+ #Wait Until Keyword Succeeds 10x 3000ms Check PRH log |java.lang.IllegalStateException: Not a JSON Array:
+
+Verify missing AAI record is logged
+ [Arguments] ${test_case_directory}
+ ${incorrect_aai_entry}= Get Data From File ${test_case_directory}/incorrect-aai-entry.json
+ ${ves_event}= Get Data From File ${test_case_directory}/ves-event.json
+ Add PNF entry in AAI ${incorrect_aai_entry}
+ Set VES event in DMaaP ${ves_event}
+ Wait Until Keyword Succeeds 10x 3000ms Check PRH log |AAIProducerTask exception has been registered
+ Wait Until Keyword Succeeds 10x 3000ms Check PRH log |Chain of tasks have been aborted due to errors in PRH workflow
+
+Verify AAI not responding is logged
+ [Arguments] ${test_case_directory}
+ ${ves_event}= Get Data From File ${test_case_directory}/ves-event.json
+ Ensure Container Is Exited aai_simulator
+ Set VES event in DMaaP ${ves_event}
+ Wait Until Keyword Succeeds 10x 3000ms Check PRH log java.net.UnknownHostException: aai
+ Ensure Container Is Running aai_simulator
+
Check CBS ready
${resp}= Get Request ${consul_setup_session} /v1/catalog/service/cbs
Should Be Equal As Strings ${resp.status_code} 200
@@ -23,16 +59,27 @@
Check recorded PNF_READY notification
[Arguments] ${expected_event_pnf_ready_in_dpaap}
- ${resp}= Get Request ${dmaap_setup_session} /setup/get_pnf_ready headers=${suite_headers}
+ ${resp}= Get Request ${dmaap_setup_session} /setup/pnf_ready headers=${suite_headers}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As JSON ${resp.content} ${expected_event_pnf_ready_in_dpaap}
Check recorded Logical Link
[Arguments] ${expected_logical_link_in_aai}
- ${resp}= Get Request ${aai_setup_session} /setup/get_created_logical_link headers=${suite_headers}
+ ${resp}= Get Request ${aai_setup_session} /setup/created_logical_link headers=${suite_headers}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As JSON ${resp.content} ${expected_logical_link_in_aai}
+Check PRH log
+ [Arguments] ${log_entry}
+ ${found}= Find log entry ${log_entry}
+ Should Be True ${found}
+
+Create event parsing error
+ [Arguments] ${ves_event}
+ ${notification}= Create invalid notification ${ves_event}
+ ${error_msg}= Catenate SEPARATOR= \\n |Incorrect json, consumerDmaapModel can not be created: ${notification}
+ [Return] ${error_msg}
+
Add PNF entry in AAI
[Arguments] ${pnf_entry}
${headers}= Create Dictionary Accept=application/json Content-Type=application/json
@@ -42,7 +89,7 @@
Set VES event in DMaaP
[Arguments] ${ves_event}
- ${resp}= Put Request ${dmaap_setup_session} /setup/set_ves_event headers=${suite_headers} data=${ves_event}
+ ${resp}= Put Request ${dmaap_setup_session} /setup/ves_event headers=${suite_headers} data=${ves_event}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As JSON
@@ -71,4 +118,4 @@
Create headers
${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- Set Suite Variable ${suite_headers} ${headers}
\ No newline at end of file
+ Set Suite Variable ${suite_headers} ${headers}
diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py b/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py
index 55b2d1f..4457ef1 100644
--- a/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py
+++ b/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py
@@ -27,12 +27,12 @@
def do_GET(self):
try:
- if re.search('/setup/get_patched_pnf', self.path):
+ if re.search('/setup/patched_pnf', self.path):
httpServerLib.set_response_200_ok(self, payload = patched_pnf)
- logger.debug('AAISetup GET /setup/get_patched_pnf -> 200 OK')
- elif re.search('/setup/get_created_logical_link', self.path):
+ logger.debug('AAISetup GET /setup/patched_pnf -> 200 OK')
+ elif re.search('/setup/created_logical_link', self.path):
httpServerLib.set_response_200_ok(self, payload = created_logical_link)
- logger.debug('AAISetup GET /setup/get_created_logical_link -> 200 OK')
+ logger.debug('AAISetup GET /setup/created_logical_link -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('AAISetup GET ' + self.path + ' -> 404 Not found')
@@ -129,7 +129,9 @@
created_logical_link = httpServerLib.get_payload(self)
httpServerLib.set_response_200_ok(self)
- logger.debug('AAIHandler PUT /aai/v12/network/logical-links/logical-link/' + created_logical_link + ' -> 200 OK')
+
+ logical_link_name = basename(self.path)
+ logger.debug('AAIHandler PUT /aai/v12/network/logical-links/logical-link/' + logical_link_name + ' -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('AAIHandler PUT ' + self.path + ' -> 404 Not found')
diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py b/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
index b271696..92985cb 100644
--- a/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
+++ b/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
@@ -24,10 +24,10 @@
def do_GET(self):
try:
- if re.search('/setup/get_pnf_ready', self.path):
+ if re.search('/setup/pnf_ready', self.path):
global captured_prh_event
httpServerLib.set_response_200_ok(self, payload = captured_prh_event)
- logger.debug('DmaapSetup GET /setup/get_pnf_ready -> 200 OK')
+ logger.debug('DmaapSetup GET /setup/pnf_ready -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup GET ' + self.path + ' -> 404 Not found')
@@ -37,11 +37,11 @@
def do_PUT(self):
try:
- if re.search('/setup/set_ves_event', self.path):
+ if re.search('/setup/ves_event', self.path):
global ves_event
ves_event = httpServerLib.get_payload(self)
httpServerLib.set_response_200_ok(self)
- logger.debug('DmaapSetup PUT /setup/set_ves_event -> 200 OK')
+ logger.debug('DmaapSetup PUT /setup/ves_event -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup PUT ' + self.path + ' -> 404 Not found')