void test_encoding(void) { LOG_TEST(); assert_encodes_as(gpr_time_from_micros(-1), "1n"); assert_encodes_as(gpr_time_from_seconds(-10), "1n"); assert_encodes_as(gpr_time_from_nanos(10), "10n"); assert_encodes_as(gpr_time_from_nanos(999999999), "1S"); assert_encodes_as(gpr_time_from_micros(1), "1u"); assert_encodes_as(gpr_time_from_micros(10), "10u"); assert_encodes_as(gpr_time_from_micros(100), "100u"); assert_encodes_as(gpr_time_from_micros(890), "890u"); assert_encodes_as(gpr_time_from_micros(900), "900u"); assert_encodes_as(gpr_time_from_micros(901), "901u"); assert_encodes_as(gpr_time_from_millis(1), "1m"); assert_encodes_as(gpr_time_from_millis(2), "2m"); assert_encodes_as(gpr_time_from_micros(10001), "10100u"); assert_encodes_as(gpr_time_from_micros(999999), "1S"); assert_encodes_as(gpr_time_from_millis(1000), "1S"); assert_encodes_as(gpr_time_from_millis(2000), "2S"); assert_encodes_as(gpr_time_from_millis(2500), "2500m"); assert_encodes_as(gpr_time_from_millis(59900), "59900m"); assert_encodes_as(gpr_time_from_seconds(50), "50S"); assert_encodes_as(gpr_time_from_seconds(59), "59S"); assert_encodes_as(gpr_time_from_seconds(60), "1M"); assert_encodes_as(gpr_time_from_seconds(80), "80S"); assert_encodes_as(gpr_time_from_seconds(90), "90S"); assert_encodes_as(gpr_time_from_minutes(2), "2M"); assert_encodes_as(gpr_time_from_minutes(20), "20M"); assert_encodes_as(gpr_time_from_hours(1), "1H"); assert_encodes_as(gpr_time_from_hours(10), "10H"); assert_encodes_as(gpr_time_from_seconds(1000000000), "1000000000S"); }
void test_encoding(void) { LOG_TEST("test_encoding"); assert_encodes_as(gpr_time_from_micros(-1, GPR_TIMESPAN), "1n"); assert_encodes_as(gpr_time_from_seconds(-10, GPR_TIMESPAN), "1n"); assert_encodes_as(gpr_time_from_nanos(10, GPR_TIMESPAN), "10n"); assert_encodes_as(gpr_time_from_nanos(999999999, GPR_TIMESPAN), "1S"); assert_encodes_as(gpr_time_from_micros(1, GPR_TIMESPAN), "1u"); assert_encodes_as(gpr_time_from_micros(10, GPR_TIMESPAN), "10u"); assert_encodes_as(gpr_time_from_micros(100, GPR_TIMESPAN), "100u"); assert_encodes_as(gpr_time_from_micros(890, GPR_TIMESPAN), "890u"); assert_encodes_as(gpr_time_from_micros(900, GPR_TIMESPAN), "900u"); assert_encodes_as(gpr_time_from_micros(901, GPR_TIMESPAN), "901u"); assert_encodes_as(gpr_time_from_millis(1, GPR_TIMESPAN), "1m"); assert_encodes_as(gpr_time_from_millis(2, GPR_TIMESPAN), "2m"); assert_encodes_as(gpr_time_from_micros(10001, GPR_TIMESPAN), "10100u"); assert_encodes_as(gpr_time_from_micros(999999, GPR_TIMESPAN), "1S"); assert_encodes_as(gpr_time_from_millis(1000, GPR_TIMESPAN), "1S"); assert_encodes_as(gpr_time_from_millis(2000, GPR_TIMESPAN), "2S"); assert_encodes_as(gpr_time_from_millis(2500, GPR_TIMESPAN), "2500m"); assert_encodes_as(gpr_time_from_millis(59900, GPR_TIMESPAN), "59900m"); assert_encodes_as(gpr_time_from_seconds(50, GPR_TIMESPAN), "50S"); assert_encodes_as(gpr_time_from_seconds(59, GPR_TIMESPAN), "59S"); assert_encodes_as(gpr_time_from_seconds(60, GPR_TIMESPAN), "1M"); assert_encodes_as(gpr_time_from_seconds(80, GPR_TIMESPAN), "80S"); assert_encodes_as(gpr_time_from_seconds(90, GPR_TIMESPAN), "90S"); assert_encodes_as(gpr_time_from_minutes(2, GPR_TIMESPAN), "2M"); assert_encodes_as(gpr_time_from_minutes(20, GPR_TIMESPAN), "20M"); assert_encodes_as(gpr_time_from_hours(1, GPR_TIMESPAN), "1H"); assert_encodes_as(gpr_time_from_hours(10, GPR_TIMESPAN), "10H"); assert_encodes_as(gpr_time_from_seconds(1000000000, GPR_TIMESPAN), "1000000000S"); }
void grpc_client_setup_request_finish(grpc_client_setup_request *r, int was_successful) { int retry = !was_successful; grpc_client_setup *s = r->setup; gpr_mu_lock(&s->mu); if (s->active_request == r) { s->active_request = NULL; } else { retry = 0; } if (!retry && 0 == --s->refs) { gpr_mu_unlock(&s->mu); destroy_setup(s); destroy_request(r); } else if (retry) { /* TODO(klempner): Replace these values with further consideration. 2x is probably too aggressive of a backoff. */ gpr_timespec max_backoff = gpr_time_from_minutes(2); gpr_timespec now = gpr_now(); gpr_timespec deadline = gpr_time_add(s->current_backoff_interval, now); GPR_ASSERT(!s->in_alarm); s->in_alarm = 1; grpc_alarm_init(&s->backoff_alarm, deadline, backoff_alarm_done, r, now); s->current_backoff_interval = gpr_time_add(s->current_backoff_interval, s->current_backoff_interval); if (gpr_time_cmp(s->current_backoff_interval, max_backoff) > 0) { s->current_backoff_interval = max_backoff; } gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); destroy_request(r); } }