Skip to content

Commit 364c696

Browse files
committed
Introduce StubDatadogTracer to avoid using Mock<>
1 parent a940a50 commit 364c696

File tree

8 files changed

+65
-20
lines changed

8 files changed

+65
-20
lines changed

tracer/test/Datadog.Trace.Tests/Agent/MessagePack/SpanMessagePackFormatterTests.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Datadog.Trace.Telemetry;
2020
using Datadog.Trace.TestHelpers;
2121
using Datadog.Trace.TestHelpers.TestTracer;
22+
using Datadog.Trace.Tests.Util;
2223
using Datadog.Trace.Util;
2324
using FluentAssertions;
2425
using Moq;
@@ -28,11 +29,13 @@ namespace Datadog.Trace.Tests.Agent.MessagePack;
2829

2930
public class SpanMessagePackFormatterTests
3031
{
32+
private readonly StubDatadogTracer _stubTracer = new();
33+
3134
[Fact]
3235
public void SerializeSpans()
3336
{
3437
var formatter = SpanFormatterResolver.Instance.GetFormatter<TraceChunkModel>();
35-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
38+
var traceContext = new TraceContext(_stubTracer);
3639
var parentContext = new SpanContext(new TraceId(0, 1), 2, (int)SamplingPriority.UserKeep, "ServiceName1", "origin1");
3740

3841
var spans = new[]
@@ -133,7 +136,7 @@ public void SpanLink_Tag_Serialization()
133136
var spans = new[]
134137
{
135138
new Span(parentContext, DateTimeOffset.UtcNow),
136-
new Span(new SpanContext(parentContext, new TraceContext(Mock.Of<IDatadogTracer>()), "ServiceName1"), DateTimeOffset.UtcNow),
139+
new Span(new SpanContext(parentContext, new TraceContext(_stubTracer), "ServiceName1"), DateTimeOffset.UtcNow),
137140
new Span(new SpanContext(new TraceId(0, 5), 6, (int)SamplingPriority.UserKeep, "ServiceName3", "origin3"), DateTimeOffset.UtcNow),
138141
};
139142
var attributesToAdd = new List<KeyValuePair<string, string>>

tracer/test/Datadog.Trace.Tests/Propagators/B3MultipleHeadersPropagatorTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Collections.Generic;
77
using Datadog.Trace.Headers;
88
using Datadog.Trace.Propagators;
9+
using Datadog.Trace.Tests.Util;
910
using FluentAssertions;
1011
using Moq;
1112
using Xunit;
@@ -49,7 +50,7 @@ public void Inject_IHeadersCollection()
4950
headers.VerifyNoOtherCalls();
5051

5152
// Extract default (no sampler) sampling from trace context
52-
var spanContext2 = new SpanContext(parent: null, new TraceContext(Mock.Of<IDatadogTracer>()), serviceName: null, traceId, spanId);
53+
var spanContext2 = new SpanContext(parent: null, new TraceContext(new StubDatadogTracer()), serviceName: null, traceId, spanId);
5354
var newHeaders = new Mock<IHeadersCollection>();
5455

5556
B3Propagator.Inject(new PropagationContext(spanContext2, TestBaggage), newHeaders.Object);
@@ -90,7 +91,7 @@ public void Inject_CarrierAndDelegate()
9091
headers.VerifyNoOtherCalls();
9192

9293
// Extract default (no sampler) sampling from trace context
93-
var spanContext2 = new SpanContext(parent: null, new TraceContext(Mock.Of<IDatadogTracer>()), serviceName: null, traceId, spanId);
94+
var spanContext2 = new SpanContext(parent: null, new TraceContext(new StubDatadogTracer()), serviceName: null, traceId, spanId);
9495
var newHeaders = new Mock<IHeadersCollection>();
9596

9697
B3Propagator.Inject(new PropagationContext(spanContext2, TestBaggage), newHeaders.Object, (carrier, name, value) => carrier.Set(name, value));

tracer/test/Datadog.Trace.Tests/Propagators/B3SingleHeaderPropagatorTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Collections.Generic;
77
using Datadog.Trace.Headers;
88
using Datadog.Trace.Propagators;
9+
using Datadog.Trace.Tests.Util;
910
using FluentAssertions;
1011
using Moq;
1112
using Xunit;
@@ -46,7 +47,7 @@ public void Inject_IHeadersCollection()
4647
headers.VerifyNoOtherCalls();
4748

4849
// Extract default (no sampler) sampling from trace context
49-
var spanContext2 = new SpanContext(parent: null, new TraceContext(Mock.Of<IDatadogTracer>()), serviceName: null, traceId, spanId);
50+
var spanContext2 = new SpanContext(parent: null, new TraceContext(new StubDatadogTracer()), serviceName: null, traceId, spanId);
5051
var newHeaders = new Mock<IHeadersCollection>();
5152
B3Propagator.Inject(new PropagationContext(spanContext2, TestBaggage), newHeaders.Object);
5253
newHeaders.Verify(h => h.Set("b3", "0123456789abcdef1122334455667788-000000003ade68b1-1"), Times.Once());
@@ -77,7 +78,7 @@ public void Inject_CarrierAndDelegate()
7778
headers.VerifyNoOtherCalls();
7879

7980
// Extract default (no sampler) sampling from trace context
80-
var spanContext2 = new SpanContext(parent: null, new TraceContext(Mock.Of<IDatadogTracer>()), serviceName: null, traceId, spanId);
81+
var spanContext2 = new SpanContext(parent: null, new TraceContext(new StubDatadogTracer()), serviceName: null, traceId, spanId);
8182
var newHeaders = new Mock<IHeadersCollection>();
8283
B3Propagator.Inject(new PropagationContext(spanContext2, TestBaggage), newHeaders.Object, (carrier, name, value) => carrier.Set(name, value));
8384
newHeaders.Verify(h => h.Set("b3", "000000000000000000000000075bcd15-000000003ade68b1-1"), Times.Once());

tracer/test/Datadog.Trace.Tests/Propagators/MultiSpanContextPropagatorTests.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Datadog.Trace.Headers;
1111
using Datadog.Trace.Propagators;
1212
using Datadog.Trace.Tagging;
13+
using Datadog.Trace.Tests.Util;
1314
using Datadog.Trace.Util;
1415
using FluentAssertions;
1516
using Moq;
@@ -163,7 +164,7 @@ static MultiSpanContextPropagatorTests()
163164
[Fact]
164165
public void Inject_All_IHeadersCollection()
165166
{
166-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
167+
var traceContext = new TraceContext(new StubDatadogTracer());
167168
traceContext.SetSamplingPriority(SamplingPriorityValues.UserKeep);
168169
traceContext.Origin = "rum";
169170
traceContext.Tags.SetTags(PropagatedTagsCollection);
@@ -202,7 +203,7 @@ public void Inject_All_IHeadersCollection()
202203
[Fact]
203204
public void Inject_All_IHeadersCollection_128Bit_TraceId()
204205
{
205-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
206+
var traceContext = new TraceContext(new StubDatadogTracer());
206207
traceContext.SetSamplingPriority(SamplingPriorityValues.UserKeep);
207208
traceContext.Origin = "rum";
208209
traceContext.Tags.SetTags(PropagatedTagsCollection);
@@ -246,7 +247,7 @@ public void Inject_All_IHeadersCollection_128Bit_TraceId()
246247
[Fact]
247248
public void Inject_All_CarrierAndDelegate()
248249
{
249-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
250+
var traceContext = new TraceContext(new StubDatadogTracer());
250251
traceContext.SetSamplingPriority(SamplingPriorityValues.UserKeep);
251252
traceContext.Origin = "rum";
252253
traceContext.Tags.SetTags(PropagatedTagsCollection);
@@ -288,7 +289,7 @@ public void Inject_All_CarrierAndDelegate()
288289
[Fact]
289290
public void Inject_All_CarrierAndDelegate_128Bit_TraceId()
290291
{
291-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
292+
var traceContext = new TraceContext(new StubDatadogTracer());
292293
traceContext.SetSamplingPriority(SamplingPriorityValues.UserKeep);
293294
traceContext.Origin = "rum";
294295
traceContext.Tags.SetTags(PropagatedTagsCollection);

tracer/test/Datadog.Trace.Tests/Propagators/W3CTraceContextPropagatorTests.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Datadog.Trace.Headers;
1111
using Datadog.Trace.Propagators;
1212
using Datadog.Trace.Tagging;
13+
using Datadog.Trace.Tests.Util;
1314
using FluentAssertions;
1415
using Moq;
1516
using Xunit;
@@ -177,7 +178,7 @@ public void CreateTraceStateHeader(int? samplingPriority, string origin, string
177178
{
178179
var propagatedTags = TagPropagation.ParseHeader(tags);
179180

180-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>(), propagatedTags)
181+
var traceContext = new TraceContext(new StubDatadogTracer(), propagatedTags)
181182
{
182183
Origin = origin,
183184
AdditionalW3CTraceState = additionalState
@@ -194,7 +195,7 @@ public void CreateTraceStateHeader(int? samplingPriority, string origin, string
194195
[Fact]
195196
public void CreateTraceStateHeader_WithPublicPropagatedTags()
196197
{
197-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
198+
var traceContext = new TraceContext(new StubDatadogTracer());
198199
var spanContext = new SpanContext(parent: SpanContext.None, traceContext, serviceName: null, traceId: (TraceId)1, spanId: 2);
199200
var span = new Span(spanContext, DateTimeOffset.Now);
200201

@@ -217,7 +218,7 @@ public void CreateTraceStateHeader_WithPublicPropagatedTags()
217218
[Fact]
218219
public void CreateTraceStateHeader_With128Bit_TraceId()
219220
{
220-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>());
221+
var traceContext = new TraceContext(new StubDatadogTracer());
221222
traceContext.SetSamplingPriority(SamplingPriorityValues.UserKeep);
222223

223224
var traceId = new TraceId(0x1234567890abcdef, 0x1122334455667788);
@@ -233,7 +234,7 @@ public void CreateTraceStateHeader_With128Bit_TraceId()
233234
[Fact]
234235
public void Inject_IHeadersCollection()
235236
{
236-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>(), tags: null)
237+
var traceContext = new TraceContext(new StubDatadogTracer(), tags: null)
237238
{
238239
Origin = "origin",
239240
AdditionalW3CTraceState = "key1=value1"
@@ -257,7 +258,7 @@ public void Inject_IHeadersCollection_128Bit_TraceId()
257258
var traceId = new TraceId(0x1234567890abcdef, 0x1122334455667788);
258259
var spanId = 1UL;
259260

260-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>(), tags: null)
261+
var traceContext = new TraceContext(new StubDatadogTracer(), tags: null)
261262
{
262263
Origin = "origin",
263264
AdditionalW3CTraceState = "key1=value1"
@@ -278,7 +279,7 @@ public void Inject_IHeadersCollection_128Bit_TraceId()
278279
[Fact]
279280
public void Inject_CarrierAndDelegate()
280281
{
281-
var traceContext = new TraceContext(Mock.Of<IDatadogTracer>(), tags: null)
282+
var traceContext = new TraceContext(new StubDatadogTracer(), tags: null)
282283
{
283284
Origin = "origin",
284285
AdditionalW3CTraceState = "key1=value1"

tracer/test/Datadog.Trace.Tests/SpanTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Datadog.Trace.Configuration;
1414
using Datadog.Trace.Configuration.Telemetry;
1515
using Datadog.Trace.Sampling;
16+
using Datadog.Trace.Tests.Util;
1617
using FluentAssertions;
1718
using Moq;
1819
using Xunit;
@@ -362,7 +363,7 @@ public void SpanIds_RootOfScopeSpanMixedHierarchy()
362363
public void GetTag_TraceId(ulong upper, ulong lower, string expected)
363364
{
364365
var traceId = new TraceId(upper, lower);
365-
var trace = new TraceContext(Mock.Of<IDatadogTracer>());
366+
var trace = new TraceContext(new StubDatadogTracer());
366367
var propagatedContext = new SpanContext(traceId, spanId: 1, samplingPriority: null, serviceName: null, origin: null);
367368
var childContext = new SpanContext(propagatedContext, trace, serviceName: null);
368369
var span = new Span(childContext, start: null);

tracer/test/Datadog.Trace.Tests/TraceContextTests.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Datadog.Trace.Configuration;
99
using Datadog.Trace.Sampling;
1010
using Datadog.Trace.TestHelpers;
11+
using Datadog.Trace.Tests.Util;
1112
using Datadog.Trace.Util;
1213
using FluentAssertions;
1314
using Moq;
@@ -17,12 +18,12 @@ namespace Datadog.Trace.Tests
1718
{
1819
public class TraceContextTests
1920
{
20-
private readonly Mock<IDatadogTracer> _tracerMock = new();
21+
private readonly StubDatadogTracer _tracerMock = new();
2122

2223
[Fact]
2324
public void UtcNow_GivesLegitTime()
2425
{
25-
var traceContext = new TraceContext(_tracerMock.Object);
26+
var traceContext = new TraceContext(_tracerMock);
2627

2728
var now = traceContext.Clock.UtcNow;
2829
var expectedNow = DateTimeOffset.UtcNow;
@@ -37,7 +38,7 @@ public void UtcNow_GivesLegitTime()
3738
[Fact]
3839
public void UtcNow_IsMonotonic()
3940
{
40-
var traceContext = new TraceContext(_tracerMock.Object);
41+
var traceContext = new TraceContext(_tracerMock);
4142

4243
var t1 = traceContext.Clock.UtcNow;
4344
DateTimeOffset t2;
@@ -62,6 +63,7 @@ public void FlushPartialTraces(bool partialFlush)
6263
{ ConfigurationKeys.PartialFlushEnabled, partialFlush },
6364
{ ConfigurationKeys.PartialFlushMinSpans, 5 },
6465
}));
66+
tracer.Setup(x => x.PerTraceSettings).Returns(_tracerMock.PerTraceSettings);
6567

6668
var traceContext = new TraceContext(tracer.Object);
6769

@@ -139,6 +141,7 @@ public void FullFlushShouldNotPropagateSamplingPriority()
139141
{ ConfigurationKeys.PartialFlushEnabled, true },
140142
{ ConfigurationKeys.PartialFlushMinSpans, partialFlushThreshold },
141143
}));
144+
tracer.Setup(x => x.PerTraceSettings).Returns(_tracerMock.PerTraceSettings);
142145

143146
ArraySegment<Span>? spans = null;
144147

@@ -193,6 +196,7 @@ public void PartialFlushShouldPropagateMetadata()
193196

194197
tracer.Setup(t => t.Write(It.IsAny<ArraySegment<Span>>()))
195198
.Callback<ArraySegment<Span>>((s) => spans = s);
199+
tracer.Setup(x => x.PerTraceSettings).Returns(_tracerMock.PerTraceSettings);
196200

197201
var traceContext = new TraceContext(tracer.Object);
198202
traceContext.SetSamplingPriority(SamplingPriorityValues.UserKeep);
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// <copyright file="StubDatadogTracer.cs" company="Datadog">
2+
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License.
3+
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
4+
// </copyright>
5+
6+
using System;
7+
using Datadog.Trace.Configuration;
8+
using Datadog.Trace.Configuration.Schema;
9+
10+
namespace Datadog.Trace.Tests.Util;
11+
12+
internal class StubDatadogTracer : IDatadogTracer
13+
{
14+
public StubDatadogTracer()
15+
{
16+
DefaultServiceName = "stub-service";
17+
Settings = new TracerSettings(NullConfigurationSource.Instance);
18+
var namingSchema = new NamingSchema(SchemaVersion.V0, false, false, DefaultServiceName, null, null);
19+
PerTraceSettings = new PerTraceSettings(null, null, namingSchema, MutableSettings.CreateWithoutDefaultSources(Settings));
20+
}
21+
22+
public string DefaultServiceName { get; }
23+
24+
public TracerSettings Settings { get; }
25+
26+
IGitMetadataTagsProvider IDatadogTracer.GitMetadataTagsProvider => new NullGitMetadataProvider();
27+
28+
public PerTraceSettings PerTraceSettings { get; }
29+
30+
void IDatadogTracer.Write(ArraySegment<Span> span)
31+
{
32+
}
33+
}

0 commit comments

Comments
 (0)