nghttpx: Add test for util::duration_str, rename util::parse_duration_with_unit
This commit is contained in:
parent
e03f36eeeb
commit
0a0618baac
|
@ -135,8 +135,10 @@ int main(int argc, char *argv[]) {
|
||||||
!CU_add_test(pSuite, "util_parse_uint_with_unit",
|
!CU_add_test(pSuite, "util_parse_uint_with_unit",
|
||||||
shrpx::test_util_parse_uint_with_unit) ||
|
shrpx::test_util_parse_uint_with_unit) ||
|
||||||
!CU_add_test(pSuite, "util_parse_uint", shrpx::test_util_parse_uint) ||
|
!CU_add_test(pSuite, "util_parse_uint", shrpx::test_util_parse_uint) ||
|
||||||
!CU_add_test(pSuite, "util_parse_time_with_unit",
|
!CU_add_test(pSuite, "util_parse_duration_with_unit",
|
||||||
shrpx::test_util_parse_time_with_unit) ||
|
shrpx::test_util_parse_duration_with_unit) ||
|
||||||
|
!CU_add_test(pSuite, "util_duration_str",
|
||||||
|
shrpx::test_util_duration_str) ||
|
||||||
!CU_add_test(pSuite, "gzip_inflate", test_nghttp2_gzip_inflate) ||
|
!CU_add_test(pSuite, "gzip_inflate", test_nghttp2_gzip_inflate) ||
|
||||||
!CU_add_test(pSuite, "ringbuf_write", nghttp2::test_ringbuf_write) ||
|
!CU_add_test(pSuite, "ringbuf_write", nghttp2::test_ringbuf_write) ||
|
||||||
!CU_add_test(pSuite, "ringbuf_iovec", nghttp2::test_ringbuf_iovec) ||
|
!CU_add_test(pSuite, "ringbuf_iovec", nghttp2::test_ringbuf_iovec) ||
|
||||||
|
|
|
@ -502,7 +502,7 @@ std::vector<LogFragment> parse_log_format(const char *optarg) {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
int parse_duration(ev_tstamp *dest, const char *opt, const char *optarg) {
|
int parse_duration(ev_tstamp *dest, const char *opt, const char *optarg) {
|
||||||
auto t = util::parse_time_with_unit(optarg);
|
auto t = util::parse_duration_with_unit(optarg);
|
||||||
if (t == std::numeric_limits<double>::infinity()) {
|
if (t == std::numeric_limits<double>::infinity()) {
|
||||||
LOG(ERROR) << opt << ": bad value: '" << optarg << "'";
|
LOG(ERROR) << opt << ": bad value: '" << optarg << "'";
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -990,7 +990,7 @@ int64_t parse_uint(const uint8_t *s, size_t len) {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
double parse_time_with_unit(const char *s) {
|
double parse_duration_with_unit(const char *s) {
|
||||||
int64_t n;
|
int64_t n;
|
||||||
size_t i;
|
size_t i;
|
||||||
auto len = strlen(s);
|
auto len = strlen(s);
|
||||||
|
@ -1021,6 +1021,9 @@ fail:
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string duration_str(double t) {
|
std::string duration_str(double t) {
|
||||||
|
if (t == 0.) {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
auto frac = static_cast<int64_t>(t * 1000) % 1000;
|
auto frac = static_cast<int64_t>(t * 1000) % 1000;
|
||||||
if (frac > 0) {
|
if (frac > 0) {
|
||||||
return utos(static_cast<int64_t>(t * 1000)) + "ms";
|
return utos(static_cast<int64_t>(t * 1000)) + "ms";
|
||||||
|
|
|
@ -514,7 +514,7 @@ int64_t parse_uint(const std::string &s);
|
||||||
// is millisecond. If none of them are given, the unit is second.
|
// is millisecond. If none of them are given, the unit is second.
|
||||||
// This function returns std::numeric_limits<double>::infinity() if
|
// This function returns std::numeric_limits<double>::infinity() if
|
||||||
// error occurs.
|
// error occurs.
|
||||||
double parse_time_with_unit(const char *s);
|
double parse_duration_with_unit(const char *s);
|
||||||
|
|
||||||
// Returns string representation of time duration |t|. If t has
|
// Returns string representation of time duration |t|. If t has
|
||||||
// fractional part (at least more than or equal to 1e-3), |t| is
|
// fractional part (at least more than or equal to 1e-3), |t| is
|
||||||
|
|
|
@ -223,24 +223,31 @@ void test_util_parse_uint(void) {
|
||||||
CU_ASSERT(-1 == util::parse_uint(""));
|
CU_ASSERT(-1 == util::parse_uint(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_util_parse_time_with_unit(void) {
|
void test_util_parse_duration_with_unit(void) {
|
||||||
CU_ASSERT(0. == util::parse_time_with_unit("0"));
|
CU_ASSERT(0. == util::parse_duration_with_unit("0"));
|
||||||
CU_ASSERT(123. == util::parse_time_with_unit("123"));
|
CU_ASSERT(123. == util::parse_duration_with_unit("123"));
|
||||||
CU_ASSERT(123. == util::parse_time_with_unit("123s"));
|
CU_ASSERT(123. == util::parse_duration_with_unit("123s"));
|
||||||
CU_ASSERT(0.500 == util::parse_time_with_unit("500ms"));
|
CU_ASSERT(0.500 == util::parse_duration_with_unit("500ms"));
|
||||||
CU_ASSERT(123. == util::parse_time_with_unit("123S"));
|
CU_ASSERT(123. == util::parse_duration_with_unit("123S"));
|
||||||
CU_ASSERT(0.500 == util::parse_time_with_unit("500MS"));
|
CU_ASSERT(0.500 == util::parse_duration_with_unit("500MS"));
|
||||||
|
|
||||||
auto err = std::numeric_limits<double>::infinity();
|
auto err = std::numeric_limits<double>::infinity();
|
||||||
// check overflow case
|
// check overflow case
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("9223372036854775808"));
|
CU_ASSERT(err == util::parse_duration_with_unit("9223372036854775808"));
|
||||||
// bad characters
|
// bad characters
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("0u"));
|
CU_ASSERT(err == util::parse_duration_with_unit("0u"));
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("0xs"));
|
CU_ASSERT(err == util::parse_duration_with_unit("0xs"));
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("0mt"));
|
CU_ASSERT(err == util::parse_duration_with_unit("0mt"));
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("0mss"));
|
CU_ASSERT(err == util::parse_duration_with_unit("0mss"));
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("s"));
|
CU_ASSERT(err == util::parse_duration_with_unit("s"));
|
||||||
CU_ASSERT(err == util::parse_time_with_unit("ms"));
|
CU_ASSERT(err == util::parse_duration_with_unit("ms"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_util_duration_str(void) {
|
||||||
|
CU_ASSERT("0" == util::duration_str(0.));
|
||||||
|
CU_ASSERT("1s" == util::duration_str(1.));
|
||||||
|
CU_ASSERT("500ms" == util::duration_str(0.5));
|
||||||
|
CU_ASSERT("1500ms" == util::duration_str(1.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace shrpx
|
} // namespace shrpx
|
||||||
|
|
|
@ -40,7 +40,8 @@ void test_util_ipv6_numeric_addr(void);
|
||||||
void test_util_utos_with_unit(void);
|
void test_util_utos_with_unit(void);
|
||||||
void test_util_parse_uint_with_unit(void);
|
void test_util_parse_uint_with_unit(void);
|
||||||
void test_util_parse_uint(void);
|
void test_util_parse_uint(void);
|
||||||
void test_util_parse_time_with_unit(void);
|
void test_util_parse_duration_with_unit(void);
|
||||||
|
void test_util_duration_str(void);
|
||||||
|
|
||||||
} // namespace shrpx
|
} // namespace shrpx
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue