Ejemplo n.º 1
0
def test_relay_connect_is_retried_after_failed_connects(
    t=Time, logic=DEFAULT_LOGIC, bear=NID('bear:987'), mouse=NID('mouse:123')):
    t, logic = test_connect_fails_if_relayed_connect_fails(t,
                                                           logic,
                                                           bear=bear,
                                                           mouse=mouse)
    emits_(logic.ensure_connected(mouse, t.current),
           [(Connect, nid2addr(mouse)), (Ping, OUT, mouse, ANY)])
    emits_(logic.heartbeat(t.advance(logic.heartbeat_max_silence)),
           [(RelayConnect, OUT, bear, mouse), (Disconnect, nid2addr(mouse)),
            (NextBeat, 1.0)])
Ejemplo n.º 2
0
def test_relay_is_tried_on_bad_send(t=Time,
                                    logic=DEFAULT_LOGIC,
                                    bear=NID('bear:987'),
                                    mouse=NID('mouse:123')):
    t, logic, msg = t(), logic(), object()
    just_(logic.new_relay_received(bear))
    emits_(logic.send_message(mouse, msg, t.current),
           [(Connect, nid2addr(mouse)), (Ping, OUT, mouse, ANY)])
    emits_(logic.heartbeat(t.advance(logic.heartbeat_max_silence)),
           [(RelayConnect, OUT, bear, mouse), (Disconnect, nid2addr(mouse)),
            (NextBeat, 1.0)])
    return t, logic, msg
Ejemplo n.º 3
0
def test_failed_connect(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic = t(), logic()
    # connect
    emits_(logic.ensure_connected(nid, 0), [(Connect, nid2addr(nid)), (Ping, OUT, nid, ANY)])
    # heartbeat not needed
    emits_(logic.heartbeat(t=t.current), [(NextBeat, 1.0)])
    # ping emitted
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(Ping, OUT, nid, ANY), (NextBeat, 1.0)])
    # ping emitted
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(Ping, OUT, nid, ANY), (NextBeat, 1.0)])
    # disconnect occurs
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(Disconnect, nid2addr(nid)), (NodeDown, nid), (NextBeat, 1.0)])
    # silence
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(NextBeat, 1.0)])
    return t, logic
Ejemplo n.º 4
0
def test_relay_propagates_on_outgoing_message(t=Time,
                                              logic=RELAY_LOGIC,
                                              mouse=NID('mouse:123')):
    t, logic, msg = t(), logic(), object()
    emits_(logic.send_message(mouse, msg, t.current),
           [(RelaySigNew, OUT, mouse), (Connect, nid2addr(mouse)),
            (Ping, OUT, mouse, ANY)])
Ejemplo n.º 5
0
def test_send_message_with_no_previous_connection(t=Time,
                                                  logic=DEFAULT_LOGIC,
                                                  nid=NID('kaamel:123')):
    t, logic, msg = t(), logic(), object()
    emits_(logic.send_message(nid, msg, t=t.current),
           [(Connect, nid2addr(nid)), (Ping, OUT, nid, ANY)])
    return t, logic, msg
