def test_mailBox(): """Tests if the mailbox is connected.""" node = LocalNode() public_key_1 = "mailbox1" mailbox1 = MailBox(OEFLocalConnection(public_key_1, node)) mailbox1.connect() assert mailbox1.is_connected,\ "Mailbox cannot connect to the specific Connection(OEFLocalConnection)" mailbox1.disconnect()
def test_connection(): """Test that two mailbox can connect to the node.""" node = LocalNode() mailbox1 = MailBox(OEFLocalConnection("mailbox1", node)) mailbox2 = MailBox(OEFLocalConnection("mailbox2", node)) mailbox1.connect() mailbox2.connect() mailbox1.disconnect() mailbox2.disconnect()
def test_communication(): """Test that two mailbox can communicate through the node.""" node = LocalNode() mailbox1 = MailBox(OEFLocalConnection("mailbox1", node)) mailbox2 = MailBox(OEFLocalConnection("mailbox2", node)) mailbox1.connect() mailbox2.connect() msg = DefaultMessage(type=DefaultMessage.Type.BYTES, content=b"hello") msg_bytes = DefaultSerializer().encode(msg) envelope = Envelope(to="mailbox2", sender="mailbox1", protocol_id=DefaultMessage.protocol_id, message=msg_bytes) mailbox1.send(envelope) msg = FIPAMessage(0, 0, 0, FIPAMessage.Performative.CFP, query=None) msg_bytes = FIPASerializer().encode(msg) envelope = Envelope(to="mailbox2", sender="mailbox1", protocol_id=FIPAMessage.protocol_id, message=msg_bytes) mailbox1.send(envelope) msg = FIPAMessage(0, 0, 0, FIPAMessage.Performative.PROPOSE, proposal=[]) msg_bytes = FIPASerializer().encode(msg) envelope = Envelope(to="mailbox2", sender="mailbox1", protocol_id=FIPAMessage.protocol_id, message=msg_bytes) mailbox1.send(envelope) msg = FIPAMessage(0, 0, 0, FIPAMessage.Performative.ACCEPT) msg_bytes = FIPASerializer().encode(msg) envelope = Envelope(to="mailbox2", sender="mailbox1", protocol_id=FIPAMessage.protocol_id, message=msg_bytes) mailbox1.send(envelope) msg = FIPAMessage(0, 0, 0, FIPAMessage.Performative.DECLINE) msg_bytes = FIPASerializer().encode(msg) envelope = Envelope(to="mailbox2", sender="mailbox1", protocol_id=FIPAMessage.protocol_id, message=msg_bytes) mailbox1.send(envelope) time.sleep(5.0) envelope = mailbox2.inbox.get(block=True, timeout=1.0) msg = DefaultSerializer().decode(envelope.message) assert envelope.protocol_id == "default" assert msg.get("content") == b"hello" envelope = mailbox2.inbox.get(block=True, timeout=1.0) msg = FIPASerializer().decode(envelope.message) assert envelope.protocol_id == "fipa" assert msg.get("performative") == FIPAMessage.Performative.CFP envelope = mailbox2.inbox.get(block=True, timeout=1.0) msg = FIPASerializer().decode(envelope.message) assert envelope.protocol_id == "fipa" assert msg.get("performative") == FIPAMessage.Performative.PROPOSE envelope = mailbox2.inbox.get(block=True, timeout=1.0) msg = FIPASerializer().decode(envelope.message) assert envelope.protocol_id == "fipa" assert msg.get("performative") == FIPAMessage.Performative.ACCEPT envelope = mailbox2.inbox.get(block=True, timeout=1.0) msg = FIPASerializer().decode(envelope.message) assert envelope.protocol_id == "fipa" assert msg.get("performative") == FIPAMessage.Performative.DECLINE mailbox1.disconnect() mailbox2.disconnect()