コード例 #1
0
ファイル: test_net.py プロジェクト: husio/corrosion
def test_multiple_correct_connections():
    port = _get_free_port()
    def correct_connection(client):
        request = str(time.time()) + '\r\n'
        client.sock.connect((client.host, client.port))
        client.sock.send(request)
        total_data = []
        while True:
            data = client.sock.recv(2048)
            total_data.append(data)
            if data.endswith('\r\n'):
                break
        response = ''.joint(total_data)
        client.sock.close()
        client.assertions.append(request == response)

    scheduler = Scheduler()
    scheduler.add(_line_reader_echo('', port))
    clients = []
    for c_id in range(3):
        client = TClient(scheduler, '', port)
        client.add_test(correct_connection)
        clients.append(client)
        scheduler.add(client.as_task())

    def all_tasks_done():
        yield
        [c.join() for c in clients]

    scheduler.add(all_tasks_done())
    scheduler.run()
    assert all(client.assertions)
コード例 #2
0
ファイル: test_net.py プロジェクト: husio/corrosion
def test_correct_connection():
    def correct_connection(client):
        request = str(time.time()) + '\r\n'
        client.sock.connect((client.host, client.port))
        client.sock.send(request)
        total_data = []
        while True:
            data = client.sock.recv(64)
            total_data.append(data)
            if data.endswith('\r\n'):
                break
        response = ''.joint(total_data)
        client.sock.close()
        client.assertions.append(request == response)
        client.scheduler.stop()

    scheduler = Scheduler()
    port = _get_free_port()
    client = TClient(scheduler, '', port)
    client.add_test(correct_connection)
    scheduler.add(_line_reader_echo('', port))
    scheduler.add(client.as_task())
    scheduler.run()
    client.join()
    assert all(client.assertions)
コード例 #3
0
ファイル: test_net.py プロジェクト: husio/corrosion
def test_connection_remote_close():
    port = _get_free_port()
    def connect_and_close_socket(client):
        client.sock.connect((client.host, client.port))
        client.sock.close()
        client.scheduler.stop()
    scheduler = Scheduler()
    client = TClient(scheduler, '', port)
    client.add_test(connect_and_close_socket)
    scheduler.add(_line_reader_echo('', port))
    scheduler.add(client.as_task())
    scheduler.run()
    client.join()
    assert all(client.assertions)
コード例 #4
0
ファイル: example_1.py プロジェクト: husio/corrosion
def main():
    parser = optparse.OptionParser('usage: %prog [-p <port>] [-h <host>]')
    parser.add_option('-p', '--port', type='int', default=8080, dest='port',
            help='server port')
    parser.add_option('--host', default='', dest='host',
            help='server host')
    (options, args) = parser.parse_args()

    scheduler = Scheduler()
    raw_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    scheduler.add(echo(raw_socket, options.host, options.port))
    print('>> server running  %s:%d' % (options.host or '0.0.0.0', options.port))
    try:
        scheduler.run()
    except KeyboardInterrupt:
        scheduler.stop()
    finally:
        raw_socket.close()
コード例 #5
0
ファイル: example_2.py プロジェクト: husio/corrosion
def main():
    scheduler = Scheduler()
    scheduler.add(system_call_exception())
    scheduler.run()
コード例 #6
0
ファイル: example_3.py プロジェクト: husio/corrosion
def main():
    scheduler = Scheduler()
    scheduler.add(worker())
    scheduler.run()