Ejemplo n.º 6
0
def test_successful_connect(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic = t(), logic()
    # connect
    emits_(logic.ensure_connected(nid, t=t.current), [(Connect, nid2addr(nid)), (Ping, OUT, nid, ANY)])
    # ...successfully
    emits_(logic.ping_received(OUT, nid, 0, t=t.advance(by=2.5)), [(Ping, OUT, nid, ANY)])
    return t, logic
Ejemplo n.º 7
0
def test_send_message_with_no_previous_connection_and_sigdisconnect_response(
    t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic, msg = test_send_message_with_no_previous_connection(t,
                                                                  logic,
                                                                  nid=nid)
    emits_(logic.sig_disconnect_received(nid), [(Disconnect, nid2addr(nid)),
                                                (NodeDown, nid),
                                                (SendFailed, msg)])
Ejemplo n.º 8
0
def test_send_message_with_no_previous_connection_and_no_response(
    t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic, msg = test_send_message_with_no_previous_connection(t,
                                                                  logic,
                                                                  nid=nid)
    emits_(logic.heartbeat(t=t.advance(logic.heartbeat_max_silence)),
           [(Disconnect, nid2addr(nid)), (SendFailed, msg), (NodeDown, nid),
            (NextBeat, 1.0)])
Ejemplo n.º 9
0
def test_direct_connection_is_tried_even_for_messages_arriving_thru_relay(
    t=Time, logic=DEFAULT_LOGIC, mouse=NID('mouse:123'), cat=NID('cat:123')):
    # this is kind of trivial to determine by looking at the code, but for completeness' sake, and to build up the
    # demonstration of some more advanced features
    (t, logic), msg = test_relayed_message_received(t, logic,
                                                    mouse=mouse), object()
    emits_(logic.send_message(cat, msg, t.current), [(Connect, nid2addr(cat)),
                                                     (Ping, OUT, cat, ANY)])
Ejemplo n.º 10
0
def test_send_message_with_an_existing_connection(t=Time,
                                                  logic=DEFAULT_LOGIC,
                                                  nid=NID('kaamel:123')):
    (t, logic), msg = test_successful_connect(t, logic, nid=nid), object()
    emits_(logic.send_message(nid, msg, t=t.current),
           [(Send, OUT, nid, ANY, msg)])
    # and SendFailed not emitted
    emits_(logic.sig_disconnect_received(nid), [(Disconnect, nid2addr(nid)),
                                                (NodeDown, nid)])
Ejemplo n.º 11
0
def test_successful_connect(t=Time,
                            logic=DEFAULT_LOGIC,
                            nid=NID('kaamel:123')):
    t, logic = t(), logic()
    # connect
    emits_(logic.ensure_connected(nid, t=t.current), [(Connect, nid2addr(nid)),
                                                      (Ping, OUT, nid, ANY)])
    # ...successfully
    emits_(logic.ping_received(OUT, nid, 0, t=t.advance(by=2.5)),
           [(Ping, OUT, nid, ANY)])
    return t, logic
Ejemplo n.º 12
0
def test_failed_connect(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic = t(), logic()
    # connect
    emits_(logic.ensure_connected(nid, 0), [(Connect, nid2addr(nid)),
                                            (Ping, OUT, nid, ANY)])
    # heartbeat not needed
    emits_(logic.heartbeat(t=t.current), [(NextBeat, 1.0)])
    # ping emitted
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(Ping, OUT, nid, ANY),
                                                  (NextBeat, 1.0)])
    # ping emitted
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(Ping, OUT, nid, ANY),
                                                  (NextBeat, 1.0)])
    # disconnect occurs
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(Disconnect, nid2addr(nid)),
                                                  (NodeDown, nid),
                                                  (NextBeat, 1.0)])
    # silence
    emits_(logic.heartbeat(t=t.advance(by=1.0)), [(NextBeat, 1.0)])
    return t, logic
Ejemplo n.º 13
0
def test_relay_connect_is_retried_after_failed_connects(t=Time, logic=DEFAULT_LOGIC, bear=NID('bear:987'), mouse=NID('mouse:123')):
    t, logic = test_connect_fails_if_relayed_connect_fails(t, logic, bear=bear, mouse=mouse)
    emits_(logic.ensure_connected(mouse, t.current), [(Connect, nid2addr(mouse)), (Ping, OUT, mouse, ANY)])
    emits_(logic.heartbeat(t.advance(logic.heartbeat_max_silence)), [(RelayConnect, OUT, bear, mouse), (Disconnect, nid2addr(mouse)), (NextBeat, 1.0)])
Ejemplo n.º 14
0
def test_relay_is_tried_on_bad_send(t=Time, logic=DEFAULT_LOGIC, bear=NID('bear:987'), mouse=NID('mouse:123')):
    t, logic, msg = t(), logic(), object()
    just_(logic.new_relay_received(bear))
    emits_(logic.send_message(mouse, msg, t.current), [(Connect, nid2addr(mouse)), (Ping, OUT, mouse, ANY)])
    emits_(logic.heartbeat(t.advance(logic.heartbeat_max_silence)), [(RelayConnect, OUT, bear, mouse), (Disconnect, nid2addr(mouse)), (NextBeat, 1.0)])
    return t, logic, msg
