@@ -43,8 +43,8 @@ struct tester_options {
4343struct tester {
4444 struct aws_allocator * alloc ;
4545 struct aws_logger logger ;
46- struct aws_event_loop_group event_loop_group ;
47- struct aws_host_resolver host_resolver ;
46+ struct aws_event_loop_group * event_loop_group ;
47+ struct aws_host_resolver * host_resolver ;
4848 struct aws_server_bootstrap * server_bootstrap ;
4949 struct aws_http_server * server ;
5050 struct aws_client_bootstrap * client_bootstrap ;
@@ -64,7 +64,6 @@ struct tester {
6464 int server_connection_is_shutdown ;
6565 int wait_client_connection_is_shutdown ;
6666 int wait_server_connection_is_shutdown ;
67- bool client_bootstrap_is_shutdown ;
6867
6968 bool server_is_shutdown ;
7069 struct aws_http_connection * new_client_connection ;
@@ -177,15 +176,6 @@ static void s_tester_on_client_connection_shutdown(
177176 AWS_FATAL_ASSERT (aws_mutex_unlock (& tester -> wait_lock ) == AWS_OP_SUCCESS );
178177 aws_condition_variable_notify_one (& tester -> wait_cvar );
179178}
180- static void s_tester_on_client_bootstrap_shutdown (void * user_data ) {
181- struct tester * tester = user_data ;
182- AWS_FATAL_ASSERT (aws_mutex_lock (& tester -> wait_lock ) == AWS_OP_SUCCESS );
183-
184- tester -> client_bootstrap_is_shutdown = true;
185-
186- AWS_FATAL_ASSERT (aws_mutex_unlock (& tester -> wait_lock ) == AWS_OP_SUCCESS );
187- aws_condition_variable_notify_one (& tester -> wait_cvar );
188- }
189179
190180static int s_tester_wait (struct tester * tester , bool (* pred )(void * user_data )) {
191181 int local_wait_result ;
@@ -230,11 +220,6 @@ static bool s_tester_server_shutdown_pred(void *user_data) {
230220 return tester -> server_is_shutdown ;
231221}
232222
233- static bool s_tester_client_bootstrap_shutdown_pred (void * user_data ) {
234- struct tester * tester = user_data ;
235- return tester -> client_bootstrap_is_shutdown ;
236- }
237-
238223static int s_tester_init (struct tester * tester , const struct tester_options * options ) {
239224 AWS_ZERO_STRUCT (* tester );
240225
@@ -253,9 +238,9 @@ static int s_tester_init(struct tester *tester, const struct tester_options *opt
253238 ASSERT_SUCCESS (aws_mutex_init (& tester -> wait_lock ));
254239 ASSERT_SUCCESS (aws_condition_variable_init (& tester -> wait_cvar ));
255240
256- ASSERT_SUCCESS ( aws_event_loop_group_default_init ( & tester -> event_loop_group , tester -> alloc , 1 ) );
257- ASSERT_SUCCESS ( aws_host_resolver_init_default ( & tester -> host_resolver , tester -> alloc , 8 , & tester -> event_loop_group ) );
258- tester -> server_bootstrap = aws_server_bootstrap_new (tester -> alloc , & tester -> event_loop_group );
241+ tester -> event_loop_group = aws_event_loop_group_new_default ( tester -> alloc , 1 , NULL );
242+ tester -> host_resolver = aws_host_resolver_new_default ( tester -> alloc , 8 , tester -> event_loop_group , NULL );
243+ tester -> server_bootstrap = aws_server_bootstrap_new (tester -> alloc , tester -> event_loop_group );
259244 ASSERT_NOT_NULL (tester -> server_bootstrap );
260245
261246 struct aws_socket_options socket_options = {
@@ -295,10 +280,8 @@ static int s_tester_init(struct tester *tester, const struct tester_options *opt
295280 }
296281
297282 struct aws_client_bootstrap_options bootstrap_options = {
298- .event_loop_group = & tester -> event_loop_group ,
299- .host_resolver = & tester -> host_resolver ,
300- .on_shutdown_complete = s_tester_on_client_bootstrap_shutdown ,
301- .user_data = tester ,
283+ .event_loop_group = tester -> event_loop_group ,
284+ .host_resolver = tester -> host_resolver ,
302285 };
303286 tester -> client_bootstrap = aws_client_bootstrap_new (tester -> alloc , & bootstrap_options );
304287 ASSERT_NOT_NULL (tester -> client_bootstrap );
@@ -335,8 +318,11 @@ static int s_tester_clean_up(struct tester *tester) {
335318 ASSERT_SUCCESS (s_tester_wait (tester , s_tester_server_shutdown_pred ));
336319 }
337320 aws_server_bootstrap_release (tester -> server_bootstrap );
338- aws_host_resolver_clean_up (& tester -> host_resolver );
339- aws_event_loop_group_clean_up (& tester -> event_loop_group );
321+ aws_client_bootstrap_release (tester -> client_bootstrap );
322+ aws_host_resolver_release (tester -> host_resolver );
323+ aws_event_loop_group_release (tester -> event_loop_group );
324+ ASSERT_SUCCESS (aws_global_thread_creator_shutdown_wait_for (10 ));
325+
340326 aws_http_library_clean_up ();
341327 aws_logger_clean_up (& tester -> logger );
342328 aws_mutex_clean_up (& tester -> wait_lock );
@@ -386,9 +372,6 @@ static int s_test_connection_setup_shutdown(struct aws_allocator *allocator, voi
386372 release_all_server_connections (& tester );
387373 ASSERT_SUCCESS (s_tester_wait (& tester , s_tester_connection_shutdown_pred ));
388374
389- aws_client_bootstrap_release (tester .client_bootstrap );
390- ASSERT_SUCCESS (s_tester_wait (& tester , s_tester_client_bootstrap_shutdown_pred ));
391-
392375 ASSERT_SUCCESS (s_tester_clean_up (& tester ));
393376 return AWS_OP_SUCCESS ;
394377}
@@ -413,8 +396,6 @@ static int s_test_connection_destroy_server_with_connection_existing(struct aws_
413396 /* release memory */
414397 release_all_client_connections (& tester );
415398 release_all_server_connections (& tester );
416- aws_client_bootstrap_release (tester .client_bootstrap );
417- ASSERT_SUCCESS (s_tester_wait (& tester , s_tester_client_bootstrap_shutdown_pred ));
418399
419400 ASSERT_SUCCESS (s_tester_clean_up (& tester ));
420401 return AWS_OP_SUCCESS ;
@@ -458,9 +439,6 @@ static int s_test_connection_destroy_server_with_multiple_connections_existing(
458439 release_all_client_connections (& tester );
459440 release_all_server_connections (& tester );
460441
461- aws_client_bootstrap_release (tester .client_bootstrap );
462- ASSERT_SUCCESS (s_tester_wait (& tester , s_tester_client_bootstrap_shutdown_pred ));
463-
464442 ASSERT_SUCCESS (s_tester_clean_up (& tester ));
465443 return AWS_OP_SUCCESS ;
466444}
@@ -540,25 +518,24 @@ static int s_test_connection_server_shutting_down_new_connection_setup_fail(
540518 };
541519 /* create a new eventloop for the new connection and block the new connection. Waiting server to begin shutting
542520 * down. */
543- struct aws_event_loop_group event_loop_group ;
544- ASSERT_SUCCESS (aws_event_loop_group_default_init (& event_loop_group , allocator , 1 ));
521+ struct aws_event_loop_group * event_loop_group = aws_event_loop_group_new_default (allocator , 1 , NULL );
545522
546523 /* get the first eventloop, which will be the eventloop for client to connect */
547- struct aws_event_loop * current_eventloop = aws_event_loop_group_get_loop_at (& event_loop_group , 0 );
524+ struct aws_event_loop * current_eventloop = aws_event_loop_group_get_loop_at (event_loop_group , 0 );
548525 struct aws_task * block_task = aws_mem_acquire (allocator , sizeof (struct aws_task ));
549526 aws_task_init (block_task , s_block_task , & tester , "wait_a_bit" );
550527 aws_event_loop_schedule_task_now (current_eventloop , block_task );
551528
552529 /* get the first eventloop of tester, which will be the eventloop for server listener socket, block the listener
553530 * socket */
554- struct aws_event_loop * server_eventloop = aws_event_loop_group_get_loop_at (& tester .event_loop_group , 0 );
531+ struct aws_event_loop * server_eventloop = aws_event_loop_group_get_loop_at (tester .event_loop_group , 0 );
555532 struct aws_task * server_block_task = aws_mem_acquire (allocator , sizeof (struct aws_task ));
556533 aws_task_init (server_block_task , s_block_task , & tester , "wait_a_bit" );
557534 aws_event_loop_schedule_task_now (server_eventloop , server_block_task );
558535
559536 struct aws_client_bootstrap_options bootstrap_options = {
560- .event_loop_group = & event_loop_group ,
561- .host_resolver = & tester .host_resolver ,
537+ .event_loop_group = event_loop_group ,
538+ .host_resolver = tester .host_resolver ,
562539 };
563540 struct aws_client_bootstrap * bootstrap = aws_client_bootstrap_new (allocator , & bootstrap_options );
564541 struct aws_http_client_connection_options client_options = AWS_HTTP_CLIENT_CONNECTION_OPTIONS_INIT ;
@@ -603,9 +580,7 @@ static int s_test_connection_server_shutting_down_new_connection_setup_fail(
603580 release_all_client_connections (& tester );
604581 release_all_server_connections (& tester );
605582 aws_client_bootstrap_release (bootstrap );
606- aws_client_bootstrap_release (tester .client_bootstrap );
607- ASSERT_SUCCESS (s_tester_wait (& tester , s_tester_client_bootstrap_shutdown_pred ));
608- aws_event_loop_group_clean_up (& event_loop_group );
583+ aws_event_loop_group_release (event_loop_group );
609584 ASSERT_SUCCESS (s_tester_clean_up (& tester ));
610585
611586 return AWS_OP_SUCCESS ;
0 commit comments