Example #1
0
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()
Example #2
0
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()
Example #3
0
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()