|  | @@ -39,10 +39,12 @@
 | 
	
		
			
				|  |  |  #include <sys/socket.h>
 | 
	
		
			
				|  |  |  #include <unistd.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#include "src/core/iomgr/iomgr.h"
 | 
	
		
			
				|  |  | -#include "src/core/iomgr/socket_utils_posix.h"
 | 
	
		
			
				|  |  | +#include <grpc/grpc.h>
 | 
	
		
			
				|  |  |  #include <grpc/support/log.h>
 | 
	
		
			
				|  |  |  #include <grpc/support/time.h>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#include "src/core/iomgr/iomgr.h"
 | 
	
		
			
				|  |  | +#include "src/core/iomgr/socket_utils_posix.h"
 | 
	
		
			
				|  |  |  #include "test/core/util/test_config.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static grpc_pollset_set g_pollset_set;
 | 
	
	
		
			
				|  | @@ -198,16 +200,21 @@ void test_times_out(void) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Make sure the event doesn't trigger early */
 | 
	
		
			
				|  |  |    gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset));
 | 
	
		
			
				|  |  | -  while (gpr_time_cmp(gpr_time_add(connect_deadline,
 | 
	
		
			
				|  |  | -                                   gpr_time_from_seconds(2, GPR_TIMESPAN)),
 | 
	
		
			
				|  |  | -                      gpr_now(connect_deadline.clock_type)) > 0) {
 | 
	
		
			
				|  |  | -    int is_after_deadline =
 | 
	
		
			
				|  |  | -        gpr_time_cmp(connect_deadline, gpr_now(GPR_CLOCK_MONOTONIC)) <= 0;
 | 
	
		
			
				|  |  | +  for (;;) {
 | 
	
		
			
				|  |  |      grpc_pollset_worker worker;
 | 
	
		
			
				|  |  | +    gpr_timespec now = gpr_now(connect_deadline.clock_type);
 | 
	
		
			
				|  |  | +    gpr_timespec continue_verifying_time = gpr_time_from_seconds(2, GPR_TIMESPAN);
 | 
	
		
			
				|  |  | +    gpr_timespec grace_time = gpr_time_from_seconds(1, GPR_TIMESPAN);
 | 
	
		
			
				|  |  | +    gpr_timespec finish_time = gpr_time_add(connect_deadline, continue_verifying_time);
 | 
	
		
			
				|  |  | +    gpr_timespec restart_verifying_time = gpr_time_add(connect_deadline, grace_time);
 | 
	
		
			
				|  |  | +    int is_after_deadline = gpr_time_cmp(now, connect_deadline) > 0;
 | 
	
		
			
				|  |  | +    if (gpr_time_cmp(now, finish_time) > 0) {
 | 
	
		
			
				|  |  | +      break;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    gpr_log(GPR_DEBUG, "now=%d.%09d connect_deadline=%d.%09d", 
 | 
	
		
			
				|  |  | +        now.tv_sec, now.tv_nsec, connect_deadline.tv_sec, connect_deadline.tv_nsec);
 | 
	
		
			
				|  |  |      if (is_after_deadline &&
 | 
	
		
			
				|  |  | -        gpr_time_cmp(gpr_time_add(connect_deadline,
 | 
	
		
			
				|  |  | -                                  gpr_time_from_seconds(1, GPR_TIMESPAN)),
 | 
	
		
			
				|  |  | -                     gpr_now(GPR_CLOCK_MONOTONIC)) > 0) {
 | 
	
		
			
				|  |  | +        gpr_time_cmp(now, restart_verifying_time) <= 0) {
 | 
	
		
			
				|  |  |        /* allow some slack before insisting that things be done */
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |        GPR_ASSERT(g_connections_complete ==
 | 
	
	
		
			
				|  | @@ -228,7 +235,7 @@ static void destroy_pollset(void *p) { grpc_pollset_destroy(p); }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  int main(int argc, char **argv) {
 | 
	
		
			
				|  |  |    grpc_test_init(argc, argv);
 | 
	
		
			
				|  |  | -  grpc_iomgr_init();
 | 
	
		
			
				|  |  | +  grpc_init();
 | 
	
		
			
				|  |  |    grpc_pollset_set_init(&g_pollset_set);
 | 
	
		
			
				|  |  |    grpc_pollset_init(&g_pollset);
 | 
	
		
			
				|  |  |    grpc_pollset_set_add_pollset(&g_pollset_set, &g_pollset);
 | 
	
	
		
			
				|  | @@ -238,6 +245,6 @@ int main(int argc, char **argv) {
 | 
	
		
			
				|  |  |    test_times_out();
 | 
	
		
			
				|  |  |    grpc_pollset_set_destroy(&g_pollset_set);
 | 
	
		
			
				|  |  |    grpc_pollset_shutdown(&g_pollset, destroy_pollset, &g_pollset);
 | 
	
		
			
				|  |  | -  grpc_iomgr_shutdown();
 | 
	
		
			
				|  |  | +  grpc_shutdown();
 | 
	
		
			
				|  |  |    return 0;
 | 
	
		
			
				|  |  |  }
 |