def test_simple_failing_bots(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2) for bind_address in server.bind_addresses: assert bind_address.startswith("tcp://") client1_address = server.bind_addresses[0].replace("*", "localhost") client2_address = server.bind_addresses[1].replace("*", "localhost") class FailingPlayer: def _set_initial(self, dummy, dummy2): pass def _set_index(self, dummy): pass def _get_move(self, universe, game_state): pass client1 = SimpleClient(SimpleTeam("team1", SteppingPlayer("^>>v<")), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", FailingPlayer()), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown()
def test_failing_bots_do_not_crash_server(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2, timeout_length=0.3) for bind_address in server.bind_addresses: assert bind_address.startswith("tcp://") client1_address = server.bind_addresses[0].replace("*", "localhost") client2_address = server.bind_addresses[1].replace("*", "localhost") class ThisIsAnExpectedException(Exception): pass class FailingPlayer(AbstractPlayer): def get_move(self): raise ThisIsAnExpectedException() old_timeout = pelita.simplesetup.DEAD_CONNECTION_TIMEOUT pelita.simplesetup.DEAD_CONNECTION_TIMEOUT = 0.3 client1 = SimpleClient(SimpleTeam("team1", FailingPlayer()), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", FailingPlayer()), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown() pelita.simplesetup.DEAD_CONNECTION_TIMEOUT = old_timeout
def test_simple_game(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer( layout_string=layout, rounds=5, players=2, bind_addrs=("ipc:///tmp/pelita-testplayer1-%s" % uuid.uuid4(), "ipc:///tmp/pelita-testplayer2-%s" % uuid.uuid4())) for bind_address in server.bind_addresses: assert bind_address.startswith("ipc://") client1_address = server.bind_addresses[0] client2_address = server.bind_addresses[1] client1 = SimpleClient(SimpleTeam("team1", RandomPlayer()), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", RandomPlayer()), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown()
def test_simple_failing_bots(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2) for bind_address in server.bind_addresses: assert bind_address.startswith("tcp://") client1_address = server.bind_addresses[0].replace("*", "localhost") client2_address = server.bind_addresses[1].replace("*", "localhost") class FailingPlayer: def _set_initial(self, dummy, dummy2): pass def _set_index(self, dummy): pass def _get_move(self, universe, game_state): pass client1 = SimpleClient(SimpleTeam("team1", SteppingPlayer("^>>v<")), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", FailingPlayer()), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown()
def test_simple_game(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer( layout_string=layout, rounds=5, players=2, bind_addrs=( "ipc:///tmp/pelita-testplayer1-%s" % uuid.uuid4(), "ipc:///tmp/pelita-testplayer2-%s" % uuid.uuid4(), ), ) for bind_address in server.bind_addresses: self.assertTrue(bind_address.startswith("ipc://")) client1_address = server.bind_addresses[0] client2_address = server.bind_addresses[1] client1 = SimpleClient(SimpleTeam("team1", RandomPlayer()), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", RandomPlayer()), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown()
def test_failing_bots_do_not_crash_server_in_set_initial(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2, timeout_length=0.3) for bind_address in server.bind_addresses: assert bind_address.startswith("tcp://") client1_address = server.bind_addresses[0].replace("*", "localhost") client2_address = server.bind_addresses[1].replace("*", "localhost") class ThisIsAnExpectedException(Exception): pass class FailingPlayer(AbstractPlayer): def set_initial(self): raise ThisIsAnExpectedException() def get_move(self): raise ThisIsAnExpectedException() old_timeout = pelita.simplesetup.DEAD_CONNECTION_TIMEOUT pelita.simplesetup.DEAD_CONNECTION_TIMEOUT = 0.3 client1 = SimpleClient(SimpleTeam("team1", FailingPlayer()), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", FailingPlayer()), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown() pelita.simplesetup.DEAD_CONNECTION_TIMEOUT = old_timeout
def test_simple_remote_game(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2) for bind_address in server.bind_addresses: assert bind_address.startswith("tcp://") client1_address = server.bind_addresses[0].replace("*", "localhost") client2_address = server.bind_addresses[1].replace("*", "localhost") client1 = SimpleClient(SimpleTeam("team1", SteppingPlayer("^>>v<")), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", SteppingPlayer("^<<v>")), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown()
def test_simple_remote_game(self): layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2) for bind_address in server.bind_addresses: assert bind_address.startswith("tcp://") client1_address = server.bind_addresses[0].replace("*", "localhost") client2_address = server.bind_addresses[1].replace("*", "localhost") client1 = SimpleClient(SimpleTeam("team1", SteppingPlayer("^>>v<")), address=client1_address) client2 = SimpleClient(SimpleTeam("team2", SteppingPlayer("^<<v>")), address=client2_address) client1.autoplay_process() client2.autoplay_process() server.run() server.shutdown()
def test_remote_game(): remote = [libpelita.get_python_process(), '-m', 'pelita.scripts.pelita_player', '--remote'] remote_stopping = remote + ['pelita/player/StoppingPlayer', 'tcp://127.0.0.1:52301'] remote_food_eater = remote + ['pelita/player/FoodEatingPlayer', 'tcp://127.0.0.1:52302'] remote_procs = [Popen_autokill(args) for args in [remote_stopping, remote_food_eater]] layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2, bind_addrs=['remote:tcp://127.0.0.1:52301', 'remote:tcp://127.0.0.1:52302']) server.run() server.shutdown() assert server.game_master.game_state['team_wins'] == 1 server = SimpleServer(layout_string=layout, rounds=5, players=2, bind_addrs=['remote:tcp://127.0.0.1:52302', 'remote:tcp://127.0.0.1:52301']) server.run() server.shutdown() assert server.game_master.game_state['team_wins'] == 0 server = SimpleServer(layout_string=layout, rounds=5, players=2, bind_addrs=['remote:tcp://127.0.0.1:52301', 'remote:tcp://127.0.0.1:52302']) server.run() server.shutdown() assert server.game_master.game_state['team_wins'] == 1 # terminate processes [p.terminate() for p in remote_procs] for p in remote_procs: assert p.wait(2) is not None
def test_remote_game(): remote = [libpelita.get_python_process(), '-m', 'pelita.scripts.pelita_player', '--remote'] remote_stopping = remote + ['StoppingPlayer', 'tcp://127.0.0.1:52301'] remote_food_eater = remote + ['FoodEatingPlayer', 'tcp://127.0.0.1:52302'] remote_procs = [Popen_autokill(args) for args in [remote_stopping, remote_food_eater]] layout = """ ########## # # #0 .. 1# ########## """ server = SimpleServer(layout_string=layout, rounds=5, players=2, bind_addrs=['remote:tcp://127.0.0.1:52301', 'remote:tcp://127.0.0.1:52302']) server.run() server.shutdown() assert server.game_master.game_state['team_wins'] == 1 server = SimpleServer(layout_string=layout, rounds=5, players=2, bind_addrs=['remote:tcp://127.0.0.1:52302', 'remote:tcp://127.0.0.1:52301']) server.run() server.shutdown() assert server.game_master.game_state['team_wins'] == 0 server = SimpleServer(layout_string=layout, rounds=5, players=2, bind_addrs=['remote:tcp://127.0.0.1:52301', 'remote:tcp://127.0.0.1:52302']) server.run() server.shutdown() assert server.game_master.game_state['team_wins'] == 1 # terminate processes [p.terminate() for p in remote_procs] for p in remote_procs: assert p.wait(2) is not None