From a1bb6cad29ecc534051849e0574742e30130b72b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 19 Sep 2017 18:05:09 +0000 Subject: [PATCH] Fix timeout encoding test --- src/core/lib/transport/timeout_encoding.c | 2 +- test/core/transport/timeout_encoding_test.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/core/lib/transport/timeout_encoding.c b/src/core/lib/transport/timeout_encoding.c index 779d016ca6b..23a9ef308f6 100644 --- a/src/core/lib/transport/timeout_encoding.c +++ b/src/core/lib/transport/timeout_encoding.c @@ -89,7 +89,7 @@ static int is_all_whitespace(const char *p, const char *end) { } int grpc_http2_decode_timeout(grpc_slice text, grpc_millis *timeout) { - int32_t x = 0; + grpc_millis x = 0; const uint8_t *p = GRPC_SLICE_START_PTR(text); const uint8_t *end = GRPC_SLICE_END_PTR(text); int have_digit = 0; diff --git a/test/core/transport/timeout_encoding_test.c b/test/core/transport/timeout_encoding_test.c index fcd263f1043..039bb333412 100644 --- a/test/core/transport/timeout_encoding_test.c +++ b/test/core/transport/timeout_encoding_test.c @@ -25,6 +25,7 @@ #include #include #include +#include "src/core/lib/support/murmur_hash.h" #include "src/core/lib/support/string.h" #include "test/core/util/test_config.h" @@ -64,10 +65,14 @@ void test_encoding(void) { static void assert_decodes_as(const char *buffer, grpc_millis expected) { grpc_millis got; - gpr_log(GPR_INFO, "check decoding '%s'", buffer); + uint32_t hash = gpr_murmur_hash3(buffer, strlen(buffer), 0); + gpr_log(GPR_INFO, "check decoding '%s' (hash=0x%x)", buffer, hash); GPR_ASSERT(1 == grpc_http2_decode_timeout( grpc_slice_from_static_string(buffer), &got)); - GPR_ASSERT(got == expected); + if (got != expected) { + gpr_log(GPR_ERROR, "got:'%"PRIdPTR"' != expected:'%"PRIdPTR"'", got, expected); + abort(); + } } void decode_suite(char ext, grpc_millis (*answer)(int64_t x)) { @@ -95,8 +100,8 @@ void decode_suite(char ext, grpc_millis (*answer)(int64_t x)) { } } -static grpc_millis millis_from_nanos(int64_t x) { return x / GPR_NS_PER_MS; } -static grpc_millis millis_from_micros(int64_t x) { return x / GPR_US_PER_MS; } +static grpc_millis millis_from_nanos(int64_t x) { return x / GPR_NS_PER_MS + (x % GPR_NS_PER_MS != 0); } +static grpc_millis millis_from_micros(int64_t x) { return x / GPR_US_PER_MS + (x % GPR_US_PER_MS != 0); } static grpc_millis millis_from_millis(int64_t x) { return x; } static grpc_millis millis_from_seconds(int64_t x) { return x * GPR_MS_PER_SEC; } static grpc_millis millis_from_minutes(int64_t x) {