예제 #1
0
def should_start_and_stop_without_crashing():
    receiver = Receiver()
    #
    engine = Engine(mtu=MTU)
    rail_line_console = RailLineConsole()
    rail_h = 'test/line_console'
    rail_line_console.zero(
        rail_h=rail_h,
        cb_line_console_connect=receiver.on_line_console_connect,
        cb_line_console_condrop=receiver.on_line_console_condrop,
        cb_line_console_command=receiver.on_line_console_command,
        engine=engine)
    engine.cycle()
    #
    # Stage: Start it
    rail_line_console.start(ip='localhost', port=5000)
    #
    # Verify
    engine.cycle()
    assert rail_line_console.is_server_listening() == True
    assert rail_line_console.is_accept_connected() == False
    #
    # Stage: Stop it
    rail_line_console.stop()
    #
    # Verify
    engine.cycle()
    assert rail_line_console.is_server_listening() == False
    assert rail_line_console.is_accept_connected() == False
    #
    return True
예제 #2
0
def should_accept_client_and_boot_client_on_stop():
    ip = 'localhost'
    port = 5000
    #
    engine = Engine(mtu=MTU)
    receiver = Receiver()
    #
    # step: start
    rail_line_console = RailLineConsole()
    rail_h = 'test/line_console'
    rail_line_console.zero(
        rail_h=rail_h,
        cb_line_console_connect=receiver.on_line_console_connect,
        cb_line_console_condrop=receiver.on_line_console_condrop,
        cb_line_console_command=receiver.on_line_console_command,
        engine=engine)
    rail_line_console.start(ip=ip, port=port)
    #
    # verify
    engine.cycle()
    assert rail_line_console.is_server_listening() == True
    assert rail_line_console.is_accept_connected() == False
    #
    # step: client connects
    client = engine.init_spin(construct=SpinBasicTcpClient)
    client.start(addr=ip, port=port)
    #
    # verify
    engine.cycle()
    assert rail_line_console.is_server_listening() == False
    assert rail_line_console.is_accept_connected() == True
    assert client.is_connected() == True
    #
    # step: server is stopped with client attached
    rail_line_console.stop()
    #
    # confirm effects
    engine.cycle()
    assert rail_line_console.is_server_listening() == False
    assert rail_line_console.is_accept_connected() == False
    assert client.is_connected() == False
    #
    return True