From 06eae17d656fd281e05ca28d4e38696fc05d2dbf Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 16 Dec 2019 22:55:04 -0600 Subject: Revert "Revert "Balder/remove steadytimestamp 2"" --- vespalib/src/tests/time/time_test.cpp | 10 ++++++++++ vespalib/src/vespa/vespalib/testkit/test_comparators.cpp | 6 +++++- vespalib/src/vespa/vespalib/testkit/test_comparators.h | 2 +- vespalib/src/vespa/vespalib/util/time.cpp | 7 +++++++ vespalib/src/vespa/vespalib/util/time.h | 6 ++++++ 5 files changed, 29 insertions(+), 2 deletions(-) (limited to 'vespalib') diff --git a/vespalib/src/tests/time/time_test.cpp b/vespalib/src/tests/time/time_test.cpp index 667511f6a94..40542b6ca62 100644 --- a/vespalib/src/tests/time/time_test.cpp +++ b/vespalib/src/tests/time/time_test.cpp @@ -29,6 +29,16 @@ TEST(TimeTest, double_conversion_works_as_expected) { EXPECT_EQ(10ms, from_s(0.010)); } +TEST(TimeTest, timeval_conversion_works_as_expected) { + timeval tv1; + tv1.tv_sec = 7; + tv1.tv_usec = 342356; + EXPECT_EQ(from_timeval(tv1), 7342356us); + tv1.tv_sec = 7; + tv1.tv_usec = 1342356; + EXPECT_EQ(from_timeval(tv1), 8342356us); +} + TEST(TimeTest, unit_counting_works_as_expected) { auto d = 3ms + 5us + 7ns; EXPECT_EQ(count_ns(d), 3005007); diff --git a/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp b/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp index d00ad8d954c..b30b3aaa421 100644 --- a/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp +++ b/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp @@ -8,7 +8,11 @@ ostream & operator << (ostream & os, system_clock::time_point ts) { return os << ts.time_since_epoch() << "ns"; } +ostream & operator << (ostream & os, steady_clock::time_point ts) { + return os << ts.time_since_epoch() << "ns"; +} + } namespace vespalib { -} // namespace vespalib +} \ No newline at end of file diff --git a/vespalib/src/vespa/vespalib/testkit/test_comparators.h b/vespalib/src/vespa/vespalib/testkit/test_comparators.h index 161c125757b..164e486cf4a 100644 --- a/vespalib/src/vespa/vespalib/testkit/test_comparators.h +++ b/vespalib/src/vespa/vespalib/testkit/test_comparators.h @@ -14,7 +14,7 @@ ostream & operator << (ostream & os, duration ts) { } ostream & operator << (ostream & os, system_clock::time_point ts); - +ostream & operator << (ostream & os, steady_clock::time_point ts); } diff --git a/vespalib/src/vespa/vespalib/util/time.cpp b/vespalib/src/vespa/vespalib/util/time.cpp index d38e40a6d6a..fdd13849287 100644 --- a/vespalib/src/vespa/vespalib/util/time.cpp +++ b/vespalib/src/vespa/vespalib/util/time.cpp @@ -4,6 +4,13 @@ namespace vespalib { +system_time +to_utc(steady_time ts) { + system_clock::time_point nowUtc = system_clock::now(); + steady_time nowSteady = steady_clock::now(); + return system_time(nowUtc.time_since_epoch() - nowSteady.time_since_epoch() + ts.time_since_epoch()); +} + Timer::~Timer() = default; } diff --git a/vespalib/src/vespa/vespalib/util/time.h b/vespalib/src/vespa/vespalib/util/time.h index 2f8ae0ae016..3111239ffab 100644 --- a/vespalib/src/vespa/vespalib/util/time.h +++ b/vespalib/src/vespa/vespalib/util/time.h @@ -39,6 +39,8 @@ constexpr double to_s(duration d) { return std::chrono::duration_cast>(d).count(); } +system_time to_utc(steady_time ts); + constexpr duration from_s(double seconds) { return std::chrono::duration_cast(std::chrono::duration(seconds)); } @@ -55,6 +57,10 @@ constexpr int64_t count_ns(duration d) { return std::chrono::duration_cast(d).count(); } +constexpr duration from_timeval(const timeval & tv) { + return duration(tv.tv_sec*1000000000L + tv.tv_usec*1000L); +} + /** * Simple utility class used to measure how much time has elapsed * since it was constructed. -- cgit v1.2.3