diff --git a/.github/workflows/dotnet-core-cov.yml b/.github/workflows/dotnet-core-cov.yml
index c54730a5cc..8411111da6 100644
--- a/.github/workflows/dotnet-core-cov.yml
+++ b/.github/workflows/dotnet-core-cov.yml
@@ -24,10 +24,20 @@ jobs:
steps:
- uses: actions/checkout@v2
-# - name: Setup .NET Core 3.1
-# uses: actions/setup-dotnet@v1
-# with:
-# dotnet-version: 3.1.x
+ - name: Setup .NET Core 2.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 2.1.807
+
+ - name: Setup .NET Core 3.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 3.1.301
+
+ - name: Setup .NET 5
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '5.0.100-rc.2.20479.15'
- name: Install dependencies
run: dotnet restore
diff --git a/.github/workflows/dotnet-core-linux.yml b/.github/workflows/dotnet-core-linux.yml
index 8750d27d56..ca9d4a2227 100644
--- a/.github/workflows/dotnet-core-linux.yml
+++ b/.github/workflows/dotnet-core-linux.yml
@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
- version: [netcoreapp2.1,netcoreapp3.1]
+ version: [netcoreapp2.1,netcoreapp3.1,net5.0]
steps:
- uses: actions/checkout@v2
@@ -27,10 +27,10 @@ jobs:
with:
dotnet-version: 3.1.301
- # For linux, we have to apply a workaround to enable both dotnet versions at same time
- - name: .net SxS
- run: |
- rsync -a ${DOTNET_ROOT/3.1.301/2.1.807}/* $DOTNET_ROOT/
+ - name: Setup .NET 5
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '5.0.100-rc.2.20479.15'
- name: Install dependencies
run: dotnet restore
diff --git a/.github/workflows/dotnet-core-win.yml b/.github/workflows/dotnet-core-win.yml
index c311abb7bc..ab60a49e30 100644
--- a/.github/workflows/dotnet-core-win.yml
+++ b/.github/workflows/dotnet-core-win.yml
@@ -12,15 +12,25 @@ jobs:
strategy:
matrix:
- version: [net452,net46,net461,netcoreapp2.1,netcoreapp3.1]
+ version: [net452,net46,net461,netcoreapp2.1,netcoreapp3.1,net5.0]
steps:
- uses: actions/checkout@v2
-
-# - name: Setup .NET Core
-# uses: actions/setup-dotnet@v1
-# with:
-# dotnet-version: 3.1.x
+
+ - name: Setup .NET Core 2.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 2.1.807
+
+ - name: Setup .NET Core 3.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 3.1.301
+
+ - name: Setup .NET 5
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '5.0.100-rc.2.20479.15'
- name: Install dependencies
run: dotnet restore
diff --git a/.github/workflows/dotnet-core.yml b/.github/workflows/dotnet-core.yml
index 3b8fb312ac..acad4bcf1f 100644
--- a/.github/workflows/dotnet-core.yml
+++ b/.github/workflows/dotnet-core.yml
@@ -22,6 +22,21 @@ jobs:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # fetching all
+
+ - name: Setup .NET Core 2.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 2.1.807
+
+ - name: Setup .NET Core 3.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 3.1.301
+
+ - name: Setup .NET 5
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '5.0.100-rc.2.20479.15'
- name: Install dependencies
run: dotnet restore
diff --git a/OpenTelemetry.sln b/OpenTelemetry.sln
index d5071488d2..5d3a256d69 100644
--- a/OpenTelemetry.sln
+++ b/OpenTelemetry.sln
@@ -203,7 +203,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.InMe
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "extending-the-sdk", "docs\logs\extending-the-sdk\extending-the-sdk.csproj", "{13C10C9A-07E8-43EB-91F5-C2B116FBE0FC}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenTelemetry.Shared", "src\OpenTelemetry.Shared\OpenTelemetry.Shared.csproj", "{1E504265-1E32-4C61-8CC5-8FA373E16699}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Shared", "src\OpenTelemetry.Shared\OpenTelemetry.Shared.csproj", "{1E504265-1E32-4C61-8CC5-8FA373E16699}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp.AspNetCore.5.0", "test\TestApp.AspNetCore.5.0\TestApp.AspNetCore.5.0.csproj", "{972396A8-E35B-499C-9BA1-765E9B8822E1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -403,6 +405,10 @@ Global
{1E504265-1E32-4C61-8CC5-8FA373E16699}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E504265-1E32-4C61-8CC5-8FA373E16699}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E504265-1E32-4C61-8CC5-8FA373E16699}.Release|Any CPU.Build.0 = Release|Any CPU
+ {972396A8-E35B-499C-9BA1-765E9B8822E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {972396A8-E35B-499C-9BA1-765E9B8822E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {972396A8-E35B-499C-9BA1-765E9B8822E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {972396A8-E35B-499C-9BA1-765E9B8822E1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -433,6 +439,7 @@ Global
{DB942F5A-D571-4DEA-B1A7-B6BE0E24E6ED} = {E359BB2B-9AEC-497D-B321-7DF2450C3B8E}
{B3F03725-23A0-4582-9526-F6A7E38F35CC} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{13C10C9A-07E8-43EB-91F5-C2B116FBE0FC} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
+ {972396A8-E35B-499C-9BA1-765E9B8822E1} = {77C7929A-2EED-4AA6-8705-B5C443C8AA0F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {55639B5C-0770-4A22-AB56-859604650521}
diff --git a/build/Common.nonprod.props b/build/Common.nonprod.props
index 4e13410b63..5ebb06e2ea 100644
--- a/build/Common.nonprod.props
+++ b/build/Common.nonprod.props
@@ -33,7 +33,7 @@
[5.0.0-rc.2.20475.5]
[5.0.0-rc.2.20475.5]
[5.0.0-rc.2.20475.5]
- [16.7.1,17.0)
+ [16.9.0-preview-20201020-06]
[4.14.5,5.0)
[6.1.0,7.0)
[2.1.58,3.0)
diff --git a/build/Common.props b/build/Common.props
index cf827e935f..6be31e03db 100644
--- a/build/Common.props
+++ b/build/Common.props
@@ -29,7 +29,7 @@
[2.1.1,5.0)
[1.0.7,2.0)
[3.3.1]
- [16.7.1]
+ [16.9.0-preview-20201020-06]
[2.1.0,5.0)
[2.1.0,6.0)
[2.1.0,6.0)
diff --git a/build/process-codecoverage.ps1 b/build/process-codecoverage.ps1
index 3d29cbc98e..5355ecf6e5 100644
--- a/build/process-codecoverage.ps1
+++ b/build/process-codecoverage.ps1
@@ -2,7 +2,7 @@
Write-Host $env:USERPROFILE
foreach ($file in $files)
{
- $command = $env:USERPROFILE+ '\.nuget\packages\microsoft.codecoverage\16.7.1\build\netstandard1.0\CodeCoverage\CodeCoverage.exe analyze /output:' + $file.DirectoryName + '\' + $file.Name + '.xml '+ $file.FullName
+ $command = $env:USERPROFILE+ '\.nuget\packages\microsoft.codecoverage\16.9.0-preview-20201020-06\build\netstandard1.0\CodeCoverage\CodeCoverage.exe analyze /output:' + $file.DirectoryName + '\' + $file.Name + '.xml '+ $file.FullName
Write-Host $command
Invoke-Expression $command
}
diff --git a/test/OpenTelemetry.Exporter.Jaeger.Tests/OpenTelemetry.Exporter.Jaeger.Tests.csproj b/test/OpenTelemetry.Exporter.Jaeger.Tests/OpenTelemetry.Exporter.Jaeger.Tests.csproj
index 4de022385a..13b4f6649f 100644
--- a/test/OpenTelemetry.Exporter.Jaeger.Tests/OpenTelemetry.Exporter.Jaeger.Tests.csproj
+++ b/test/OpenTelemetry.Exporter.Jaeger.Tests/OpenTelemetry.Exporter.Jaeger.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for Jaeger Exporter for OpenTelemetry
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net46
false
diff --git a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests.csproj b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests.csproj
index 6ad67abed2..b8219cfd7a 100644
--- a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests.csproj
+++ b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net452;net46
false
diff --git a/test/OpenTelemetry.Exporter.Prometheus.Tests/OpenTelemetry.Exporter.Prometheus.Tests.csproj b/test/OpenTelemetry.Exporter.Prometheus.Tests/OpenTelemetry.Exporter.Prometheus.Tests.csproj
index d2c702ac7f..ac5b836f8a 100644
--- a/test/OpenTelemetry.Exporter.Prometheus.Tests/OpenTelemetry.Exporter.Prometheus.Tests.csproj
+++ b/test/OpenTelemetry.Exporter.Prometheus.Tests/OpenTelemetry.Exporter.Prometheus.Tests.csproj
@@ -2,7 +2,7 @@
Unit test project for Prometheus Exporter for OpenTelemetry
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net452;net46
false
@@ -16,6 +16,10 @@
+
+
+
+
@@ -24,7 +28,7 @@
-
+
diff --git a/test/OpenTelemetry.Exporter.ZPages.Tests/OpenTelemetry.Exporter.ZPages.Tests.csproj b/test/OpenTelemetry.Exporter.ZPages.Tests/OpenTelemetry.Exporter.ZPages.Tests.csproj
index 7defb11de8..6c010b41d9 100644
--- a/test/OpenTelemetry.Exporter.ZPages.Tests/OpenTelemetry.Exporter.ZPages.Tests.csproj
+++ b/test/OpenTelemetry.Exporter.ZPages.Tests/OpenTelemetry.Exporter.ZPages.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net452;net46
false
diff --git a/test/OpenTelemetry.Exporter.Zipkin.Tests/OpenTelemetry.Exporter.Zipkin.Tests.csproj b/test/OpenTelemetry.Exporter.Zipkin.Tests/OpenTelemetry.Exporter.Zipkin.Tests.csproj
index 2c3794ef88..d5805c3166 100644
--- a/test/OpenTelemetry.Exporter.Zipkin.Tests/OpenTelemetry.Exporter.Zipkin.Tests.csproj
+++ b/test/OpenTelemetry.Exporter.Zipkin.Tests/OpenTelemetry.Exporter.Zipkin.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for Zipkin Exporter for OpenTelemetry
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net452;net461
false
diff --git a/test/OpenTelemetry.Extensions.Hosting.Tests/OpenTelemetry.Extensions.Hosting.Tests.csproj b/test/OpenTelemetry.Extensions.Hosting.Tests/OpenTelemetry.Extensions.Hosting.Tests.csproj
index 0b298ab50f..05a5e88016 100644
--- a/test/OpenTelemetry.Extensions.Hosting.Tests/OpenTelemetry.Extensions.Hosting.Tests.csproj
+++ b/test/OpenTelemetry.Extensions.Hosting.Tests/OpenTelemetry.Extensions.Hosting.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry .NET Core hosting library
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net461
diff --git a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs
index 77ffb9f227..35526ddadf 100644
--- a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs
+++ b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs
@@ -32,8 +32,10 @@
using OpenTelemetry.Trace;
#if NETCOREAPP2_1
using TestApp.AspNetCore._2._1;
-#else
+#elif NETCOREAPP3_1
using TestApp.AspNetCore._3._1;
+#else
+using TestApp.AspNetCore._5._0;
#endif
using Xunit;
diff --git a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/IncomingRequestsCollectionsIsAccordingToTheSpecTests.cs b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/IncomingRequestsCollectionsIsAccordingToTheSpecTests.cs
index 872bb2fdd3..a0ae521041 100644
--- a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/IncomingRequestsCollectionsIsAccordingToTheSpecTests.cs
+++ b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/IncomingRequestsCollectionsIsAccordingToTheSpecTests.cs
@@ -27,8 +27,10 @@
using OpenTelemetry.Trace;
#if NETCOREAPP2_1
using TestApp.AspNetCore._2._1;
-#else
+#elif NETCOREAPP3_1
using TestApp.AspNetCore._3._1;
+#else
+using TestApp.AspNetCore._5._0;
#endif
using Xunit;
diff --git a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/OpenTelemetry.Instrumentation.AspNetCore.Tests.csproj b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/OpenTelemetry.Instrumentation.AspNetCore.Tests.csproj
index 39146ab667..65719f441d 100644
--- a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/OpenTelemetry.Instrumentation.AspNetCore.Tests.csproj
+++ b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/OpenTelemetry.Instrumentation.AspNetCore.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry ASP.NET Core instrumentation
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
@@ -22,6 +22,11 @@
+
+
+
+
+
diff --git a/test/OpenTelemetry.Instrumentation.Grpc.Tests/GrpcTests.client.cs b/test/OpenTelemetry.Instrumentation.Grpc.Tests/GrpcTests.client.cs
index 343fca2dbd..dd6972a06c 100644
--- a/test/OpenTelemetry.Instrumentation.Grpc.Tests/GrpcTests.client.cs
+++ b/test/OpenTelemetry.Instrumentation.Grpc.Tests/GrpcTests.client.cs
@@ -127,7 +127,16 @@ public void GrpcAndHttpClientInstrumentationIsInvoked(bool shouldEnrich)
.AddProcessor(processor.Object)
.Build())
{
+#if NETCOREAPP3_1
using var channel = GrpcChannel.ForAddress(uri);
+#else
+ // With net5, based on the grpc changes, the quantity of default activities changed.
+ // TODO: This is a workaround. https://github.com/open-telemetry/opentelemetry-dotnet/issues/1490
+ using var channel = GrpcChannel.ForAddress(uri, new GrpcChannelOptions()
+ {
+ HttpClient = new HttpClient(),
+ });
+#endif
var client = new Greeter.GreeterClient(channel);
var rs = client.SayHello(new HelloRequest());
}
@@ -202,7 +211,7 @@ public void GrpcAndHttpClientInstrumentationWithSuppressInstrumentation(bool sho
Assert.Equal($"greet.Greeter/SayHello", grpcSpan4.DisplayName);
}
- [Fact]
+ [Fact(Skip = "Flacky test")]
public void GrpcPropagatesContextWithSuppressInstrumentation()
{
var uri = new Uri($"http://localhost:{this.server.Port}");
diff --git a/test/OpenTelemetry.Instrumentation.Grpc.Tests/OpenTelemetry.Instrumentation.Grpc.Tests.csproj b/test/OpenTelemetry.Instrumentation.Grpc.Tests/OpenTelemetry.Instrumentation.Grpc.Tests.csproj
index 16120ff75a..b60a899755 100644
--- a/test/OpenTelemetry.Instrumentation.Grpc.Tests/OpenTelemetry.Instrumentation.Grpc.Tests.csproj
+++ b/test/OpenTelemetry.Instrumentation.Grpc.Tests/OpenTelemetry.Instrumentation.Grpc.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry Grpc for .NET instrumentation
- netcoreapp3.1
+ netcoreapp3.1;net5.0
@@ -20,7 +20,7 @@
-
+
diff --git a/test/OpenTelemetry.Instrumentation.Http.Tests/OpenTelemetry.Instrumentation.Http.Tests.csproj b/test/OpenTelemetry.Instrumentation.Http.Tests/OpenTelemetry.Instrumentation.Http.Tests.csproj
index 393056de9f..08eb825123 100644
--- a/test/OpenTelemetry.Instrumentation.Http.Tests/OpenTelemetry.Instrumentation.Http.Tests.csproj
+++ b/test/OpenTelemetry.Instrumentation.Http.Tests/OpenTelemetry.Instrumentation.Http.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry HTTP instrumentations
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net452;net461
diff --git a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/OpenTelemetry.Instrumentation.SqlClient.Tests.csproj b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/OpenTelemetry.Instrumentation.SqlClient.Tests.csproj
index b3de08570c..a2b80e6591 100644
--- a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/OpenTelemetry.Instrumentation.SqlClient.Tests.csproj
+++ b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/OpenTelemetry.Instrumentation.SqlClient.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry SqlClient instrumentations
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net452;net461
$(TARGET_FRAMEWORK)
diff --git a/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests.csproj b/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests.csproj
index 4f5074bf0b..1c5ff3a01b 100644
--- a/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests.csproj
+++ b/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry StackExchangeRedis instrumentation
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net461
$(TARGET_FRAMEWORK)
diff --git a/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/InProcessServer.cs b/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/InProcessServer.cs
index 1dcb08e3b1..390ad86f56 100644
--- a/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/InProcessServer.cs
+++ b/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/InProcessServer.cs
@@ -22,8 +22,10 @@
using OpenTelemetry.Trace;
#if NETCOREAPP2_1
using TestApp.AspNetCore._2._1;
-#else
+#elif NETCOREAPP3_1
using TestApp.AspNetCore._3._1;
+#else
+using TestApp.AspNetCore._5._0;
#endif
using Xunit.Abstractions;
diff --git a/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/OpenTelemetry.Instrumentation.W3cTraceContext.Tests.csproj b/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/OpenTelemetry.Instrumentation.W3cTraceContext.Tests.csproj
index 2ab51b9fb4..fb3aff6037 100644
--- a/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/OpenTelemetry.Instrumentation.W3cTraceContext.Tests.csproj
+++ b/test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/OpenTelemetry.Instrumentation.W3cTraceContext.Tests.csproj
@@ -2,7 +2,7 @@
Unit test project for OpenTelemetry ASP.NET Core instrumentation for W3C Trace Context Trace
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TARGET_FRAMEWORK)
@@ -23,6 +23,10 @@
+
+
+
+
diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/OpenTelemetry.Shims.OpenTracing.Tests.csproj b/test/OpenTelemetry.Shims.OpenTracing.Tests/OpenTelemetry.Shims.OpenTracing.Tests.csproj
index cab76cece2..45c4ffc999 100644
--- a/test/OpenTelemetry.Shims.OpenTracing.Tests/OpenTelemetry.Shims.OpenTracing.Tests.csproj
+++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/OpenTelemetry.Shims.OpenTracing.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry.Shims.OpenTracing
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
diff --git a/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj b/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj
index 040b41854a..e68d830171 100644
--- a/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj
+++ b/test/OpenTelemetry.Tests/OpenTelemetry.Tests.csproj
@@ -1,7 +1,7 @@
Unit test project for OpenTelemetry
- netcoreapp2.1;netcoreapp3.1
+ netcoreapp2.1;netcoreapp3.1;net5.0
$(TargetFrameworks);net46;net452
diff --git a/test/TestApp.AspNetCore.5.0/AssemblyInfo.cs b/test/TestApp.AspNetCore.5.0/AssemblyInfo.cs
new file mode 100644
index 0000000000..5672c4ca52
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/AssemblyInfo.cs
@@ -0,0 +1,24 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: SuppressMessage(
+ "StyleCop.CSharp.NamingRules",
+ "SA1300",
+ Justification = "Reviewed.",
+ Scope = "namespaceanddescendants",
+ Target = "TestApp.AspNetCore._5._0")]
diff --git a/test/TestApp.AspNetCore.5.0/CallbackMiddleware.cs b/test/TestApp.AspNetCore.5.0/CallbackMiddleware.cs
new file mode 100644
index 0000000000..50636cb9ca
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/CallbackMiddleware.cs
@@ -0,0 +1,49 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace TestApp.AspNetCore._5._0
+{
+ public class CallbackMiddleware
+ {
+ private readonly CallbackMiddlewareImpl impl;
+ private readonly RequestDelegate next;
+
+ public CallbackMiddleware(RequestDelegate next, CallbackMiddlewareImpl impl)
+ {
+ this.next = next;
+ this.impl = impl;
+ }
+
+ public async Task InvokeAsync(HttpContext context)
+ {
+ if (this.impl == null || await this.impl.ProcessAsync(context))
+ {
+ await this.next(context);
+ }
+ }
+
+ public class CallbackMiddlewareImpl
+ {
+ public virtual async Task ProcessAsync(HttpContext context)
+ {
+ return await Task.FromResult(true);
+ }
+ }
+ }
+}
diff --git a/test/TestApp.AspNetCore.5.0/Controllers/ForwardController.cs b/test/TestApp.AspNetCore.5.0/Controllers/ForwardController.cs
new file mode 100644
index 0000000000..24e9233e19
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/Controllers/ForwardController.cs
@@ -0,0 +1,72 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace TestApp.AspNetCore._5._0.Controllers
+{
+ [Route("api/[controller]")]
+ public class ForwardController : Controller
+ {
+ private readonly HttpClient httpClient;
+
+ public ForwardController(HttpClient httpClient)
+ {
+ this.httpClient = httpClient;
+ }
+
+ // POST api/test
+ [HttpPost]
+ public async Task Post([FromBody] Data[] data)
+ {
+ var result = string.Empty;
+
+ if (data != null)
+ {
+ foreach (var argument in data)
+ {
+ var request = new HttpRequestMessage(HttpMethod.Post, argument.Url)
+ {
+ Content = new StringContent(
+ JsonConvert.SerializeObject(argument.Arguments),
+ Encoding.UTF8,
+ "application/json"),
+ };
+ await this.httpClient.SendAsync(request);
+ }
+ }
+ else
+ {
+ result = "done";
+ }
+
+ return result;
+ }
+
+ public class Data
+ {
+ [JsonProperty("url")]
+ public string Url { get; set; }
+
+ [JsonProperty("arguments")]
+ public Data[] Arguments { get; set; }
+ }
+ }
+}
diff --git a/test/TestApp.AspNetCore.5.0/Controllers/ValuesController.cs b/test/TestApp.AspNetCore.5.0/Controllers/ValuesController.cs
new file mode 100644
index 0000000000..15234c4665
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/Controllers/ValuesController.cs
@@ -0,0 +1,56 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+using System.Collections.Generic;
+using Microsoft.AspNetCore.Mvc;
+
+namespace TestApp.AspNetCore._5._0.Controllers
+{
+ [Route("api/[controller]")]
+ public class ValuesController : Controller
+ {
+ // GET api/values
+ [HttpGet]
+ public IEnumerable Get()
+ {
+ return new string[] { "value1", "value2" };
+ }
+
+ // GET api/values/5
+ [HttpGet("{id}")]
+ public string Get(int id)
+ {
+ return "value";
+ }
+
+ // POST api/values
+ [HttpPost]
+ public void Post([FromBody] string value)
+ {
+ }
+
+ // PUT api/values/5
+ [HttpPut("{id}")]
+ public void Put(int id, [FromBody] string value)
+ {
+ }
+
+ // DELETE api/values/5
+ [HttpDelete("{id}")]
+ public void Delete(int id)
+ {
+ }
+ }
+}
diff --git a/test/TestApp.AspNetCore.5.0/Program.cs b/test/TestApp.AspNetCore.5.0/Program.cs
new file mode 100644
index 0000000000..f9b9e7fde0
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/Program.cs
@@ -0,0 +1,33 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using Microsoft.AspNetCore;
+using Microsoft.AspNetCore.Hosting;
+
+namespace TestApp.AspNetCore._5._0
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ CreateWebHostBuilder(args).Build().Run();
+ }
+
+ public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
+ WebHost.CreateDefaultBuilder(args)
+ .UseStartup();
+ }
+}
diff --git a/test/TestApp.AspNetCore.5.0/Startup.cs b/test/TestApp.AspNetCore.5.0/Startup.cs
new file mode 100644
index 0000000000..f60f56c8c9
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/Startup.cs
@@ -0,0 +1,63 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System.Net.Http;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace TestApp.AspNetCore._5._0
+{
+ public class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ this.Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ // This method gets called by the runtime. Use this method to add services to the container.
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddMvc();
+ services.AddSingleton();
+ services.AddSingleton(
+ new CallbackMiddleware.CallbackMiddlewareImpl());
+ }
+
+ // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseMiddleware();
+ app.UseRouting();
+
+ app.UseAuthorization();
+
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapControllers();
+ });
+ }
+ }
+}
diff --git a/test/TestApp.AspNetCore.5.0/TestApp.AspNetCore.5.0.csproj b/test/TestApp.AspNetCore.5.0/TestApp.AspNetCore.5.0.csproj
new file mode 100644
index 0000000000..16915b1b64
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/TestApp.AspNetCore.5.0.csproj
@@ -0,0 +1,25 @@
+
+
+
+ net5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/TestApp.AspNetCore.5.0/appsettings.Development.json b/test/TestApp.AspNetCore.5.0/appsettings.Development.json
new file mode 100644
index 0000000000..fa8ce71a97
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/appsettings.Development.json
@@ -0,0 +1,10 @@
+{
+ "Logging": {
+ "IncludeScopes": false,
+ "LogLevel": {
+ "Default": "Debug",
+ "System": "Information",
+ "Microsoft": "Information"
+ }
+ }
+}
diff --git a/test/TestApp.AspNetCore.5.0/appsettings.json b/test/TestApp.AspNetCore.5.0/appsettings.json
new file mode 100644
index 0000000000..26bb0ac7ac
--- /dev/null
+++ b/test/TestApp.AspNetCore.5.0/appsettings.json
@@ -0,0 +1,15 @@
+{
+ "Logging": {
+ "IncludeScopes": false,
+ "Debug": {
+ "LogLevel": {
+ "Default": "Warning"
+ }
+ },
+ "Console": {
+ "LogLevel": {
+ "Default": "Warning"
+ }
+ }
+ }
+}