| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | """  HTTP2 Test Server. Highly experimental work in progress."""import argparseimport loggingfrom twisted.internet.protocol import Factoryfrom twisted.internet import endpoints, reactorimport http2_base_serverimport test_rst_after_headerimport test_rst_after_dataimport test_goawayimport test_pingimport test_max_streamsclass H2Factory(Factory):  def __init__(self, testcase):    logging.info('In H2Factory')    self._num_streams = 0    self._testcase = testcase  def buildProtocol(self, addr):    self._num_streams += 1    logging.info('New Connection: %d'%self._num_streams)    if self._testcase == 'rst_after_header':      t = test_rst_after_header.TestcaseRstStreamAfterHeader()    elif self._testcase == 'rst_after_data':      t = test_rst_after_data.TestcaseRstStreamAfterData()    elif self._testcase == 'goaway':      t = test_goaway.TestcaseGoaway(self._num_streams)    elif self._testcase == 'ping':      t = test_ping.TestcasePing()    elif self._testcase == 'max_streams':      t = test_max_streams.TestcaseSettingsMaxStreams()    else:      logging.error('Unknown test case: %s'%self._testcase)      assert(0)    return t.get_base_server()if __name__ == "__main__":  logging.basicConfig(format = "%(levelname) -10s %(asctime)s %(module)s:%(lineno)s | %(message)s", level=logging.INFO)  parser = argparse.ArgumentParser()  parser.add_argument("test")  parser.add_argument("port")  args = parser.parse_args()  if args.test not in ['rst_after_header', 'rst_after_data', 'goaway', 'ping', 'max_streams']:    print 'unknown test: ', args.test  endpoint = endpoints.TCP4ServerEndpoint(reactor, int(args.port), backlog=128)  endpoint.listen(H2Factory(args.test))  reactor.run()
 |