Skip to content

Commit fa14c59

Browse files
committed
otel instrumentation for xunit test runs
1 parent b204f87 commit fa14c59

File tree

6 files changed

+20
-31
lines changed

6 files changed

+20
-31
lines changed

eng/Versions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
<!-- System.* packages -->
7676
<!-- If a System.* package is stuck on version 4.3.x, targets .NET Standard 1.x and hasn't been
7777
updated in years, you most likely DON'T need it, please exercise caution when adding it to the list. -->
78-
<SystemPackageVersionVersion>8.0.0</SystemPackageVersionVersion>
78+
<SystemPackageVersionVersion>9.0.0</SystemPackageVersionVersion>
7979
<SystemBuffersVersion>4.6.0</SystemBuffersVersion>
8080
<SystemCollectionsImmutableVersion>$(SystemPackageVersionVersion)</SystemCollectionsImmutableVersion>
8181
<SystemComponentModelCompositionVersion>$(SystemPackageVersionVersion)</SystemComponentModelCompositionVersion>

tests/FSharp.Compiler.ComponentTests/FSharpChecker/CommonWorkflows.fs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,6 @@ let ``Using getSource and notifications instead of filesystem`` () =
143143

144144
[<Fact>]
145145
let GetAllUsesOfAllSymbols() =
146-
let traceProvider =
147-
Sdk.CreateTracerProviderBuilder()
148-
.AddSource("fsc")
149-
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName="F#", serviceVersion = "1"))
150-
.AddJaegerExporter()
151-
.Build()
152-
153-
use _ = Activity.start "GetAllUsesOfAllSymbols" [ ]
154146

155147
let result =
156148
async {
@@ -162,9 +154,6 @@ let GetAllUsesOfAllSymbols() =
162154
return checkProjectResults.GetAllUsesOfAllSymbols()
163155
} |> Async.RunSynchronously
164156

165-
traceProvider.ForceFlush() |> ignore
166-
traceProvider.Dispose()
167-
168157
if result.Length <> 79 then failwith $"Expected 81 symbolUses, got {result.Length}:\n%A{result}"
169158

170159
[<Fact>]

tests/FSharp.Compiler.ComponentTests/FSharpChecker/TransparentCompiler.fs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -556,13 +556,6 @@ let fuzzingTest seed (project: SyntheticProject) = task {
556556
do! Task.Delay (rng.Next maxCheckingDelayMs)
557557
}
558558
559-
use _tracerProvider =
560-
Sdk.CreateTracerProviderBuilder()
561-
.AddSource("fsc")
562-
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName="F# Fuzzing", serviceVersion = "1"))
563-
.AddJaegerExporter()
564-
.Build()
565-
566559
use _ = Activity.start $"Fuzzing {project.Name}" [ Activity.Tags.project, project.Name; "seed", seed.ToString() ]
567560
568561
do! task {

tests/FSharp.Test.Utilities/FSharp.Test.Utilities.fsproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
109109
<PackageReference Include="Microsoft.CodeAnalysis.Test.Resources.Proprietary" Version="$(MicrosoftCodeAnalysisTestResourcesProprietaryVersion)" />
110110
<PackageReference Include="Microsoft.NETCore.App.Ref" Version="6.0.0" IncludeAssets="none" PrivateAssets="all" GeneratePathProperty="true" />
111-
<PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.4.0" />
111+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.10.0" />
112112
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
113113
</ItemGroup>
114114

tests/FSharp.Test.Utilities/ProjectGeneration.fs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,6 @@ type ProjectWorkflowBuilder
961961

962962
let mutable latestProject = initialProject
963963
let mutable activity = None
964-
let mutable tracerProvider = None
965964

966965
let getSource f = f |> getSourceText latestProject :> ISourceText |> Some |> async.Return
967966

@@ -1010,13 +1009,6 @@ type ProjectWorkflowBuilder
10101009

10111010
member this.Yield _ = async {
10121011
let! ctx = getInitialContext()
1013-
tracerProvider <-
1014-
Sdk.CreateTracerProviderBuilder()
1015-
.AddSource("fsc")
1016-
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName="F#", serviceVersion = "1"))
1017-
.AddJaegerExporter()
1018-
.Build()
1019-
|> Some
10201012
activity <- Activity.start ctx.Project.Name [ Activity.Tags.project, ctx.Project.Name; "UsingTransparentCompiler", useTransparentCompiler.ToString() ] |> Some
10211013
return ctx
10221014
}
@@ -1032,9 +1024,6 @@ type ProjectWorkflowBuilder
10321024
if initialContext.IsNone && not isExistingProject then
10331025
this.DeleteProjectDir()
10341026
activity |> Option.iter (fun x -> if not (isNull x) then x.Dispose())
1035-
tracerProvider |> Option.iter (fun x ->
1036-
x.ForceFlush() |> ignore
1037-
x.Dispose())
10381027

10391028
member this.Run(workflow: Async<WorkflowContext>) =
10401029
if autoStart then

tests/FSharp.Test.Utilities/XunitHelpers.fs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ open Xunit.Abstractions
1010

1111
open TestFramework
1212

13+
open FSharp.Compiler.Diagnostics
14+
15+
open OpenTelemetry
16+
open OpenTelemetry.Resources
17+
open OpenTelemetry.Trace
18+
open FSharp.Compiler.Diagnostics
19+
1320
/// Disables custom internal parallelization added with XUNIT_EXTRAS.
1421
/// Execute test cases in a class or a module one by one instead of all at once. Allow other collections to run simultaneously.
1522
[<AttributeUsage(AttributeTargets.Class ||| AttributeTargets.Method, AllowMultiple = false)>]
@@ -45,6 +52,7 @@ type ConsoleCapturingTestRunner(test, messageBus, testClass, constructorArgument
4552
override this.InvokeTestAsync (aggregator: ExceptionAggregator) =
4653
task {
4754
use capture = new TestConsole.ExecutionCapture()
55+
use _ = Activity.start test.DisplayName [ ]
4856
let! executionTime = this.BaseInvokeTestMethodAsync aggregator
4957
let output =
5058
seq {
@@ -139,9 +147,19 @@ type FSharpXunitFramework(sink: IMessageSink) =
139147
log "FSharpXunitFramework with XUNIT_EXTRAS installing TestConsole redirection"
140148
TestConsole.install()
141149

150+
let traceProvider =
151+
Sdk.CreateTracerProviderBuilder()
152+
.AddSource(ActivityNames.FscSourceName)
153+
.SetResourceBuilder(
154+
ResourceBuilder.CreateDefault().AddService(serviceName="F#", serviceVersion = "1.0.0"))
155+
.AddOtlpExporter()
156+
.Build()
157+
142158
interface IDisposable with
143159
member _.Dispose() =
144160
cleanUpTemporaryDirectoryOfThisTestRun ()
161+
traceProvider.ForceFlush() |> ignore
162+
traceProvider.Dispose()
145163
base.Dispose()
146164

147165
override this.CreateDiscoverer (assemblyInfo) =

0 commit comments

Comments
 (0)