Ejemplo n.º 15
0
def test_relay_propagates_on_outgoing_message(t=Time, logic=RELAY_LOGIC, mouse=NID('mouse:123')):
    t, logic, msg = t(), logic(), object()
    emits_(logic.send_message(mouse, msg, t.current), [(RelaySigNew, OUT, mouse), (Connect, nid2addr(mouse)), (Ping, OUT, mouse, ANY)])
Ejemplo n.º 16
0
def test_send_message_with_an_existing_connection(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    (t, logic), msg = test_successful_connect(t, logic, nid=nid), object()
    emits_(logic.send_message(nid, msg, t=t.current), [(Send, OUT, nid, ANY, msg)])
    # and SendFailed not emitted
    emits_(logic.sig_disconnect_received(nid), [(Disconnect, nid2addr(nid)), (NodeDown, nid)])
Ejemplo n.º 17
0
def test_send_message_with_no_previous_connection_and_sigdisconnect_response(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic, msg = test_send_message_with_no_previous_connection(t, logic, nid=nid)
    emits_(logic.sig_disconnect_received(nid), [(Disconnect, nid2addr(nid)), (NodeDown, nid), (SendFailed, msg)])
Ejemplo n.º 18
0
def test_send_message_with_no_previous_connection_and_no_response(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic, msg = test_send_message_with_no_previous_connection(t, logic, nid=nid)
    emits_(logic.heartbeat(t=t.advance(logic.heartbeat_max_silence)), [(Disconnect, nid2addr(nid)), (SendFailed, msg), (NodeDown, nid), (NextBeat, 1.0)])
Ejemplo n.º 19
0
def test_send_message_with_no_previous_connection(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic, msg = t(), logic(), object()
    emits_(logic.send_message(nid, msg, t=t.current), [(Connect, nid2addr(nid)), (Ping, OUT, nid, ANY)])
    return t, logic, msg
Ejemplo n.º 20
0
def test_direct_connection_is_tried_even_for_messages_arriving_thru_relay(t=Time, logic=DEFAULT_LOGIC, mouse=NID('mouse:123'), cat=NID('cat:123')):
    # this is kind of trivial to determine by looking at the code, but for completeness' sake, and to build up the
    # demonstration of some more advanced features
    (t, logic), msg = test_relayed_message_received(t, logic, mouse=mouse), object()
    emits_(logic.send_message(cat, msg, t.current), [(Connect, nid2addr(cat)), (Ping, OUT, cat, ANY)])
Ejemplo n.º 21
0
def test_sig_disconnect_while_still_connecting(t=Time,
                                               logic=DEFAULT_LOGIC,
                                               nid=NID('kaamel:123')):
    t, logic = test_successful_connect(t, logic)
    emits_(logic.sig_disconnect_received(nid), [(Disconnect, nid2addr(nid)),
                                                (NodeDown, nid)])
Ejemplo n.º 22
0
def test_fail_after_successful_connection(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic = test_successful_connect(t, logic)
    emits_(logic.heartbeat(t=t.advance(logic.heartbeat_max_silence)), [(NextBeat, 1.0), (Disconnect, nid2addr(nid)), (NodeDown, nid)])
Ejemplo n.º 23
0
def test_sig_disconnect_while_still_connecting(t=Time, logic=DEFAULT_LOGIC, nid=NID('kaamel:123')):
    t, logic = test_successful_connect(t, logic)
    emits_(logic.sig_disconnect_received(nid), [(Disconnect, nid2addr(nid)), (NodeDown, nid)])
Ejemplo n.º 24
0
def test_fail_after_successful_connection(t=Time,
                                          logic=DEFAULT_LOGIC,
                                          nid=NID('kaamel:123')):
    t, logic = test_successful_connect(t, logic)
    emits_(logic.heartbeat(t=t.advance(logic.heartbeat_max_silence)),
           [(NextBeat, 1.0), (Disconnect, nid2addr(nid)), (NodeDown, nid)])