Merge "Update passwords for new images in CSIT tests"
authorGary Wu <gary.i.wu@huawei.com>
Tue, 9 Apr 2019 15:23:50 +0000 (15:23 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 9 Apr 2019 15:23:50 +0000 (15:23 +0000)
60 files changed:
.gitignore
plans/dcaegen2-collectors-hv-ves/testsuites/collector/configuration/insecure.json
plans/dcaegen2-collectors-hv-ves/testsuites/collector/configuration/secure.json
plans/dcaegen2-pmmapper/pmmapper/assets/addSubscriber.json
plans/dcaegen2-pmmapper/pmmapper/assets/cert.jks.b64 [new file with mode: 0644]
plans/dcaegen2-pmmapper/pmmapper/assets/config.json
plans/dcaegen2-pmmapper/pmmapper/assets/createTopic.json
plans/dcaegen2-pmmapper/pmmapper/assets/jks.pass [new file with mode: 0644]
plans/dcaegen2-pmmapper/pmmapper/assets/trust.jks.b64 [new file with mode: 0644]
plans/dcaegen2-pmmapper/pmmapper/assets/trust.pass [new file with mode: 0644]
plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-e2e.yml
plans/dcaegen2-pmmapper/pmmapper/composefile/docker-compose-pmmapper.yml
plans/dcaegen2-pmmapper/pmmapper/setup.sh
plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/setup.sh [new file with mode: 0644]
plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/teardown.sh [new file with mode: 0644]
plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/testplan.txt [new file with mode: 0644]
tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml
tests/dcaegen2-pmmapper/pmmapper/assets/pm_filter_config.json
tests/dcaegen2-pmmapper/pmmapper/assets/vendor_filter_config.json
tests/dcaegen2-pmmapper/pmmapper/pmmapper.robot
tests/dcaegen2/bbs-testcases/__init__.robot [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/bbs_tests.robot [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/BbsLibrary.py [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/bbs_library.robot [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/docker-compose.yml [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/AAI.py [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/AAI_simulator [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP.py [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP_simulator [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/aai_aai.onap.org.cer [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/ca_local_0.cer [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/keystore.password [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.aai.key [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dmaap-bc.key [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/certs/truststore.password [new file with mode: 0644]
tests/dcaegen2/bbs-testcases/resources/simulator/httpServerLib.py [new file with mode: 0644]
tests/dcaegen2/prh-testcases/resources/PrhLibrary.py
tests/dcaegen2/prh-testcases/resources/docker-compose.yml
tests/dcaegen2/prh-testcases/resources/prh_library.robot
tests/dcaegen2/prh-testcases/resources/simulator/AAI.py

index 674baf5..5ba8f9a 100644 (file)
@@ -22,5 +22,6 @@ env.properties
 .DS_Store
 .idea
 *.iml
+*.pyc
 
 /bin/
index 3df8e6e..357824d 100644 (file)
@@ -1,15 +1,9 @@
 {
-  "server": {
-    "listenPort": 6061,
-    "idleTimeoutSec": 60,
-    "maxPayloadSizeBytes": 1048576
-  },
-  "cbs": {
-    "firstRequestDelaySec": 5,
-    "requestIntervalSec": 10
-  },
-  "security": {
-    "sslDisable": true
-  },
-  "logLevel": "DEBUG"
+  "logLevel": "DEBUG",
+  "server.listenPort": 6061,
+  "server.idleTimeoutSec": 60,
+  "server.maxPayloadSizeBytes": 1048576,
+  "cbs.firstRequestDelaySec": 3,
+  "cbs.requestIntervalSec": 5,
+  "security.sslDisable": true
 }
\ No newline at end of file
index 60ac236..2c2610a 100644 (file)
@@ -1,21 +1,12 @@
 {
-  "server": {
-    "listenPort": 6061,
-    "idleTimeoutSec": 60,
-    "maxPayloadSizeBytes": 1048576
-  },
-  "cbs": {
-    "firstRequestDelaySec": 5,
-    "requestIntervalSec": 10
-  },
-  "security": {
-    "sslDisable": false,
-    "keys": {
-      "keyStoreFile": "/etc/hv-ves/ssl/server.p12",
-      "keyStorePassword": "onaponap",
-      "trustStoreFile": "/etc/hv-ves/ssl/trust.p12",
-      "trustStorePassword": "onaponap"
-    }
-  },
-  "logLevel": "DEBUG"
+  "logLevel": "DEBUG",
+  "server.listenPort": 6061,
+  "server.idleTimeoutSec": 60,
+  "server.maxPayloadSizeBytes": 1048576,
+  "cbs.firstRequestDelaySec": 3,
+  "cbs.requestIntervalSec": 5,
+  "security.keys.keyStoreFile": "/etc/hv-ves/ssl/server.p12",
+  "security.keys.keyStorePassword": "onaponap",
+  "security.keys.trustStoreFile": "/etc/hv-ves/ssl/trust.p12",
+  "security.keys.trustStorePassword": "onaponap"
 }
\ No newline at end of file
index 43a4a65..0666a7d 100644 (file)
@@ -1,6 +1,6 @@
 {
     "delivery":{
-       "url":"http://dcae-pm-mapper.onap.svc.cluster.local:8081/delivery",
+       "url":"http://dcae-pm-mapper:8081/delivery",
        "user":"username",
        "password":"password",
        "use100":true
diff --git a/plans/dcaegen2-pmmapper/pmmapper/assets/cert.jks.b64 b/plans/dcaegen2-pmmapper/pmmapper/assets/cert.jks.b64
new file mode 100644 (file)
index 0000000..66a8115
--- /dev/null
@@ -0,0 +1,82 @@
+/u3+7QAAAAIAAAABAAAAAQASZGNhZUBkY2FlLm9uYXAub3JnAAABaYCR6Y0AAAUCMIIE/jAOBgor
+BgEEASoCEQEBBQAEggTqMMIAZ9fYH2ZvhbcY9q2XvR4OftQ8+YWRYRikzelzHB8UWsI8WKD8LF50
+MB8r+vF7/a5xsBnnJykD8Tel32JsiQFpAPpTwP/5RsDnC7S7w1WlHhn2YHJS/Rt0jm/Qn5L0tnzc
+wkcdJbUjwhIZBZ7UCpCe4BFwbEFooSdTxQXZJCtF50tTYL+LvBRv/Bfxno88XqMFmNkaxnOHIrnN
+2YYW0aLoeCw5TiEcuzY/pOhUprqLfEDK2xa/M20oyjvcnq/zU/W4U8f5fXYwVh3jfeu9aukSecP0
+ABr7tcdKE02i6UdpFEfYR39j8s8PtwLPIbnRWwvB89H587z90vYW+bs5A3kyhBpapBrbd0Iwo1Bj
+6dQn+/RcFGdxM8yVHarfwAtq353Lgta/OedqsybCrkF8jKwMUfnCFSorILPg1moBggPOXs6qezqE
+QNLhaqk4C33wN74Mu+0sNszlfmkMfo7uSXD2Ak0nmDfV+AHj5iepvnHMr1ziixOToLYliuSHpPr+
+SbzR3iyiqylgpG+Jx6/jEkcU6FKJRXciTHeHdBuSULNrgX1KKSFtMm/s1I446OcoJgyTwCx9RU5Y
+Je2XdIXwBX2OdDE0jPjRySHZPrk4z2cACrJcKQ+10/bZu0fCUPPnkOW5XQbDEA6EwSsg23vqqQJw
+yFhlUb1UsVRW3GIgnGtQRsk2+ajQ2Vj2mW+waUWSpzKdPtEGsAXMyrvu/xqB6hzPndaivyaXHU2J
+qAAM3BFLygIDNKyCz7vAPCfx8qU+pWCWdtccPyu2+byJmZEAy4E1mGXSBmZ96LFuicPT1un/HXnL
+a9fTrcsGgmXf2ipyXm6qJAzObxUjWE02VEph1jeOD2FaRvR+F0Fsxi0rL5yf/dkXSEEWnJnnpgrm
+GCLfUvKKJgMLlB38KfQPgg003DHv9uRb5/f06jpBjSnItwS8aLPL3JrT6OU5zS7bXOkcKKg6yDYa
+vTpQYvfaJXm+ZTUvdu+A3toSrkcNeNEcZV0dPUUCjIStOlb+lt6lV3GawTxilDTkczeFigCw5lYF
+MgLEGgq56cXRaRD7GImuVRrsjZE/1k77fCjqYlZDq+6jPuSV9a9Rsy4CycdJj43UPceOlHQc2kKs
+LWvAKFzn2JiakLoCXFnUT0nZ0O5ismC6FL+QHDZLFM+XCbFTOuDx5p2ze8PQIM9wXq7/ODTFW+WH
+9v9ISkbDFhYF4evsc55s5PlSMyB3scB95j8yKeIIMPrMhae1YIGmRVRqmoWRCNLRHag28Ql9ubrq
+mghZrQdhf6hLP8nvdCoktSBiimBz5aO6tes03eh/gZnhLC6QV827vzmiz+aIE3XBJ1Jbju2r8xVF
+RPqz4J5TnufP9WOOjUSD4oDE0x0+ZelV9XH/Ijyp5a7P5t08H2HWyf6rOn30BHAluL3EcWy6ZyxS
+H0rciEfpJd67Ta+FlfoYDLS2Sls/+9mW88Yte4sAfI7PKHz3p/ia2KmKmZxqdoeRFGaASpMQmmHM
+OKZzZ4rYPV7E8+/RfngVA1EdGr1Xa4wddnYg4M3TacBenvBnQ22T3TQwX9rbuLE4/4MBPsCBgfXi
+5fUFSCXH0jXthipn3rDp0XtnoBqPCY2mQl5jxVl6Ilw076ttaLxrKHfPpaZmRSIBgAJwGWNt3PsD
+2dRGdFQEI9ZOSfesMmORh2uwcwAAAAIABVguNTA5AAAIVTCCCFEwggc5oAMCAQICCEqPeevfzuAj
+MA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNVBAYTAlVTMQ0wCwYDVQQKDARPTkFQMQ4wDAYDVQQLDAVP
+U0FBRjEZMBcGA1UEAwwQaW50ZXJtZWRpYXRlQ0FfOTAeFw0xOTAzMTUwODU3MTlaFw0yMDAzMTUw
+ODU3MTlaMGkxDTALBgNVBAMMBGRjYWUxDzANBgkqhkiG9w0BCQEWADEbMBkGA1UECwwSZGNhZUBk
+Y2FlLm9uYXAub3JnMQ4wDAYDVQQLDAVPU0FBRjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCDOQyJWZx2RJbPTI+krOHi8CBstWYZZ79D
+1Gz/sHcgqeKMH8cW0eeKGNGJ3lh98leLk7Kb/qkZ1Mvk34GkYGm7q3tsN/03yu4gzIRFQHU901e6
+wSwETpmnXloRUjV5hivuY60jCo3rvOsWZdKmLWuDxp8nks8CA3hMp12URny7W9rgJ2nIUIeD2cEo
+j50s7AgzmxCgYC1TXuSN4I3OF9kvD3DXkIRGHRDnSXx5Whp73iwK6Svj5DrHf3Y170AY3JHGHXTn
+3haW4qVTErmtg6QpLdOZttFLB/LQ4VgF/QulvYGHx2ZASSaxwXquH+vahEHGJOeeL60E0bTuMDsF
+mkZRAgMBAAGjggUdMIIFGTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIF4DAgBgNVHSUBAf8EFjAU
+BggrBgEFBQcDAQYIKwYBBQUHAwIwVAYDVR0jBE0wS4AUgfeZWxC5yIze81Je6k5poEM+rN2hMKQu
+MCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVU4IBBzAdBgNVHQ4E
+FgQUF60XVghHsdXv1Nqzuwh086jAtrEwggRjBgNVHREEggRaMIIEVoIEZGNhZYIWY29uZmlnLWJp
+bmRpbmctc2VydmljZYIbY29uZmlnLWJpbmRpbmctc2VydmljZS5vbmFwgi1jb25maWctYmluZGlu
+Zy1zZXJ2aWNlLm9uYXAuc3ZjLmNsdXN0ZXIubG9jYWyCFWRjYWUtY2xvdWRpZnktbWFuYWdlcoIa
+ZGNhZS1jbG91ZGlmeS1tYW5hZ2VyLm9uYXCCLGRjYWUtY2xvdWRpZnktbWFuYWdlci5vbmFwLnN2
+Yy5jbHVzdGVyLmxvY2FsghdkY2FlLWRhdGFmaWxlLWNvbGxlY3RvcoIcZGNhZS1kYXRhZmlsZS1j
+b2xsZWN0b3Iub25hcIIuZGNhZS1kYXRhZmlsZS1jb2xsZWN0b3Iub25hcC5zdmMuY2x1c3Rlci5s
+b2NhbIIVZGNhZS1odi12ZXMtY29sbGVjdG9yghpkY2FlLWh2LXZlcy1jb2xsZWN0b3Iub25hcIIs
+ZGNhZS1odi12ZXMtY29sbGVjdG9yLm9uYXAuc3ZjLmNsdXN0ZXIubG9jYWyCDmRjYWUtcG0tbWFw
+cGVyghNkY2FlLXBtLW1hcHBlci5vbmFwgiVkY2FlLXBtLW1hcHBlci5vbmFwLnN2Yy5jbHVzdGVy
+LmxvY2FsgghkY2FlLXByaIINZGNhZS1wcmgub25hcIIfZGNhZS1wcmgub25hcC5zdmMuY2x1c3Rl
+ci5sb2NhbIISZGNhZS10Y2EtYW5hbHl0aWNzghdkY2FlLXRjYS1hbmFseXRpY3Mub25hcIIpZGNh
+ZS10Y2EtYW5hbHl0aWNzLm9uYXAuc3ZjLmNsdXN0ZXIubG9jYWyCEmRjYWUtdmVzLWNvbGxlY3Rv
+coIXZGNhZS12ZXMtY29sbGVjdG9yLm9uYXCCKWRjYWUtdmVzLWNvbGxlY3Rvci5vbmFwLnN2Yy5j
+bHVzdGVyLmxvY2FsghJkZXBsb3ltZW50LWhhbmRsZXKCF2RlcGxveW1lbnQtaGFuZGxlci5vbmFw
+gilkZXBsb3ltZW50LWhhbmRsZXIub25hcC5zdmMuY2x1c3Rlci5sb2NhbIISaG9sbWVzLWVuZ2lu
+ZS1tZ210ghdob2xtZXMtZW5naW5lLW1nbXQub25hcIIpaG9sbWVzLWVuZ2luZS1tZ210Lm9uYXAu
+c3ZjLmNsdXN0ZXIubG9jYWyCEGhvbG1lcy1ydWxlLW1nbXSCFmhvbG1lcy1ydWxlcy1tZ210Lm9u
+YXCCKGhvbG1lcy1ydWxlcy1tZ210Lm9uYXAuc3ZjLmNsdXN0ZXIubG9jYWyCCWludmVudG9yeYIO
+aW52ZW50b3J5Lm9uYXCCIGludmVudG9yeS5vbmFwLnN2Yy5jbHVzdGVyLmxvY2Fsgg5wb2xpY3kt
+aGFuZGxlcoITcG9saWN5LWhhbmRsZXIub25hcIIlcG9saWN5LWhhbmRsZXIub25hcC5zdmMuY2x1
+c3Rlci5sb2NhbDANBgkqhkiG9w0BAQsFAAOCAQEAljxv74DI50X+LGglF6yGgnTiG6d6aTrbdFji
++HiV06jtSKXIf4enMGKJ2AUWXbnxw8105fTeS8tiTohaHCpNjNpliDCwia7p1xFJGuDamsvcy31S
+Ihqunuy/UkImgRhq63xMUGivoSYy0rIzVGp3WMvdrKGYbeI8iHomAJGwHw3T3gUFvf+4Rivrb2MI
+39eqao9vUDVtN8mOyEU7Kdd0nqob35Uc/jsE8KJmhI9sJC96SzwfmtfENfcWfpAv5Pq8fPCA4J5m
+pDJ2XbRMIR5bTMXwKC9/85FKRVH4SJPey22Y7IwfRDLJYHGsSK73yrs7ZBzbBKFJOHvIPPQz19Hu
+uwAFWC41MDkAAAR5MIIEdTCCAl2gAwIBAgIBBzANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVP
+U0FBRjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwODE3MTg1MTM3WhcNMjMwODE3
+MTg1MTM3WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwGA1UECwwFT1NBQUYxGTAX
+BgNVBAMMEGludGVybWVkaWF0ZUNBXzkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv
+0HHUkba3uNtNI3jPKimUcd6RNwmhSCJLneMWpnjqp5/A+HCKyNsEaT4y177hNLmCm/aMm1u2JIfi
+kc+8wEqLCSBBPz+P0h+do+sZ7U+4oeQizdYYpEdzHJ2SieHHa8vtu80rU3nO2NEIkuYC20HcKSEt
+l8fFKsk3nqlhY+tGfYJPTXcDOQAO40BTcgat3C3uIJHkWJJ4RivunE4LEuRv9QyKgAw7rkJVv+f7
+guqpZlXy6dzAkuU7XULWcgo55MkZlssoiErMvEZJad5aWKvRY3g7qUjaQ6wO15wOAUoRBW96eeZZ
+bytgn8kybcBy++Ue49gPtgm1MF/KlAsp0MD5AgMBAAGjgYYwgYMwHQYDVR0OBBYEFIH3mVsQuciM
+3vNSXupOaaBDPqzdMB8GA1UdIwQYMBaAFFNVM/JL69BRscF4msEoMXvv6u1JMBIGA1UdEwEB/wQI
+MAYBAf8CAQEwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAN
+BgkqhkiG9w0BAQsFAAOCAgEADxNymiCNr2e37iLReoaxKmZvwox0cTiNAaj7iafRzmwIoY3VXO8Q
+ix5IYcp4FaQ7fV1jyp/AmaSnyHf6Osl0sx8PxsQkO7ALttxKUrjfbvNSVUA2C/vlu5m7UVJLIUtF
+DZBWanzUSmkTsYLHpiANFQKd2c/cU1qXcyzgJVFEFVyyHNkF7Is++pjG9M1hwQHOoTnEuU013P7X
+1mHek+RXEfhJWwe7UsZnBKZaZKbQZu7hEtqKWYp/QsHgnjoLYXsh0WD5rz/mBxdTdDLGpFqWDzDq
+b8rsYnqBzoowvsasV8X8OSkov0Ht8Yka0ckFH9yf8j1Cwmbl6ttuonOhky3N/gwLEozuhy7TPcZG
+VyzevF70kXy7g1CXkpFGJyEHXoprlNi8FR4I+NFzbDe6a2cFow1JN19AJ9Z5Rk5m7M0mQPaQ4Rci
+kjB3aoLsASCJTm1OpOFHfxEKiBW4Lsp3Uc5/Rb9ZNbfLrwqWZRM7buW1e3ekLqntgbkyuKKISHqV
+Juw/vXHl1jNibEo9+JuQ88VNuAcm7WpGUogeCa2iAlPTckPZei+MwZ8wtpvxTyYlZEC8DWzY1VC2
+9+W2N5cvh01e2E3Ql08W1zL63dqrgdEZ3VWjzooYi4epBmMXTvouW+Flyvcw/0oTcfN0biDIt0mC
+kZ5CQVjfGL9DTOYteR5hw+nBBe/JRrAcRd4SbmfuQxonDjDymA==
index 62e4f40..0b62454 100644 (file)
@@ -7,7 +7,7 @@
             "aaf_password": null,
             "dmaap_info": {
                 "location": "csit-pmmapper",
-                "delivery_url": "http://dcae-pm-mapper.onap.svc.cluster.local:8081/delivery",
+                "delivery_url": "http://dcae-pm-mapper:8081/delivery",
                 "username": "username",
                 "password": "password",
                 "subscriber_id": "1"
@@ -31,9 +31,9 @@
     "dmaap_dr_delete_endpoint": "https://dmaap-dr-node:8443/delete",
     "services_calls": {},
     "enable_http": true,
-    "key_store_path": "/opt/app/pm-mapper/etc/cert/cert.jks.b64",
-    "key_store_pass_path": "/opt/app/pm-mapper/etc/cert/jks.pass",
-    "trust_store_path": "/opt/app/pm-mapper/etc/cert/trust.jks.b64",
-    "trust_store_pass_path": "/opt/app/pm-mapper/etc/cert/trust.pass"
+    "key_store_path": "/opt/app/pm-mapper/etc/cert.jks.b64",
+    "key_store_pass_path": "/opt/app/pm-mapper/etc/jks.pass",
+    "trust_store_path": "/opt/app/pm-mapper/etc/trust.jks.b64",
+    "trust_store_pass_path": "/opt/app/pm-mapper/etc/trust.pass"
 
 }
\ No newline at end of file
index c1a296d..4d20974 100644 (file)
@@ -1,4 +1,4 @@
-{ 
+{
     "topicName":"PM_MAPPER",
     "topicDescription":"PM Mapper VES Event",
     "owner":"pmmapper"
diff --git a/plans/dcaegen2-pmmapper/pmmapper/assets/jks.pass b/plans/dcaegen2-pmmapper/pmmapper/assets/jks.pass
new file mode 100644 (file)
index 0000000..ae8f7e7
--- /dev/null
@@ -0,0 +1 @@
+Er1tmip;T4w[%1}YE?x{fN9v
\ No newline at end of file
diff --git a/plans/dcaegen2-pmmapper/pmmapper/assets/trust.jks.b64 b/plans/dcaegen2-pmmapper/pmmapper/assets/trust.jks.b64
new file mode 100644 (file)
index 0000000..1451327
--- /dev/null
@@ -0,0 +1,25 @@
+/u3+7QAAAAIAAAABAAAAAgAKY2FfbG9jYWxfMAAAAWmAkeoCAAVYLjUwOQAABUIwggU+MIIDJqAD
+AgECAgkAnq7twKfOtZ0wDQYJKoZIhvcNAQELBQAwLDEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoM
+BE9OQVAxCzAJBgNVBAYTAlVTMB4XDTE4MDQwNTE0MTUyOFoXDTM4MDMzMTE0MTUyOFowLDEOMAwG
+A1UECwwFT1NBQUYxDTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEAwDmmSBGzs2EYbh7Dkmi6HJhqSBhTIVobXbX7+HyptJ23SFVC/nr4QDjV
+irtcaJ7tFgNAr02YAUXeCu4T7pfvC8mIKGn4LJ3uwUydvrm5aHER3FZMzYEkWuB/NScfxkLGBoKj
+dcfg/OUpHLYtBAkQkQLCX9FmZEJeKMy3l72Hxehlj98qQpxllSxY0IylOjbrrCO8D0xcuZ2BF5GP
+T6+sKOs2rL6G3AkPO2iIdaJg+pPqjwS8ZyCM2qOVnHs1Q1/wx8sMHKooXr7BFse/UYqOff9WKN3j
+kW/yuLJFhE6IVqe9tXqMh8GS/w9lteDZUNaxiyCnw0C8zEr6JXxw74KTeUEjYY49lsISqk9VNhst
+TPqxzMCUJfBCg/MMhljBhrd5H+BgtjWA/aIRUc5FqDdss9qn1lfkTwNmTNM1OOi+8uTwpoKZ9xpQ
+wmwG0N0ClxSK3PXRydHJlzWxfeATV/cOnNAzq30Lmw5XJGENxKsqqrBv2bRKzThcBL0Wyow/dRZh
+DKoNdLGVQBhpfz3a7yZXWHGe3aCNvbZGWhcwzpOi8zexKslLTAf6XWfOd3poVd+1L8bhlUhVn8t9
+PWKzhK2jI9ZkLDDCXLXPyolD/OGKnk2BlPFDDiaLvDDfkNg90BA4KhqN9K8WOqyVD9w9GL8xEK7T
+v2F5Vvl9CefNW2ekVBECAwEAAaNjMGEwHQYDVR0OBBYEFFNVM/JL69BRscF4msEoMXvv6u1JMB8G
+A1UdIwQYMBaAFFNVM/JL69BRscF4msEoMXvv6u1JMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
+BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQA/H8hor3ifTbA/GmdhPL4tUsjHB2r+RrA13ohuIzMv
+zvOY0wOYdwZt+hEKPw6SG6CBf0vHX8KSGleKa5ixk4VCLluWv+76/iYhuyBuaL3uP5xQcM/TMvJy
+9K/Eoe3LnUvCZpf1rjCQmXnMFTg7Wx38f21ZwSbAnf2W0qgEoHFz3hlzeIybnK1FYaP7SsrMsMBc
+RamhnlsTk8slq4DpQMLEMt+zcXCFtLu4OCDFi9+PJIXkUI0RP3ign6byztV4e+hryI8Yq9esip13
+tcMeeokmVUqvub1LR8xvIQHxyLZG05cO33eJ9jW6GgS0TKSfh2oFKnx7O80yfChd1g8O9N324IAV
+5YUtWt4EBbF3bmE+wFORkDmGlr+sD6Yq/oB/hUFWJivxzPh1kKwUKG6KhV5t72KCGt+MH/+op6kW
+M8ULKPMo3W7Qkqb/bH85GrGRM40byne4PCgg7KKZRxO1My/jZt9gPzxEpqSpIVcT0b5nQuVooAGp
++Mrj2j+2wCn5zkug2ViWUqGd607dAB2tofB2YLfoGGiCHNHWOlfvnUBxmfZUfdDhcrKnTVwk0Iki
+u5r4D5vHrOHdHJbrMgiRtEJsRP5QP7iavxYhxITea1FlWWeFQM7jP3/9YoxXPBL1GHz+S6zOsYUj
+UpCjNcIcutx7dg/pFhl8553v0tdpHBd1hnsHnlbKPpawxer5hLDs2S++H7Xx
diff --git a/plans/dcaegen2-pmmapper/pmmapper/assets/trust.pass b/plans/dcaegen2-pmmapper/pmmapper/assets/trust.pass
new file mode 100644 (file)
index 0000000..d3d01b0
--- /dev/null
@@ -0,0 +1 @@
+583Ls;XF(qDQu3p!L22gyh1t
\ No newline at end of file
index c972bd7..a60b30b 100644 (file)
@@ -1,7 +1,7 @@
 version: '2.1'
 services:
   datarouter-prov:
-    image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov:2.0.2-SNAPSHOT-latest
+    image: nexus3.onap.org:10001/onap/dmaap/datarouter-prov:2.1.0-SNAPSHOT-latest
     container_name: datarouter-prov
     hostname: dmaap-dr-prov
     ports:
@@ -22,10 +22,10 @@ services:
       retries: 5
     extra_hosts:
       - "dmaap-dr-node:1.1.1.1"
-      - "dcae-pm-mapper.onap.svc.cluster.local:3.3.3.3"
+      - "dcae-pm-mapper:3.3.3.3"
 
   datarouter-node:
-    image: nexus3.onap.org:10001/onap/dmaap/datarouter-node:2.0.2-SNAPSHOT-latest
+    image: nexus3.onap.org:10001/onap/dmaap/datarouter-node:2.1.0-SNAPSHOT-latest
     container_name: datarouter-node
     hostname: dmaap-dr-node
     ports:
@@ -38,7 +38,7 @@ services:
         condition: service_healthy
     extra_hosts:
       - "dmaap-dr-prov:2.2.2.2"
-      - "dcae-pm-mapper.onap.svc.cluster.local:3.3.3.3"
+      - "dcae-pm-mapper:3.3.3.3"
 
   mariadb_container:
     image: mariadb:10.2.14
index bf03d1f..2e3919b 100644 (file)
@@ -2,7 +2,7 @@ version: '2.1'
 services:
   pmmapper:
     container_name: pmmapper
-    image: dfarrelly/onap:csit
+    image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pm-mapper:latest
     ports:
      - "8081:8081"
     environment:
index 5a0339e..e52195f 100644 (file)
@@ -83,6 +83,13 @@ sed -i 's/2.2.2.2/'$DR_PROV_IP'/g' docker-compose.yml
 sed -i 's/3.3.3.3/'$PMMAPPER_IP'/g' docker-compose.yml
 docker-compose up -d
 
+# Setting up PM Mapper certs.
+docker cp $WORKSPACE/plans/dcaegen2-pmmapper/pmmapper/assets/cert.jks.b64 pmmapper:opt/app/pm-mapper/etc/
+docker cp $WORKSPACE/plans/dcaegen2-pmmapper/pmmapper/assets/jks.pass pmmapper:opt/app/pm-mapper/etc/
+docker cp $WORKSPACE/plans/dcaegen2-pmmapper/pmmapper/assets/trust.jks.b64 pmmapper:opt/app/pm-mapper/etc/
+docker cp $WORKSPACE/plans/dcaegen2-pmmapper/pmmapper/assets/trust.pass pmmapper:opt/app/pm-mapper/etc/
+docker restart pmmapper
+
 # Wait for initialization of Docker container for datarouter-node, datarouter-prov and mariadb, Consul, CBS
 for i in {1..5}; do
     if [ $(docker inspect --format '{{ .State.Running }}' datarouter-node) ] && \
@@ -123,5 +130,4 @@ curl -k https://$DR_PROV_IP:8443/internal/prov
 curl http://${DMAAP_MR_IP}:3904/events/PM_MAPPER/CG1/C1?timeout=1000
 
 #Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v CONSUL_IP:${CONSUL_IP} -v DR_PROV_IP:${DR_PROV_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v CBS_IP:${CBS_IP} -v PMMAPPER_IP:${PMMAPPER_IP} -v DR_NODE_IP:${DR_NODE_IP}"
-export ROBOT_VARIABLES
\ No newline at end of file
+ROBOT_VARIABLES="-v CONSUL_IP:${CONSUL_IP} -v DR_PROV_IP:${DR_PROV_IP} -v DMAAP_MR_IP:${DMAAP_MR_IP} -v CBS_IP:${CBS_IP} -v PMMAPPER_IP:${PMMAPPER_IP} -v DR_NODE_IP:${DR_NODE_IP}"
\ No newline at end of file
diff --git a/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/setup.sh b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/setup.sh
new file mode 100644 (file)
index 0000000..9551ce4
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+source ${SCRIPTS}/common_functions.sh
+
+export BBS_SERVICE="bbs"
+# export SSL_BBS_SERVICE="ssl_bbs"
+export DMAAP_SIMULATOR="dmaap_simulator"
+export AAI_SIMULATOR="aai_simulator"
+
+cd ${WORKSPACE}/tests/dcaegen2/bbs-testcases/resources/
+
+pip uninstall -y docker-py
+pip uninstall -y docker
+pip install -U docker==2.7.0
+docker-compose up -d --build
+
+BBS_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${BBS_SERVICE})
+# SSL_BBS_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${SSL_BBS_SERVICE})
+DMAAP_SIMULATOR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${DMAAP_SIMULATOR})
+AAI_SIMULATOR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${AAI_SIMULATOR})
+
+bypass_ip_adress ${BBS_IP}
+# bypass_ip_adress ${SSL_BBS_IP}
+bypass_ip_adress ${DMAAP_SIMULATOR_IP}
+bypass_ip_adress ${AAI_SIMULATOR_IP}
+
+echo BBS_IP=${BBS_IP}
+# echo SSL_BBS_IP=${SSL_BBS_IP}
+echo DMAAP_SIMULATOR_IP=${DMAAP_SIMULATOR_IP}
+echo AAI_SIMULATOR_IP=${AAI_SIMULATOR_IP}
+
+# Wait for initialization of BBS services
+# Same ports in the testcases docker compose
+wait_for_service_init localhost:32100/heartbeat
+#wait_for_service_init localhost:8200/heartbeat
+
+# #Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v DMAAP_SIMULATOR_SETUP:${DMAAP_SIMULATOR_IP}:2224 -v AAI_SIMULATOR_SETUP:${AAI_SIMULATOR_IP}:3335"
+
diff --git a/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/teardown.sh b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/teardown.sh
new file mode 100644 (file)
index 0000000..6cc85f5
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# Copyright 2017 Nokia, Inc. and others.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+kill-instance.sh bbs
+# kill-instance.sh ssl_bbs
+kill-instance.sh dmaap_simulator
+kill-instance.sh aai_simulator
diff --git a/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/testplan.txt b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/testplan.txt
new file mode 100644 (file)
index 0000000..9f1794b
--- /dev/null
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration/csit.git]/tests/.
+# Place the suites in run order.
+dcaegen2/bbs-testcases
index 4d20d4b..fadc8a6 100644 (file)
@@ -47,9 +47,9 @@ xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measC
             <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>
+                <r p="2">86,87,2,6,77,96,75,33,24</r>
+                <r p="3">40</r>
+                <r p="4">90</r>
                 <suspect>false</suspect>
             </measValue>
         </measInfo>
index 544b698..1e3604f 100644 (file)
@@ -2,9 +2,9 @@
     "pm-mapper-filter": { 
         "filters":[{
             "pmDefVsn": "1.0",
-            "nfType": "5G",
+            "nfType": "gnb",
             "vendor": "Ericsson",
-            "measTypes": ["attTCHSeizures","succImmediateAssignProcs"]
+            "measTypes": ["attTCHSeizures","succTCHSeizures2","succImmediateAssignProcs8"]
         }]
     },
     "streams_subscribes": {
@@ -14,7 +14,7 @@
             "aaf_password": null,
             "dmaap_info": {
                 "location": "csit-pmmapper",
-                "delivery_url": "http://dcae-pm-mapper.onap.svc.cluster.local:8081/delivery",
+                "delivery_url": "http://dcae-pm-mapper:8081/delivery",
                 "username": "username",
                 "password": "password",
                 "subscriber_id": "1"
@@ -38,8 +38,8 @@
     "dmaap_dr_delete_endpoint": "https://dmaap-dr-node:8443/delete",
     "services_calls": {},
     "enable_http": true,
-    "key_store_path": "/opt/app/pm-mapper/etc/cert/cert.jks.b64",
-    "key_store_pass_path": "/opt/app/pm-mapper/etc/cert/jks.pass",
-    "trust_store_path": "/opt/app/pm-mapper/etc/cert/trust.jks.b64",
-    "trust_store_pass_path": "/opt/app/pm-mapper/etc/cert/trust.pass"
+    "key_store_path": "/opt/app/pm-mapper/etc/cert.jks.b64",
+    "key_store_pass_path": "/opt/app/pm-mapper/etc/jks.pass",
+    "trust_store_path": "/opt/app/pm-mapper/etc/trust.jks.b64",
+    "trust_store_pass_path": "/opt/app/pm-mapper/etc/trust.pass"
 }
\ No newline at end of file
index 64fefa4..cbb313d 100644 (file)
@@ -1,5 +1,5 @@
 {
-    "pm-mapper-filter": { 
+    "pm-mapper-filter": {
         "filters":[{
             "pmDefVsn": "1.0",
             "nfType": "gnb",
@@ -14,7 +14,7 @@
             "aaf_password": null,
             "dmaap_info": {
                 "location": "csit-pmmapper",
-                "delivery_url": "http://dcae-pm-mapper.onap.svc.cluster.local:8081/delivery",
+                "delivery_url": "http://dcae-pm-mapper:8081/delivery",
                 "username": "username",
                 "password": "password",
                 "subscriber_id": "1"
@@ -38,8 +38,8 @@
     "dmaap_dr_delete_endpoint": "https://dmaap-dr-node:8443/delete",
     "services_calls": {},
     "enable_http": true,
-    "key_store_path": "/opt/app/pm-mapper/etc/cert/cert.jks.b64",
-    "key_store_pass_path": "/opt/app/pm-mapper/etc/cert/jks.pass",
-    "trust_store_path": "/opt/app/pm-mapper/etc/cert/trust.jks.b64",
-    "trust_store_pass_path": "/opt/app/pm-mapper/etc/cert/trust.pass"
+    "key_store_path": "/opt/app/pm-mapper/etc/cert.jks.b64",
+    "key_store_pass_path": "/opt/app/pm-mapper/etc/jks.pass",
+    "trust_store_path": "/opt/app/pm-mapper/etc/trust.jks.b64",
+    "trust_store_pass_path": "/opt/app/pm-mapper/etc/trust.pass"
 }
\ No newline at end of file
index 5d21751..ec79829 100644 (file)
@@ -21,7 +21,7 @@ ${NO_MANAGED_ELEMENT_PATH}               %{WORKSPACE}/tests/dcaegen2-pmmapper/pm
 ${NO_MEASDATA_PATH}                      %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A_no_measdata.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 -10 /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
+${CLI_EXEC_CLI_PM_LOG}                   docker exec pmmapper /bin/sh -c "tail -15 /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
 ${PUBLISH_NODE_URL}                      https://${DR_NODE_IP}:8443/publish/1
 ${TYPE-A_PM_DATA_FILE_PATH}              %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/A20181002.0000-1000-0015-1000_5G.xml
 ${TYPE-C_PM_DATA_FILE_PATH}              %{WORKSPACE}/tests/dcaegen2-pmmapper/pmmapper/assets/C20190328.0000-0015.xml
diff --git a/tests/dcaegen2/bbs-testcases/__init__.robot b/tests/dcaegen2/bbs-testcases/__init__.robot
new file mode 100644 (file)
index 0000000..d9957dd
--- /dev/null
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    Integration - BBS suite
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json
new file mode 100644 (file)
index 0000000..23c169f
--- /dev/null
@@ -0,0 +1,17 @@
+[
+{
+    "requestError": {
+        "serviceException": {
+            "messageId": "SVC3001",
+            "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)",
+            "variables": [
+                "GET",
+                "nodes/pnfs/pnf/Wrong-PNF-Name",
+                "Node Not Found:No Node of type pnf found at: nodes/pnfs/pnf/Wrong-PNF-Name",
+                "ERR.5.4.6114"
+            ]
+        }
+    }
+}
+
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json
new file mode 100644 (file)
index 0000000..4ea7827
--- /dev/null
@@ -0,0 +1,46 @@
+[
+{
+    "pnf-name": "NVendor-Equip_Model-SN1234",
+    "in-maint": true,
+    "resource-version": "1551889263181",
+    "relationship-list": {
+        "relationship": [
+            {
+                "related-to": "service-instance",
+                "relationship-label": "org.onap.relationships.inventory.ComposedOf",
+                "related-link": "/aai/v14/business/customers/customer/766162a3-53a9-42b8-8fe2-ebaa2213a6dd/service-subscriptions/service-subscription/BBS-CFS11/service-instances/service-instance/1923eaa8-8ab7-49ef-b4c2-e185efbbe832",
+                "relationship-data": [
+                    {
+                        "relationship-key": "customer.global-customer-id",
+                        "relationship-value": "766162a3-53a9-42b8-8fe2-ebaa2213a6dd"
+                    },
+                    {
+                        "relationship-key": "service-subscription.service-type",
+                        "relationship-value": "BBS-CFS11"
+                    },
+                    {
+                        "relationship-key": "service-instance.service-instance-id",
+                        "relationship-value": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832"
+                    }
+                ],
+                "related-to-property": [
+                    {
+                        "property-key": "service-instance.service-instance-name"
+                    }
+                ]
+            },
+            {
+                "related-to": "logical-link",
+                "relationship-label": "org.onap.relationships.inventory.BridgedTo",
+                "related-link": "/aai/v14/network/logical-links/logical-link/olt11-11-11",
+                "relationship-data": [
+                    {
+                        "relationship-key": "logical-link.link-name",
+                        "relationship-value": "olt11-11-11"
+                    }
+                ]
+            }
+        ]
+    }
+}
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json
new file mode 100644 (file)
index 0000000..351cc78
--- /dev/null
@@ -0,0 +1,46 @@
+[
+{
+    "service-instance-id": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832",
+    "resource-version": "1551889260591",
+    "orchestration-status": "assigned",
+    "relationship-list": {
+        "relationship": [
+            {
+                "related-to": "pnf",
+                "relationship-label": "org.onap.relationships.inventory.ComposedOf",
+                "related-link": "/aai/v14/network/pnfs/pnf/NVendor-Equip_Model-SN1234",
+                "relationship-data": [
+                    {
+                        "relationship-key": "pnf.pnf-name",
+                        "relationship-value": "NVendor-Equip_Model-SN1234"
+                    }
+                ]
+            }
+        ]
+    },
+    "metadata": {
+        "metadatum": [
+            {
+                "metaname": "cvlan",
+                "metaval": "1005",
+                "resource-version": "1551889260599"
+            },
+            {
+                "metaname": "svlan",
+                "metaval": "100",
+                "resource-version": "1551889260608"
+            },
+            {
+                "metaname": "oltName",
+                "metaval": "olt1",
+                "resource-version": "1551889260616"
+            },
+            {
+                "metaname": "rgw-mac-address",
+                "metaval": "01:02:03:04:05:06",
+                "resource-version": "1551889260624"
+            }
+        ]
+    }
+}
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json
new file mode 100644 (file)
index 0000000..3ad1fec
--- /dev/null
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json
new file mode 100644 (file)
index 0000000..2c14d46
--- /dev/null
@@ -0,0 +1,29 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "",
+            "newState": "",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json
new file mode 100644 (file)
index 0000000..21d9725
--- /dev/null
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json
new file mode 100644 (file)
index 0000000..538a56c
--- /dev/null
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json
new file mode 100644 (file)
index 0000000..39a9e4a
--- /dev/null
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "Wrong-PNF-Name",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json
new file mode 100644 (file)
index 0000000..fcacf1c
--- /dev/null
@@ -0,0 +1,16 @@
+{
+  "event": {
+    "commonEventHeader": {
+      "sourceName":"NVendor-Equip_Model-SN1234"
+    },
+    "stateChangeFields": {
+      "stateChangeFieldsVersion": 1,
+      "newState": "inService",
+      "oldState": "outOfService",
+      "stateInterface": "",
+      "additionalFields": {
+          "macAddress": "00:11:22:33:44:55"
+      }
+    }
+  }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json
new file mode 100644 (file)
index 0000000..7801ad6
--- /dev/null
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234pnf-11",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3",
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json
new file mode 100644 (file)
index 0000000..05b15fb
--- /dev/null
@@ -0,0 +1,23 @@
+[
+       {
+               "closedLoopEventClient": "DCAE.BBS_event_processor_mSInstance",
+               "policyVersion": "1.0.0.5",
+               "policyName": "CPE_Authentication",
+               "policyScope": "policyScopeCpeAuth",
+               "target_type": "VM",
+               "AAI":
+                       {
+                               "cpe.old-authentication-state": "outOfService",
+                               "cpe.new-authentication-state": "inService",
+                               "cpe.swVersion": "1.2.3",
+                               "service-information.hsia-cfs-service-instance-id": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832"
+                       },
+               "closedLoopAlarmStart": 1552997462,
+               "closedLoopEventStatus": "ONSET",
+               "closedLoopControlName": "clControlNameCpeAuth",
+               "version": "1.0.2",
+               "target": "vserver.vserver-name",
+               "requestID": "d76541f3-7f55-4c80-b0a0-ec5dee2a56cb",
+               "from": "DCAE"
+       }
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json
new file mode 100644 (file)
index 0000000..6fe2319
--- /dev/null
@@ -0,0 +1,16 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"NVendor-Equip_Model-SN1234",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json
new file mode 100644 (file)
index 0000000..43d1b21
--- /dev/null
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"NVendor-Equip_Model-SN1234",
+   "additionalFields": {
+     "attachment-point": "",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json
new file mode 100644 (file)
index 0000000..a1aaee3
--- /dev/null
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"Vendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json
new file mode 100644 (file)
index 0000000..f1dca03
--- /dev/null
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"Wrong-Correlation-Id",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json
new file mode 100644 (file)
index 0000000..ab5b214
--- /dev/null
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"NVendor-Equip_Model-SN1234",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id",
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json
new file mode 100644 (file)
index 0000000..4940265
--- /dev/null
@@ -0,0 +1,24 @@
+[
+    {
+       "closedLoopEventClient": "DCAE.BBS_event_processor_mSInstance",
+       "policyVersion": "1.0.0.5",
+       "policyName": "Nomadic_ONT",
+       "policyScope": "reRegPolicyScope",
+       "target_type": "VM",
+       "AAI":{
+                       "attachmentPoint": "olt11-1-1",
+                       "service-information.hsia-cfs-service-instance-id": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832",
+                       "cvlan": "1005",
+                       "svlan": "100",
+                       "remoteId": "some-remote-id"
+                       },
+       "closedLoopAlarmStart": 1553067455,
+       "closedLoopEventStatus": "ONSET",
+       "closedLoopControlName": "reRegControlName",
+       "version": "1.0.2",
+       "target": "vserver.vserver-name",
+       "requestID":
+       "407a6515-4b10-46ad-a249-efe529a36c69",
+       "from": "DCAE"
+    }
+]
diff --git a/tests/dcaegen2/bbs-testcases/bbs_tests.robot b/tests/dcaegen2/bbs-testcases/bbs_tests.robot
new file mode 100644 (file)
index 0000000..4721e42
--- /dev/null
@@ -0,0 +1,117 @@
+*** Settings ***
+Documentation     Integration tests for BBS.
+...               BBS receives CPE_AUTHENTICATION event from DMaaP and triggers a Policy that updates the CFS service with the PNF.
+...               BBS receives PNF_UPDATE event from DMaaP and triggers a Policy that updates the CFS service resources associated with the PNF.
+Resource          resources/bbs_library.robot
+Resource          ../../common.robot
+Suite Setup       Run keywords   Create header  AND  Create sessions  AND  Set AAI Records     AND    Ensure Container Is Running    bbs
+Test Teardown     Reset Simulators
+
+
+*** Variables ***
+${DMAAP_SIMULATOR_SETUP_URL}    http://${DMAAP_SIMULATOR_SETUP}
+${AAI_SIMULATOR_SETUP_URL}    http://${AAI_SIMULATOR_SETUP}
+${AUTH_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json
+${AUTH_EVENT_WITH_WRONG_SOURCENAME}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json
+${AUTH_EVENT_WITHOUT_SWVERSION}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json
+${AUTH_EVENT_WITH_MISSING_RGMAC}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json
+${AUTH_EVENT_WITH_MISSING_STATE}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json
+${AUTH_EVENT_WITH_MISSING_SOURCENAME}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json
+${AUTH_NOT_JSON_FORMAT}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json
+${AUTH_POLICY}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json
+${UPDATE_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json
+${UPDATE_EVENT_WITH_WRONG_CORRELATION}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json
+${UPDATE_EVENT_WITH_MISSING_ATTACHMENT}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json
+${UPDATE_EVENT_WITH_MISSING_CORRELATION}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json
+${UPDATE_NOT_JSON_FORMAT}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json
+${UPDATE_POLICY}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json
+${AAI_PNFS}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json
+${AAI_SERVICES}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json
+${AAI_PNF_NOT_FOUND}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json
+
+*** Test Cases ***
+Valid DMaaP CPE_AUTHENTICATION event can trigger Policy
+    [Documentation]    BBS get valid CPE_AUTHENTICATION event from DMaaP with required fields - BBS triggers Policy
+    [Tags]    BBS    Valid CPE_AUTHENTICATION event
+    [Template]    Valid auth event processing
+    ${AUTH_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+    ${AUTH_EVENT_WITHOUT_SWVERSION}
+
+Invalid DMaaP CPE_AUTHENTICATION event RG MAC cannot trigger Policy
+    [Documentation]    BBS get invalid RG MAC CPE_AUTHENTICATION event from DMaaP with missing required fields - BBS does not trigger Policy
+    [Tags]    BBS    Invalid RG MAC CPE_AUTHENTICATION event
+    [Template]    Invalid rgmac auth event processing
+    ${AUTH_EVENT_WITH_MISSING_RGMAC}
+
+Invalid DMaaP CPE_AUTHENTICATION event cannot trigger Policy
+    [Documentation]    BBS get invalid CPE_AUTHENTICATION event from DMaaP with missing required fields - BBS does not trigger Policy
+    [Tags]    BBS    Invalid CPE_AUTHENTICATION event
+    [Template]    Invalid auth event processing
+    ${AUTH_EVENT_WITH_MISSING_STATE}
+    ${AUTH_EVENT_WITH_MISSING_SOURCENAME}
+
+Get valid CPE_AUTHENTICATION event from DMaaP and PNF record in AAI does not exist
+    [Documentation]    BBS get valid event from DMaaP with all required fields and in AAI record doesn't exist - BBS does not trigger Policy
+    [Tags]    BBS    Missing AAI record
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${AUTH_EVENT_WITH_WRONG_SOURCENAME}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: A&AI Request for (/aai/v14/network/pnfs/pnf/Wrong-PNF-Name?depth=all)
+
+CPE_AUTHENTICATION Event in DMaaP is not JSON format
+    [Documentation]    BBS CPE_AUTHENTICATION not JSON format event from DMaaP - BBS does not Trigger Policy
+    [Tags]    BBS
+    ${data}=    Get Data From File    ${AUTH_NOT_JSON_FORMAT}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    DMaaP Consumption Exception: Not a JSON Array:
+
+# Get valid CPE_AUTHENTICATION event from DMaaP and AAI is not responding
+#     [Documentation]    BBS get valid CPE_AUTHENTICATION event from DMaaP with all required fields and AAI is not responding - BBS does not trigger Policy
+#     [Tags]    BBS    AAI    Uses containers
+#     [Timeout]    180s
+#     ${data}=    Get Data From File    ${AUTH_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+#     Ensure Container Is Exited   aai_simulator
+#     Set event in DMaaP    ${data}
+#     Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: aai_simulator: Try again
+#     Ensure Container Is Running  aai_simulator
+#     Set AAI Records
+
+Valid DMaaP PNF_UPDATE event can trigger Policy
+    [Documentation]    BBS get valid PNF_UPDATE event from DMaaP with required fields - BBS triggers Policy
+    [Tags]    BBS    Valid PNF_UPDATE event
+    [Template]    Valid update event processing
+    ${UPDATE_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+
+Invalid DMaaP PNF_UPDATE event cannot trigger Policy
+    [Documentation]    BBS get invalid PNF_UPDATE event from DMaaP with missing required fields - BBS does not trigger Policy
+    [Tags]    BBS    Invalid PNF_UPDATE event
+    [Template]    Invalid update event processing
+    ${UPDATE_EVENT_WITH_MISSING_ATTACHMENT}
+    ${UPDATE_EVENT_WITH_MISSING_CORRELATION}
+
+Get valid PNF_UPDATE event from DMaaP and PNF record in AAI does not exist
+    [Documentation]    BBS get valid PNF_UPDATE event from DMaaP with all required fields and in AAI record doesn't exist - BBS does not trigger Policy
+    [Tags]    BBS    Missing AAI record
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${UPDATE_EVENT_WITH_WRONG_CORRELATION}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: A&AI Request for (/aai/v14/network/pnfs/pnf/Wrong-Correlation-Id?depth=all)
+
+
+PNF_UPDATE Event in DMaaP is not JSON format
+    [Documentation]    BBS PNF_UPDATE not JSON format event from DMaaP - BBS does not Trigger Policy
+    [Tags]    BBS
+    ${data}=    Get Data From File    ${UPDATE_NOT_JSON_FORMAT}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    DMaaP Consumption Exception: Not a JSON Array:
+
+# Get valid PNF_UPDATE event from DMaaP and AAI is not responding
+#     [Documentation]    BBS get valid PNF_UPDATE event from DMaaP with all required fields and AAI is not responding - BBS does not trigger Policy
+#     [Tags]    BBS    AAI    Uses containers
+#     [Timeout]    180s
+#     ${data}=    Get Data From File    ${UPDATE_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+#     Ensure Container Is Exited   aai_simulator
+#     Set event in DMaaP    ${data}
+#     Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: aai_simulator: Try again
+#     Ensure Container Is Running  aai_simulator
+#     Set AAI Records
diff --git a/tests/dcaegen2/bbs-testcases/resources/BbsLibrary.py b/tests/dcaegen2/bbs-testcases/resources/BbsLibrary.py
new file mode 100644 (file)
index 0000000..8dbdc5a
--- /dev/null
@@ -0,0 +1,173 @@
+import json
+
+import docker
+import time
+from docker.utils.json_stream import json_stream
+from collections import OrderedDict
+
+
+class BbsLibrary(object):
+
+    def __init__(self):
+        pass
+
+    @staticmethod
+    def check_for_log(search_for):
+        client = docker.from_env()
+        container = client.containers.get('bbs')
+
+        alog = container.logs(stream=False, tail=1000)
+        try:
+            alog = alog.decode()
+        except AttributeError:
+            pass
+
+        found = alog.find(search_for)
+        if found != -1:
+            return True
+        else:
+            return False
+
+    @staticmethod
+    def create_pnf_name_from_auth(json_file):
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("event").get("commonEventHeader").get("sourceName")
+        return correlation_id
+
+    @staticmethod
+    def get_invalid_auth_elements(json_file):
+        """
+        Get the correlationId, oldState, newState, stateInterface, macAddress, swVersion elements
+        from the invalid message and place the elements into a JSON object (string) as fields for comparision
+        """
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("event").get("commonEventHeader").get("sourceName")
+        oldState = json_to_python.get("event").get("stateChangeFields").get("oldState")
+        newState = json_to_python.get("event").get("stateChangeFields").get("newState")
+        stateInterface = json_to_python.get("event").get("stateChangeFields").get("stateInterface")
+        macAddress = json_to_python.get("event").get("stateChangeFields").get("additionalFields").get("macAddress")
+        swVersion = json_to_python.get("event").get("stateChangeFields").get("additionalFields").get("swVersion")
+        if swVersion is None:
+            swVersion = ""
+        
+        inv_fields = OrderedDict()
+
+        #inv_fields = dict()
+        inv_fields['correlationId'] = correlation_id
+        inv_fields['oldState'] = oldState
+        inv_fields['newState'] = newState
+        inv_fields['stateInterface'] = stateInterface
+        inv_fields['macAddress'] = macAddress
+        inv_fields['swVersion'] = swVersion
+        
+        # Transform the dictionary to JSON string
+        json_str = json.dumps(inv_fields)
+        
+        # Need to remove spaces between elements
+        json_str = json_str.replace(', ', ',')
+        return json_str
+
+    @staticmethod
+    def get_invalid_update_elements(json_file):
+        """
+        Get the correlationId, attachment-point, remote-id, cvlan, svlan, elements
+        from the invalid message and place the elements into a JSON object (string) as fields for comparision
+        """
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("correlationId")
+        attachmentPoint = json_to_python.get("additionalFields").get("attachment-point")
+        remoteId = json_to_python.get("additionalFields").get("remote-id")
+        cvlan = json_to_python.get("additionalFields").get("cvlan")
+        svlan = json_to_python.get("additionalFields").get("svlan")
+        
+        inv_fields = OrderedDict()
+        #inv_fields = dict()
+        inv_fields['correlationId'] = correlation_id
+        inv_fields['attachment-point'] = attachmentPoint
+        inv_fields['remote-id'] = remoteId
+        inv_fields['cvlan'] = cvlan
+        inv_fields['svlan'] = svlan
+        
+        # Transform the dictionary to JSON string
+        json_str = json.dumps(inv_fields)
+        
+        # Need to remove spaces between elements
+        json_str = json_str.replace(', ', ',')
+        return json_str
+
+    @staticmethod
+    def compare_policy(dmaap_policy, json_policy):
+        resp = False
+        try:
+            python_policy = json.loads(json_policy).pop()
+        except:
+            python_policy = ""
+        
+        try:
+            python_dmaap_policy = json.loads(dmaap_policy)
+        except:
+            python_dmaap_policy = ""
+
+        try:
+            d_policy = python_dmaap_policy.get("policyName")
+        except:
+            d_policy = ""
+
+        try:
+            j_policy = python_policy.get("policyName")
+        except:
+            return "False"
+        
+        resp = "False"
+        if (d_policy == j_policy):
+            resp = "True"
+        return resp
+
+    @staticmethod
+    def create_pnf_name_from_update(json_file):
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("correlationId")
+        return correlation_id
+
+    @staticmethod
+    def ensure_container_is_running(name):
+        
+        client = docker.from_env()
+
+        if not BbsLibrary.is_in_status(client, name, "running"):
+            print ("starting container", name)
+            container = client.containers.get(name)
+            container.start()
+            BbsLibrary.wait_for_status(client, name, "running")
+
+        BbsLibrary.print_status(client)
+
+    @staticmethod
+    def ensure_container_is_exited(name):
+
+        client = docker.from_env()
+
+        if not BbsLibrary.is_in_status(client, name, "exited"):
+            print ("stopping container", name)
+            container = client.containers.get(name)
+            container.stop()
+            BbsLibrary.wait_for_status(client, name, "exited")
+
+        BbsLibrary.print_status(client)
+
+    @staticmethod
+    def print_status(client):
+        print("containers status")
+        for c in client.containers.list(all=True):
+            print(c.name, "   ", c.status)
+
+    @staticmethod
+    def wait_for_status(client, name, status):
+        while not BbsLibrary.is_in_status(client, name, status):
+            print ("waiting for container: ", name, "to be in status: ", status)
+            time.sleep(3)
+
+    @staticmethod
+    def is_in_status(client, name, status):
+        return len(client.containers.list(all=True, filters={"name": "^/"+name+"$", "status": status})) == 1
+
diff --git a/tests/dcaegen2/bbs-testcases/resources/bbs_library.robot b/tests/dcaegen2/bbs-testcases/resources/bbs_library.robot
new file mode 100644 (file)
index 0000000..34c94ca
--- /dev/null
@@ -0,0 +1,108 @@
+*** Settings ***
+Library           RequestsLibrary
+Library           Collections
+Library           BbsLibrary.py
+Resource          ../../../common.robot
+
+*** Keywords ***
+Create header
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
+    Set Suite Variable    ${suite_headers}    ${headers}
+
+Create sessions
+    Create Session    dmaap_setup_session    ${DMAAP_SIMULATOR_SETUP_URL}
+    Set Suite Variable    ${dmaap_setup_session}    dmaap_setup_session
+    Create Session    aai_setup_session    ${AAI_SIMULATOR_SETUP_URL}
+    Set Suite Variable    ${aai_setup_session}    aai_setup_session
+
+Reset Simulators
+    Reset AAI simulator
+    Reset DMaaP simulator
+
+Set AAI Records
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${AAI_PNFS}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_pnfs    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${data}=    Get Data From File    ${AAI_SERVICES}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_services    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${data}=    Get Data From File    ${AAI_PNF_NOT_FOUND}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_pnf_not_found    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Invalid rgmac auth event processing
+    [Arguments]    ${input_invalid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    ${err_msg}=    Catenate    SEPARATOR= \\n    RGW MAC address taken from event (Optional[]) does not match with A&AI metadata corresponding value
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    ${err_msg}
+
+Invalid auth event processing
+    [Arguments]    ${input_invalid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    ${json_obj}=    Get invalid auth elements    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Incorrect CPE Authentication JSON event:
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    ${json_obj}
+Valid auth event processing
+    [Arguments]    ${input_valid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_valid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check policy    ${AUTH_POLICY}
+
+Check policy
+    [Arguments]    ${json_policy_file}
+    ${resp}=    Get Request    ${dmaap_setup_session}    /events/dcaeClOutput   headers=${suite_headers}
+    ${data}=    Get Data From File    ${json_policy_file}
+    ${result}=    Compare policy    ${resp.text}    ${data}
+    Should Be Equal As Strings    ${result}    True
+
+Invalid update event processing
+    [Arguments]    ${input_invalid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    ${json_obj}=    Get invalid update elements    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Incorrect Re-Registration
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    JSON event:
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    ${json_obj}
+
+
+Valid update event processing
+    [Arguments]    ${input_valid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_valid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check policy     ${UPDATE_POLICY}
+
+
+Check BBS log
+    [Arguments]    ${searched_log}
+    ${status}=    Check for log    ${searched_log}
+    Should Be Equal As Strings    ${status}    True
+
+Set PNF name in AAI
+    [Arguments]    ${pnfs_name}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_pnfs    headers=${headers}    data=${pnfs_name}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Set event in DMaaP
+    [Arguments]    ${event_in_dmaap}
+    ${resp} =    Put Request    ${dmaap_setup_session}    /set_get_event    headers=${suite_headers}    data=${event_in_dmaap}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Reset AAI simulator
+    ${resp} =    Post Request     ${aai_setup_session}    /reset
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Reset DMaaP simulator
+    ${resp}=    Post Request     ${dmaap_setup_session}    /reset
+    Should Be Equal As Strings    ${resp.status_code}    200
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/resources/docker-compose.yml b/tests/dcaegen2/bbs-testcases/resources/docker-compose.yml
new file mode 100644 (file)
index 0000000..e42c0d2
--- /dev/null
@@ -0,0 +1,64 @@
+version: '3'
+services:
+  bbs:
+    image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.components.bbs-event-processor:1.0.0-SNAPSHOT
+    command: >
+        --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap_simulator
+        --dmaap.dmaapConsumerConfiguration.dmaapPortNumber=2222
+        --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap_simulator
+        --dmaap.dmaapProducerConfiguration.dmaapPortNumber=2222
+        --aai.aaiClientConfiguration.aaiHostPortNumber=3333
+        --aai.aaiClientConfiguration.aaiHost=aai_simulator
+        --aai.aaiClientConfiguration.aaiProtocol=http
+    ports:
+      - "32100:8100"
+    environment:
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_DMAAPHOSTNAME: dmaap_simulator
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_DMAAPPORTNUMBER: 2222
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_DMAAPTOPICNAME: /events/unauthenticated_PNF_UPDATE
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_CONSUMERGROUP: 
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_CONSUMERID: 
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_DMAAPHOSTNAME: dmaap_simulator
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_DMAAPPORTNUMBER: 2222
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_DMAAPTOPICNAME: /events/unauthenticated_CPE_AUTHENTICATION
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_CONSUMERGROUP:
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_CONSUMERID:
+      CONFIGS_DMAAP_PRODUCER_DMAAPHOSTNAME: dmaap-bc
+      CONFIGS_DMAAP_PRODUCER_DMAAPPORTNUMBER: 2222
+      CONFIGS_DMAAP_PRODUCER_DMAAPTOPICNAME: /events/unauthenticated_DCAE_CL_OUTPUT
+      CONFIGS_AAI_CLIENT_AAIHOST: aai_simulator
+      CONFIGS_AAI_CLIENT_AAIPORT: 3333
+      CONFIGS_AAI_CLIENT_AAIPROTOCOL: http
+      CONFIGS_APPLICATION_PIPELINESPOLLINGINTERVALSEC: 15
+      CONFIGS_APPLICATION_PIPELINESTIMEOUTSEC: 10
+      CONFIGS_APPLICATION_RE-REGISTRATION_POLICYSCOPE: "re-reg_policy_scope"
+      CONFIGS_APPLICATION_RE-REGISTRATION_CLCONTROLNAME: "re-reg_cl"
+      CONFIGS_APPLICATION_CPE-AUTHENTICATION_POLICYSCOPE: "cpe-auth_policy_scope"
+      CONFIGS_APPLICATION_CPE-AUTHENTICATION_CLCONTROLNAME: "cpe-auth_cl"
+      LOGGING_LEVEL_ORG_ONAP_BBS: TRACE
+    container_name: bbs
+    depends_on:
+     - dmaap-bc
+     - aai
+
+  dmaap-bc:
+    image: dmaap-bc:latest
+    build:
+      context: simulator
+      dockerfile: DMaaP_simulator
+    ports:
+      - "2222:2222"
+      - "2223:2223"
+      - "2224:2224"
+    container_name: dmaap_simulator
+
+  aai:
+     image: aai:latest
+     build:
+       context: simulator
+       dockerfile: AAI_simulator
+     ports:
+      - "3333:3333"
+      - "3334:3334"
+      - "3335:3335"
+     container_name: aai_simulator
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/AAI.py b/tests/dcaegen2/bbs-testcases/resources/simulator/AAI.py
new file mode 100644 (file)
index 0000000..ba32582
--- /dev/null
@@ -0,0 +1,108 @@
+import re
+import time
+from http.server import BaseHTTPRequestHandler
+import httpServerLib
+
+import json
+
+pnfs = []
+services = []
+pnf_not_found = '[{}]'
+
+class AAISetup(BaseHTTPRequestHandler):
+
+    def do_PUT(self):
+        global pnfs
+        global services
+        global pnf_not_found
+        if re.search('/set_pnfs', self.path):
+            content_length = int(self.headers['Content-Length'])
+            pnfs = self.rfile.read(content_length)
+            pnfs = pnfs.decode()
+            httpServerLib.header_200_and_json(self)
+        elif re.search('/set_services', self.path):
+            content_length = int(self.headers['Content-Length'])
+            services = self.rfile.read(content_length)
+            services = services.decode()
+            httpServerLib.header_200_and_json(self)
+        elif re.search('/set_pnf_not_found', self.path):
+            content_length = int(self.headers['Content-Length'])
+            pnf_not_found = self.rfile.read(content_length)
+            pnf_not_found = pnf_not_found.decode()
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+    def do_POST(self):
+        if re.search('/reset', self.path):
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+
+class AAIHandler(BaseHTTPRequestHandler):
+
+    def do_GET(self):
+        global pnfs
+        global services
+        global pnf_not_found
+        pnf_path = '/aai/v14/network/pnfs/pnf/'
+        service_path = '/aai/v14/nodes/service-instances/service-instance/'
+        found_resource = None
+        if re.search(pnf_path, self.path):
+            try:
+                python_pnfs = json.loads(pnfs)
+            except AttributeError:
+                python_pnfs = []
+            for pnf_instance in python_pnfs:
+                try:
+                    pnf_name = pnf_path + pnf_instance.get("pnf-name")
+                except AttributeError:
+                    pnf_name = "PNF not found"
+                if re.search(pnf_name, self.path):
+                    found_resource = pnf_instance
+                    break
+        elif re.search(service_path, self.path):
+            try:
+                python_services = json.loads(services)
+            except AttributeError:
+                python_services = []
+            for service_instance in python_services:
+                try:
+                    service_name = service_path + service_instance.get("service-instance-id")
+                except AttributeError:
+                    pnf_name = "Service not found"
+                if re.search(service_name, self.path):
+                    found_resource = service_instance
+                    break
+
+        if found_resource is not None:
+            # Prepare the response for DMaaP (byte encoded JSON Object)
+            found_resource = json.dumps(found_resource)
+            found_resource = found_resource.encode()
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(found_resource)
+        else:
+            # Send a 404 message for not found
+            pnf_resp = pnf_not_found
+            # We have to replace the request line data
+            err_pnf_template = "nodes/pnfs/pnf/Wrong-PNF-Name"
+            pnf_resp = pnf_resp.replace(err_pnf_template, self.path)
+            pnf_resp = pnf_resp.encode()
+            httpServerLib.header_404_and_json(self)
+            self.wfile.write(pnf_resp)
+
+            
+        return
+
+def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"):
+    handler_class.protocol_version = protocol
+    httpServerLib.start_http_endpoint(3333, AAIHandler)
+    httpServerLib.start_https_endpoint(3334, AAIHandler, keyfile="certs/org.onap.aai.key", certfile="certs/aai_aai.onap.org.cer", ca_certs="certs/ca_local_0.cer")
+    httpServerLib.start_http_endpoint(3335, AAISetup)
+    while 1:
+        time.sleep(10)
+
+
+if __name__ == '__main__':
+    _main_()
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/AAI_simulator b/tests/dcaegen2/bbs-testcases/resources/simulator/AAI_simulator
new file mode 100644 (file)
index 0000000..a906bc5
--- /dev/null
@@ -0,0 +1,6 @@
+FROM python:3-alpine
+
+ADD AAI.py httpServerLib.py /
+COPY certs/* /certs/
+
+CMD [ "python", "./AAI.py" ]
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP.py b/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP.py
new file mode 100644 (file)
index 0000000..edeec8c
--- /dev/null
@@ -0,0 +1,92 @@
+import re
+import time
+from http.server import BaseHTTPRequestHandler
+import httpServerLib
+
+
+posted_event_from_bbs = b'[]'
+received_event_to_get_method = b'[]'
+
+
+class DmaapSetup(BaseHTTPRequestHandler):
+
+    """
+    This Handler is used by the test harness to prepare the buffers:
+        test harness places VES events using PUT from the harness into the 
+        "received_event buffer"
+        test harness will write policy topics from the BBS us to the posted event buffer
+    """
+    def do_PUT(self):
+        # Read the event from the test harness place it in the received event buffer
+        if re.search('/set_get_event', self.path):
+            content_length = int(self.headers['Content-Length'])
+            global received_event_to_get_method
+            received_event_to_get_method = self.rfile.read(content_length)
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+    def do_GET(self):
+        # The test harness receives the policy triggers from the posted event
+        # by issuing a get and receiving the response.
+        if re.search('/events/dcaeClOutput', self.path):
+            global posted_event_from_bbs
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(posted_event_from_bbs)
+
+        return
+
+    def do_POST(self):
+        if re.search('/reset', self.path):
+            global posted_event_from_bbs
+            global received_event_to_get_method
+            posted_event_from_bbs = b'[]'
+            received_event_to_get_method = b'[]'
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+
+class DMaaPHandler(BaseHTTPRequestHandler):
+    """
+    This Handler is what the BBS uS connects to - The test library has posted the
+    the VES events in the setup Handler which are then received by the BBS uS via
+    this handler's do_GET function.
+    Likewise the policy trigger posted by the BBS uS is received and placed in the
+     in the posted event buffer which the test harness retrieves using the setup handler.
+    """
+
+    def do_POST(self):
+        # Post of the policy triggers from the BBS uS
+        if re.search('/events/unauthenticated.DCAE_CL_OUTPUT', self.path):
+            global posted_event_from_bbs
+            content_length = int(self.headers['Content-Length'])
+            posted_event_from_bbs = self.rfile.read(content_length)
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+    def do_GET(self):
+        # BBS uS issues a Get to receive VES and PNF UPdate event from DMAAP
+        global received_event_to_get_method
+        if re.search('/events/unauthenticated.PNF_UPDATE', self.path):
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(received_event_to_get_method)
+        elif re.search('/events/unauthenticated_CPE_AUTHENTICATION/OpenDcae-c12/c12', self.path):
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(received_event_to_get_method)
+
+        return
+
+
+def _main_(handler_class=DMaaPHandler, protocol="HTTP/1.0"):
+    handler_class.protocol_version = protocol
+    httpServerLib.start_http_endpoint(2222, DMaaPHandler)
+    httpServerLib.start_https_endpoint(2223, DMaaPHandler, keyfile="certs/org.onap.dmaap-bc.key", certfile="certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer", ca_certs="certs/ca_local_0.cer")
+    httpServerLib.start_http_endpoint(2224, DmaapSetup)
+    while 1:
+        time.sleep(10)
+
+
+if __name__ == '__main__':
+    _main_()
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP_simulator b/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP_simulator
new file mode 100644 (file)
index 0000000..8139fc3
--- /dev/null
@@ -0,0 +1,6 @@
+FROM python:3-alpine
+
+ADD DMaaP.py httpServerLib.py /
+COPY certs/* /certs/
+
+CMD [ "python", "./DMaaP.py" ]
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/aai_aai.onap.org.cer b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/aai_aai.onap.org.cer
new file mode 100644 (file)
index 0000000..327f57b
--- /dev/null
@@ -0,0 +1,55 @@
+-----BEGIN CERTIFICATE-----
+MIIE5TCCA82gAwIBAgIJAI5fEseaW2LVMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNV
+BAYTAlVTMQ0wCwYDVQQKDARPTkFQMQ4wDAYDVQQLDAVPU0FBRjEZMBcGA1UEAwwQ
+aW50ZXJtZWRpYXRlQ0FfMjAeFw0xODEwMTgxMDM3MzJaFw0xOTA0MTgxMDM3MzJa
+MGYxDDAKBgNVBAMMA2FhaTEPMA0GCSqGSIb3DQEJARYAMRkwFwYDVQQLDBBhYWlA
+YWFpLm9uYXAub3JnMQ4wDAYDVQQLDAVPU0FBRjENMAsGA1UECgwET05BUDELMAkG
+A1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCCnz1BBkcD
+y1M73ANgkbfwYANSJPdnU/meXpgHKYvXa8xbEI3Lsi5EnB7o9nthZFdU5dPZRFV5
+uJEOl0pjt3ogmPo0XZGYO++GfRNLq+c2YVmYjTLgFvEz6GzUtLueYjrl2JItGRug
+x0wNPXQmaAX3/8wD7nOTAZjlmuSWCeeJu5GBaX4aaiwVOONDGhmZZ7jISTE0xvvU
+936ECnUhSZtt/qRvnA1EJB/Hhs5Se4VPx6lTXYf8PXquI0IgDV49hlLhbPMKadQ8
+lo2yitiaSMJHsLZ1Wt6ob9oNFlBcceq3tfXPMVVylssuAI1pc3HsbmV7kMIwg0P1
+fyVoIALHlXgDAgMBAAGjggGzMIIBrzAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIF
+4DAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwVAYDVR0jBE0wS4AU
+BASNACQ4xpx414BXQWdJBoDmckehMKQuMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYD
+VQQKDARPTkFQMQswCQYDVQQGEwJVU4IBAjAdBgNVHQ4EFgQUMghLmZ4l0T+MY3uk
+AR6YBJP5gwMwgfoGA1UdEQSB8jCB74IDYWFpgoHnYWFpLmFwaS5zaW1wbGVkZW1v
+Lm9uYXAub3JnIGFhaS5lbGFzdGljc2VhcmNoLnNpbXBsZWRlbW8ub25hcC5vcmcg
+YWFpLmdyZW1saW5zZXJ2ZXIuc2ltcGxlZGVtby5vbmFwLm9yZyBhYWkuaGJhc2Uu
+c2ltcGxlZGVtby5vbmFwLm9yZyBhYWkub25hcCBhYWkuc2VhcmNoc2VydmljZS5z
+aW1wbGVkZW1vLm9uYXAub3JnIGFhaS5zaW1wbGVkZW1vLm9uYXAub3JnIGFhaS51
+aS5zaW1wbGVkZW1vLm9uYXAub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQBJyXk6ZTfA
+f9mYi5ey/ZpchB9egJfwEXXOqSKeYYTjqUr3uXXk+usb8YXsFVoD9Id5do3Hnxv+
+J3ISGmyPTgQfV/9KDmtHPTyclR9mLji+j4GviZnIpAIsI/duPKlEfLcym9smAC7Q
++HYanUQ7s8sjJJ4ORdBLOy1HkfTu9pjNKZ1CcEnJZ8Y5juLOeEj+Xa+QzcywSK2E
+iuPXJwFFtcX9fO+ojiQV9g0L9JgABMqm4Q6si03gXofYEgvAUJSxsirydB8kcqPU
+jCgw8/XIsHj4VRNNWlwkvzskeX9ZlcFMmn6DTfyDD1Rrij1efotO2ie3OrKUEzpH
+N1G5vCuZqOla
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEVDCCAjygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVPU0FB
+RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwOTI0MTE0MjE2WhcN
+MjMwOTI0MTE0MjE2WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwG
+A1UECwwFT1NBQUYxGTAXBgNVBAMMEGludGVybWVkaWF0ZUNBXzIwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjPFeAho7BtWjB4Enww/KXD0tTuoda/Fkc
+o/yv2waNNsx+pOYGdJwNHYvNS7/RLBHc8kCN+TbKnYZ6AE97wD1Pzrc7AZ58qpjq
+Ob7aTp4u3IAMWR5YOkDyjiibA5X7z9N/wveG/Ei2SgN2pY7O2lK5ucm6igarfxll
+rZC1MA9zAXrfmd5bLJQQqACT6q15KQaCIwhqwoXp8w+s0rXcZ2/L303lFIUXoHUp
+kzMsIPhJ/ZoEvAEkXIPgT2uFgOwIyWmr8Rg5jYzZhV7vey3bQUBlue9aiMIXih3d
+b4AVD6J6eF/NmJygtUfHFrWeTAYLppA0d69BWUQZ+XQgCwjOMLaNAgMBAAGjZjBk
+MB0GA1UdDgQWBBQEBI0AJDjGnHjXgFdBZ0kGgOZyRzAfBgNVHSMEGDAWgBTtc8Wb
+I4DL8Bm6CVi8//GsTyq8NTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAt4VCLb2UHiZpDfSQbe62vlFzsGlODYKF
+k7BhW9Q5jfIXpPhhtBLFwJFEKAWFLVWubz+YIa7I5wtniS6zEPC/5t3JOiEXMJQY
+PfaPDSsovZ+eShu0QtrjjldFwL2MiqNsd2IWLSIRQUP63RZGBRTTxSsxB0VAfRyT
+cu/8znpmZsHna3DspGZQputm7qsxgUhAcPCdo9RQtG6Ox6L1wTXUJmTPHdKQtZjr
+qqSQ7kn8u3i5KQYYapmc3UO+CBbzoLPD5Rrlq+ROBbiNd9R/j5vVgRO7vsU9SHnm
+AaKFEjDPTSjDtMOxu1BsTNmftaE2jcYa9/ZW67H8URCuo92NE0cZRxBqHkPUjH3/
+/S43/TBAfjfarF5WW7iMAEZfEGhrQu26JWXBMcZshStuHUEPl2b+RC5LZcBMYKgi
+SqSOXzpiJeRNASpXKCQQZG8n03c/jBf1U20HaK/4Z2ikOql5B21suxhUbixG1EQN
+DOrFGOFUqG4Eyw+xjUR5rTfDnpKgQfJo0/aohZs9p5x+UwitkrQkJQ1ZmEzeVDjm
+7xsmOcAJS2T9DLle6fDWvyh76InymAPxzk1/2AWOp8uw8iwNfFxE+p+M7h0psZxp
+SnvlgASASdWlZLcMQtNiiKzMK75FW9SMctQfA/RfohNEwivpp6tNpgJozoKmhoPK
+zs5HS/mx8GI=
+-----END CERTIFICATE-----
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/ca_local_0.cer b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/ca_local_0.cer
new file mode 100644 (file)
index 0000000..ff37eaf
--- /dev/null
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFPjCCAyagAwIBAgIJAMhpcvbx/8/AMA0GCSqGSIb3DQEBCwUAMCwxDjAMBgNV
+BAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVUzAeFw0xODA4MDMx
+MzI2NTBaFw0zODA3MjkxMzI2NTBaMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQK
+DARPTkFQMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
+ggIBAO4j7nmAY9KX/ceFCITuWAMCHAmSoeHCTs+lgkYX7DpXPidsF5t0ijPaElUC
+rwwMnXz5h1o8FzXD64FMbqMVEseLUDZGelRZ7Rkz+hy0Y5i8QKsBTfeo7sP7ZEaC
+vpqom9imPLFUn4oDeYspCKjMF93Z69Cv8pxFYCFpZwY3eR9V4xOB613k8guBJtHR
+ccY9/NbdfbkrtUz5kNuQqwLj5ttvesqxPq0L4m3bPjkubQCb+QiJxx10Xcx6fcfu
+wIu7NR63qDlWFYstsDnH/VIT1pSCBHEw+muSEQ44sgPFy+AxB8O8HKd8wRfmkV2d
+YNPyotTLD+aLzDlCWtC0pGnTTJimdu9+hZRIZz5YT4m8BdLQ/jTBd6Gx2tVLvWso
+9IJSjfkhj6EtVxyZ81jM+rLAnKy3qPXDCN6CIKL07hNuSzIIhCrK2L4f82JWS7dP
+mg2acuhCH56qrhEr42Kjeak181KM/QKiRPgNyOSygJ7uRaLbqOQRh46c68NcmW4F
+13OwJQAsrjgaQY1ZWnFsvRYK9NnUqK+2XuCQFS7EYm02M2UwO2GCD88In8PCzzv8
+Q0Zj8Hb4h79fVRjG8/3MnQCJ164+9PfXyu9dj5l6XkkSvdj1IsewaSMy9NccGx7Q
+rE7yRPMB6FlAnGPj0KbJXHXJyiujPHSCF0D+Hbl9rxU7FRAbAgMBAAGjYzBhMB0G
+A1UdDgQWBBTtc8WbI4DL8Bm6CVi8//GsTyq8NTAfBgNVHSMEGDAWgBTtc8WbI4DL
+8Bm6CVi8//GsTyq8NTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAN
+BgkqhkiG9w0BAQsFAAOCAgEAW4IYy1PUrV/wHblIGFTBo5z7EB33rpHfAJzbDkop
+2n5wOlmh78pkeRNb1TOKcSHJPw0MdkwVBPI1wm/SOpHUPmKTW1muO6RUnFjZ68y9
+DiVa6zCW/RBFeG3f8kywxgqPLml1TbikRuMBU0ucOa/bXZ98P2hMLkjWTgeARGSj
+QCb7QyqeFzG0mPmAuX6zMj5xwpdyPB0zCoRGXa/BIWEvYjgkaRM+E+9oRWt/6BHQ
+4uw11R7gAV4/TSu7qYNfTMllBaLJ0o/1q0QF16e4mV1E4erDfWKlrvUlgCaHCx8Q
+3PL7ovM4jjrTNAjnX0q5xtWbF0mlJhJk/NbPDb7hArBv4vp9XoITyRW1vcbe94jv
+GzqLKlvBQUxGue4kLYDmUFdog7gaCkEH3N4mH3ad4HZUsOMeanvVgbVZr10VOlNq
+TEWqDPATayJdo+VhJCGc6hVa+IJsDTAa/z2MLybqcoOfNT/rxYIdvlX4OjSqAqOj
+bSivsCe9c4km56pP2ufA/woPzh+Z46Ukt+krGyFQwKdQQLh5Pp7Yuhvdld/5kd8M
+S2fqcBFpzzBSj+huVayw6jFi5qLlISouhCVsc0rBqvnfuQTQwmfFIlfaHBTSjniv
+5DdibZEtMqYYXl1VB4XUHTt5dOGHLEX2w/d5887DQVLUbaUKm1mfScb/vPjGgk6/
+re4=
+-----END CERTIFICATE-----
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer
new file mode 100644 (file)
index 0000000..756dd3a
--- /dev/null
@@ -0,0 +1,51 @@
+-----BEGIN CERTIFICATE-----
+MIIELDCCAxSgAwIBAgIJAI5fEseaW2LbMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNV
+BAYTAlVTMQ0wCwYDVQQKDARPTkFQMQ4wDAYDVQQLDAVPU0FBRjEZMBcGA1UEAwwQ
+aW50ZXJtZWRpYXRlQ0FfMjAeFw0xODEwMjIxMjM4MTZaFw0xOTA0MjIxMjM4MTZa
+MH8xETAPBgNVBAMMCGRtYWFwLWJjMQ8wDQYJKoZIhvcNAQkBFgAxLTArBgNVBAsM
+JGRtYWFwLWJjLXRvcGljLW1nckBkbWFhcC1iYy5vbmFwLm9yZzEOMAwGA1UECwwF
+T1NBQUYxDTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAs2mQSeSshK4ZrAwc8/QNHZiUVILlQwYyoviPfL27
+8mV1OXSYoTW+PzFU1Tv6HwKEFL3q9i9/y1m0DjhP4frHpNVVTo5KIeCv6fIsAYnp
+/p50P3EOh3AJehtZm4AtxN6DeMlaBv11GYUUm6E60Q36Y6Wgklq8u1KDngYJy1/Q
+Bl8aAiJbj2vpL64WSI3cyNz/qeI4/PxHsqBHUFI96GcLtLPLDSlIQWoWoZhkiQTH
+rU4Sx5/nVdWihfc0R0+jG5IH+mDb8WUNmyHnaHinrt5Er1sypU/NxD+NlRPFO1K4
+Dx40sxfAlu2LFCllDgSS/Xcfse0ny/TrL2RWELoIOz9NjQIDAQABo4HiMIHfMAkG
+A1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMB
+BggrBgEFBQcDAjBUBgNVHSMETTBLgBQEBI0AJDjGnHjXgFdBZ0kGgOZyR6EwpC4w
+LDEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTggEC
+MB0GA1UdDgQWBBTvkTjHV87v4IBJ8N/PqkjjWGKICjArBgNVHREEJDAigghkbWFh
+cC1iY4IWZG1hYXAtYmMgZG1hYXAtYmMub25hcDANBgkqhkiG9w0BAQsFAAOCAQEA
+EJFyoeQtkjDf/yUyWReewxiOfDdmmrDOO4gbxt6hd3ilOflmC7QolR1NAzmCML3b
+vmLS7a8zhwBsUU11wjasN8PI3qG7H36U7hP/NVwvql0YNGIcxvukPJJvDqW6V3MI
+fOaCFs4uJexSYeaXRWdk0Rq8GY9gB2j1TUsl+we9zJeErKr2vY2LAJI0iYJ+v6YY
+Ug14aPYu4m4ABUDhqfM+4z580h8GA+5ZkWNr5z9xfeJB520jAc6zx86obx9hep74
+OByfVqleMV0QfZeH9oLGYh2FnSSEG60GyWFIf9k76kh2LREVCbU+nOhFfVy9YD5Q
++2TXjh/wMcv3RxAHqSeW9A==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEVDCCAjygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVPU0FB
+RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwOTI0MTE0MjE2WhcN
+MjMwOTI0MTE0MjE2WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwG
+A1UECwwFT1NBQUYxGTAXBgNVBAMMEGludGVybWVkaWF0ZUNBXzIwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjPFeAho7BtWjB4Enww/KXD0tTuoda/Fkc
+o/yv2waNNsx+pOYGdJwNHYvNS7/RLBHc8kCN+TbKnYZ6AE97wD1Pzrc7AZ58qpjq
+Ob7aTp4u3IAMWR5YOkDyjiibA5X7z9N/wveG/Ei2SgN2pY7O2lK5ucm6igarfxll
+rZC1MA9zAXrfmd5bLJQQqACT6q15KQaCIwhqwoXp8w+s0rXcZ2/L303lFIUXoHUp
+kzMsIPhJ/ZoEvAEkXIPgT2uFgOwIyWmr8Rg5jYzZhV7vey3bQUBlue9aiMIXih3d
+b4AVD6J6eF/NmJygtUfHFrWeTAYLppA0d69BWUQZ+XQgCwjOMLaNAgMBAAGjZjBk
+MB0GA1UdDgQWBBQEBI0AJDjGnHjXgFdBZ0kGgOZyRzAfBgNVHSMEGDAWgBTtc8Wb
+I4DL8Bm6CVi8//GsTyq8NTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAt4VCLb2UHiZpDfSQbe62vlFzsGlODYKF
+k7BhW9Q5jfIXpPhhtBLFwJFEKAWFLVWubz+YIa7I5wtniS6zEPC/5t3JOiEXMJQY
+PfaPDSsovZ+eShu0QtrjjldFwL2MiqNsd2IWLSIRQUP63RZGBRTTxSsxB0VAfRyT
+cu/8znpmZsHna3DspGZQputm7qsxgUhAcPCdo9RQtG6Ox6L1wTXUJmTPHdKQtZjr
+qqSQ7kn8u3i5KQYYapmc3UO+CBbzoLPD5Rrlq+ROBbiNd9R/j5vVgRO7vsU9SHnm
+AaKFEjDPTSjDtMOxu1BsTNmftaE2jcYa9/ZW67H8URCuo92NE0cZRxBqHkPUjH3/
+/S43/TBAfjfarF5WW7iMAEZfEGhrQu26JWXBMcZshStuHUEPl2b+RC5LZcBMYKgi
+SqSOXzpiJeRNASpXKCQQZG8n03c/jBf1U20HaK/4Z2ikOql5B21suxhUbixG1EQN
+DOrFGOFUqG4Eyw+xjUR5rTfDnpKgQfJo0/aohZs9p5x+UwitkrQkJQ1ZmEzeVDjm
+7xsmOcAJS2T9DLle6fDWvyh76InymAPxzk1/2AWOp8uw8iwNfFxE+p+M7h0psZxp
+SnvlgASASdWlZLcMQtNiiKzMK75FW9SMctQfA/RfohNEwivpp6tNpgJozoKmhoPK
+zs5HS/mx8GI=
+-----END CERTIFICATE-----
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/keystore.password b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/keystore.password
new file mode 100644 (file)
index 0000000..3982387
--- /dev/null
@@ -0,0 +1 @@
+mYHC98!qX}7h?W}jRv}MIXTJ
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.aai.key b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.aai.key
new file mode 100644 (file)
index 0000000..b9a22cf
--- /dev/null
@@ -0,0 +1,29 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCCnz1BBkcDy1M7
+3ANgkbfwYANSJPdnU/meXpgHKYvXa8xbEI3Lsi5EnB7o9nthZFdU5dPZRFV5uJEO
+l0pjt3ogmPo0XZGYO++GfRNLq+c2YVmYjTLgFvEz6GzUtLueYjrl2JItGRugx0wN
+PXQmaAX3/8wD7nOTAZjlmuSWCeeJu5GBaX4aaiwVOONDGhmZZ7jISTE0xvvU936E
+CnUhSZtt/qRvnA1EJB/Hhs5Se4VPx6lTXYf8PXquI0IgDV49hlLhbPMKadQ8lo2y
+itiaSMJHsLZ1Wt6ob9oNFlBcceq3tfXPMVVylssuAI1pc3HsbmV7kMIwg0P1fyVo
+IALHlXgDAgMBAAECggEATFkLEpC6vWsAsYI9rxo9KxDToBXfTdP1mS2tKrKL/FQT
+1D5uwtrY1F10a7J2F0zxBrx3AQ1B8K2Ci8a+Ql6h0Z/YzvbJ/PM7Y56Dwr0tncl0
+9wfA7t46CZ8WzZT9/OtphaL6fcWpMmaK+0oqM7ClnHk1JC8h+pD6b2oDpfcQEJ5r
+hxFxdOotKgMzANMqTydteecfefy9l0hzgFiymxLZAo7ktW3HFpXO5HOgh1vkm5Pu
+FedGRwiI/RBqad2T59J/XcRH0f5Ky7sgpyCShwqIp23xpdum10N0/MTzY5iu/gvR
+pXGaPeYUrSPoLwuoMGAUm9wFbDqskI/mQzw6/rnfsQKBgQDU2O7ogZ/BjDVtjpfL
+NntXhLOq02U+dB16ZXSalMbsG//FILVLL/Ths2wutKk/9IIiC1qI4NhDc0smDkgJ
+l+oTZTnhVxZhWvOYovz7T3L3mp9VBIA0lW62dTDLK9gT6IRoQGN1fzzXF7ZfgOME
+irDQqBSfMqt5YCeQOKNe29eo5QKBgQCdGrLaGHBeWBdhvG8XcybJDk2Q9XnojO69
+2UtfJ64+hzTc2MFvyBlWymZt3/Qq3llP/K9WUYW/ohL9l8rTXHEfBGpQVPzU2roQ
+iicbx/zc2qfO79YaE10D/paekX2vrpoJlhtp0yMU/HMEYxrucbYQJEdKx9frcTXo
+fQ9l5V+WxwKBgQDKEkYGsQGFk+IpZ+XOhKPmu9KDDH0jJMPTrrxcAYE1KYPSl7Hm
+dtoK6Pd9BAFm+XAOeC70olpO9wdSUt6rVPFihojD2ZUiymFX+O0qfgwM7Fv2L/az
+dWcNjAbN7IsQo4AJJZAHPcv5/MYkt01Pw4gIIHqrhURsUBBfiJX5ecetzQKBgC9I
+NcPFzyvVv1O+7oBUO7wO/fE+r+35XHDu0OxWeO6Aqrw80BrgUh/40lMHL+km+iJE
+nlCQQHyoPqbr5DMwgysenRCIQ3+cRJttuM93pPajKBXzwLAgW8I0AQjAKN+S4PE5
+qA51aP2L7OHJIfXZaz34bSxocOd/LwZFfTjhi59JAoGAVc3HAzQOkrCs1GPXvuOx
+YwJUyuwLtCzcb05q+ys/5b/02RxTl4QPfOPqj47y8SDUUC7Cbr6ktqAkfsBOyPPj
+tSniVhPKa4XdP0Brsil934sd3shvwrpEb9Xs6ialTid+PKaU/rFn1DYWZUP8lNMK
+tq0nYLX/Z6N7LHiz32G9Kjs=
+-----END PRIVATE KEY-----
+
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks
new file mode 100644 (file)
index 0000000..e74ce64
Binary files /dev/null and b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks differ
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks
new file mode 100644 (file)
index 0000000..10103cf
Binary files /dev/null and b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks differ
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dmaap-bc.key b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dmaap-bc.key
new file mode 100644 (file)
index 0000000..880a33b
--- /dev/null
@@ -0,0 +1,29 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzaZBJ5KyErhms
+DBzz9A0dmJRUguVDBjKi+I98vbvyZXU5dJihNb4/MVTVO/ofAoQUver2L3/LWbQO
+OE/h+sek1VVOjkoh4K/p8iwBien+nnQ/cQ6HcAl6G1mbgC3E3oN4yVoG/XUZhRSb
+oTrRDfpjpaCSWry7UoOeBgnLX9AGXxoCIluPa+kvrhZIjdzI3P+p4jj8/EeyoEdQ
+Uj3oZwu0s8sNKUhBahahmGSJBMetThLHn+dV1aKF9zRHT6Mbkgf6YNvxZQ2bIedo
+eKeu3kSvWzKlT83EP42VE8U7UrgPHjSzF8CW7YsUKWUOBJL9dx+x7SfL9OsvZFYQ
+ugg7P02NAgMBAAECggEAfPetwlqe9DgUt6skS6SVsiTCRO9746iggrXhtECwdlHH
+SkL1wWye3INvFKwXN5xYBd6Xl+1T9X/BFBqTQdOdViompnYkGt7XiXvevR+kNm+G
+h14ngZ0/bKc6Tj8FIljfeLW/mJjZBPKWfSTbxBwZaWlHpEnBpjT+aobIMbnGO3i8
+iuPEIlSTmI/MmIvwyXkJ8r41phIZpdhtyKACx5LSvSArwPTYzVLyaGBJ63T4Qcat
+GY/Oa1nAJkbFT46sP06O+sm1UIVUGbjewzPaDnfdFyJWmae0nGn1xU8VZUPI7rfu
+YCf7le2grgtKy16jQo0o69RGYc4ebP27DKGd8YJHHQKBgQDts/7x6sG3fqPvbv9D
+M5LDraslrj+noHGVcvCfigcgngvnMGcB/R8IT6YPmNRfATHV/UTLuW++PuqXsR21
+/WwJVbxudZ3alX7sz6CTGvcCQvnvPQm2e/iVW/JFrQu/poPxL1k3talDdKFWTRql
+ZvQE05YjdTutlN2hGvqjSTZ1AwKBgQDBOO7GmG4FRQ4jXvUULXKMRUw+UzUy9NAV
+io1b3CiwWynsdW2OPp6Jy6GB6+e7Di2M0i35hkpQd5NoeDnVqkm9ERYLnHr9FAs0
+5cKT7DDRC9ddJesJrqdhqGfhZCHMoqEiDRf3kNMBfFMV1TCefdQ0kIFYUuhHgboJ
+aK+GqmtGLwKBgEEqmpdaA7e5mVn39TVIO1E4GHahGcRr4RfWxg8G+UNA8QR1qZfK
+/Cn8JAucm4RcQHxpDeZINVFT0F676OhOzMKWZa1mw1r8pypnFZ+ewd81221yL2p+
+/Dx+U6I0eccV8JA7qdrzC695lw2g39A+tGFqXHvmFPFWoZgcXGBNnwdfAoGBAJ8y
+9mEAhF2pKN3xxgGq9F8oVYpgakuis7Ob5Z5TBd9QLXmawvpZE6y670YphVN0egk1
+vxWBFMe5zeVccWJfHMQ/SKemdRsBob4itC/Gge4rUHV54W6nzVdENtrY8pQ1RofU
+u/OJCqGFursZXSaoy+fHTBrmrGUGOK655y0QSrSXAoGBANbSu8DfjJwDHcWTstcn
+XJ/bHB6aZmKe4ibOSFBMsOuy0AP1vRxQTgvQhgeRWm5ngv7YhPes2UHqRktadfGz
+VUzx9/ILpL5skhIFEzgEP32cO1tQNE1vxODs3zg+U/Wy9gxJt0dLCB/sPQJcGLri
+mkzev7AyLLr137K+ssxhczqg
+-----END PRIVATE KEY-----
+
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/truststore.password b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/truststore.password
new file mode 100644 (file)
index 0000000..168e64b
--- /dev/null
@@ -0,0 +1 @@
+*TQH?Lnszprs4LmlAj38yds(
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/httpServerLib.py b/tests/dcaegen2/bbs-testcases/resources/simulator/httpServerLib.py
new file mode 100644 (file)
index 0000000..d963169
--- /dev/null
@@ -0,0 +1,37 @@
+import _thread
+import ssl
+from http.server import HTTPServer
+
+
+def header_200_and_json(self):
+    self.send_response(200)
+    self.send_header('Content-Type', 'application/json')
+    self.end_headers()
+    
+def header_404_and_json(self):
+    self.send_response(404)
+    self.send_header('Content-Type', 'application/json')
+    self.end_headers()
+
+def start_http_endpoint(port, handler_class):
+    _thread.start_new_thread(init_http_endpoints, (port, handler_class))
+
+
+def start_https_endpoint(port, handler_class, keyfile, certfile, ca_certs):
+    _thread.start_new_thread(init_https_endpoints, (port, handler_class, keyfile, certfile, ca_certs))
+
+
+def init_http_endpoints(port, handler_class, server_class=HTTPServer):
+    server = server_class(('', port), handler_class)
+    sa = server.socket.getsockname()
+    print("Serving HTTP on", sa[0], "port", sa[1], "for", handler_class, "...")
+    server.serve_forever()
+
+
+def init_https_endpoints(port, handler_class, keyfile, certfile, ca_certs, server_class=HTTPServer):
+    server = server_class(('', port), handler_class)
+    server.socket = ssl.wrap_socket(server.socket, keyfile=keyfile, certfile=certfile,
+                                    ca_certs=ca_certs, server_side=True)
+    sa = server.socket.getsockname()
+    print("Serving HTTPS on", sa[0], "port", sa[1], "for", handler_class, "...")
+    server.serve_forever()
index 6667bd7..597f864 100644 (file)
@@ -41,16 +41,10 @@ class PrhLibrary(object):
     def create_pnf_ready_notification_as_pnf_ready(json_file):
         json_to_python = json.loads(json_file)
         correlation_id = PrhLibrary.extract_correlation_id_value(json_to_python, "correlationId")
-        serial_number = PrhLibrary.extract_value_from_pnfRegistrationFields(json_to_python, "serial-number", "serialNumber")
-        vendor_name = PrhLibrary.extract_value_from_pnfRegistrationFields(json_to_python, "equip-vendor", "vendorName")
-        model_number = PrhLibrary.extract_value_from_pnfRegistrationFields(json_to_python, "equip-model", "modelNumber")
-        unit_type = PrhLibrary.extract_value_from_pnfRegistrationFields(json_to_python, "equip-type", "unitType")
 
         additional_fields = PrhLibrary.extract_additional_fields_value(json_to_python)
 
-        nf_role  = json_to_python.get("event").get("commonEventHeader").get("nfNamingCode") if "nfNamingCode" in json_to_python["event"]["commonEventHeader"] else ""
-
-        str_json = '{' + correlation_id + serial_number + vendor_name + model_number + unit_type + '"nf-role":"' + nf_role + '","sw-version":"",' + additional_fields
+        str_json = '{' + correlation_id + additional_fields
 
         return json.dumps(str_json.rstrip(',') + '}').replace("\\", "")[1:-1]
 
@@ -91,7 +85,7 @@ class PrhLibrary(object):
     @staticmethod
     def create_pnf_name(json_file):
         json_to_python = json.loads(json_file)
-        correlation_id = json_to_python.get("sourceName")
+        correlation_id = json_to_python.get("event").get("commonEventHeader").get("sourceName") + '",' if "sourceName" in json_to_python["event"]["commonEventHeader"] else '",'
         return correlation_id
 
     @staticmethod
index 8b6ea12..b49a14b 100644 (file)
@@ -3,9 +3,9 @@ services:
   prh:
     image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:latest
     command: >
-        --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap-bc
+        --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap-mr
         --dmaap.dmaapConsumerConfiguration.dmaapPortNumber=2222
-        --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap-bc
+        --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap-mr
         --dmaap.dmaapProducerConfiguration.dmaapPortNumber=2222
         --aai.aaiClientConfiguration.aaiHostPortNumber=3333
         --aai.aaiClientConfiguration.aaiHost=aai
@@ -19,16 +19,16 @@ services:
     container_name: prh
     depends_on:
       - cbs
-      - dmaap-bc
+      - dmaap-mr
       - aai
 
   ssl_prh:
     image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:latest
     command: >
-        --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap-bc
+        --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap-mr
         --dmaap.dmaapConsumerConfiguration.dmaapPortNumber=2223
         --dmaap.dmaapConsumerConfiguration.dmaapProtocol=https
-        --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap-bc
+        --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap-mr
         --dmaap.dmaapProducerConfiguration.dmaapPortNumber=2223
         --dmaap.dmaapProducerConfiguration.dmaapProtocol=https
         --aai.aaiClientConfiguration.aaiHostPortNumber=3334
@@ -54,10 +54,10 @@ services:
     container_name: ssl_prh
     depends_on:
       - cbs
-      - dmaap-bc
+      - dmaap-mr
       - aai
 
-  dmaap-bc:
+  dmaap-mr:
     build:
       context: simulator
       dockerfile: DMaaP_simulator
@@ -89,21 +89,74 @@ services:
     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.dmaapUrl":"http://dmaap-mr:2222/events/unauthenticated.VES_PNFREG_OUTPUT",
+                                              "dmaap.dmaapConsumerConfiguration.dmaapHostName":"dmaap-mr",
                                               "dmaap.dmaapConsumerConfiguration.dmaapPortNumber":2223,
-                                              "dmaap.dmaapConsumerConfiguration.dmaapProtocol":"https",
-                                              "dmaap.dmaapProducerConfiguration.dmaapHostName":"dmaap-bc",
+                                              "dmaap.dmaapConsumerConfiguration.dmaapTopicName": "events/unauthenticated.VES_PNFREG_OUTPUT",
+                                              "dmaap.dmaapConsumerConfiguration.dmaapProtocol":"http",
+                                              "dmaap.dmaapConsumerConfiguration.dmaapUserName":"admin",
+                                              "dmaap.dmaapConsumerConfiguration.dmaapUserPassword":"admin",
+                                              "dmaap.dmaapConsumerConfiguration.dmaapContentType": "application/json",
+                                              "dmaap.dmaapConsumerConfiguration.consumerId": "c12",
+                                              "dmaap.dmaapConsumerConfiguration.consumerGroup": "OpenDCAE-c12",
+                                              "dmaap.dmaapConsumerConfiguration.timeoutMs": -1,
+                                              "dmaap.dmaapConsumerConfiguration.messageLimit": -1,
+
+                                              "dmaap.dmaapProducerConfiguration.dmaapUrl":"http://dmaap-mr:2222/events/unauthenticated.PNF_READY",
+                                              "dmaap.dmaapProducerConfiguration.dmaapHostName":"dmaap-mr",
                                               "dmaap.dmaapProducerConfiguration.dmaapPortNumber":2223,
-                                              "dmaap.dmaapProducerConfiguration.dmaapProtocol":"https",
-                                              "aai.aaiClientConfiguration.aaiHostPortNumber":3334,
+                                              "dmaap.dmaapProducerConfiguration.dmaapTopicName": "events/unauthenticated.PNF_READY",
+                                              "dmaap.dmaapProducerConfiguration.dmaapProtocol":"http",
+                                              "dmaap.dmaapProducerConfiguration.dmaapUserName":"admin",
+                                              "dmaap.dmaapProducerConfiguration.dmaapUserPassword":"admin",
+                                              "dmaap.dmaapProducerConfiguration.dmaapContentType": "application/json",
+
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapUrl":"http://dmaap-mr:2222/events/unauthenticated.PNF_UPDATE",
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapHostName": "dmaap-mr",
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapPortNumber": 2223,
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapTopicName": "events/unauthenticated.PNF_UPDATE",
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapProtocol": "http",
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapUserName": "admin",
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapUserPassword": "admin",
+                                              "dmaap.dmaapUpdateProducerConfiguration.dmaapContentType": "application/json",
+
+                                              "aai.aaiClientConfiguration.pnfUrl":"https://aai:3333/aai/v12/network/pnfs/pnf"
                                               "aai.aaiClientConfiguration.aaiHost":"aai",
+                                              "aai.aaiClientConfiguration.aaiHostPortNumber":3334,
                                               "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"
+                                              "aai.aaiClientConfiguration.aaiUserName": "DCAE",
+                                              "aai.aaiClientConfiguration.aaiUserPassword": "DCAE",
+                                              "aai.aaiClientConfiguration.aaiIgnoreSslCertificateErrors": true,
+                                              "aai.aaiClientConfiguration.aaiBasePath": "/aai/v12",
+                                              "aai.aaiClientConfiguration.aaiPnfPath": "/network/pnfs/pnf",
+                                              "aai.aaiClientConfiguration.aaiServiceInstancePath":"/business/customers/customer/${customer}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${serviceInstanceId}",
+
+                                              "security.trustStorePath":"change it",
+                                              "security.trustStorePasswordPath":"change it",
+                                              "security.keyStorePath":"change it",
+                                              "security.keyStorePasswordPath":"change it",
+                                              "security.enableAaiCertAuth":false,
+                                              "security.enableDmaapCertAuth":false,
+
+                                              "streams_publishes":{
+                                                "pnf-update":{
+                                                  "dmaap_info":{
+                                                    "topic_url":"http://dmaap-mr:2222/events/unauthenticated.PNF_UPDATE"
+                                                  }
+                                                },
+                                                "pnf-ready":{
+                                                  "dmaap_info":{
+                                                    "topic_url":"http://dmaap-mr:2222/events/unauthenticated.PNF_READY"
+                                                  }
+                                                }
+                                              },
+                                              "streams_subscribes":{
+                                                "ves-reg-output":{
+                                                  "dmaap_info":{
+                                                    "topic_url":"http://dmaap-mr:2222/events/unauthenticated.VES_PNFREG_OUTPUT"
+                                                  }
+                                                }
+                                              }
                                             }'
     ]
     depends_on:
index a6a01eb..c231185 100644 (file)
@@ -33,9 +33,9 @@ Valid event processing
     [Arguments]    ${input_valid__ves_event_in_dmaap}
     [Timeout]    30s
     ${data}=    Get Data From File    ${input_valid__ves_event_in_dmaap}
+    Set event in DMaaP    ${data}
     ${pnf_name}=    Create PNF name    ${data}
     Set PNF name in AAI    ${pnf_name}
-    Set event in DMaaP    ${data}
     ${expected_event_pnf_ready_in_dpaap}=    create pnf ready_notification as pnf ready    ${data}
     #TODO to fix after CBS merge
     #Wait Until Keyword Succeeds    100x    300ms    Check PNF_READY notification    ${expected_event_pnf_ready_in_dpaap}
index bd76c61..baa8165 100644 (file)
@@ -16,7 +16,7 @@ logging.basicConfig(
 
 logger = logging.getLogger('AAI-simulator-logger')
 
-pnfs = 'Empty'
+pnf_name = 'Empty'
 pnf_entry = {}
 
 
@@ -29,10 +29,10 @@ class AAISetup(BaseHTTPRequestHandler):
 
     def do_PUT(self):
         logger.info('AAI SIM Setup Put execution')
-        if re.search('/set_pnf$', self.path):
-            global pnfs
+        if re.search('/set_pnf$', self.path): # to avoid regex collisions '$' must be added
+            global pnf_name
             content_length = self._get_content_length()
-            pnfs = self.rfile.read(content_length)
+            pnf_name = self.rfile.read(content_length).decode()
             _mark_response_as_http_ok(self)
 
         if re.search('/set_pnf_entry',self.path):
@@ -46,8 +46,8 @@ class AAISetup(BaseHTTPRequestHandler):
     def do_POST(self):
         logger.info('AAI SIM Setup Post execution')
         if re.search('/reset', self.path):
-            global pnfs
-            pnfs = 'Empty'
+            global pnf_name
+            pnf_name = 'Empty'
             _mark_response_as_http_ok(self)
 
         return
@@ -60,17 +60,18 @@ class AAIHandler(BaseHTTPRequestHandler):
 
     def do_GET(self):
         logger.info('AAI SIM Get execution')
-        if re.search('/get_pnf_entry', self.path):
+        full_request_path = '/aai/v12/network/pnfs/pnf/' + pnf_name
+        if re.search(full_request_path, self.path):
             _mark_response_as_http_ok(self)
             body = json.dumps(pnf_entry)
+            logger.info('AAI SIM Get json prepared')
             self.wfile.write(body.encode())
-
         return
 
 
     def do_PATCH(self):
         logger.info('AAI SIM Patch execution')
-        pnfs_name = '/aai/v12/network/pnfs/pnf/' + pnfs.decode()
+        pnfs_name = '/aai/v12/network/pnfs/pnf/' + pnf_name
         if re.search('wrong_aai_record', self.path):
             self.send_response(400)
             logger.info('Execution status 400')
@@ -93,4 +94,4 @@ def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"):
 
 
 if __name__ == '__main__':
-    _main_()
+    _main_()
\ No newline at end of file