diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2023-01-23 13:10:54 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-01-30 16:02:42 +0000 |
commit | 125a682d8701d26d91b98ddc62c97e02e7d5fc35 (patch) | |
tree | c90be78f07b5411d0f0a0a11ba6a1009810ac2a6 /src/mongo/util/tracing_support_test.cpp | |
parent | 59691479f4f9955b0cf8e42c43496d4c83a47955 (diff) | |
download | mongo-125a682d8701d26d91b98ddc62c97e02e7d5fc35.tar.gz |
SERVER-73147 Increase timing resolution of mongo::TraceProvider
Diffstat (limited to 'src/mongo/util/tracing_support_test.cpp')
-rw-r--r-- | src/mongo/util/tracing_support_test.cpp | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/src/mongo/util/tracing_support_test.cpp b/src/mongo/util/tracing_support_test.cpp index 5e889ba2c1a..bc89e616fe7 100644 --- a/src/mongo/util/tracing_support_test.cpp +++ b/src/mongo/util/tracing_support_test.cpp @@ -34,7 +34,8 @@ #include "mongo/logv2/log.h" #include "mongo/unittest/death_test.h" #include "mongo/unittest/unittest.h" -#include "mongo/util/clock_source_mock.h" +#include "mongo/util/duration.h" +#include "mongo/util/tick_source_mock.h" #include "mongo/util/tracing_support.h" #define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kTest @@ -47,26 +48,29 @@ namespace mongo { namespace { -std::unique_ptr<ClockSource> makeClockSource() { - return std::make_unique<ClockSourceMock>(); + +using TickSourceMockMicros = TickSourceMock<Microseconds>; + +std::unique_ptr<TickSource> makeTickSource() { + return std::make_unique<TickSourceMockMicros>(); } -void advanceTime(std::shared_ptr<Tracer>& tracer, Milliseconds duration) { - ClockSourceMock* clk = dynamic_cast<ClockSourceMock*>(tracer->getClockSource()); +void advanceTime(std::shared_ptr<Tracer>& tracer, Microseconds duration) { + TickSourceMockMicros* clk = dynamic_cast<TickSourceMockMicros*>(tracer->getTickSource()); clk->advance(duration); } // Uses the mocked clock source to initialize the trace provider. MONGO_INITIALIZER_GENERAL(InitializeTraceProviderForTest, (), ("InitializeTraceProvider")) (InitializerContext*) { - TracerProvider::initialize(makeClockSource()); // NOLINT + TracerProvider::initialize(makeTickSource()); // NOLINT } static constexpr auto kTracerName = "MyTracer"; } // namespace DEATH_TEST(TracingSupportTest, CannotInitializeTwice, "invariant") { - TracerProvider::initialize(makeClockSource()); // NOLINT + TracerProvider::initialize(makeTickSource()); // NOLINT } DEATH_TEST(TracingSupportTest, SpansMustCloseInOrder, "invariant") { @@ -90,7 +94,7 @@ TEST(TracingSupportTest, TraceIsEmptyWithActiveSpans) { TEST(TracingSupportTest, BasicUsage) { const auto kSpanDuration = Seconds(5); auto tracer = TracerProvider::get().getTracer(kTracerName); // NOLINT - const auto startTime = tracer->getClockSource()->now(); + const auto startTicks = tracer->getTickSource()->getTicks(); { auto rootSpan = tracer->startSpan("root"); @@ -114,22 +118,27 @@ TEST(TracingSupportTest, BasicUsage) { const auto trace = tracer->getLatestTrace(); ASSERT_TRUE(trace); + const auto kSpanDurationMicros = durationCount<Microseconds>(kSpanDuration); + const auto expected = BSON( - "tracer" - << kTracerName << "root" - << BSON("started" - << startTime << "spans" - << BSON("child" << BSON( - "started" - << startTime + kSpanDuration << "spans" - << BSON("grand child #1" - << BSON("started" << startTime + 2 * kSpanDuration << "stopped" - << startTime + 3 * kSpanDuration) - << "grand child #2" - << BSON("started" << startTime + 3 * kSpanDuration << "stopped" - << startTime + 4 * kSpanDuration)) - << "stopped" << startTime + 4 * kSpanDuration)) - << "stopped" << startTime + 4 * kSpanDuration)); + "tracer" << kTracerName << "root" + << BSON("startedMicros" + << startTicks << "spans" + << BSON("child" << BSON( + "startedMicros" + << startTicks + kSpanDurationMicros << "spans" + << BSON("grand child #1" + << BSON("startedMicros" + << startTicks + 2 * kSpanDurationMicros + << "stoppedMicros" + << startTicks + 3 * kSpanDurationMicros) + << "grand child #2" + << BSON("startedMicros" + << startTicks + 3 * kSpanDurationMicros + << "stoppedMicros" + << startTicks + 4 * kSpanDurationMicros)) + << "stoppedMicros" << startTicks + 4 * kSpanDurationMicros)) + << "stoppedMicros" << startTicks + 4 * kSpanDurationMicros)); ASSERT_BSONOBJ_EQ(expected, trace.value()); } |