@@ -55,6 +55,10 @@ struct sm_tester_options {
5555 bool close_connection_on_server_error ;
5656 size_t connection_ping_period_ms ;
5757 size_t connection_ping_timeout_ms ;
58+
59+ /* HTTP/2 initial settings */
60+ const struct aws_http2_setting * initial_settings_array ;
61+ size_t num_initial_settings ;
5862};
5963
6064static struct aws_logger s_logger ;
@@ -290,6 +294,8 @@ static int s_tester_init(struct sm_tester_options *options) {
290294 .connection_ping_period_ms = options -> connection_ping_period_ms ,
291295 .connection_ping_timeout_ms = options -> connection_ping_timeout_ms ,
292296 .http2_prior_knowledge = options -> prior_knowledge ,
297+ .initial_settings_array = options -> initial_settings_array ,
298+ .num_initial_settings = options -> num_initial_settings ,
293299 };
294300 s_tester .stream_manager = aws_http2_stream_manager_new (alloc , & sm_options );
295301
@@ -1516,3 +1522,45 @@ TEST_CASE(localhost_integ_h2_sm_connection_monitor_kill_slow_connection) {
15161522
15171523 return s_tester_clean_up ();
15181524}
1525+
1526+ /* Test that stream manager can be created with initial_settings_array configured */
1527+ TEST_CASE (h2_sm_with_initial_settings ) {
1528+ (void )ctx ;
1529+ /* TODO: VALIDATE from the peer that those settings received. */
1530+ /* Configure custom HTTP/2 initial settings */
1531+ struct aws_http2_setting initial_settings [] = {
1532+ {
1533+ .id = AWS_HTTP2_SETTINGS_HEADER_TABLE_SIZE ,
1534+ .value = 8192 ,
1535+ },
1536+ {
1537+ .id = AWS_HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS ,
1538+ .value = 128 ,
1539+ },
1540+ {
1541+ .id = AWS_HTTP2_SETTINGS_INITIAL_WINDOW_SIZE ,
1542+ .value = 65536 ,
1543+ },
1544+ };
1545+
1546+ struct sm_tester_options options = {
1547+ .max_connections = 5 ,
1548+ .alloc = allocator ,
1549+ .initial_settings_array = initial_settings ,
1550+ .num_initial_settings = AWS_ARRAY_SIZE (initial_settings ),
1551+ };
1552+
1553+ ASSERT_SUCCESS (s_tester_init (& options ));
1554+ ASSERT_NOT_NULL (s_tester .stream_manager );
1555+
1556+ /* Verify stream manager works with initial settings */
1557+ s_override_cm_connect_function (s_aws_http_connection_manager_create_connection_sync_mock );
1558+ int num_to_acquire = 1 ;
1559+ ASSERT_SUCCESS (s_sm_stream_acquiring (num_to_acquire ));
1560+ ASSERT_SUCCESS (s_wait_on_fake_connection_count (1 ));
1561+ s_drain_all_fake_connection_testing_channel ();
1562+ ASSERT_SUCCESS (s_wait_on_streams_acquired_count (num_to_acquire ));
1563+ ASSERT_SUCCESS (s_complete_all_fake_connection_streams ());
1564+
1565+ return s_tester_clean_up ();
1566+ }
0 commit comments