|
|
@ -113,37 +113,37 @@ static void test_values(void) { |
|
|
|
fprintf(stderr, "\n"); |
|
|
|
fprintf(stderr, "\n"); |
|
|
|
|
|
|
|
|
|
|
|
for (i = 1; i != 1000 * 1000 * 1000; i *= 10) { |
|
|
|
for (i = 1; i != 1000 * 1000 * 1000; i *= 10) { |
|
|
|
x = gpr_time_from_micros(i); |
|
|
|
x = gpr_time_from_micros(i, GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec == i / GPR_US_PER_SEC && |
|
|
|
GPR_ASSERT(x.tv_sec == i / GPR_US_PER_SEC && |
|
|
|
x.tv_nsec == (i % GPR_US_PER_SEC) * GPR_NS_PER_US); |
|
|
|
x.tv_nsec == (i % GPR_US_PER_SEC) * GPR_NS_PER_US); |
|
|
|
x = gpr_time_from_nanos(i); |
|
|
|
x = gpr_time_from_nanos(i, GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec == i / GPR_NS_PER_SEC && |
|
|
|
GPR_ASSERT(x.tv_sec == i / GPR_NS_PER_SEC && |
|
|
|
x.tv_nsec == (i % GPR_NS_PER_SEC)); |
|
|
|
x.tv_nsec == (i % GPR_NS_PER_SEC)); |
|
|
|
x = gpr_time_from_millis(i); |
|
|
|
x = gpr_time_from_millis(i, GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec == i / GPR_MS_PER_SEC && |
|
|
|
GPR_ASSERT(x.tv_sec == i / GPR_MS_PER_SEC && |
|
|
|
x.tv_nsec == (i % GPR_MS_PER_SEC) * GPR_NS_PER_MS); |
|
|
|
x.tv_nsec == (i % GPR_MS_PER_SEC) * GPR_NS_PER_MS); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Test possible overflow in conversion of -ve values. */ |
|
|
|
/* Test possible overflow in conversion of -ve values. */ |
|
|
|
x = gpr_time_from_micros(-(LONG_MAX - 999997)); |
|
|
|
x = gpr_time_from_micros(-(LONG_MAX - 999997), GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec < 0); |
|
|
|
GPR_ASSERT(x.tv_sec < 0); |
|
|
|
GPR_ASSERT(x.tv_nsec >= 0 && x.tv_nsec < GPR_NS_PER_SEC); |
|
|
|
GPR_ASSERT(x.tv_nsec >= 0 && x.tv_nsec < GPR_NS_PER_SEC); |
|
|
|
|
|
|
|
|
|
|
|
x = gpr_time_from_nanos(-(LONG_MAX - 999999997)); |
|
|
|
x = gpr_time_from_nanos(-(LONG_MAX - 999999997), GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec < 0); |
|
|
|
GPR_ASSERT(x.tv_sec < 0); |
|
|
|
GPR_ASSERT(x.tv_nsec >= 0 && x.tv_nsec < GPR_NS_PER_SEC); |
|
|
|
GPR_ASSERT(x.tv_nsec >= 0 && x.tv_nsec < GPR_NS_PER_SEC); |
|
|
|
|
|
|
|
|
|
|
|
x = gpr_time_from_millis(-(LONG_MAX - 997)); |
|
|
|
x = gpr_time_from_millis(-(LONG_MAX - 997), GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec < 0); |
|
|
|
GPR_ASSERT(x.tv_sec < 0); |
|
|
|
GPR_ASSERT(x.tv_nsec >= 0 && x.tv_nsec < GPR_NS_PER_SEC); |
|
|
|
GPR_ASSERT(x.tv_nsec >= 0 && x.tv_nsec < GPR_NS_PER_SEC); |
|
|
|
|
|
|
|
|
|
|
|
/* Test general -ve values. */ |
|
|
|
/* Test general -ve values. */ |
|
|
|
for (i = -1; i > -1000 * 1000 * 1000; i *= 7) { |
|
|
|
for (i = -1; i > -1000 * 1000 * 1000; i *= 7) { |
|
|
|
x = gpr_time_from_micros(i); |
|
|
|
x = gpr_time_from_micros(i, GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec * GPR_US_PER_SEC + x.tv_nsec / GPR_NS_PER_US == i); |
|
|
|
GPR_ASSERT(x.tv_sec * GPR_US_PER_SEC + x.tv_nsec / GPR_NS_PER_US == i); |
|
|
|
x = gpr_time_from_nanos(i); |
|
|
|
x = gpr_time_from_nanos(i, GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec * GPR_NS_PER_SEC + x.tv_nsec == i); |
|
|
|
GPR_ASSERT(x.tv_sec * GPR_NS_PER_SEC + x.tv_nsec == i); |
|
|
|
x = gpr_time_from_millis(i); |
|
|
|
x = gpr_time_from_millis(i, GPR_TIMESPAN); |
|
|
|
GPR_ASSERT(x.tv_sec * GPR_MS_PER_SEC + x.tv_nsec / GPR_NS_PER_MS == i); |
|
|
|
GPR_ASSERT(x.tv_sec * GPR_MS_PER_SEC + x.tv_nsec / GPR_NS_PER_MS == i); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -158,17 +158,19 @@ static void test_add_sub(void) { |
|
|
|
for (k = 1; k <= 10000000; k *= 10) { |
|
|
|
for (k = 1; k <= 10000000; k *= 10) { |
|
|
|
int sum = i + j; |
|
|
|
int sum = i + j; |
|
|
|
int diff = i - j; |
|
|
|
int diff = i - j; |
|
|
|
gpr_timespec it = gpr_time_from_micros(i * k); |
|
|
|
gpr_timespec it = gpr_time_from_micros(i * k, GPR_TIMESPAN); |
|
|
|
gpr_timespec jt = gpr_time_from_micros(j * k); |
|
|
|
gpr_timespec jt = gpr_time_from_micros(j * k, GPR_TIMESPAN); |
|
|
|
gpr_timespec sumt = gpr_time_add(it, jt); |
|
|
|
gpr_timespec sumt = gpr_time_add(it, jt); |
|
|
|
gpr_timespec difft = gpr_time_sub(it, jt); |
|
|
|
gpr_timespec difft = gpr_time_sub(it, jt); |
|
|
|
if (gpr_time_cmp(gpr_time_from_micros(sum * k), sumt) != 0) { |
|
|
|
if (gpr_time_cmp(gpr_time_from_micros(sum * k, GPR_TIMESPAN), sumt) != |
|
|
|
|
|
|
|
0) { |
|
|
|
fprintf(stderr, "i %d j %d sum %d sumt ", i, j, sum); |
|
|
|
fprintf(stderr, "i %d j %d sum %d sumt ", i, j, sum); |
|
|
|
ts_to_s(sumt, &to_fp, stderr); |
|
|
|
ts_to_s(sumt, &to_fp, stderr); |
|
|
|
fprintf(stderr, "\n"); |
|
|
|
fprintf(stderr, "\n"); |
|
|
|
GPR_ASSERT(0); |
|
|
|
GPR_ASSERT(0); |
|
|
|
} |
|
|
|
} |
|
|
|
if (gpr_time_cmp(gpr_time_from_micros(diff * k), difft) != 0) { |
|
|
|
if (gpr_time_cmp(gpr_time_from_micros(diff * k, GPR_TIMESPAN), difft) != |
|
|
|
|
|
|
|
0) { |
|
|
|
fprintf(stderr, "i %d j %d diff %d diff ", i, j, diff); |
|
|
|
fprintf(stderr, "i %d j %d diff %d diff ", i, j, diff); |
|
|
|
ts_to_s(sumt, &to_fp, stderr); |
|
|
|
ts_to_s(sumt, &to_fp, stderr); |
|
|
|
fprintf(stderr, "\n"); |
|
|
|
fprintf(stderr, "\n"); |
|
|
@ -181,12 +183,12 @@ static void test_add_sub(void) { |
|
|
|
|
|
|
|
|
|
|
|
static void test_overflow(void) { |
|
|
|
static void test_overflow(void) { |
|
|
|
/* overflow */ |
|
|
|
/* overflow */ |
|
|
|
gpr_timespec x = gpr_time_from_micros(1); |
|
|
|
gpr_timespec x = gpr_time_from_micros(1, GPR_TIMESPAN); |
|
|
|
do { |
|
|
|
do { |
|
|
|
x = gpr_time_add(x, x); |
|
|
|
x = gpr_time_add(x, x); |
|
|
|
} while (gpr_time_cmp(x, gpr_inf_future(GPR_TIMESPAN)) < 0); |
|
|
|
} while (gpr_time_cmp(x, gpr_inf_future(GPR_TIMESPAN)) < 0); |
|
|
|
GPR_ASSERT(gpr_time_cmp(x, gpr_inf_future(GPR_TIMESPAN)) == 0); |
|
|
|
GPR_ASSERT(gpr_time_cmp(x, gpr_inf_future(GPR_TIMESPAN)) == 0); |
|
|
|
x = gpr_time_from_micros(-1); |
|
|
|
x = gpr_time_from_micros(-1, GPR_TIMESPAN); |
|
|
|
do { |
|
|
|
do { |
|
|
|
x = gpr_time_add(x, x); |
|
|
|
x = gpr_time_add(x, x); |
|
|
|
} while (gpr_time_cmp(x, gpr_inf_past(GPR_TIMESPAN)) > 0); |
|
|
|
} while (gpr_time_cmp(x, gpr_inf_past(GPR_TIMESPAN)) > 0); |
|
|
@ -214,7 +216,7 @@ static void test_sticky_infinities(void) { |
|
|
|
GPR_ASSERT(gpr_time_cmp(x, infinity[i]) == 0); |
|
|
|
GPR_ASSERT(gpr_time_cmp(x, infinity[i]) == 0); |
|
|
|
} |
|
|
|
} |
|
|
|
for (k = -200; k <= 200; k++) { |
|
|
|
for (k = -200; k <= 200; k++) { |
|
|
|
gpr_timespec y = gpr_time_from_micros(k * 100000); |
|
|
|
gpr_timespec y = gpr_time_from_micros(k * 100000, GPR_TIMESPAN); |
|
|
|
gpr_timespec x = gpr_time_add(infinity[i], y); |
|
|
|
gpr_timespec x = gpr_time_add(infinity[i], y); |
|
|
|
GPR_ASSERT(gpr_time_cmp(x, infinity[i]) == 0); |
|
|
|
GPR_ASSERT(gpr_time_cmp(x, infinity[i]) == 0); |
|
|
|
x = gpr_time_sub(infinity[i], y); |
|
|
|
x = gpr_time_sub(infinity[i], y); |
|
|
@ -236,21 +238,21 @@ static void test_similar(void) { |
|
|
|
GPR_ASSERT(0 == gpr_time_similar(gpr_inf_future(GPR_TIMESPAN), |
|
|
|
GPR_ASSERT(0 == gpr_time_similar(gpr_inf_future(GPR_TIMESPAN), |
|
|
|
gpr_inf_past(GPR_TIMESPAN), |
|
|
|
gpr_inf_past(GPR_TIMESPAN), |
|
|
|
gpr_time_0(GPR_TIMESPAN))); |
|
|
|
gpr_time_0(GPR_TIMESPAN))); |
|
|
|
GPR_ASSERT(1 == gpr_time_similar(gpr_time_from_micros(10), |
|
|
|
GPR_ASSERT(1 == gpr_time_similar(gpr_time_from_micros(10, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10), |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN), |
|
|
|
gpr_time_0(GPR_TIMESPAN))); |
|
|
|
gpr_time_0(GPR_TIMESPAN))); |
|
|
|
GPR_ASSERT(1 == gpr_time_similar(gpr_time_from_micros(10), |
|
|
|
GPR_ASSERT(1 == gpr_time_similar(gpr_time_from_micros(10, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(15), |
|
|
|
gpr_time_from_micros(15, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10))); |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN))); |
|
|
|
GPR_ASSERT(1 == gpr_time_similar(gpr_time_from_micros(15), |
|
|
|
GPR_ASSERT(1 == gpr_time_similar(gpr_time_from_micros(15, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10), |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10))); |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN))); |
|
|
|
GPR_ASSERT(0 == gpr_time_similar(gpr_time_from_micros(10), |
|
|
|
GPR_ASSERT(0 == gpr_time_similar(gpr_time_from_micros(10, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(25), |
|
|
|
gpr_time_from_micros(25, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10))); |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN))); |
|
|
|
GPR_ASSERT(0 == gpr_time_similar(gpr_time_from_micros(25), |
|
|
|
GPR_ASSERT(0 == gpr_time_similar(gpr_time_from_micros(25, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10), |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN), |
|
|
|
gpr_time_from_micros(10))); |
|
|
|
gpr_time_from_micros(10, GPR_TIMESPAN))); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]) { |
|
|
|
int main(int argc, char *argv[]) { |
|
|
|