async def METHOD_NAME(server_type, config, con):
    async def check_data(chan: Union[SocketChannel, DummyChannel]):
        np.testing.assert_array_equal(test_data, await chan.recv())
        await chan.send("success")
    config = config.copy()
    config["handle_channel"] = check_data
    # create server
    server = await server_type.create(config)
    await server.start()
    assert isinstance(server.info, dict)
    # create client
    client = await server_type.client_type.connect(con)
    assert isinstance(client.info, dict)
    assert isinstance(client.channel.info, dict)
    await client.send(test_data)
    assert "success" == await client.recv()
    await client.close()
    assert client.closed
    # create client2
    async with await server_type.client_type.connect(con) as client2:
        assert not client2.closed
    assert client2.closed
    await server.join(0.001)
    await server.stop()
    assert server.stopped
    async with await server_type.create(config) as server2:
        assert not server2.stopped
    assert server2.stopped