Update dep script; no version/code changes
[ric-plt/a1.git] / integration_tests / receiver.py
index 3a48a8d..5c3ceaf 100644 (file)
@@ -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