async def test_success_cleans_up(loop: asyncio.BaseEventLoop): rx_addr = ('127.0.0.1', config.LOBBY_UDP_PORTS[-1]) tx_addr = ('127.0.0.1', config.LOBBY_UDP_PORTS[-1]+1) msg = 'Hello 1' async with NatPacketServer(rx_addr) as server: recv_fut = server.await_packet(msg) async with NatPacketServer(tx_addr) as sender: sender.send_natpacket_to(msg, rx_addr) await recv_fut assert not server.is_waiting_for(msg)
async def test_sends_udp(loop: asyncio.BaseEventLoop): rx_addr = ('127.0.0.1', config.LOBBY_UDP_PORTS[-1]) tx_addr = ('127.0.0.1', config.LOBBY_UDP_PORTS[-1]+1) msg = 'test' async with NatPacketServer(rx_addr) as server: recv_fut = server.await_packet(msg) async with NatPacketServer(tx_addr) as sender: sender.send_natpacket_to(msg, rx_addr) await recv_fut received_msg, _ = recv_fut.result() assert received_msg == msg
async def test_failure_cleans_up(loop: asyncio.BaseEventLoop): rx_addr = ('127.0.0.1', config.LOBBY_UDP_PORTS[-1]) msg = 'Hello 1' async with NatPacketServer(rx_addr) as server: recv_fut = server.await_packet(msg) recv_fut.cancel() # Give the callback a chance to run await asyncio.sleep(0) assert not server.is_waiting_for(msg)
async def test_receives_udp(loop: asyncio.BaseEventLoop): addr = ('127.0.0.1', config.LOBBY_UDP_PORTS[-1]) msg = 'test' async with NatPacketServer(addr) as server: recv_fut = server.await_packet(msg) await loop.create_datagram_endpoint(lambda: TestClientProto(("\x08"+msg).encode()), remote_addr=addr) received_msg, _ = await recv_fut assert received_msg == msg
port=int(DB_PORT), user=DB_LOGIN, password=DB_PASSWORD, maxsize=10, db=DB_NAME, loop=loop)) db_pool = loop.run_until_complete(pool_fut) players_online = PlayerService(db_pool) api_accessor = ApiAccessor() event_service = EventService(api_accessor) achievement_service = AchievementService(api_accessor) game_stats_service = GameStatsService(event_service, achievement_service) natpacket_server = NatPacketServer( addresses=config.LOBBY_NAT_ADDRESSES, loop=loop) loop.run_until_complete(natpacket_server.listen()) server.NatPacketServer.instance = natpacket_server games = GameService(players_online, game_stats_service) matchmaker_queue = MatchmakerQueue('ladder1v1', players_online, games) players_online.ladder_queue = matchmaker_queue ctrl_server = loop.run_until_complete( server.run_control_server(loop, players_online, games)) lobby_server = server.run_lobby_server(('', 8001), players_online, games, loop) for sock in lobby_server.sockets: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
pool_fut = asyncio.async(server.db.connect(host=DB_SERVER, port=int(DB_PORT), user=DB_LOGIN, password=DB_PASSWORD, maxsize=10, db=DB_NAME, loop=loop)) db_pool = loop.run_until_complete(pool_fut) players_online = PlayerService(db_pool) api_accessor = ApiAccessor() event_service = EventService(api_accessor) achievement_service = AchievementService(api_accessor) game_stats_service = GameStatsService(event_service, achievement_service) natpacket_server = NatPacketServer(addresses=config.LOBBY_NAT_ADDRESSES, loop=loop) loop.run_until_complete(natpacket_server.listen()) server.NatPacketServer.instance = natpacket_server games = GameService(players_online, game_stats_service) matchmaker_queue = MatchmakerQueue('ladder1v1', players_online, games) players_online.ladder_queue = matchmaker_queue ctrl_server = loop.run_until_complete(server.run_control_server(loop, players_online, games)) lobby_server = server.run_lobby_server(('', 8001), players_online, games, loop) for sock in lobby_server.sockets: