summaryrefslogtreecommitdiff
path: root/src/mongo/util/tracing_support_test.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2023-01-23 13:10:54 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-01-30 16:02:42 +0000
commit125a682d8701d26d91b98ddc62c97e02e7d5fc35 (patch)
treec90be78f07b5411d0f0a0a11ba6a1009810ac2a6 /src/mongo/util/tracing_support_test.cpp
parent59691479f4f9955b0cf8e42c43496d4c83a47955 (diff)
downloadmongo-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.cpp55
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());
}