X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=integration_tests%2Freceiver.py;h=5c3ceaf812bb8330f8fc6af198ca0516e2f3bf4b;hb=refs%2Fchanges%2F21%2F2021%2F1;hp=3a48a8dac9708228bd85e84494722138203b1a41;hpb=5ad8f03e1fc7683bb59da31f59edc2f6c0b2372b;p=ric-plt%2Fa1.git diff --git a/integration_tests/receiver.py b/integration_tests/receiver.py index 3a48a8d..5c3ceaf 100644 --- a/integration_tests/receiver.py +++ b/integration_tests/receiver.py @@ -19,27 +19,23 @@ Test receiver """ import time -from rmr import rmr import json import os +from rmr import rmr PORT = os.environ.get("TEST_RCV_PORT", "4560") -RETURN_MINT = int(os.environ.get("TEST_RCV_RETURN_MINT", 20001)) DELAY = int(os.environ.get("TEST_RCV_SEC_DELAY", 0)) -PAYLOAD_RETURNED = json.loads( - os.environ.get("TEST_RCV_RETURN_PAYLOAD", '{"ACK_FROM": "ADMISSION_CONTROL", "status": "SUCCESS"}') -) +HANDLER_ID = os.environ.get("HANDLER_ID", "test_receiver") -# TODO: should these be made constants? -mrc = rmr.rmr_init(PORT.encode("utf-8"), rmr.RMR_MAX_RCV_BYTES, 0x00) +mrc = rmr.rmr_init(PORT.encode("utf-8"), rmr.RMR_MAX_RCV_BYTES, rmr.RMRFL_MTCALL) while rmr.rmr_ready(mrc) == 0: time.sleep(1) print("not yet ready") -print("listening") -sbuf = None +print("listening ON {}".format(PORT)) while True: + sbuf = rmr.rmr_alloc_msg(mrc, 10) sbuf = rmr.rmr_torcv_msg(mrc, sbuf, 1000) summary = rmr.message_summary(sbuf) if summary["message state"] == 12 and summary["message status"] == "RMR_ERR_TIMEOUT": @@ -48,10 +44,34 @@ while True: else: print("Message received!: {}".format(summary)) - val = json.dumps(PAYLOAD_RETURNED).encode("utf-8") + received_payload = json.loads(summary["payload"]) + + op = received_payload["operation"] + send_payload_status = "ERROR" + if op == "CREATE": + send_payload_status = "OK" + elif op == "DELETE": + send_payload_status = "DELETED" + + payload = { + "policy_type_id": received_payload["policy_type_id"], + "policy_instance_id": received_payload["policy_instance_id"], + "handler_id": HANDLER_ID, + "status": send_payload_status, + } + + val = json.dumps(payload).encode("utf-8") rmr.set_payload_and_length(val, sbuf) - sbuf.contents.mtype = RETURN_MINT + sbuf.contents.mtype = 20011 print("Pre reply summary: {}".format(rmr.message_summary(sbuf))) time.sleep(DELAY) - sbuf = rmr.rmr_rts_msg(mrc, sbuf) - print("Post reply summary: {}".format(rmr.message_summary(sbuf))) + + # try up to 5 times to send back the ack + for _ in range(5): + sbuf = rmr.rmr_rts_msg(mrc, sbuf) + post_reply_summary = rmr.message_summary(sbuf) + print("Post reply summary: {}".format(post_reply_summary)) + if post_reply_summary["message state"] == 10 and post_reply_summary["message status"] == "RMR_ERR_RETRY": + time.sleep(1) + else: + break