14 """HTTP2 Test Server"""
20 import http2_base_server
21 import test_data_frame_padding
23 import test_max_streams
25 import test_rst_after_data
26 import test_rst_after_header
27 import test_rst_during_data
29 import twisted.internet
30 import twisted.internet.endpoints
31 import twisted.internet.reactor
33 _TEST_CASE_MAPPING = {
52 logging.info(
'Creating H2Factory for new connection (%s)', testcase)
59 if not _TEST_CASE_MAPPING.has_key(self.
_testcase):
60 logging.error(
'Unknown test case: %s' % self.
_testcase)
67 elif self.
_testcase ==
'no_df_padding_sanity_test':
68 return t(use_padding=
False).get_base_server()
70 return t().get_base_server()
74 parser = argparse.ArgumentParser()
79 help=
'base port to run the servers (default: 8080). One test server is '
80 'started on each incrementing port, beginning with base_port, in the '
81 'following order: data_frame_padding,goaway,max_streams,'
82 'no_df_padding_sanity_test,ping,rst_after_data,rst_after_header,'
84 return parser.parse_args()
88 deferred = endpoint.listen(
H2Factory(test_case))
90 def listen_error(reason):
95 logging.error(
'Listening failed: %s' % reason.value)
96 twisted.internet.reactor.stop()
98 deferred.addErrback(listen_error)
102 """ Start one server per test case on incrementing port numbers
103 beginning with base_port """
105 for test_case
in sorted(_TEST_CASE_MAPPING.keys()):
106 portnum = base_port + index
107 logging.warning(
'serving on port %d : %s' % (portnum, test_case))
108 endpoint = twisted.internet.endpoints.TCP4ServerEndpoint(
109 twisted.internet.reactor, portnum, backlog=128)
111 twisted.internet.reactor.callWhenRunning(listen, endpoint, test_case)
116 if __name__ ==
'__main__':
119 '%(levelname) -10s %(asctime)s %(module)s:%(lineno)s | %(message)s',
123 twisted.internet.reactor.run()