TEST_F(PropTest, shouldParseValidDuration) { uint64_t duration_ns = 0; EXPECT_EQ(aeron_parse_duration_ns("0", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)0); EXPECT_EQ(aeron_parse_duration_ns("1", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)1); EXPECT_EQ(aeron_parse_duration_ns("77777777", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)77777777); }
TEST_F(PropTest, shouldParseMaxQualifiedDuration) { uint64_t duration_ns = 0; EXPECT_EQ(aeron_parse_duration_ns("70000000000s", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)LLONG_MAX); }
TEST_F(PropTest, shouldNotParseInvalidDuration) { uint64_t duration_ns = 0; EXPECT_EQ(aeron_parse_duration_ns(nullptr, &duration_ns), -1); EXPECT_EQ(aeron_parse_duration_ns("", &duration_ns), -1); EXPECT_EQ(aeron_parse_duration_ns("rubbish", &duration_ns), -1); EXPECT_EQ(aeron_parse_duration_ns("-8", &duration_ns), -1); EXPECT_EQ(aeron_parse_duration_ns("123ps", &duration_ns), -1); EXPECT_EQ(aeron_parse_duration_ns("s", &duration_ns), -1); }
int aeron_uri_linger_timeout_param(aeron_uri_params_t *uri_params, aeron_uri_publication_params_t *params) { const char *value_str; if ((value_str = aeron_uri_find_param_value(uri_params, AERON_URI_LINGER_TIMEOUT_KEY)) != NULL) { uint64_t value; if (-1 == aeron_parse_duration_ns(value_str, &value)) { aeron_set_err(EINVAL, "could not parse %s in URI", AERON_URI_LINGER_TIMEOUT_KEY); return -1; } params->linger_timeout_ns = value; } return 0; }
TEST_F(PropTest, shouldParseValidQualifiedDuration) { uint64_t duration_ns = 0; EXPECT_EQ(aeron_parse_duration_ns("0ns", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)0); EXPECT_EQ(aeron_parse_duration_ns("1ns", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)1); EXPECT_EQ(aeron_parse_duration_ns("64ns", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)64); EXPECT_EQ(aeron_parse_duration_ns("0us", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)0); EXPECT_EQ(aeron_parse_duration_ns("1us", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)1000); EXPECT_EQ(aeron_parse_duration_ns("7us", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)7 * 1000); EXPECT_EQ(aeron_parse_duration_ns("7000us", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)7000 * 1000); EXPECT_EQ(aeron_parse_duration_ns("0ms", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)0); EXPECT_EQ(aeron_parse_duration_ns("1ms", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)1000 * 1000); EXPECT_EQ(aeron_parse_duration_ns("7ms", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)7000 * 1000); EXPECT_EQ(aeron_parse_duration_ns("7000ms", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)7000 * 1000 * 1000); EXPECT_EQ(aeron_parse_duration_ns("0s", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)0); EXPECT_EQ(aeron_parse_duration_ns("1s", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)1000 * 1000 * 1000); EXPECT_EQ(aeron_parse_duration_ns("7s", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)7000 * 1000 * 1000); EXPECT_EQ(aeron_parse_duration_ns("700s", &duration_ns), 0); EXPECT_EQ(duration_ns, (uint64_t)700 * 1000 * 1000 * 1000); }