Example #1
0
async def test_example_docs():
    addr = iec104.Address('127.0.0.1', util.get_unused_tcp_port())
    conn2_future = asyncio.Future()
    srv = await iec104.listen(conn2_future.set_result, addr)
    conn1 = await iec104.connect(addr)
    conn2 = await conn2_future

    data = iec104.Data(value=iec104.SingleValue.ON,
                       quality=iec104.Quality(invalid=False,
                                              not_topical=False,
                                              substituted=False,
                                              blocked=False,
                                              overflow=False),
                       time=None,
                       asdu_address=123,
                       io_address=321,
                       cause=iec104.Cause.SPONTANEOUS,
                       is_test=False)

    # send data from conn1 to conn2
    conn1.notify_data_change([data])
    result = await conn2.receive()
    assert result == [data]

    # send data from conn2 to conn1
    conn2.notify_data_change([data])
    result = await conn1.receive()
    assert result == [data]

    await conn1.async_close()
    await conn2.async_close()
    await srv.async_close()
Example #2
0
async def test_example_docs():

    from hat import aio
    from hat import juggler
    from hat import util

    port = util.get_unused_tcp_port()
    host = '127.0.0.1'

    server_conns = aio.Queue()
    server = await juggler.listen(host,
                                  port,
                                  server_conns.put_nowait,
                                  autoflush_delay=0)

    client_conn = await juggler.connect(f'ws://{host}:{port}/ws',
                                        autoflush_delay=0)
    server_conn = await server_conns.get()

    server_remote_data = aio.Queue()
    server_conn.register_change_cb(
        lambda: server_remote_data.put_nowait(server_conn.remote_data))

    client_conn.set_local_data(123)
    data = await server_remote_data.get()
    assert data == 123

    await server.async_close()
    await client_conn.wait_closed()
    await server_conn.wait_closed()
Example #3
0
async def test_example_docs():

    from hat import aio
    from hat import chatter
    from hat import sbs
    from hat import util

    sbs_repo = sbs.Repository(
        chatter.sbs_repo, r"""
        module Example

        Msg = Integer
    """)

    port = util.get_unused_tcp_port()
    address = f'tcp+sbs://127.0.0.1:{port}'

    server_conns = aio.Queue()
    server = await chatter.listen(sbs_repo, address, server_conns.put_nowait)

    client_conn = await chatter.connect(sbs_repo, address)
    server_conn = await server_conns.get()

    data = chatter.Data('Example', 'Msg', 123)
    client_conn.send(data)

    msg = await server_conn.receive()
    assert msg.data == data

    await server.async_close()
    await client_conn.wait_closed()
    await server_conn.wait_closed()
Example #4
0
async def create(ui_path):
    port = util.get_unused_tcp_port()

    srv = Server()
    srv._addr = f'http://127.0.0.1:{port}'
    srv._async_group = aio.Group()
    srv._srv = await juggler.listen('127.0.0.1', port, srv._on_connection,
                                    static_dir=ui_path)
    srv._async_group.spawn(aio.call_on_cancel, srv._srv.async_close)
    srv._async_group.spawn(aio.call_on_done, srv._srv.closed,
                           srv._async_group.close)
    return srv
Example #5
0
async def test_example_docs():
    addr = cotp.Address('127.0.0.1', util.get_unused_tcp_port())

    conn2_future = asyncio.Future()
    srv = await cotp.listen(conn2_future.set_result, addr)
    conn1 = await cotp.connect(addr)
    conn2 = await conn2_future

    # send from conn1 to conn2
    data = b'123'
    conn1.write(data)
    result = await conn2.read()
    assert result == data

    # send from conn2 to conn1
    data = b'321'
    conn2.write(data)
    result = await conn1.read()
    assert result == data

    await conn1.async_close()
    await conn2.async_close()
    await srv.async_close()
Example #6
0
    def __init__(self, img_path, localtime, user, tmpdir):
        tmp_img_path = tmpdir / 'img.qcow2'
        subprocess.run([
            'qemu-img', 'create', '-q', '-F', 'qcow2', '-f', 'qcow2', '-b',
            str(img_path.resolve()),
            str(tmp_img_path)
        ],
                       check=True)
        self._user = user
        self._ssh_port = util.get_unused_tcp_port()
        self._known_hosts_path = tmpdir / 'known_hosts'

        cmd = [
            'qemu-system-x86_64', '-cpu', 'host', '-hda',
            str(tmp_img_path), '-m', '2G', '-device', 'e1000,netdev=net0',
            '-netdev', f'user,id=net0,hostfwd=tcp::{self._ssh_port}-:22',
            '-display', 'none', '-nographic'
        ]
        if sys.platform == 'linux':
            cmd.append('-enable-kvm')
        if localtime:
            cmd.extend(['-rtc', 'base=localtime'])

        self._p = subprocess.Popen(cmd, stdout=subprocess.DEVNULL)
Example #7
0
def ui_port():
    return util.get_unused_tcp_port()
Example #8
0
def server_port():
    return util.get_unused_tcp_port()
Example #9
0
def comm_port():
    return util.get_unused_tcp_port()
Example #10
0
def slave_addr():
    return tcp.Address('127.0.0.1', util.get_unused_tcp_port())
Example #11
0
def addr():
    return tpkt.Address('127.0.0.1', util.get_unused_tcp_port())
Example #12
0
def master_port():
    return util.get_unused_tcp_port()
Example #13
0
def syslog_port():
    return util.get_unused_tcp_port()
Example #14
0
def secondary_port(primary_port):
    port = None
    while not port or port == primary_port:
        port = util.get_unused_tcp_port()
    return port
Example #15
0
def primary_port():
    return util.get_unused_tcp_port()
Example #16
0
def addr():
    port = util.get_unused_tcp_port()
    return f'tcp+sbs://127.0.0.1:{port}'
Example #17
0
def test_get_unused_tcp_port():
    port = util.get_unused_tcp_port()
    assert isinstance(port, int)
    assert 0 < port <= 0xFFFF