diff options
author | 2020-07-22 12:42:45 +0200 | |
---|---|---|
committer | 2020-07-22 12:42:45 +0200 | |
commit | b5f7978fd9075904cda17e0010e1c1960e39b646 (patch) | |
tree | 5c2d1e0855bd8633f1d8c84a546780ec3ea38979 | |
parent | a4a1e1b4a98a980d3bf9eec719124d6f2d25d018 (diff) |
Extend Dmaap simulator to support all topics.
Issue-ID: DCAEGEN2-1771
Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Change-Id: I23ff978dc8ab2e0b7c3c7ab0388114748b70bc60
-rw-r--r-- | sanitycheck/dmaap-simulator/simulator.py | 52 |
1 files changed, 39 insertions, 13 deletions
diff --git a/sanitycheck/dmaap-simulator/simulator.py b/sanitycheck/dmaap-simulator/simulator.py index 3437442..6a06266 100644 --- a/sanitycheck/dmaap-simulator/simulator.py +++ b/sanitycheck/dmaap-simulator/simulator.py @@ -1,30 +1,40 @@ import json import logging as sys_logging -from flask import Flask, request, logging +from flask import Flask, request, logging, Response + app = Flask(__name__) sys_logging.basicConfig(level=sys_logging.DEBUG) logger = logging.create_logger(app) -events = [] +events = {} + + +@app.route("/events/<path:topic>", methods=['POST']) +def event_sec_fault_output(topic): + return handle_new_event(topic, request) + + +@app.route("/events", methods=['GET']) +def get_events(): + resp = Response(json.dumps(events)) + resp.headers['Content-Type'] = 'application/json' + return resp + -@app.route("/events/unauthenticated.VES_NOTIFICATION_OUTPUT", methods=['POST']) -def event_ves_notification_output(): - return handle_new_event(request) +@app.route("/events/<path:topic>", methods=['GET']) +def get_events_from_topic(topic): + resp = Response(json.dumps(get_events_from_map(topic))) + resp.headers['Content-Type'] = 'application/json' + return resp -@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): +def handle_new_event(topic, http_request): receive_events = decode_request_data(http_request.data) for event in receive_events: - events.append(json.loads(event)) + add_event_to_map(topic, 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") @@ -37,11 +47,27 @@ def decode_request_data(request_data): 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 + +def add_event_to_map(topic, event): + if events.__contains__(topic): + events[topic].append(event) + else: + events[topic] = [event] + + +def get_events_from_map(topic): + if events.__contains__(topic): + return events[topic] + else: + return [] + + if __name__ == "__main__": app.run(host='0.0.0.0', port=3904) |