Пример #1
0
 def template_Run(self, n, svr_do_sync, user_do_sync):
     assert svr_do_sync == user_do_sync
     k = MockKeyboard()
     k.inputs = [1]*30+[0]*100
     r = NullRenderer()
     conf = GameConfig()
     conf.player_size = n
     conf.frames_per_sec = 32767
     conf.game_length = 0.05
     conf.post_game_time = 0
     conf.do_sync = svr_do_sync
     conf.sync_timeout = 0.1
     conf.sync_rate = 100
     conf.buffer_size = 64
     # Try to avoid clients dying at the end of handshake.
     test_tries = 40
     status = 0
     for i in range(0, test_tries):
         s = UDPSocket()
         s.Open()
         s.Bind(('', 0))
         svraddr = s.sock.getsockname()
         ps = []
         qs = []
         clients = []
         # Try only once here. In case of server failure and client success,
         # we must re-run the test as a whole.
         server_tries = 1
         server_timeout = 0.5
         client_tries = 1
         # Send only once. To keep tests short, games run only briefly.
         # If the resend happens after the game is ended, the test fails.
         client_resend = 1
         client_timeout = 0.5
         user_conf = GameConfig()
         user_conf.do_sync = user_do_sync
         user_conf.sync_timeout = conf.sync_timeout * n
         for i in range(0, n):
             q = multiprocessing.Queue()
             c = UDPClient()
             p = multiprocessing.Process(target=\
                     UDPServerTestPickleJar_Run,
                     args=(client_tries, client_resend, client_timeout, 
                         c, svraddr, r, k, user_conf, q))
             p.start()
             ps.append(p)
             qs.append(q)
         svr = UDPServer()
         svr.buffer_time = 0
         try:
             status = svr.Run(s, False, conf, server_tries, server_timeout)
         except Exception as ex:
             logger.exception(ex)
             status = 100 # Error in the server, stop the test
         results = []
         for i in range(0, n):
             results.append(qs[i].get())
             ps[i].join()
         s.Close()
         self.assertTrue(status != 100)
         if status == 0:
             break
     self.assertTrue(status == 0)
     for i in range(0, n):
         self.assertTrue(results[i])