X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=tests%2Fdcaegen2%2Fprh-testcases%2Fresources%2Fsimulator%2FAAI.py;h=baa81651ca96e708e78e135b50dad50591f805bd;hb=refs%2Fchanges%2F01%2F84501%2F1;hp=b6c9c0f9d2c7859b9736002ad72f6b17fb4aec18;hpb=dff4368ec33b87949935d2561acf9b55bd69aabc;p=integration%2Fcsit.git diff --git a/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py b/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py index b6c9c0f9..baa81651 100644 --- a/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py +++ b/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py @@ -1,74 +1,97 @@ +import logging +import json +import sys +import re +import time from http.server import BaseHTTPRequestHandler -from http.server import HTTPServer -import _thread, ssl, time, re +import httpServerLib -pnfs = 'Empty' +ch = logging.StreamHandler(sys.stdout) +handlers = [ch] +logging.basicConfig( + level=logging.DEBUG, + format='[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s', + handlers=handlers +) + +logger = logging.getLogger('AAI-simulator-logger') + +pnf_name = 'Empty' +pnf_entry = {} + + +def _mark_response_as_http_ok(http_endpoint): + logger.info('Execution status 200') + httpServerLib.header_200_and_json(http_endpoint) class AAISetup(BaseHTTPRequestHandler): def do_PUT(self): - if re.search('/set_pnfs', self.path): - global pnfs - content_length = int(self.headers['Content-Length']) - pnfs = self.rfile.read(content_length) - _header_200_and_json(self) + logger.info('AAI SIM Setup Put execution') + if re.search('/set_pnf$', self.path): # to avoid regex collisions '$' must be added + global pnf_name + content_length = self._get_content_length() + pnf_name = self.rfile.read(content_length).decode() + _mark_response_as_http_ok(self) + + if re.search('/set_pnf_entry',self.path): + global pnf_entry + content_length = self._get_content_length() + pnf_entry = json.loads(self.rfile.read(content_length)) + _mark_response_as_http_ok(self) return def do_POST(self): + logger.info('AAI SIM Setup Post execution') if re.search('/reset', self.path): - global pnfs - pnfs = 'Empty' - _header_200_and_json(self) + global pnf_name + pnf_name = 'Empty' + _mark_response_as_http_ok(self) return + def _get_content_length(self): + return int(self.headers['Content-Length']) + + class AAIHandler(BaseHTTPRequestHandler): + def do_GET(self): + logger.info('AAI SIM Get execution') + 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): - pnfs_name = '/aai/v12/network/pnfs/pnf/' + pnfs.decode() + logger.info('AAI SIM Patch execution') + 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') self.end_headers() elif re.search(pnfs_name, self.path): self.send_response(200) + logger.info('Execution status 200') self.end_headers() return -def _header_200_and_json(self): - self.send_response(200) - self.send_header('Content-Type', 'application/json') - self.end_headers() - - def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"): handler_class.protocol_version = protocol - _thread.start_new_thread(_init_http_endpoints, (3333, AAIHandler)) - _thread.start_new_thread(_init_https_endpoints, (3334, AAIHandler)) - _thread.start_new_thread(_init_http_endpoints, (3335, AAISetup)) + 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) -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, server_class=HTTPServer): - server = server_class(('', port), handler_class) - server.socket = ssl.wrap_socket(server.socket, - keyfile="certs/server.key", certfile="certs/server.crt", - ca_certs="certs/client.crt", server_side=True) - sa = server.socket.getsockname() - print("Serving HTTPS on", sa[0], "port", sa[1], "for", handler_class, "...") - server.serve_forever() - - if __name__ == '__main__': - _main_() + _main_() \ No newline at end of file