From 601f00f6fb13e8999ec92a948527fdde2eaf1276 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Sat, 25 Mar 2017 13:06:00 +1300 Subject: [PATCH] Add AtomicTimer tests --- src/gtest/test_metrics.cpp | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/gtest/test_metrics.cpp b/src/gtest/test_metrics.cpp index 8a5a1b5ce..c199b323e 100644 --- a/src/gtest/test_metrics.cpp +++ b/src/gtest/test_metrics.cpp @@ -4,6 +4,54 @@ #include "utiltime.h" +TEST(Metrics, AtomicTimer) { + AtomicTimer t; + SetMockTime(100); + + EXPECT_FALSE(t.running()); + + t.start(); + EXPECT_TRUE(t.running()); + + t.start(); + EXPECT_TRUE(t.running()); + + t.stop(); + EXPECT_TRUE(t.running()); + + t.stop(); + EXPECT_FALSE(t.running()); + + // Additional calls to stop() are ignored. + t.stop(); + EXPECT_FALSE(t.running()); + + t.start(); + EXPECT_TRUE(t.running()); + + AtomicCounter c; + EXPECT_EQ(0, t.rate(c)); + + c.increment(); + EXPECT_EQ(0, t.rate(c)); + + SetMockTime(101); + EXPECT_EQ(1, t.rate(c)); + + c.decrement(); + EXPECT_EQ(0, t.rate(c)); + + SetMockTime(102); + EXPECT_EQ(0, t.rate(c)); + + c.increment(); + EXPECT_EQ(0.5, t.rate(c)); + + t.stop(); + EXPECT_FALSE(t.running()); + EXPECT_EQ(0.5, t.rate(c)); +} + TEST(Metrics, GetLocalSolPS) { SetMockTime(100); miningTimer.start();