def test_invite_tiebreaker():
    address = str("a" * 32).encode("utf-8")
    address1 = str("b" * 32).encode("utf-8")
    address2 = str("c" * 32).encode("utf-8")

    assert my_place_or_yours(address, address1) == address
    assert my_place_or_yours(address1, address2) == address1
示例#2
0
文件: web_rtc.py 项目: sekmet/raiden
 def create_channel(self, node_address: Address) -> None:
     lower_address = my_place_or_yours(node_address, self.partner_address)
     higher_address = self.partner_address if lower_address == node_address else node_address
     channel_name = (
         f"{to_checksum_address(lower_address)}|{to_checksum_address(higher_address)}"
     )
     self.channel = self.peer_connection.createDataChannel(channel_name)
示例#3
0
def test_matrix_invitee_receives_invite_on_restart(matrix_transports):
    raiden_service0 = MockRaidenService(None)
    raiden_service1 = MockRaidenService(None)

    transport0, transport1 = matrix_transports

    room_creator_address = my_place_or_yours(raiden_service0.address,
                                             raiden_service1.address)
    if room_creator_address == raiden_service0.address:
        inviter_service = raiden_service0
        invitee_service = raiden_service1

        inviter_transport = transport0
        invitee_transport = transport1
    else:
        inviter_service = raiden_service1
        invitee_service = raiden_service0

        inviter_transport = transport1
        invitee_transport = transport0

    inviter_transport.start(inviter_service, [], None)
    invitee_transport.start(invitee_service, [], None)

    inviter_transport.start_health_check(invitee_service.address)
    invitee_transport.start_health_check(inviter_service.address)

    wait_for_peer_reachable(inviter_transport, invitee_service.address)
    wait_for_peer_reachable(invitee_transport, inviter_service.address)

    assert is_reachable(invitee_transport, inviter_service.address)
    assert is_reachable(inviter_transport, invitee_service.address)

    invitee_transport.stop()

    wait_for_peer_unreachable(inviter_transport, invitee_service.address)
    assert not is_reachable(inviter_transport, invitee_service.address)

    room_id = inviter_transport._get_room_for_address(
        invitee_service.address).room_id
    invitee_transport.start(invitee_service, [], None)
    invitee_transport.start_health_check(inviter_service.address)

    inviter_transport.stop()

    with Timeout(TIMEOUT_MESSAGE_RECEIVE):
        while True:
            try:
                room_state1 = invitee_transport._client.api.get_room_state(
                    room_id)
                break
            except MatrixRequestError:
                gevent.sleep(0.1)

    assert room_state1 is not None
示例#4
0
def test_matrix_invitee_receives_invite_on_restart(
        matrix_transports: List[MatrixTransport]) -> None:
    """The invitee should receive the invite, even if the inviter is offline."""
    raiden_service0: RaidenService = cast(RaidenService,
                                          MockRaidenService(None))
    raiden_service1: RaidenService = cast(RaidenService,
                                          MockRaidenService(None))

    transport0, transport1 = matrix_transports

    room_creator_address = my_place_or_yours(raiden_service0.address,
                                             raiden_service1.address)
    if room_creator_address == raiden_service0.address:
        inviter_service = raiden_service0
        invitee_service = raiden_service1

        inviter_transport = transport0
        invitee_transport = transport1
    else:
        inviter_service = raiden_service1
        invitee_service = raiden_service0

        inviter_transport = transport1
        invitee_transport = transport0

    # Initialize the invitee and stop it before the invite happens
    invitee_transport.start(invitee_service, [], None)
    invitee_transport.stop()

    inviter_transport.start(inviter_service, [], None)
    inviter_transport.immediate_health_check_for(invitee_service.address)

    room = inviter_transport._get_room_for_address(invitee_service.address)
    assert room, "The inviter should have created the room, even if the invitee is offline."

    # Now stop the inviter and check the invitee received the invite
    inviter_transport.stop()

    invitee_transport.start(invitee_service, [], None)
    invitee_transport.immediate_health_check_for(inviter_service.address)

    with Timeout(TIMEOUT_MESSAGE_RECEIVE):
        while True:
            try:
                room_state1 = invitee_transport._client.api.get_room_state(
                    room.room_id)
                break
            except MatrixRequestError:
                gevent.sleep(0.1)

    assert room_state1 is not None
def test_matrix_invite_retry_with_offline_invitee(
    matrix_transports: List[MatrixTransport],
) -> None:
    """The inviter should create the room and send the invite even if the
    target node is offline.
    """
    raiden_service0: RaidenService = cast(RaidenService, MockRaidenService(None))
    raiden_service1: RaidenService = cast(RaidenService, MockRaidenService(None))

    transport0, transport1 = matrix_transports

    room_creator_address = my_place_or_yours(raiden_service0.address, raiden_service1.address)
    if room_creator_address == raiden_service0.address:
        inviter_service = raiden_service0
        invitee_service = raiden_service1

        inviter_transport = transport0
        invitee_transport = transport1
    else:
        inviter_service = raiden_service1
        invitee_service = raiden_service0

        inviter_transport = transport1
        invitee_transport = transport0

    # Initialize the invitee and stop it before the invite happens
    invitee_transport.start(invitee_service, [], None)
    invitee_transport.stop()

    inviter_transport.start(inviter_service, [], None)
    inviter_transport.immediate_health_check_for(invitee_service.address)

    wait_for_peer_unreachable(inviter_transport, invitee_service.address)
    assert not is_reachable(inviter_transport, invitee_service.address)

    room = inviter_transport._get_room_for_address(invitee_service.address)
    assert room, "The inviter should have created the room, even if the invitee is offline."

    invitee_transport.start(invitee_service, [], None)
    invitee_transport.immediate_health_check_for(inviter_service.address)

    with Timeout(TIMEOUT_MESSAGE_RECEIVE):
        while True:
            try:
                room_state0 = inviter_transport._client.api.get_room_state(room.room_id)
                break
            except MatrixRequestError:
                gevent.sleep(0.1)

    assert room_state0 is not None

    with Timeout(TIMEOUT_MESSAGE_RECEIVE):
        while True:
            try:
                room_state1 = invitee_transport._client.api.get_room_state(room.room_id)
                break
            except MatrixRequestError as ex:
                print(ex, transport0._client.user_id, transport1._client.user_id)
                gevent.sleep(0.5)

    assert room_state1 is not None

    assert is_reachable(inviter_transport, invitee_service.address)
    assert is_reachable(invitee_transport, inviter_service.address)
示例#6
0
文件: web_rtc.py 项目: sekmet/raiden
 def get_call_id(self, node_address: Address) -> str:
     lower_address = my_place_or_yours(node_address, self.partner_address)
     higher_address = self.partner_address if lower_address == node_address else node_address
     call_id = f"{to_checksum_address(lower_address)}|{to_checksum_address(higher_address)}"
     return call_id