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);
}
Exemple #4
0
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);
}