Exemple #1
0
	def _test_exception_on_import(self, code):
		f = self.write_temp_py(code)
		sandbox = SubprocessSandbox([f.name])
		players = sandbox.get_players()

		self.assertEqual(len(players), 1)

		self.run_players(players)

		self.assertEqual(self.server.crashed, 2)
		self.assertEqual(self.server.stopped, 2)
		self.assertEqual(len(self.server.crash_report), 2)
		self.assertTrue("Traceback" in self.server.crash_report[0])
Exemple #2
0
    def _test_exception_on_import(self, code):
        f = self.write_temp_py(code)
        sandbox = SubprocessSandbox([f.name])
        players = sandbox.get_players()

        self.assertEqual(len(players), 1)

        self.run_players(players)

        self.assertEqual(self.server.crashed, 2)
        self.assertEqual(self.server.stopped, 2)
        self.assertEqual(len(self.server.crash_report), 2)
        self.assertTrue("Traceback" in self.server.crash_report[0])
Exemple #3
0
    def test_new_names(self):

        f = self.write_temp_py("""from spectrumwars import Transceiver

class Destination(Transceiver):
	pass

class Source(Transceiver):
	pass
""")

        sandbox = SubprocessSandbox([f.name])
        players = sandbox.get_players()

        self.assertEqual(len(players), 1)

        self.run_players(players)

        self.assertEqual(self.server.crashed, 0)
Exemple #4
0
	def test_new_names(self):

		f = self.write_temp_py("""from spectrumwars import Transceiver

class Destination(Transceiver):
	pass

class Source(Transceiver):
	pass
""")

		sandbox = SubprocessSandbox([f.name])
		players = sandbox.get_players()

		self.assertEqual(len(players), 1)

		self.run_players(players)

		self.assertEqual(self.server.crashed, 0)
Exemple #5
0
    def test_simple(self):

        f = self.write_temp_py("""from spectrumwars import Transceiver

class Receiver(Transceiver):
	pass

class Transmitter(Transceiver):
	pass
""")

        sandbox = SubprocessSandbox([f.name])
        players = sandbox.get_players()

        self.assertEqual(len(players), 1)

        self.run_players(players)

        self.assertEqual(self.server.stopped, 2)
        self.assertEqual(self.server.crashed, 0)
Exemple #6
0
	def test_simple(self):

		f = self.write_temp_py("""from spectrumwars import Transceiver

class Receiver(Transceiver):
	pass

class Transmitter(Transceiver):
	pass
""")

		sandbox = SubprocessSandbox([f.name])
		players = sandbox.get_players()

		self.assertEqual(len(players), 1)

		self.run_players(players)

		self.assertEqual(self.server.stopped, 2)
		self.assertEqual(self.server.crashed, 0)
Exemple #7
0
def run(args):
    logging.basicConfig(level=logging.DEBUG)
    logging.getLogger('jsonrpc2_zeromq').setLevel(logging.WARNING)

    testbed = get_testbed(args.testbed, args.testbed_options)
    sandbox = SubprocessSandbox(args.player_paths)

    packet_limit = args.packet_limit if args.packet_limit > 0 else None
    time_limit = args.time_limit if args.time_limit > 0 else None

    game = Game(testbed,
                sandbox,
                packet_limit=packet_limit,
                time_limit=time_limit)
    ctl = GameController()

    log.info("Running game...")

    results = ctl.run(game)

    log.info("Done.")

    game_time = game.end_time - game.start_time

    print "Results:"
    for i, result in enumerate(results):

        if result.src_transmit_packets > 0:
            packet_loss = 100. * (
                result.src_transmit_packets -
                result.dst_received_packets) / result.src_transmit_packets
            packet_loss_str = "(%.0f%% packet loss)" % (packet_loss, )
        else:
            packet_loss_str = ""

        print "Player %d:" % (i + 1, )
        print "    crashed             : %s" % (result.crashed, )
        print "    transmitted packets : %d" % (result.src_transmit_packets, )
        print "    received packets    : %d" % (
            result.dst_received_packets, ), packet_loss_str
        print "    transferred payload : %d bytes (avg %.1f bytes/s)" % (
            result.payload_bytes, result.payload_bytes / game_time)
        print
        if result.crashed:
            print "   Crash reports:"
            for desc in result.crash_report:
                print desc
            print

    print "Game time: %.1f seconds" % (game_time, )

    if args.log_path:
        pickle.dump(game.log, open(args.log_path, "wb"))
Exemple #8
0
    def test_loop(self):

        f = self.write_temp_py("""from spectrumwars import Transceiver

class Receiver(Transceiver):
	def start(self):
		while True:
			pass

class Transmitter(Transceiver):
	pass
""")

        sandbox = SubprocessSandbox([f.name])
        players = sandbox.get_players()

        self.assertEqual(len(players), 1)

        player = players[0]

        player.dst.init(1.)
        player.src.init(1.)

        player.dst.start(self.endpoint)
        player.src.start(self.endpoint)

        now = time.time()
        deadline = now + 1

        player.dst.join(deadline=deadline)
        player.src.join(deadline=deadline)

        self.assertEqual(self.server.crashed, 1)
        self.assertEqual(self.server.stopped, 2)
        self.assertEqual(len(self.server.crash_report), 1)
        self.assertTrue("Time" in self.server.crash_report[0])
Exemple #9
0
	def test_loop(self):

		f = self.write_temp_py("""from spectrumwars import Transceiver

class Receiver(Transceiver):
	def start(self):
		while True:
			pass

class Transmitter(Transceiver):
	pass
""")

		sandbox = SubprocessSandbox([f.name])
		players = sandbox.get_players()

		self.assertEqual(len(players), 1)

		player = players[0]

		player.dst.init(1.)
		player.src.init(1.)

		player.dst.start(self.endpoint)
		player.src.start(self.endpoint)

		now = time.time()
		deadline = now + 1

		player.dst.join(deadline=deadline)
		player.src.join(deadline=deadline)

		self.assertEqual(self.server.crashed, 1)
		self.assertEqual(self.server.stopped, 2)
		self.assertEqual(len(self.server.crash_report), 1)
		self.assertTrue("Time" in self.server.crash_report[0])