Skip to content

Commit 849a701

Browse files
authored
Add tests to verify OTel setup in DocsSync (#2204)
1 parent fa46aa0 commit 849a701

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

Directory.Packages.props

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
<ItemGroup>
8080
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.7.0" />
8181
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.4.0" />
82+
<PackageVersion Include="OpenTelemetry" Version="1.13.1" />
8283
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.13.1" />
8384
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.13.1" />
8485
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.13.0" />
@@ -94,6 +95,7 @@
9495
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
9596
<PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" />
9697
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
98+
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.13.0" />
9799
<PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="22.0.16" />
98100
<PackageVersion Include="Unquote" Version="7.0.1" />
99101
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.0">
@@ -102,4 +104,4 @@
102104
</PackageVersion>
103105
<PackageVersion Include="xunit.v3" Version="2.0.2" />
104106
</ItemGroup>
105-
</Project>
107+
</Project>

tests-integration/Elastic.Assembler.IntegrationTests/DocsSyncTests.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information
44

5+
using System.Diagnostics;
56
using System.IO.Abstractions.TestingHelpers;
67
using Amazon.S3;
78
using Amazon.S3.Model;
@@ -11,9 +12,12 @@
1112
using Elastic.Documentation.Configuration;
1213
using Elastic.Documentation.Configuration.Assembler;
1314
using Elastic.Documentation.Diagnostics;
15+
using Elastic.Documentation.ServiceDefaults.Telemetry;
1416
using FakeItEasy;
1517
using FluentAssertions;
1618
using Microsoft.Extensions.Logging;
19+
using OpenTelemetry;
20+
using OpenTelemetry.Trace;
1721

1822
namespace Elastic.Assembler.IntegrationTests;
1923

@@ -268,12 +272,20 @@ public async Task TestApply()
268272
{
269273
transferredFiles = fileSystem.Directory.GetFiles(request.Directory, request.SearchPattern, request.SearchOption);
270274
});
275+
276+
// Configure OpenTelemetry to capture telemetry
277+
var exportedActivities = new List<Activity>();
278+
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
279+
.AddSource(TelemetryConstants.AssemblerSyncInstrumentationName)
280+
.AddInMemoryExporter(exportedActivities)
281+
.Build();
282+
271283
var applier = new AwsS3SyncApplyStrategy(new LoggerFactory(), moxS3Client, moxTransferUtility, "fake", context, collector);
272284

273285
// Act
274286
await applier.Apply(plan, Cancel.None);
275287

276-
// Assert
288+
// Assert - File operations
277289
transferredFiles.Length.Should().Be(4); // 3 add requests + 1 update request
278290
transferredFiles.Should().NotContain("docs/skip.md");
279291

@@ -282,5 +294,18 @@ public async Task TestApply()
282294

283295
A.CallTo(() => moxTransferUtility.UploadDirectoryAsync(A<TransferUtilityUploadDirectoryRequest>._, A<Cancel>._))
284296
.MustHaveHappenedOnceExactly();
297+
298+
// Assert - Telemetry spans are created
299+
exportedActivities.Should().Contain(a => a.DisplayName == "sync apply");
300+
exportedActivities.Should().Contain(a => a.DisplayName == "upload files");
301+
exportedActivities.Should().Contain(a => a.DisplayName == "delete files");
302+
303+
// Assert - Telemetry tags contain correct aggregate counts
304+
var syncActivity = exportedActivities.First(a => a.DisplayName == "sync apply");
305+
var tagObjects = syncActivity.TagObjects.ToList();
306+
tagObjects.Should().Contain(t => t.Key == "docs.sync.files.added" && Convert.ToInt64(t.Value, System.Globalization.CultureInfo.InvariantCulture) == 3);
307+
tagObjects.Should().Contain(t => t.Key == "docs.sync.files.updated" && Convert.ToInt64(t.Value, System.Globalization.CultureInfo.InvariantCulture) == 1);
308+
tagObjects.Should().Contain(t => t.Key == "docs.sync.files.deleted" && Convert.ToInt64(t.Value, System.Globalization.CultureInfo.InvariantCulture) == 1);
309+
tagObjects.Should().Contain(t => t.Key == "docs.sync.files.total" && Convert.ToInt64(t.Value, System.Globalization.CultureInfo.InvariantCulture) == 5);
285310
}
286311
}

tests-integration/Elastic.Assembler.IntegrationTests/Elastic.Assembler.IntegrationTests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@
1010
<ProjectReference Include="$(SolutionRoot)\src\Elastic.Documentation\Elastic.Documentation.csproj"/>
1111
<ProjectReference Include="$(SolutionRoot)\src\tooling\docs-builder\docs-builder.csproj"/>
1212
<ProjectReference Include="$(SolutionRoot)\aspire\aspire.csproj" />
13+
<ProjectReference Include="$(SolutionRoot)\src\Elastic.Documentation.ServiceDefaults\Elastic.Documentation.ServiceDefaults.csproj" />
1314
</ItemGroup>
1415
<ItemGroup>
1516
<PackageReference Include="FakeItEasy" />
1617
<PackageReference Include="AngleSharp" />
1718
<PackageReference Include="Aspire.Hosting.Testing"/>
1819
<PackageReference Include="InMemoryLogger"/>
20+
<PackageReference Include="OpenTelemetry" />
21+
<PackageReference Include="OpenTelemetry.Exporter.InMemory" />
1922
</ItemGroup>
2023

2124
</Project>

0 commit comments

Comments
 (0)