@@ -69,6 +69,51 @@ async fn server_builder_set_max_concurrent_streams() {
6969 join ( client, h2) . await ;
7070}
7171
72+ #[ tokio:: test]
73+ async fn server_builder_header_table_size ( ) {
74+ h2_support:: trace_init!( ) ;
75+
76+ for size in [ 0 , 10000 ] {
77+ let ( io, mut client) = mock:: new ( ) ;
78+
79+ let mut expected = frame:: Settings :: default ( ) ;
80+ expected. set_header_table_size ( Some ( size) ) ;
81+
82+ let client = async move {
83+ let recv_settings = client. assert_server_handshake ( ) . await ;
84+ assert_frame_eq ( recv_settings, expected) ;
85+ client
86+ . send_frame (
87+ frames:: headers ( 1 )
88+ . request ( "GET" , "https://example.com/" )
89+ . eos ( ) ,
90+ )
91+ . await ;
92+ client
93+ . recv_frame ( frames:: headers ( 1 ) . response ( 200 ) . eos ( ) )
94+ . await ;
95+ } ;
96+
97+ let mut builder = server:: Builder :: new ( ) ;
98+ builder. header_table_size ( size) ;
99+
100+ let h2 = async move {
101+ let mut srv = builder. handshake :: < _ , Bytes > ( io) . await . expect ( "handshake" ) ;
102+ let ( req, mut stream) = srv. next ( ) . await . unwrap ( ) . unwrap ( ) ;
103+ assert_eq ! ( req. method( ) , & http:: Method :: GET ) ;
104+ stream
105+ . send_response (
106+ http:: Response :: builder ( ) . status ( 200 ) . body ( ( ) ) . unwrap ( ) ,
107+ true ,
108+ )
109+ . unwrap ( ) ;
110+ assert ! ( srv. next( ) . await . is_none( ) ) ;
111+ } ;
112+
113+ join ( client, h2) . await ;
114+ }
115+ }
116+
72117#[ tokio:: test]
73118async fn serve_request ( ) {
74119 h2_support:: trace_init!( ) ;
0 commit comments