X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=integration_tests%2Freceiver.py;h=5c3ceaf812bb8330f8fc6af198ca0516e2f3bf4b;hb=ccb4a69e473cab6db7e8d52a04f9b4922528e24f;hp=a64a30ae04258a4a686562f9b777b00f2a5a5916;hpb=fdf050451414e1a816e343bcd56f33186a742e49;p=ric-plt%2Fa1.git diff --git a/integration_tests/receiver.py b/integration_tests/receiver.py index a64a30a..5c3ceaf 100644 --- a/integration_tests/receiver.py +++ b/integration_tests/receiver.py @@ -24,23 +24,18 @@ 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)) -RETURN_MINT_FETCH = int(os.environ.get("TEST_RCV_RETURN_MINT", 20003)) 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": @@ -49,15 +44,34 @@ while True: else: print("Message received!: {}".format(summary)) - # if this was a policy fetch (request int =20002), override the payload and return int - if summary["message type"] == 20002: - PAYLOAD_RETURNED = {"mock return from FETCH": "pretend policy is here"} - RETURN_MINT = 20003 + received_payload = json.loads(summary["payload"]) - val = json.dumps(PAYLOAD_RETURNED).encode("utf-8") + 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