From b5f7978fd9075904cda17e0010e1c1960e39b646 Mon Sep 17 00:00:00 2001 From: Bartosz Gardziejewski Date: Wed, 22 Jul 2020 12:42:45 +0200 Subject: Extend Dmaap simulator to support all topics. Issue-ID: DCAEGEN2-1771 Signed-off-by: Bartosz Gardziejewski Change-Id: I23ff978dc8ab2e0b7c3c7ab0388114748b70bc60 --- sanitycheck/dmaap-simulator/simulator.py | 52 ++++++++++++++++++++++++-------- 1 file 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/", 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/", 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) -- cgit 1.2.3-korg