You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2019/10/17 22:09:21 UTC
[kudu] 02/02: [clock] clean up hybrid_clock-test
This is an automated email from the ASF dual-hosted git repository.
alexey pushed a commit to branch branch-1.11.x
in repository https://gitbox.apache.org/repos/asf/kudu.git
commit eaae22b086e70af600efd39781871c5812277442
Author: Alexey Serbin <al...@apache.org>
AuthorDate: Wed Oct 16 16:34:24 2019 -0700
[clock] clean up hybrid_clock-test
This patch contains a small clean up on the HybridClockTest:
* added ASSERT/CHECK for methods returning Status
* added scoped cleanup into TestClockDoesntGoBackwardsWithUpdates
Change-Id: I1c62cf51e11041b2369d29ff4f714876fd352cea
Reviewed-on: http://gerrit.cloudera.org:8080/14474
Reviewed-by: Adar Dembo <ad...@cloudera.com>
Tested-by: Kudu Jenkins
(cherry picked from commit 22f0ea360a5f8b820631248a60fd8c1c879d81e4)
Reviewed-on: http://gerrit.cloudera.org:8080/14490
Reviewed-by: Grant Henke <gr...@apache.org>
---
src/kudu/clock/hybrid_clock-test.cc | 45 +++++++++++++++++++------------------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/src/kudu/clock/hybrid_clock-test.cc b/src/kudu/clock/hybrid_clock-test.cc
index 837bc9a..a427b8e 100644
--- a/src/kudu/clock/hybrid_clock-test.cc
+++ b/src/kudu/clock/hybrid_clock-test.cc
@@ -37,6 +37,7 @@
#include "kudu/util/monotime.h"
#include "kudu/util/random.h"
#include "kudu/util/random_util.h"
+#include "kudu/util/scoped_cleanup.h"
#include "kudu/util/status.h"
#include "kudu/util/test_macros.h"
#include "kudu/util/test_util.h"
@@ -67,15 +68,15 @@ class HybridClockTest : public KuduTest {
scoped_refptr<HybridClock> clock_;
};
-clock::MockNtp* mock_ntp(const scoped_refptr<HybridClock>& clock) {
+clock::MockNtp* mock_ntp(HybridClock* clock) {
return down_cast<clock::MockNtp*>(clock->time_service());
}
TEST(MockHybridClockTest, TestMockedSystemClock) {
google::FlagSaver saver;
FLAGS_time_source = "mock";
- scoped_refptr<HybridClock> clock(new HybridClock());
- clock->Init();
+ scoped_refptr<HybridClock> clock(new HybridClock);
+ ASSERT_OK(clock->Init());
Timestamp timestamp;
uint64_t max_error_usec;
clock->NowWithError(×tamp, &max_error_usec);
@@ -87,8 +88,8 @@ TEST(MockHybridClockTest, TestMockedSystemClock) {
// Now set an arbitrary time and check that is the time returned by the clock.
uint64_t time = 1234 * 1000;
uint64_t error = 100 * 1000;
- mock_ntp(clock)->SetMockClockWallTimeForTests(time);
- mock_ntp(clock)->SetMockMaxClockErrorForTests(error);
+ mock_ntp(clock.get())->SetMockClockWallTimeForTests(time);
+ mock_ntp(clock.get())->SetMockMaxClockErrorForTests(error);
clock->NowWithError(×tamp, &max_error_usec);
ASSERT_EQ(timestamp.ToUint64(),
HybridClock::TimestampFromMicrosecondsAndLogicalValue(time, 0).ToUint64());
@@ -108,14 +109,14 @@ TEST(MockHybridClockTest, TestMockedSystemClock) {
TEST(MockHybridClockTest, TestClockDealsWithWrapping) {
google::FlagSaver saver;
FLAGS_time_source = "mock";
- scoped_refptr<HybridClock> clock(new HybridClock());
- clock->Init();
- mock_ntp(clock)->SetMockClockWallTimeForTests(1000);
+ scoped_refptr<HybridClock> clock(new HybridClock);
+ ASSERT_OK(clock->Init());
+ mock_ntp(clock.get())->SetMockClockWallTimeForTests(1000);
Timestamp prev = clock->Now();
// Update the clock from 10us in the future
- clock->Update(HybridClock::TimestampFromMicroseconds(1010));
+ ASSERT_OK(clock->Update(HybridClock::TimestampFromMicroseconds(1010)));
// Now read the clock value enough times so that the logical value wraps
// over, and should increment the _physical_ portion of the clock.
@@ -129,7 +130,7 @@ TEST(MockHybridClockTest, TestClockDealsWithWrapping) {
// Advance the time microsecond by microsecond, and ensure the clock never
// goes backwards.
for (int time = 1001; time < 1020; time++) {
- mock_ntp(clock)->SetMockClockWallTimeForTests(time);
+ mock_ntp(clock.get())->SetMockClockWallTimeForTests(time);
Timestamp now = clock->Now();
// Clock should run strictly forwards.
@@ -192,10 +193,7 @@ TEST_F(HybridClockTest, TestWaitUntilAfter_TestCase1) {
Timestamp past_ts_changed = HybridClock::AddPhysicalTimeToTimestamp(
past_ts,
MonoDelta::FromMicroseconds(-3 * static_cast<int64_t>(max_error)));
-
- Status s = clock_->WaitUntilAfter(past_ts_changed, no_deadline);
-
- ASSERT_OK(s);
+ ASSERT_OK(clock_->WaitUntilAfter(past_ts_changed, no_deadline));
MonoTime after = MonoTime::Now();
MonoDelta delta = after - before;
@@ -229,7 +227,7 @@ TEST_F(HybridClockTest, TestWaitUntilAfter_TestCase2) {
{
MonoTime deadline = before;
Status s = clock_->WaitUntilAfter(wait_until, deadline);
- ASSERT_TRUE(s.IsTimedOut());
+ ASSERT_TRUE(s.IsTimedOut()) << s.ToString();
}
// Wait with a deadline well in the future. This should succeed.
@@ -280,16 +278,23 @@ void StresserThread(HybridClock* clock, AtomicBool* stop) {
// Add a random bit of offset to the clock, and perform an update.
Timestamp new_ts = HybridClock::AddPhysicalTimeToTimestamp(
t, MonoDelta::FromMicroseconds(rng.Uniform(10000)));
- clock->Update(new_ts);
+ CHECK_OK(clock->Update(new_ts));
}
}
// Regression test for KUDU-953: if threads are updating and polling the
// clock concurrently, the clock should still never run backwards.
TEST_F(HybridClockTest, TestClockDoesntGoBackwardsWithUpdates) {
- vector<scoped_refptr<kudu::Thread> > threads;
-
+ vector<scoped_refptr<kudu::Thread>> threads;
AtomicBool stop(false);
+
+ SCOPED_CLEANUP({
+ stop.Store(true);
+ for (const auto& t : threads) {
+ t->Join();
+ }
+ });
+
for (int i = 0; i < 4; i++) {
scoped_refptr<Thread> thread;
ASSERT_OK(Thread::Create("test", "stresser",
@@ -299,10 +304,6 @@ TEST_F(HybridClockTest, TestClockDoesntGoBackwardsWithUpdates) {
}
SleepFor(MonoDelta::FromSeconds(1));
- stop.Store(true);
- for (const scoped_refptr<Thread> t : threads) {
- t->Join();
- }
}
TEST_F(HybridClockTest, TestGetPhysicalComponentDifference) {