X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=integration_tests%2Freceiver.py;h=0dc5e4a2ec61d17bf5be8694a8000c082b2bc325;hb=148e2699cf55e5619d181c2e46e1f672456a4422;hp=a64a30ae04258a4a686562f9b777b00f2a5a5916;hpb=fdf050451414e1a816e343bcd56f33186a742e49;p=ric-plt%2Fa1.git diff --git a/integration_tests/receiver.py b/integration_tests/receiver.py index a64a30a..0dc5e4a 100644 --- a/integration_tests/receiver.py +++ b/integration_tests/receiver.py @@ -24,12 +24,8 @@ 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) @@ -38,7 +34,7 @@ while rmr.rmr_ready(mrc) == 0: time.sleep(1) print("not yet ready") -print("listening") +print("listening ON {}".format(PORT)) sbuf = None while True: sbuf = rmr.rmr_torcv_msg(mrc, sbuf, 1000) @@ -49,15 +45,27 @@ 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") + payload = { + "policy_type_id": received_payload["policy_type_id"], + "policy_instance_id": received_payload["policy_instance_id"], + "handler_id": HANDLER_ID, + "status": "OK", + } + + val = json.dumps(payload).encode("utf-8") rmr.set_payload_and_length(val, sbuf) - sbuf.contents.mtype = RETURN_MINT + sbuf.contents.mtype = 21024 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