示例#1
0
def test_agent_info():
    """Test the agent_info custom type."""
    agents_info = OefSearchMessage.AgentsInfo(
        {
            "agent_address_1": {"key_1": b"value_1", "key_2": b"value_2"},
            "agent_address_2": {"key_3": b"value_3", "key_4": b"value_4"},
        }
    )
    assert agents_info.get_info_for_agent("agent_address_1") == {
        "key_1": b"value_1",
        "key_2": b"value_2",
    }

    with pytest.raises(ValueError, match="body must not be None"):
        OefSearchMessage.AgentsInfo(None)
示例#2
0
def test_success_serialization():
    """Test the serialization for 'success' speech-act works."""
    msg = OefSearchMessage(
        performative=OefSearchMessage.Performative.SUCCESS,
        agents_info=OefSearchMessage.AgentsInfo(
            {
                "key_1": {"key_1": b"value_1", "key_2": b"value_2"},
                "key_2": {"key_3": b"value_3", "key_4": b"value_4"},
            }
        ),
    )
    msg.to = "receiver"
    envelope = Envelope(to=msg.to, sender="sender", message=msg,)
    envelope_bytes = envelope.encode()

    actual_envelope = Envelope.decode(envelope_bytes)
    expected_envelope = envelope
    assert expected_envelope.to == actual_envelope.to
    assert expected_envelope.sender == actual_envelope.sender
    assert (
        expected_envelope.protocol_specification_id
        == actual_envelope.protocol_specification_id
    )
    assert expected_envelope.message != actual_envelope.message

    actual_msg = OefSearchMessage.serializer.decode(actual_envelope.message)
    actual_msg.to = actual_envelope.to
    actual_msg.sender = actual_envelope.sender
    expected_msg = msg
    assert expected_msg == actual_msg
示例#3
0
    def test_handle_search_ii(self):
        """Test the _handle_search method of the oef_search handler where the number of agents found is 0."""
        # setup
        agents = tuple()
        oef_search_dialogue = self.prepare_skill_dialogue(
            dialogues=self.oef_search_dialogues,
            messages=self.list_of_messages[:1],
        )
        incoming_message = self.build_incoming_message_for_skill_dialogue(
            dialogue=oef_search_dialogue,
            performative=OefSearchMessage.Performative.SEARCH_RESULT,
            agents=agents,
            agents_info=OefSearchMessage.AgentsInfo({
                "agent_1": {
                    "key_1": "value_1",
                    "key_2": "value_2"
                },
                "agent_2": {
                    "key_3": "value_3",
                    "key_4": "value_4"
                },
            }),
        )

        # operation
        with patch.object(self.logger, "log") as mock_logger:
            self.oef_search_handler.handle(incoming_message)

        # after
        mock_logger.assert_any_call(
            logging.INFO,
            f"no agents found, search_response={incoming_message}",
        )
示例#4
0
def test_search_result_serialization():
    """Test the serialization for 'search_result' speech-act works."""
    msg = OefSearchMessage(
        performative=OefSearchMessage.Performative.SEARCH_RESULT,
        agents=("agent_1", "agent_2", "agent_3"),
        agents_info=OefSearchMessage.AgentsInfo({
            "key_1": {
                "key_1": b"value_1",
                "key_2": b"value_2"
            },
            "key_2": {
                "key_3": b"value_3",
                "key_4": b"value_4"
            },
        }),
    )
    msg.to = "receiver"
    envelope = Envelope(
        to=msg.to,
        sender="sender",
        protocol_id=OefSearchMessage.protocol_id,
        message=msg,
    )
    envelope_bytes = envelope.encode()

    actual_envelope = Envelope.decode(envelope_bytes)
    expected_envelope = envelope
    assert expected_envelope.to == actual_envelope.to
    assert expected_envelope.sender == actual_envelope.sender
    assert expected_envelope.protocol_id == actual_envelope.protocol_id
    assert expected_envelope.message != actual_envelope.message

    actual_msg = OefSearchMessage.serializer.decode(actual_envelope.message)
    actual_msg.to = actual_envelope.to
    actual_msg.sender = actual_envelope.sender
    expected_msg = msg
    assert expected_msg == actual_msg