aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawel <pawel.kasperkiewicz@nokia.com>2020-04-22 11:03:54 +0200
committerPawel <pawel.kasperkiewicz@nokia.com>2020-04-22 13:22:59 +0200
commit2fa8397e0c4e6085f0a410be722c56eeba5b0dfe (patch)
treee54a79b80ba8875bce10c788d615bb77bfa568e3
parent25764e61bcaf1b464dbed0898b34cb473db8ceda (diff)
Create local CSITs to verify simulator flow with VES
Issue-ID: INT-1544 Signed-off-by: Pawel <pawel.kasperkiewicz@nokia.com> Change-Id: Id54a6674fef815b91b0a6d10e73d2c8d2c431ef4
-rw-r--r--README.md4
-rw-r--r--pnfsimulator/Makefile13
-rw-r--r--sanitycheck/Makefile40
-rw-r--r--sanitycheck/README.md52
-rw-r--r--sanitycheck/dmaap-simulator/Dockerfile7
-rw-r--r--sanitycheck/dmaap-simulator/Makefile23
-rw-r--r--sanitycheck/dmaap-simulator/README.md23
-rw-r--r--sanitycheck/dmaap-simulator/requirements.txt6
-rw-r--r--sanitycheck/dmaap-simulator/simulator.py47
-rw-r--r--sanitycheck/events/eventToVes.json37
-rw-r--r--sanitycheck/events/fewEventsToVes.json32
-rw-r--r--sanitycheck/events/vesAddressConfiguration.json3
-rw-r--r--sanitycheck/ves/Makefile23
-rw-r--r--sanitycheck/ves/README.md21
-rw-r--r--sanitycheck/ves/docker-compose.yml20
15 files changed, 351 insertions, 0 deletions
diff --git a/README.md b/README.md
index 6300184..ff9da7a 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,10 @@ mvn clean package
mvn clean package -P docker -DskipTests=true
```
+##Sanity check
+
+See README.md in sanitycheck directory
+
## Sonar
https://sonarcloud.io/dashboard?id=onap_integration-pnf-simulator
diff --git a/pnfsimulator/Makefile b/pnfsimulator/Makefile
new file mode 100644
index 0000000..58de699
--- /dev/null
+++ b/pnfsimulator/Makefile
@@ -0,0 +1,13 @@
+all: start
+
+.PHONY: start
+
+start:
+ @echo "##### Start PNF simulator #####"
+ docker-compose up -d
+ @echo "##### DONE #####"
+
+stop:
+ @echo "##### Stop PNF simulator #####"
+ docker-compose down
+ @echo "##### DONE #####"
diff --git a/sanitycheck/Makefile b/sanitycheck/Makefile
new file mode 100644
index 0000000..37f2669
--- /dev/null
+++ b/sanitycheck/Makefile
@@ -0,0 +1,40 @@
+all: start
+
+.PHONY: start
+
+build:
+ @echo "##### build (dmaap sim) #####"
+ make -C dmaap-simulator build
+ @echo "##### DONE #####"
+
+start: build
+ @echo "##### start (dmaap sim,ves,pnf sim) #####"
+ make -C ves start
+ make -C ../pnfsimulator start
+ @echo "##### DONE #####"
+
+stop:
+ @echo "##### Stop (dmaap sim,ves,pnf sim) #####"
+ make -C ves stop
+ make -C ../pnfsimulator stop
+ @echo "##### DONE #####"
+
+generate-event:
+ @echo "##### Trigger PNF Simulator to generate event #####"
+ curl -X POST http://localhost:5000/simulator/event -d @events/eventToVes.json --header "Content-Type: application/json"
+ @echo "\n##### DONE #####"
+
+reconfigure-ves-url:
+ @echo "##### Change VES address configuration in PNF Simulator #####"
+ curl -X PUT http://localhost:5000/simulator/config -d @events/vesAddressConfiguration.json --header "Content-Type: application/json"
+ @echo "\n##### DONE #####"
+
+generate-multiple-events:
+ @echo "\n##### Trigger PNF Simulator to generate multiple events #####"
+ curl -X POST http://localhost:5000/simulator/start -d @events/fewEventsToVes.json --header "Content-Type: application/json"
+ @echo "\n##### DONE #####"
+
+check-dmaap:
+ @echo "##### Check dmaap simulator for collected events #####"
+ make -C dmaap-simulator get-data
+ @echo "\n##### DONE #####" \ No newline at end of file
diff --git a/sanitycheck/README.md b/sanitycheck/README.md
new file mode 100644
index 0000000..9fb4929
--- /dev/null
+++ b/sanitycheck/README.md
@@ -0,0 +1,52 @@
+### Run test case pnfsimulator -> ves collector -> dmaap simulator
+
+### Prerequisites
+* Check your docker network ip:
+```
+ip a | grep docker0 | grep inet
+```
+If the IP address is different than 172.17.0.1/16:
+inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
+
+You have to change the IP address in file events/vesAddressConfiguration.json
+```
+{
+ "vesServerUrl": "http://<IP_Address>:8080/eventListener/v7"
+}
+```
+and in file events/eventToVes.json
+
+```
+{
+"vesServerUrl": "http://<IP_Address>:8080/eventListener/v7",
+"event": { ...
+```
+### 1. Build Projects
+```
+make start
+```
+### 2. Send one event
+```
+make generate-event
+```
+### 2.1 Check dmaap sim
+```
+make check-dmaap
+```
+### 3. Send few events:
+### 3.1 Reconfigure ves url
+```
+make reconfigure-ves-url
+```
+### 3.2 Send events
+```
+make generate-multiple-events
+```
+### 3.3 Check dmaap sim
+```
+make check-dmaap
+```
+### 4. Clear environment
+```
+make stop
+```
diff --git a/sanitycheck/dmaap-simulator/Dockerfile b/sanitycheck/dmaap-simulator/Dockerfile
new file mode 100644
index 0000000..f84cac2
--- /dev/null
+++ b/sanitycheck/dmaap-simulator/Dockerfile
@@ -0,0 +1,7 @@
+FROM python:3
+WORKDIR /application
+COPY ./simulator.py ./
+COPY ./requirements.txt ./
+RUN pip install -r ./requirements.txt
+ENV FLASK_APP=./simulator.py
+CMD ["python", "./simulator.py"]
diff --git a/sanitycheck/dmaap-simulator/Makefile b/sanitycheck/dmaap-simulator/Makefile
new file mode 100644
index 0000000..af8f162
--- /dev/null
+++ b/sanitycheck/dmaap-simulator/Makefile
@@ -0,0 +1,23 @@
+all: build
+
+.PHONY: build
+
+build:
+ @echo "##### Build dmaap simulator image #####"
+ docker build . -t dmaap-simulator
+ @echo "##### DONE #####"
+
+start:
+ @echo "##### Start dmaap simulator #####"
+ docker run -d -p 3904:3904 --name dmaap-simulator dmaap-simulator
+ @echo "##### DONE #####"
+
+stop:
+ @echo "##### Stop dmaap simulator #####"
+ docker rm -f dmaap-simulator
+ @echo "##### DONE #####"
+
+get-data:
+ @echo "##### Get data fetched by dmaap-simulator #####\n"
+ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://localhost:3904/events
+ @echo "\n\n##### DONE #####"
diff --git a/sanitycheck/dmaap-simulator/README.md b/sanitycheck/dmaap-simulator/README.md
new file mode 100644
index 0000000..c06afdf
--- /dev/null
+++ b/sanitycheck/dmaap-simulator/README.md
@@ -0,0 +1,23 @@
+DMaaP simulator
+---------------
+
+
+### Build an image
+```
+make build
+```
+
+### Start
+```
+make start
+```
+
+### Stop
+```
+make stop
+```
+
+### Get fetched events
+```
+make get-data
+```
diff --git a/sanitycheck/dmaap-simulator/requirements.txt b/sanitycheck/dmaap-simulator/requirements.txt
new file mode 100644
index 0000000..a6d2d3a
--- /dev/null
+++ b/sanitycheck/dmaap-simulator/requirements.txt
@@ -0,0 +1,6 @@
+Click==7.0
+Flask==1.1.1
+itsdangerous==1.1.0
+Jinja2==2.10.3
+MarkupSafe==1.1.1
+Werkzeug==0.16.0
diff --git a/sanitycheck/dmaap-simulator/simulator.py b/sanitycheck/dmaap-simulator/simulator.py
new file mode 100644
index 0000000..3437442
--- /dev/null
+++ b/sanitycheck/dmaap-simulator/simulator.py
@@ -0,0 +1,47 @@
+import json
+import logging as sys_logging
+
+from flask import Flask, request, logging
+app = Flask(__name__)
+
+sys_logging.basicConfig(level=sys_logging.DEBUG)
+logger = logging.create_logger(app)
+events = []
+
+@app.route("/events/unauthenticated.VES_NOTIFICATION_OUTPUT", methods=['POST'])
+def event_ves_notification_output():
+ return handle_new_event(request)
+
+@app.route("/events/unauthenticated.SEC_FAULT_OUTPUT", methods=['POST'])
+def event_sec_fault_output():
+ return handle_new_event(request)
+
+def handle_new_event(http_request):
+ receive_events = decode_request_data(http_request.data)
+ for event in receive_events:
+ events.append(json.loads(event))
+ return {}, 200
+
+@app.route("/events", methods=['GET'])
+def get_events():
+ return json.dumps(events), 200
+
+def decode_request_data(request_data):
+ data = request_data.decode("utf-8")
+ receive_events = data.split("\n")
+ receive_events = receive_events[:-1]
+ logger.info("received events: " + str(receive_events))
+ correct_events = []
+ for event in receive_events:
+ logger.info("received event: " + str(event))
+ correct_events.append(get_correct_json(event))
+ return correct_events
+
+def get_correct_json(incorrect_json):
+ json_start_position = incorrect_json.find("{")
+ correct_json = incorrect_json[json_start_position:]
+ correct_json = correct_json.replace("\r", "").replace("\t", "").replace(" ", "")
+ return correct_json
+
+if __name__ == "__main__":
+ app.run(host='0.0.0.0', port=3904)
diff --git a/sanitycheck/events/eventToVes.json b/sanitycheck/events/eventToVes.json
new file mode 100644
index 0000000..7299306
--- /dev/null
+++ b/sanitycheck/events/eventToVes.json
@@ -0,0 +1,37 @@
+{
+ "vesServerUrl": "http://172.17.0.1:8080/eventListener/v7",
+ "event": {
+ "event": {
+ "commonEventHeader": {
+ "version": "4.0.1",
+ "vesEventListenerVersion": "7.0.1",
+ "domain": "fault",
+ "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
+ "eventId": "fault0000245",
+ "sequence": 1,
+ "priority": "High",
+ "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
+ "reportingEntityName": "ibcx0001vm002oam001",
+ "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
+ "sourceName": "scfx0001vm002cap001",
+ "nfVendorName": "Ericsson",
+ "nfNamingCode": "scfx",
+ "nfcNamingCode": "ssc",
+ "startEpochMicrosec": 1413378172000000,
+ "lastEpochMicrosec": 1413378172000000,
+ "timeZoneOffset": "UTC-05:30"
+ },
+ "faultFields": {
+ "faultFieldsVersion": "4.0",
+ "alarmCondition": "PilotNumberPoolExhaustion",
+ "eventSourceType": "other",
+ "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
+ "eventSeverity": "CRITICAL",
+ "vfStatus": "Active",
+ "alarmAdditionalInformation": {
+ "PilotNumberPoolSize": "1000"
+ }
+ }
+ }
+ }
+}
diff --git a/sanitycheck/events/fewEventsToVes.json b/sanitycheck/events/fewEventsToVes.json
new file mode 100644
index 0000000..9733469
--- /dev/null
+++ b/sanitycheck/events/fewEventsToVes.json
@@ -0,0 +1,32 @@
+{
+ "simulatorParams": {
+ "repeatCount": 4,
+ "repeatInterval": 1
+ },
+ "templateName": "notification.json",
+ "patch": {
+ "event": {
+ "commonEventHeader": {
+ "domain": "notification",
+ "eventName": "vFirewallBroadcastPackets",
+ "eventId": "#RandomString(10)",
+ "priority": "Normal",
+ "reportingEntityName": "myVNF",
+ "sequence": 1,
+ "sourceName": "ClosedLoopVNF",
+ "startEpochMicrosec": 1531616794,
+ "lastEpochMicrosec": 1531719042,
+ "vesEventListenerVersion": "7.0.1",
+ "version": "4.0.1"
+ }
+ }
+ },
+ "variables": {
+ "dN": "NRNB=5, NRCEL=1234",
+ "dn": "Test_dn",
+ "attributeList": {
+ "threshXHighQ": "50",
+ "threshXHighP": "52"
+ }
+ }
+}
diff --git a/sanitycheck/events/vesAddressConfiguration.json b/sanitycheck/events/vesAddressConfiguration.json
new file mode 100644
index 0000000..9c6aa22
--- /dev/null
+++ b/sanitycheck/events/vesAddressConfiguration.json
@@ -0,0 +1,3 @@
+{
+ "vesServerUrl": "http://172.17.0.1:8080/eventListener/v7"
+}
diff --git a/sanitycheck/ves/Makefile b/sanitycheck/ves/Makefile
new file mode 100644
index 0000000..4fe5e4b
--- /dev/null
+++ b/sanitycheck/ves/Makefile
@@ -0,0 +1,23 @@
+all: start
+
+.PHONY: start
+
+start:
+ @echo "##### Start VES with DMAAP simulator #####"
+ docker-compose up -d
+ @echo "##### DONE #####"
+
+stop:
+ @echo "##### Stop VES with DMAAP simulator #####"
+ docker-compose down
+ @echo "##### DONE #####"
+
+health-check:
+ @echo "##### Health check #####\n"
+
+ @echo "##### DMAAP simulator is ready #####\n"
+ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://localhost:3904/events
+
+ @echo "\n\n##### VES is ready #####\n"
+ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET GET http://localhost:8080/healthcheck
+ @echo "\n\n##### DONE #####"
diff --git a/sanitycheck/ves/README.md b/sanitycheck/ves/README.md
new file mode 100644
index 0000000..29309a4
--- /dev/null
+++ b/sanitycheck/ves/README.md
@@ -0,0 +1,21 @@
+VES with DMAAP simulator
+------------------------
+
+### Prerequisites
+* DMaaP Simulator image available.
+
+See README.md in dmaap-simulator directory
+
+### Start
+```
+make start
+```
+
+### Health check
+```
+make health-check
+```
+
+### Stop
+```
+make stop \ No newline at end of file
diff --git a/sanitycheck/ves/docker-compose.yml b/sanitycheck/ves/docker-compose.yml
new file mode 100644
index 0000000..d9666d8
--- /dev/null
+++ b/sanitycheck/ves/docker-compose.yml
@@ -0,0 +1,20 @@
+version: '3'
+services:
+ ves:
+ container_name: ves
+ image: nexus3.onap.org:10003/onap/org.onap.dcaegen2.collectors.ves.vescollector:latest
+ ports:
+ - "8080:8080"
+ - "8443:8443"
+ networks:
+ - vesnetwork
+ onap-dmaap:
+ container_name: dmaap
+ image: dmaap-simulator
+ ports:
+ - "3904:3904"
+ networks:
+ - vesnetwork
+networks:
+ vesnetwork:
+ driver: bridge