|
|
|
@ -31,8 +31,6 @@ |
|
|
|
|
#include "test/core/util/test_config.h" |
|
|
|
|
|
|
|
|
|
constexpr int kMinResolutionPeriodMs = 1000; |
|
|
|
|
// Provide some slack when checking intervals, to allow for test timing issues.
|
|
|
|
|
constexpr int kMinResolutionPeriodForCheckMs = 900; |
|
|
|
|
|
|
|
|
|
extern grpc_address_resolver_vtable* grpc_resolve_address_impl; |
|
|
|
|
static grpc_address_resolver_vtable* default_resolve_address; |
|
|
|
@ -76,9 +74,16 @@ static void test_resolve_address_impl(const char* name, |
|
|
|
|
} else { |
|
|
|
|
grpc_millis now = |
|
|
|
|
grpc_timespec_to_millis_round_up(gpr_now(GPR_CLOCK_MONOTONIC)); |
|
|
|
|
GPR_ASSERT(now - last_resolution_time >= kMinResolutionPeriodForCheckMs); |
|
|
|
|
GPR_ASSERT(now - last_resolution_time >= kMinResolutionPeriodMs); |
|
|
|
|
last_resolution_time = now; |
|
|
|
|
} |
|
|
|
|
// For correct time diff comparisons, make sure that any subsequent calls
|
|
|
|
|
// to grpc_core::ExecCtx::Get()->Now() on this thread don't return a time
|
|
|
|
|
// which is earlier than that returned by the call(s) to
|
|
|
|
|
// gpr_now(GPR_CLOCK_MONOTONIC) within this function. This is important
|
|
|
|
|
// because the resolver's last_resolution_timestamp_ will be taken from
|
|
|
|
|
// grpc_core::ExecCtx::Get()->Now() right after this returns.
|
|
|
|
|
grpc_core::ExecCtx::Get()->InvalidateNow(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static grpc_error* test_blocking_resolve_address_impl( |
|
|
|
@ -109,14 +114,21 @@ static grpc_ares_request* test_dns_lookup_ares_locked( |
|
|
|
|
gpr_log(GPR_DEBUG, |
|
|
|
|
"last_resolution_time:%" PRId64 " now:%" PRId64 |
|
|
|
|
" min_time_between:%d", |
|
|
|
|
last_resolution_time, now, kMinResolutionPeriodForCheckMs); |
|
|
|
|
last_resolution_time, now, kMinResolutionPeriodMs); |
|
|
|
|
if (last_resolution_time == 0) { |
|
|
|
|
last_resolution_time = |
|
|
|
|
grpc_timespec_to_millis_round_up(gpr_now(GPR_CLOCK_MONOTONIC)); |
|
|
|
|
} else { |
|
|
|
|
GPR_ASSERT(now - last_resolution_time >= kMinResolutionPeriodForCheckMs); |
|
|
|
|
GPR_ASSERT(now - last_resolution_time >= kMinResolutionPeriodMs); |
|
|
|
|
last_resolution_time = now; |
|
|
|
|
} |
|
|
|
|
// For correct time diff comparisons, make sure that any subsequent calls
|
|
|
|
|
// to grpc_core::ExecCtx::Get()->Now() on this thread don't return a time
|
|
|
|
|
// which is earlier than that returned by the call(s) to
|
|
|
|
|
// gpr_now(GPR_CLOCK_MONOTONIC) within this function. This is important
|
|
|
|
|
// because the resolver's last_resolution_timestamp_ will be taken from
|
|
|
|
|
// grpc_core::ExecCtx::Get()->Now() right after this returns.
|
|
|
|
|
grpc_core::ExecCtx::Get()->InvalidateNow(); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|