Ejemplo n.º 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])
Ejemplo n.º 2
0
    parser.add_argument('--port', type=int, default=8090, help='The port.')
    parser.add_argument('-i', '--interpolate', action='store_true',
            default=False, help='Enable interpolation')
    parser.add_argument('-b', '--buffersize', type=int, default=64,
            help='Number of records to keep.')
    parser.add_argument('--tries', type=int, default=60,
            help='The number of attempts to connect to the server.')
    parser.add_argument('--resend', type=int, default=9,
            help='The number of duplicate messages to send during handshake.')
    parser.add_argument('--timeout', type=int, default=10,
            help='The time allowed for each connection and handshake.')
    parser.add_argument('--nosync', default=False, action='store_true',
            help='Allow server to measure latency and clock.')
    parser.add_argument('--synctimeout', type=int, default=3,
            help='The timeout for RecvSync.')
    args = parser.parse_args()
    conf = GameConfig()
    conf.do_interpolate = args.interpolate
    conf.buffer_size = args.buffersize
    conf.do_sync = not args.nosync
    conf.sync_timeout = args.synctimeout
    c = UDPClient()
    from renderer import Renderer
    r = Renderer()
    # For now, nothing in server's conf affects renderer.
    r.Init()
    conf.ApplyRenderer(r)
    if not c.Run((args.ip, args.port), r, r, conf, args.tries, args.resend,
            args.timeout):
        print('Timed out.')