From da344626faab742c4436a6e8e6ee62829dc435dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 19:40:26 +1100 Subject: [PATCH 01/23] Bump Microsoft.AspNetCore.Diagnostics from 2.1.1 to 2.2.0 (#1229) Bumps [Microsoft.AspNetCore.Diagnostics](https://github.com/aspnet/Diagnostics) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/aspnet/Diagnostics/releases) - [Commits](https://github.com/aspnet/Diagnostics/compare/2.1.1...2.2.0) --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Diagnostics dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj b/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj index b9d58a0ca2..b2e6a37310 100644 --- a/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj +++ b/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj @@ -16,7 +16,7 @@ - + From 3fc3846ef7e221c36d247d1bcb178c1df3164d3d Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 4 Nov 2021 20:21:03 +1100 Subject: [PATCH 02/23] remove some redundant code (#1299) --- .../Internal/Extensions/JsonExtensions.cs | 2 +- src/Sentry/Internal/Hub.cs | 1 - .../ScopeExtensionsTests.cs | 4 +-- .../SentryMiddlewareTests.cs | 2 -- .../SentrySqlListenerTests.cs | 26 +++++++++---------- .../ErrorProcessorTests.cs | 2 +- .../SentryCommandInterceptorTests.cs | 18 ++++++------- test/Sentry.NLog.Tests/SentryTargetTests.cs | 2 +- .../AspNetCoreIntegrationTests.cs | 5 ---- .../SentrySdkCollection.cs | 5 ---- .../Sentry.Tests/Protocol/Context/AppTests.cs | 2 +- .../Protocol/Context/BrowserTests.cs | 2 +- .../Sentry.Tests/Protocol/Context/GpuTests.cs | 2 +- .../Protocol/Context/OperatingSystemTests.cs | 2 +- test/Sentry.Tests/Protocol/RequestTests.cs | 2 +- .../Protocol/ScopeExtensionsTests.cs | 4 +-- test/Sentry.Tests/Protocol/UserTests.cs | 2 +- test/Sentry.Tests/ScopeTests.cs | 14 +++++----- test/Sentry.Tests/SpanTracerTests.cs | 2 +- 19 files changed, 43 insertions(+), 56 deletions(-) diff --git a/src/Sentry/Internal/Extensions/JsonExtensions.cs b/src/Sentry/Internal/Extensions/JsonExtensions.cs index c6eeb75ef9..cc860668c1 100644 --- a/src/Sentry/Internal/Extensions/JsonExtensions.cs +++ b/src/Sentry/Internal/Extensions/JsonExtensions.cs @@ -13,7 +13,7 @@ internal static class JsonExtensions /// The Json options with a preset of rules that will remove dangerous and problematic /// data from the serialized object. /// - public static JsonSerializerOptions? SerializerOption => _serializerOption ??= new JsonSerializerOptions() + public static JsonSerializerOptions? SerializerOption => _serializerOption ??= new JsonSerializerOptions { Converters = { new SentryJsonConverter() } }; diff --git a/src/Sentry/Internal/Hub.cs b/src/Sentry/Internal/Hub.cs index 0f08fd00da..5635c636d1 100644 --- a/src/Sentry/Internal/Hub.cs +++ b/src/Sentry/Internal/Hub.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; diff --git a/test/Sentry.AspNetCore.Tests/ScopeExtensionsTests.cs b/test/Sentry.AspNetCore.Tests/ScopeExtensionsTests.cs index 8e54589dea..70ce6fe75d 100644 --- a/test/Sentry.AspNetCore.Tests/ScopeExtensionsTests.cs +++ b/test/Sentry.AspNetCore.Tests/ScopeExtensionsTests.cs @@ -327,9 +327,9 @@ public void Populate_RouteData_SetToScope() // Arrange const string controller = "Ctrl"; const string action = "Actn"; - var routeFeature = new RoutingFeature() + var routeFeature = new RoutingFeature { - RouteData = new RouteData() { Values = { { "controller", controller }, { "action", action }, } } + RouteData = new RouteData { Values = { { "controller", controller }, { "action", action }, } } }; var features = new FeatureCollection(); features.Set(routeFeature); diff --git a/test/Sentry.AspNetCore.Tests/SentryMiddlewareTests.cs b/test/Sentry.AspNetCore.Tests/SentryMiddlewareTests.cs index 0d397710be..56a45e83d4 100644 --- a/test/Sentry.AspNetCore.Tests/SentryMiddlewareTests.cs +++ b/test/Sentry.AspNetCore.Tests/SentryMiddlewareTests.cs @@ -1,8 +1,6 @@ using System; using System.Diagnostics; using System.IO; -using System.Linq; -using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Diagnostics; #if NETCOREAPP2_1 || NET461 diff --git a/test/Sentry.DiagnosticSource.Tests/SentrySqlListenerTests.cs b/test/Sentry.DiagnosticSource.Tests/SentrySqlListenerTests.cs index 3b0060b7ea..b5c8f4bfd9 100644 --- a/test/Sentry.DiagnosticSource.Tests/SentrySqlListenerTests.cs +++ b/test/Sentry.DiagnosticSource.Tests/SentrySqlListenerTests.cs @@ -117,7 +117,7 @@ public Fixture() { Logger = new InMemoryDiagnosticLogger(); - Options = new SentryOptions() + Options = new SentryOptions { Debug = true, DiagnosticLogger = Logger, @@ -215,7 +215,7 @@ public void OnNext_HappyPathsWithoutTransaction_IsValid(string connectionOpenKey var commandSpan = _fixture.Spans.First(s => GetValidator(queryStartKey)(s)); // Validate if all spans were finished. - Assert.All(_fixture.Spans, (span) => + Assert.All(_fixture.Spans, span => { Assert.True(span.IsFinished); Assert.Equal(SpanStatus.Ok, span.Status); @@ -264,7 +264,7 @@ public void OnNext_HappyPathsWithTransaction_IsValid(string connectionOpenKey, s var commandSpan = _fixture.Spans.First(s => GetValidator(queryStartKey)(s)); // Validate if all spans were finished. - Assert.All(_fixture.Spans, (span) => + Assert.All(_fixture.Spans, span => { Assert.True(span.IsFinished); Assert.Equal(SpanStatus.Ok, span.Status); @@ -356,17 +356,17 @@ public async Task OnNext_ParallelExecution_IsValid(int testNumber) var interceptor = new SentrySqlListener(hub, _fixture.Options); int maxItems = 8; var query = "SELECT * FROM ..."; - var connectionsIds = Enumerable.Range(0, maxItems).Select((_) => Guid.NewGuid()).ToList(); - var connectionOperationsIds = Enumerable.Range(0, maxItems).Select((_) => Guid.NewGuid()).ToList(); - var connectionOperations2Ids = Enumerable.Range(0, maxItems).Select((_) => Guid.NewGuid()).ToList(); - var queryOperationsIds = Enumerable.Range(0, maxItems).Select((_) => Guid.NewGuid()).ToList(); - var queryOperations2Ids = Enumerable.Range(0, maxItems).Select((_) => Guid.NewGuid()).ToList(); + var connectionsIds = Enumerable.Range(0, maxItems).Select(_ => Guid.NewGuid()).ToList(); + var connectionOperationsIds = Enumerable.Range(0, maxItems).Select(_ => Guid.NewGuid()).ToList(); + var connectionOperations2Ids = Enumerable.Range(0, maxItems).Select(_ => Guid.NewGuid()).ToList(); + var queryOperationsIds = Enumerable.Range(0, maxItems).Select(_ => Guid.NewGuid()).ToList(); + var queryOperations2Ids = Enumerable.Range(0, maxItems).Select(_ => Guid.NewGuid()).ToList(); var evt = new ManualResetEvent(false); var ready = new ManualResetEvent(false); int counter = 0; // Act - var taskList = Enumerable.Range(1, maxItems).Select((_) => Task.Run(() => + var taskList = Enumerable.Range(1, maxItems).Select(_ => Task.Run(() => { var threadId = Interlocked.Increment(ref counter) - 1; @@ -407,16 +407,16 @@ void SimulateDbRequest(List connnectionOperationIds, List queryOpera querySpans.Should().HaveCount(2 * maxItems); // Open Spans should not have any Connection key. - Assert.All(openSpans, (span) => Assert.False(span.Extra.ContainsKey(SentrySqlListener.ConnectionExtraKey))); - Assert.All(closedSpans, (span) => Assert.Equal(SpanStatus.Ok, span.Status)); + Assert.All(openSpans, span => Assert.False(span.Extra.ContainsKey(SentrySqlListener.ConnectionExtraKey))); + Assert.All(closedSpans, span => Assert.Equal(SpanStatus.Ok, span.Status)); // Assert that all connectionIds will belong to a single connection Span and ParentId set to Trace. - Assert.All(connectionsIds, (connectionId) => + Assert.All(connectionsIds, connectionId => { var connectionSpan = Assert.Single(closedConnectionSpans.Where(span => (Guid)span.Extra[SentrySqlListener.ConnectionExtraKey] == connectionId)); Assert.Equal(_fixture.Tracer.SpanId, connectionSpan.ParentSpanId); }); // Assert all Query spans have the correct ParentId Set and not the Transaction Id. - Assert.All(querySpans, (querySpan) => + Assert.All(querySpans, querySpan => { Assert.True(querySpan.IsFinished); var connectionId = (Guid)querySpan.Extra[SentrySqlListener.ConnectionExtraKey]; diff --git a/test/Sentry.EntityFramework.Tests/ErrorProcessorTests.cs b/test/Sentry.EntityFramework.Tests/ErrorProcessorTests.cs index 078f4e9ed8..d8d9e1c06a 100644 --- a/test/Sentry.EntityFramework.Tests/ErrorProcessorTests.cs +++ b/test/Sentry.EntityFramework.Tests/ErrorProcessorTests.cs @@ -32,7 +32,7 @@ public Fixture() { DbConnection = Effort.DbConnectionFactory.CreateTransient(); DbContext = new TestDbContext(DbConnection, true); - SentryClient = new SentryClient(new SentryOptions() + SentryClient = new SentryClient(new SentryOptions { BeforeSend = _beforeSend, Dsn = DsnSamples.ValidDsnWithoutSecret, diff --git a/test/Sentry.EntityFramework.Tests/SentryCommandInterceptorTests.cs b/test/Sentry.EntityFramework.Tests/SentryCommandInterceptorTests.cs index df0f4ff361..6f1f239cfd 100644 --- a/test/Sentry.EntityFramework.Tests/SentryCommandInterceptorTests.cs +++ b/test/Sentry.EntityFramework.Tests/SentryCommandInterceptorTests.cs @@ -42,7 +42,7 @@ public void NonQueryExecuting_SentryCommandInterceptor_CapturesQuery() var interceptor = SentryDatabaseLogging.UseBreadcrumbs(_fixture.QueryLogger, initOnce: false); - var command = new EffortCommand() + var command = new EffortCommand { CommandText = expected.Query }; @@ -61,12 +61,12 @@ public void NonQueryExecuting_WithException_CapturesQuery() var interceptor = SentryDatabaseLogging.UseBreadcrumbs(_fixture.QueryLogger, initOnce: false); - var command = new EffortCommand() + var command = new EffortCommand { CommandText = expected.Query }; - interceptor.NonQueryExecuting(command, new DbCommandInterceptionContext() { Exception = new Exception() }); + interceptor.NonQueryExecuting(command, new DbCommandInterceptionContext { Exception = new Exception() }); _fixture.QueryLogger.Received(1).Log(expected.Query, BreadcrumbLevel.Error); } @@ -80,7 +80,7 @@ public void ReaderExecuting_SentryCommandInterceptor_CapturesQuery() var interceptor = SentryDatabaseLogging.UseBreadcrumbs(_fixture.QueryLogger, initOnce: false); - var command = new EffortCommand() + var command = new EffortCommand { CommandText = expected.Query }; @@ -99,12 +99,12 @@ public void ReaderExecuting_WithException_CapturesQuery() var interceptor = SentryDatabaseLogging.UseBreadcrumbs(_fixture.QueryLogger, initOnce: false); - var command = new EffortCommand() + var command = new EffortCommand { CommandText = expected.Query }; - interceptor.ReaderExecuting(command, new DbCommandInterceptionContext() { Exception = new Exception() }); + interceptor.ReaderExecuting(command, new DbCommandInterceptionContext { Exception = new Exception() }); _fixture.QueryLogger.Received(1).Log(expected.Query, BreadcrumbLevel.Error); } @@ -118,7 +118,7 @@ public void ScalarExecuting_SentryCommandInterceptor_CapturesQuery() var interceptor = SentryDatabaseLogging.UseBreadcrumbs(_fixture.QueryLogger, initOnce: false); - var command = new EffortCommand() + var command = new EffortCommand { CommandText = expected.Query }; @@ -137,12 +137,12 @@ public void ScalarExecuting_WithException_CapturesQuery() var interceptor = SentryDatabaseLogging.UseBreadcrumbs(_fixture.QueryLogger, initOnce: false); - var command = new EffortCommand() + var command = new EffortCommand { CommandText = expected.Query }; - interceptor.ScalarExecuting(command, new DbCommandInterceptionContext() { Exception = new Exception() }); + interceptor.ScalarExecuting(command, new DbCommandInterceptionContext { Exception = new Exception() }); _fixture.QueryLogger.Received(1).Log(expected.Query, BreadcrumbLevel.Error); } diff --git a/test/Sentry.NLog.Tests/SentryTargetTests.cs b/test/Sentry.NLog.Tests/SentryTargetTests.cs index 7524de79fd..dc2311f7cb 100644 --- a/test/Sentry.NLog.Tests/SentryTargetTests.cs +++ b/test/Sentry.NLog.Tests/SentryTargetTests.cs @@ -263,7 +263,7 @@ public void Log_LoggerLevel_Set(LogLevel nlogLevel, SentryLevel? sentryLevel) var logger = _fixture.GetLogger(); - var evt = new LogEventInfo() + var evt = new LogEventInfo { Message = DefaultMessage, Level = nlogLevel diff --git a/test/Sentry.Serilog.Tests/AspNetCoreIntegrationTests.cs b/test/Sentry.Serilog.Tests/AspNetCoreIntegrationTests.cs index 59ef7dc4d5..dc11079788 100644 --- a/test/Sentry.Serilog.Tests/AspNetCoreIntegrationTests.cs +++ b/test/Sentry.Serilog.Tests/AspNetCoreIntegrationTests.cs @@ -1,10 +1,5 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Sentry.Protocol; using Sentry.Testing; using Xunit; diff --git a/test/Sentry.Serilog.Tests/SentrySdkCollection.cs b/test/Sentry.Serilog.Tests/SentrySdkCollection.cs index 2b6c456b7f..b1c7fa1fa2 100644 --- a/test/Sentry.Serilog.Tests/SentrySdkCollection.cs +++ b/test/Sentry.Serilog.Tests/SentrySdkCollection.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Xunit; namespace Sentry.Serilog.Tests diff --git a/test/Sentry.Tests/Protocol/Context/AppTests.cs b/test/Sentry.Tests/Protocol/Context/AppTests.cs index bfb01b3efe..fdf85e0dea 100644 --- a/test/Sentry.Tests/Protocol/Context/AppTests.cs +++ b/test/Sentry.Tests/Protocol/Context/AppTests.cs @@ -32,7 +32,7 @@ public void SerializeObject_AllPropertiesSetToNonDefault_SerializesValidObject() [Fact] public void Clone_CopyValues() { - var sut = new App() + var sut = new App { Build = "build", BuildType = "build type", diff --git a/test/Sentry.Tests/Protocol/Context/BrowserTests.cs b/test/Sentry.Tests/Protocol/Context/BrowserTests.cs index e24b4fd207..5eaa36e803 100644 --- a/test/Sentry.Tests/Protocol/Context/BrowserTests.cs +++ b/test/Sentry.Tests/Protocol/Context/BrowserTests.cs @@ -27,7 +27,7 @@ public void SerializeObject_AllPropertiesSetToNonDefault_SerializesValidObject() [Fact] public void Clone_CopyValues() { - var sut = new Browser() + var sut = new Browser { Name = "name", Version = "version" diff --git a/test/Sentry.Tests/Protocol/Context/GpuTests.cs b/test/Sentry.Tests/Protocol/Context/GpuTests.cs index 95e8d910d2..84f405f989 100644 --- a/test/Sentry.Tests/Protocol/Context/GpuTests.cs +++ b/test/Sentry.Tests/Protocol/Context/GpuTests.cs @@ -54,7 +54,7 @@ public void SerializeObject_AllPropertiesSetToNonDefault_SerializesValidObject() [Fact] public void Clone_CopyValues() { - var sut = new Gpu() + var sut = new Gpu { Name = "Sentry.Test.Gpu", Id = 123, diff --git a/test/Sentry.Tests/Protocol/Context/OperatingSystemTests.cs b/test/Sentry.Tests/Protocol/Context/OperatingSystemTests.cs index 7693d46654..107b6c84eb 100644 --- a/test/Sentry.Tests/Protocol/Context/OperatingSystemTests.cs +++ b/test/Sentry.Tests/Protocol/Context/OperatingSystemTests.cs @@ -36,7 +36,7 @@ public void SerializeObject_AllPropertiesSetToNonDefault_SerializesValidObject() [Fact] public void Clone_CopyValues() { - var sut = new OperatingSystem() + var sut = new OperatingSystem { Name = "name", KernelVersion = "KernelVersion", diff --git a/test/Sentry.Tests/Protocol/RequestTests.cs b/test/Sentry.Tests/Protocol/RequestTests.cs index fa636628d5..d1442ae95c 100644 --- a/test/Sentry.Tests/Protocol/RequestTests.cs +++ b/test/Sentry.Tests/Protocol/RequestTests.cs @@ -8,7 +8,7 @@ public class RequestTests [Fact] public void Clone_CopyValues() { - var sut = new Request() + var sut = new Request { Url = "https://sentry.io", Method = "OPTIONS", diff --git a/test/Sentry.Tests/Protocol/ScopeExtensionsTests.cs b/test/Sentry.Tests/Protocol/ScopeExtensionsTests.cs index 9f5841844a..029e27276e 100644 --- a/test/Sentry.Tests/Protocol/ScopeExtensionsTests.cs +++ b/test/Sentry.Tests/Protocol/ScopeExtensionsTests.cs @@ -426,7 +426,7 @@ public void AddBreadcrumb_Dictionary_AllArgumentsMatch() const string expectedMessage = "original Message"; const string expectedCategory = "original Category"; const string expectedType = "original Type"; - var expectedData = new Dictionary() { { "key", "val" } }; + var expectedData = new Dictionary { { "key", "val" } }; const BreadcrumbLevel expectedLevel = BreadcrumbLevel.Critical; var sut = _fixture.GetSut(); @@ -453,7 +453,7 @@ public void AddBreadcrumb_ImmutableDictionary_AllArgumentsMatch() const string expectedMessage = "original Message"; const string expectedCategory = "original Category"; const string expectedType = "original Type"; - var expectedData = new Dictionary() { { "key", "val" } }; + var expectedData = new Dictionary { { "key", "val" } }; const BreadcrumbLevel expectedLevel = BreadcrumbLevel.Critical; var sut = _fixture.GetSut(); diff --git a/test/Sentry.Tests/Protocol/UserTests.cs b/test/Sentry.Tests/Protocol/UserTests.cs index 8d630da1da..eaaeec8076 100644 --- a/test/Sentry.Tests/Protocol/UserTests.cs +++ b/test/Sentry.Tests/Protocol/UserTests.cs @@ -34,7 +34,7 @@ public void SerializeObject_AllPropertiesSetToNonDefault_SerializesValidObject() [Fact] public void Clone_CopyValues() { - var sut = new User() + var sut = new User { Id = "id", Email = "emal@sentry.io", diff --git a/test/Sentry.Tests/ScopeTests.cs b/test/Sentry.Tests/ScopeTests.cs index 82b3a93d06..fdf602b97b 100644 --- a/test/Sentry.Tests/ScopeTests.cs +++ b/test/Sentry.Tests/ScopeTests.cs @@ -266,7 +266,7 @@ public void ClearAttachments_HasAttachments_EmptyList() public void AddBreadcrumb__AddBreadcrumb_RespectLimits(int initialCount, int maxBreadcrumbs, int expectedCount) { // Arrange - var scope = new Scope(new SentryOptions() { MaxBreadcrumbs = maxBreadcrumbs }); + var scope = new Scope(new SentryOptions { MaxBreadcrumbs = maxBreadcrumbs }); for (int i = 0; i < initialCount; i++) { @@ -291,7 +291,7 @@ public void SetUser_ObserverExist_ObserverUserInvokedIfEnabled(string email, str { // Arrange var observer = NSubstitute.Substitute.For(); - var scope = new Scope(new SentryOptions() + var scope = new Scope(new SentryOptions { ScopeObserver = observer, EnableScopeSync = observerEnable @@ -326,7 +326,7 @@ public void SetUser_ObserverExist_ObserverUserInvokedIfEnabled(string email, str public void UserChanged_ObserverNull_Ignored(bool observerEnable) { // Arrange - var scope = new Scope(new SentryOptions() { EnableScopeSync = observerEnable }); + var scope = new Scope(new SentryOptions { EnableScopeSync = observerEnable }); Exception exception = null; // Act @@ -350,7 +350,7 @@ public void SetTag_ObserverExist_ObserverSetsTagIfEnabled(bool observerEnable) { // Arrange var observer = Substitute.For(); - var scope = new Scope(new SentryOptions() + var scope = new Scope(new SentryOptions { ScopeObserver = observer, EnableScopeSync = observerEnable @@ -373,7 +373,7 @@ public void UnsetTag_ObserverExist_ObserverUnsetsTagIfEnabled(bool observerEnabl { // Arrange var observer = Substitute.For(); - var scope = new Scope(new SentryOptions() + var scope = new Scope(new SentryOptions { ScopeObserver = observer, EnableScopeSync = observerEnable @@ -395,7 +395,7 @@ public void SetExtra_ObserverExist_ObserverSetsExtraIfEnabled(bool observerEnabl { // Arrange var observer = Substitute.For(); - var scope = new Scope(new SentryOptions() + var scope = new Scope(new SentryOptions { ScopeObserver = observer, EnableScopeSync = observerEnable @@ -418,7 +418,7 @@ public void AddBreadcrumb_ObserverExist_ObserverAddsBreadcrumbIfEnabled(bool obs { // Arrange var observer = Substitute.For(); - var scope = new Scope(new SentryOptions() + var scope = new Scope(new SentryOptions { ScopeObserver = observer, EnableScopeSync = observerEnable diff --git a/test/Sentry.Tests/SpanTracerTests.cs b/test/Sentry.Tests/SpanTracerTests.cs index 5ab7bb8603..dd0cc9a143 100644 --- a/test/Sentry.Tests/SpanTracerTests.cs +++ b/test/Sentry.Tests/SpanTracerTests.cs @@ -22,7 +22,7 @@ public async Task SetExtra_DataInserted_NoDataLoss() var ready = new ManualResetEvent(false); int counter = 0; // Act - var tasks = Enumerable.Range(1, 4).Select((_) => Task.Run(() => + var tasks = Enumerable.Range(1, 4).Select(_ => Task.Run(() => { var threadId = Interlocked.Increment(ref counter); From 28f60ed65facadfa39a085488ffe278d0f2db860 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 4 Nov 2021 20:55:38 +1100 Subject: [PATCH 03/23] update to ef5.0.11 (#1301) --- .../Sentry.DiagnosticSource.Tests.csproj | 6 +++--- .../Sentry.Extensions.Logging.EfCore.Tests.csproj | 6 +++--- test/Sentry.Tests/Sentry.Tests.csproj | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj b/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj index 5c2fd2ac7c..88b4fd7274 100644 --- a/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj +++ b/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj b/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj index ba3c56a4fa..f50b2eafa7 100644 --- a/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj +++ b/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj @@ -11,9 +11,9 @@ - - - + + + diff --git a/test/Sentry.Tests/Sentry.Tests.csproj b/test/Sentry.Tests/Sentry.Tests.csproj index 087190ffae..dbe3b5b565 100644 --- a/test/Sentry.Tests/Sentry.Tests.csproj +++ b/test/Sentry.Tests/Sentry.Tests.csproj @@ -45,9 +45,9 @@ Internals/DiagnosticSource/Integration/%(RecursiveDir)/%(Filename)%(Extension) - - - + + + From 60647c9d97465cd7abc63975c50f595fb3f27f82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 10:04:10 +0000 Subject: [PATCH 04/23] Bump AWSSDK.Extensions.NETCore.Setup from 3.3.100.1 to 3.7.1 (#1260) Bumps [AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net) from 3.3.100.1 to 3.7.1. - [Release notes](https://github.com/aws/aws-sdk-net/releases) - [Changelog](https://github.com/aws/aws-sdk-net/blob/master/SDK.CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-net/commits/3.7.1.0) --- updated-dependencies: - dependency-name: AWSSDK.Extensions.NETCore.Setup dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj b/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj index 7940e19d91..0da8719735 100644 --- a/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj +++ b/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj @@ -5,7 +5,7 @@ Lambda - + From 2f714bdc481e60e1facdf5e6904a132e12434282 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 10:25:38 +0000 Subject: [PATCH 05/23] Bump Amazon.Lambda.AspNetCoreServer from 5.1.1 to 6.0.3 (#1127) Bumps Amazon.Lambda.AspNetCoreServer from 5.1.1 to 6.0.3. --- updated-dependencies: - dependency-name: Amazon.Lambda.AspNetCoreServer dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- .../Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj b/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj index 0da8719735..c61512e707 100644 --- a/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj +++ b/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj @@ -5,8 +5,8 @@ Lambda + - From 4445af1f4574552bed201ef8b24e3dc85f3d6520 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 10:33:43 +0000 Subject: [PATCH 06/23] Bump Grpc.Tools from 2.33.1 to 2.41.1 (#1292) Bumps [Grpc.Tools](https://github.com/grpc/grpc) from 2.33.1 to 2.41.1. - [Release notes](https://github.com/grpc/grpc/releases) - [Changelog](https://github.com/grpc/grpc/blob/master/doc/grpc_release_schedule.md) - [Commits](https://github.com/grpc/grpc/commits) --- updated-dependencies: - dependency-name: Grpc.Tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- .../Sentry.Samples.AspNetCore.Grpc.csproj | 2 +- .../Sentry.AspNetCore.Grpc.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj b/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj index 72264b23c8..37c6c79962 100644 --- a/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj +++ b/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj @@ -7,7 +7,7 @@ - + diff --git a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj index d5f5102ff4..7e3cf0c58c 100644 --- a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj +++ b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj @@ -7,7 +7,7 @@ - + From 1189fa240b7688fa0e476825f5d88c8d2e26ab5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 10:58:24 +0000 Subject: [PATCH 07/23] Bump Microsoft.AspNetCore.Components.WebAssembly from 5.0.0 to 5.0.11 (#1262) * Bump Microsoft.AspNetCore.Components.WebAssembly from 5.0.0 to 5.0.11 Bumps [Microsoft.AspNetCore.Components.WebAssembly](https://github.com/dotnet/aspnetcore) from 5.0.0 to 5.0.11. - [Release notes](https://github.com/dotnet/aspnetcore/releases) - [Commits](https://github.com/dotnet/aspnetcore/compare/v5.0.0...v5.0.11) --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Components.WebAssembly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update Sentry.Samples.AspNetCore.Blazor.Wasm.csproj Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- .../Sentry.Samples.AspNetCore.Blazor.Wasm.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj b/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj index 97ae5f5f4c..e8057ba849 100644 --- a/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj +++ b/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj @@ -5,8 +5,8 @@ - - + + From 1246aff38a78a52135c466c70f4aa38f022a41af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 11:19:04 +0000 Subject: [PATCH 08/23] Bump Grpc.Net.Client from 2.37.0 to 2.40.0 (#1240) Bumps [Grpc.Net.Client](https://github.com/grpc/grpc-dotnet) from 2.37.0 to 2.40.0. - [Release notes](https://github.com/grpc/grpc-dotnet/releases) - [Changelog](https://github.com/grpc/grpc-dotnet/blob/master/doc/release_process.md) - [Commits](https://github.com/grpc/grpc-dotnet/compare/v2.37.0...v2.40.0) --- updated-dependencies: - dependency-name: Grpc.Net.Client dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- .../Sentry.AspNetCore.Grpc.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj index 7e3cf0c58c..c56250067d 100644 --- a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj +++ b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj @@ -6,7 +6,7 @@ - + From d7d3333094aaaa05a5d9bf6c77c82a81893d95b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Nov 2021 09:53:51 +1100 Subject: [PATCH 09/23] Bump FluentAssertions from 6.1.0 to 6.2.0 (#1302) Bumps [FluentAssertions](https://github.com/fluentassertions/fluentassertions) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/fluentassertions/fluentassertions/releases) - [Changelog](https://github.com/fluentassertions/fluentassertions/blob/master/AcceptApiChanges.ps1) - [Commits](https://github.com/fluentassertions/fluentassertions/compare/6.1.0...6.2.0) --- updated-dependencies: - dependency-name: FluentAssertions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- test/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index d4aa3b9bdc..9a83da5b86 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -22,7 +22,7 @@ - + From 96fa2ef0a20602dff4787b64f31f61ebaca8c014 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 23:24:11 +0000 Subject: [PATCH 10/23] Bump Grpc.AspNetCore.Server.Reflection from 2.34.0 to 2.40.0 (#1254) Bumps [Grpc.AspNetCore.Server.Reflection](https://github.com/grpc/grpc-dotnet) from 2.34.0 to 2.40.0. - [Release notes](https://github.com/grpc/grpc-dotnet/releases) - [Changelog](https://github.com/grpc/grpc-dotnet/blob/master/doc/release_process.md) - [Commits](https://github.com/grpc/grpc-dotnet/compare/v2.34.0...v2.40.0) --- updated-dependencies: - dependency-name: Grpc.AspNetCore.Server.Reflection dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../Sentry.Samples.AspNetCore.Grpc.csproj | 4 ++-- src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj | 4 ++-- .../Sentry.AspNetCore.Grpc.Tests.csproj | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj b/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj index 37c6c79962..61ad6f1b1c 100644 --- a/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj +++ b/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj @@ -5,8 +5,8 @@ - - + + diff --git a/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj b/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj index fb7449a048..7ab089ef24 100644 --- a/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj +++ b/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj index c56250067d..958e38768c 100644 --- a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj +++ b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj @@ -5,7 +5,7 @@ - + From 41a9ab9e867d5e1fd3aacd7f366ec40c8f9dadd2 Mon Sep 17 00:00:00 2001 From: kanadaj Date: Fri, 5 Nov 2021 00:03:45 +0000 Subject: [PATCH 11/23] Feat/tunnel ip forwarding (#1310) * Add the request IP header as X-Forwarded-For in SentryTunnelMiddleware.cs * Don't set the header at all if we only have a null value * Add changelog * Update CHANGELOG.md Co-authored-by: Bruno Garcia --- CHANGELOG.md | 6 ++++++ src/Sentry.Tunnel/SentryTunnelMiddleware.cs | 22 +++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41ceeff316..304d39c1b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes + +- Forward the IP of the client with whe tunnel middleware ([#1310](getsentry/sentry-dotnet/pull/1310)) + ## 3.11.0 ### Features diff --git a/src/Sentry.Tunnel/SentryTunnelMiddleware.cs b/src/Sentry.Tunnel/SentryTunnelMiddleware.cs index 6e362da8ad..97a2a572db 100644 --- a/src/Sentry.Tunnel/SentryTunnelMiddleware.cs +++ b/src/Sentry.Tunnel/SentryTunnelMiddleware.cs @@ -19,8 +19,7 @@ namespace Sentry.Tunnel public class SentryTunnelMiddleware : IMiddleware { private readonly string[] _allowedHosts; - private string? _version; - private string Version => _version ??= (GetType().Assembly.GetCustomAttribute()?.InformationalVersion ?? string.Empty); + private Lazy Version => new(() => (GetType().Assembly.GetCustomAttribute()?.InformationalVersion ?? string.Empty)); /// /// Middleware that can forward Sentry envelopes. @@ -46,7 +45,7 @@ public async Task InvokeAsync(HttpContext context, RequestDelegate next) var httpClientFactory = context.RequestServices.GetRequiredService(); var client = httpClientFactory.CreateClient("SentryTunnel"); - client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sentry.NET_Tunnel", Version)); + client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sentry.NET_Tunnel", Version.Value)); var ms = new MemoryStream(); await context.Request.Body.CopyToAsync(ms).ConfigureAwait(false); ms.Position = 0; @@ -71,10 +70,21 @@ public async Task InvokeAsync(HttpContext context, RequestDelegate next) { var projectId = dsn.AbsolutePath.Trim('/'); ms.Position = 0; - var responseMessage = await client.PostAsync($"https://{dsn.Host}/api/{projectId}/envelope/", - new StreamContent(ms)).ConfigureAwait(false); + var request = new HttpRequestMessage() + { + RequestUri = new Uri($"https://{dsn.Host}/api/{projectId}/envelope/"), + Method = HttpMethod.Post, + Content = new StreamContent(ms), + }; + var clientIp = context.Connection?.RemoteIpAddress?.ToString(); + if (clientIp != null) + { + request.Headers.Add("X-Forwarded-For", context.Connection?.RemoteIpAddress?.ToString()); + } + var responseMessage = await client.SendAsync(request).ConfigureAwait(false); + // We send the response back to the client, whatever it was context.Response.Headers["content-type"] = "application/json"; - context.Response.StatusCode = StatusCodes.Status200OK; + context.Response.StatusCode = (int)responseMessage.StatusCode; await responseMessage.Content.CopyToAsync(context.Response.Body).ConfigureAwait(false); } } From faafd7e96e34c10bc86727621baf9ee9af199e12 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 5 Nov 2021 00:50:25 +0000 Subject: [PATCH 12/23] release: 3.11.1 --- CHANGELOG.md | 2 +- Directory.Build.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 304d39c1b7..954afb3beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 3.11.1 ### Fixes diff --git a/Directory.Build.props b/Directory.Build.props index 43acffebe2..54146c28c9 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - 3.11.0 + 3.11.1 9 true $(MSBuildThisFileDirectory).assets/Sentry.snk From 16d9c147072edd6973d0d822d7c93d613178f664 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 7 Nov 2021 22:51:15 +1100 Subject: [PATCH 13/23] Bump Serilog.Extensions.Logging from 3.0.1 to 3.1.0 (#1307) Bumps [Serilog.Extensions.Logging](https://github.com/serilog/serilog-extensions-logging) from 3.0.1 to 3.1.0. - [Release notes](https://github.com/serilog/serilog-extensions-logging/releases) - [Commits](https://github.com/serilog/serilog-extensions-logging/compare/v3.0.1...v3.1.0) --- updated-dependencies: - dependency-name: Serilog.Extensions.Logging dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj b/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj index ea59303f71..d5edf2bacf 100644 --- a/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj +++ b/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj @@ -5,7 +5,7 @@ - + From 24ac251c18aa15b8243f1d6c6c7a8211e3909a0f Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Sun, 7 Nov 2021 17:27:12 -0500 Subject: [PATCH 14/23] .NET 6 support (#939) Co-authored-by: LucasZF Co-authored-by: Simon Cropp Co-authored-by: Sentry Github Bot --- .github/workflows/build.yml | 26 +- .github/workflows/codeql-analysis.yml | 23 +- CHANGELOG.md | 6 + Directory.Build.props | 2 +- .../Sentry.Samples.AspNetCore.Mvc.csproj | 9 +- .../Sentry.Samples.AspNetCore.Mvc/Startup.cs | 11 +- .../Sentry.AspNetCore.Grpc.csproj | 2 +- .../Sentry.AspNetCore.csproj | 4 +- .../Sentry.Extensions.Logging.csproj | 7 +- .../Sentry.Google.Cloud.Functions.csproj | 2 +- src/Sentry.NLog/Sentry.NLog.csproj | 2 +- src/Sentry.Serilog/Sentry.Serilog.csproj | 6 +- src/Sentry.Tunnel/Sentry.Tunnel.csproj | 2 +- src/Sentry/Extensibility/ITransport.cs | 5 + .../AppDomainUnhandledExceptionIntegration.cs | 5 +- .../TaskUnobservedTaskExceptionIntegration.cs | 5 +- src/Sentry/Internal/AppDomainAdapter.cs | 10 +- src/Sentry/Internal/Http/CachingTransport.cs | 2 +- src/Sentry/Internal/Polyfills.cs | 2 +- src/Sentry/Internal/SdkComposer.cs | 23 +- src/Sentry/Internal/SynchronizedRandom.cs | 42 +- src/Sentry/Sentry.csproj | 2 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 51 + .../Sentry.AspNetCore.Grpc.Tests.csproj | 2 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 63 + .../Sentry.AspNetCore.Tests.csproj | 2 +- ...tryHttpMessageHandlerBuilderFilterTests.cs | 2 +- ...piApprovalTests.Run.DotNet3_0.verified.txt | 9 + ...piApprovalTests.Run.DotNet6_0.verified.txt | 1301 +++++++++++++++++ .../SQLite/SentryDiagnosticListenerTests.cs | 8 +- .../Sentry.DiagnosticSource.Tests.csproj | 40 +- ...try.Extensions.Logging.EfCore.Tests.csproj | 8 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 52 + .../Sentry.Extensions.Logging.Tests.csproj | 6 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 11 + ...Sentry.Google.Cloud.Functions.Tests.csproj | 2 +- .../SentryStartupTests.cs | 27 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 83 ++ .../Sentry.NLog.Tests.csproj | 2 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 73 + .../AspNetSentrySdkTestFixture.cs | 8 +- .../Sentry.Serilog.Tests.csproj | 2 +- test/Sentry.Testing/Sentry.Testing.csproj | 6 +- test/Sentry.Testing/StreamExtensions.cs | 5 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 1301 +++++++++++++++++ .../Internals/Http/HttpTransportTests.cs | 2 +- test/Sentry.Tests/Internals/JsonTests.cs | 4 + .../ModuleInitializerAttribute.cs | 2 +- test/Sentry.Tests/Protocol/DsnTests.cs | 7 +- test/Sentry.Tests/Sentry.Tests.csproj | 2 +- ...piApprovalTests.Run.DotNet6_0.verified.txt | 14 + .../Sentry.Tunnel.Tests.csproj | 2 +- 52 files changed, 3200 insertions(+), 95 deletions(-) create mode 100644 test/Sentry.AspNetCore.Grpc.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.AspNetCore.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet3_0.verified.txt create mode 100644 test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.Extensions.Logging.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.Google.Cloud.Functions.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.NLog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt create mode 100644 test/Sentry.Tunnel.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 534616169f..48e4cefba8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,13 +6,14 @@ on: - main - release/* pull_request: - paths-ignore: - - 'CHANGELOG.md' jobs: build: name: ${{ matrix.os }} runs-on: ${{ matrix.os }} - + env: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_NOLOGO: 1 + DOTNET_MULTILEVEL_LOOKUP: 1 strategy: fail-fast: false matrix: @@ -31,7 +32,24 @@ jobs: with: submodules: recursive fetch-depth: 2 # default is 1 and codecov needs > 1 - + - name: Setup .NET SDK (v2.1) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '2.1.818' + - name: Setup .NET SDK (v3.1) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '3.1.x' + - name: Setup .NET SDK (v5.0) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '5.0.x' + - name: Setup .NET SDK (v6.0) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + include-prerelease: true + - name: Run build script run: ${{ matrix.build_script }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a136855b4d..5b1b6723f1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,17 +13,36 @@ jobs: analyze: name: Analyze runs-on: ubuntu-latest - + env: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_NOLOGO: 1 + DOTNET_MULTILEVEL_LOOKUP: 1 strategy: fail-fast: false matrix: language: [ 'csharp' ] - steps: - name: Checkout repository uses: actions/checkout@v2 with: submodules: recursive + - name: Setup .NET SDK (v2.1) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '2.1.818' + - name: Setup .NET SDK (v3.1) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '3.1.x' + - name: Setup .NET SDK (v5.0) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '5.0.x' + - name: Setup .NET SDK (v6.0) + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + include-prerelease: true # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/CHANGELOG.md b/CHANGELOG.md index 954afb3beb..f78bac5c2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- .NET 6 specific targets ([#939](https://github.com/getsentry/sentry-dotnet/pull/939)) + ## 3.11.1 ### Fixes diff --git a/Directory.Build.props b/Directory.Build.props index 54146c28c9..bef7d4dfcd 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - 3.11.1 + 3.12.0-alpha.1 9 true $(MSBuildThisFileDirectory).assets/Sentry.snk diff --git a/samples/Sentry.Samples.AspNetCore.Mvc/Sentry.Samples.AspNetCore.Mvc.csproj b/samples/Sentry.Samples.AspNetCore.Mvc/Sentry.Samples.AspNetCore.Mvc.csproj index 9cf2a48259..7ac3d234d0 100644 --- a/samples/Sentry.Samples.AspNetCore.Mvc/Sentry.Samples.AspNetCore.Mvc.csproj +++ b/samples/Sentry.Samples.AspNetCore.Mvc/Sentry.Samples.AspNetCore.Mvc.csproj @@ -1,17 +1,10 @@  - netcoreapp2.1 + net6 Samples.AspNetCore.Mvc - - - all - true - - - Always diff --git a/samples/Sentry.Samples.AspNetCore.Mvc/Startup.cs b/samples/Sentry.Samples.AspNetCore.Mvc/Startup.cs index d7f65b81cb..7da3a03c6e 100644 --- a/samples/Sentry.Samples.AspNetCore.Mvc/Startup.cs +++ b/samples/Sentry.Samples.AspNetCore.Mvc/Startup.cs @@ -2,6 +2,8 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Sentry.AspNetCore; using Sentry.Extensibility; namespace Samples.AspNetCore.Mvc @@ -33,7 +35,7 @@ public void ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { @@ -46,13 +48,14 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) app.UseStaticFiles(); + app.UseRouting(); app.UseSentryTracing(); - app.UseMvc(routes => + app.UseEndpoints(endpoints => { - routes.MapRoute( + endpoints.MapControllerRoute( name: "default", - template: "{controller=Home}/{action=Index}/{id?}"); + pattern: "{controller=Home}/{action=Index}/{id?}"); }); } } diff --git a/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj b/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj index 7ab089ef24..9da41db8f8 100644 --- a/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj +++ b/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj @@ -1,7 +1,7 @@ - net5.0;netcoreapp3.0 + net6.0;net5.0;netcoreapp3.0 $(PackageTags);AspNetCore;gRPC Official ASP.NET Core gRPC integration for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. diff --git a/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj b/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj index 7ecff360c7..79a5a2da0c 100644 --- a/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj +++ b/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.0;netstandard2.0 + net6.0;net5.0;netcoreapp3.0;netstandard2.0 $(PackageTags);AspNetCore;MVC Official ASP.NET Core integration for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. @@ -16,9 +16,9 @@ + - diff --git a/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj b/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj index 4f7fbff30c..a0d094d68c 100644 --- a/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj +++ b/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.0;netstandard2.0 + net6.0;net5.0;netcoreapp3.0;netstandard2.0 $(PackageTags);Logging;Microsoft.Extensions.Logging Official Microsoft.Extensions.Logging integration for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. @@ -25,4 +25,9 @@ + + + + + diff --git a/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj b/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj index 4563c26e81..3f6b19ece6 100644 --- a/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj +++ b/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj @@ -1,7 +1,7 @@ - net5.0;netcoreapp3.1 + net6.0;net5.0;netcoreapp3.1 $(PackageTags);GCP;Google Cloud Functions Official Google Cloud Functions integration for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. diff --git a/src/Sentry.NLog/Sentry.NLog.csproj b/src/Sentry.NLog/Sentry.NLog.csproj index e887b182d4..4c032bdb33 100644 --- a/src/Sentry.NLog/Sentry.NLog.csproj +++ b/src/Sentry.NLog/Sentry.NLog.csproj @@ -1,7 +1,7 @@  - net5.0;netstandard2.1;netstandard2.0;net461 + net6.0;net5.0;netstandard2.1;netstandard2.0;net461 $(PackageTags);Logging;NLog Official NLog integration for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. diff --git a/src/Sentry.Serilog/Sentry.Serilog.csproj b/src/Sentry.Serilog/Sentry.Serilog.csproj index f0717aaa69..928e029fb7 100644 --- a/src/Sentry.Serilog/Sentry.Serilog.csproj +++ b/src/Sentry.Serilog/Sentry.Serilog.csproj @@ -1,7 +1,7 @@  - net5.0;netstandard2.1;netstandard2.0;net461 + net6.0;net5.0;netstandard2.1;netstandard2.0;net461 $(PackageTags);Logging;Serilog Official Serilog integration for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. @@ -10,11 +10,11 @@ - + - + diff --git a/src/Sentry.Tunnel/Sentry.Tunnel.csproj b/src/Sentry.Tunnel/Sentry.Tunnel.csproj index d2d615115a..abb75e11b8 100644 --- a/src/Sentry.Tunnel/Sentry.Tunnel.csproj +++ b/src/Sentry.Tunnel/Sentry.Tunnel.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1 + net6.0;net5.0;netcoreapp3.1 $(PackageTags);Sentry Proxy;Envelopes Official Tunnel middleware for Sentry. diff --git a/src/Sentry/Extensibility/ITransport.cs b/src/Sentry/Extensibility/ITransport.cs index 29bd8ed712..8725b9d437 100644 --- a/src/Sentry/Extensibility/ITransport.cs +++ b/src/Sentry/Extensibility/ITransport.cs @@ -16,4 +16,9 @@ internal interface ITransport /// The cancellation token. Task SendEnvelopeAsync(Envelope envelope, CancellationToken cancellationToken = default); } + + internal interface IFlushableTransport : ITransport + { + Task FlushAsync(CancellationToken cancellationToken = default); + } } diff --git a/src/Sentry/Integrations/AppDomainUnhandledExceptionIntegration.cs b/src/Sentry/Integrations/AppDomainUnhandledExceptionIntegration.cs index 73954d9a3a..bb1ae72634 100644 --- a/src/Sentry/Integrations/AppDomainUnhandledExceptionIntegration.cs +++ b/src/Sentry/Integrations/AppDomainUnhandledExceptionIntegration.cs @@ -27,7 +27,10 @@ public void Unregister(IHub hub) } // Internal for testability - [HandleProcessCorruptedStateExceptions, SecurityCritical] +#if !NET6_0_OR_GREATER + [HandleProcessCorruptedStateExceptions] +#endif + [SecurityCritical] internal void Handle(object sender, UnhandledExceptionEventArgs e) { if (e.ExceptionObject is Exception ex) diff --git a/src/Sentry/Integrations/TaskUnobservedTaskExceptionIntegration.cs b/src/Sentry/Integrations/TaskUnobservedTaskExceptionIntegration.cs index eae1c47ff4..19a6a79820 100644 --- a/src/Sentry/Integrations/TaskUnobservedTaskExceptionIntegration.cs +++ b/src/Sentry/Integrations/TaskUnobservedTaskExceptionIntegration.cs @@ -27,7 +27,10 @@ public void Unregister(IHub hub) } // Internal for testability - [HandleProcessCorruptedStateExceptions, SecurityCritical] +#if !NET6_0_OR_GREATER + [HandleProcessCorruptedStateExceptions] +#endif + [SecurityCritical] internal void Handle(object? sender, UnobservedTaskExceptionEventArgs e) { if (e.Exception != null) diff --git a/src/Sentry/Internal/AppDomainAdapter.cs b/src/Sentry/Internal/AppDomainAdapter.cs index 0d29a7c544..04f544b0fc 100644 --- a/src/Sentry/Internal/AppDomainAdapter.cs +++ b/src/Sentry/Internal/AppDomainAdapter.cs @@ -33,10 +33,16 @@ private AppDomainAdapter() private void OnProcessExit(object? sender, EventArgs e) => ProcessExit?.Invoke(sender, e); - [HandleProcessCorruptedStateExceptions, SecurityCritical] +#if !NET6_0_OR_GREATER + [HandleProcessCorruptedStateExceptions] +#endif + [SecurityCritical] private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) => UnhandledException?.Invoke(this, e); - [HandleProcessCorruptedStateExceptions, SecurityCritical] +#if !NET6_0_OR_GREATER + [HandleProcessCorruptedStateExceptions] +#endif + [SecurityCritical] private void OnUnobservedTaskException(object? sender, UnobservedTaskExceptionEventArgs e) => UnobservedTaskException?.Invoke(this, e); } } diff --git a/src/Sentry/Internal/Http/CachingTransport.cs b/src/Sentry/Internal/Http/CachingTransport.cs index 8f52c44f62..9768db62c5 100644 --- a/src/Sentry/Internal/Http/CachingTransport.cs +++ b/src/Sentry/Internal/Http/CachingTransport.cs @@ -11,7 +11,7 @@ namespace Sentry.Internal.Http { - internal class CachingTransport : ITransport, IAsyncDisposable, IDisposable + internal class CachingTransport : IFlushableTransport, IAsyncDisposable, IDisposable { private const string EnvelopeFileExt = "envelope"; diff --git a/src/Sentry/Internal/Polyfills.cs b/src/Sentry/Internal/Polyfills.cs index 897cd5932b..58674ff646 100644 --- a/src/Sentry/Internal/Polyfills.cs +++ b/src/Sentry/Internal/Polyfills.cs @@ -57,7 +57,7 @@ public static IEnumerable SkipLast(this IEnumerable source, int count) } #endif -#if !NET5_0 +#if !NET5_0_OR_GREATER internal static partial class PolyfillExtensions { public static Task ReadAsStringAsync(this HttpContent content, CancellationToken cancellationToken = default) => diff --git a/src/Sentry/Internal/SdkComposer.cs b/src/Sentry/Internal/SdkComposer.cs index 201b391b71..afb846d913 100644 --- a/src/Sentry/Internal/SdkComposer.cs +++ b/src/Sentry/Internal/SdkComposer.cs @@ -1,5 +1,7 @@ using System; +#if !NET6_0_OR_GREATER using System.Threading.Tasks; +#endif using Sentry.Extensibility; using Sentry.Internal.Http; @@ -45,6 +47,13 @@ private ITransport CreateTransport() // Caching transport var cachingTransport = new CachingTransport(httpTransport, _options); + BlockCacheFlush(cachingTransport); + + return cachingTransport; + } + + internal void BlockCacheFlush(IFlushableTransport transport) + { // If configured, flush existing cache if (_options.InitCacheFlushTimeout > TimeSpan.Zero) { @@ -55,10 +64,15 @@ private ITransport CreateTransport() try { // Flush cache but block on it only for a limited amount of time. - // If we don't flush it in time, then continue doing it on the - // background but don't block the calling thread until it finishes. + // If we don't flush it in time, then let it continue to run on the + // background but don't block the calling thread any more than set timeout. +#if NET6_0_OR_GREATER + transport.FlushAsync().WaitAsync(_options.InitCacheFlushTimeout) + // Block calling thread (Init) until either Flush or Timeout is reached + .GetAwaiter().GetResult(); +#else var timeoutTask = Task.Delay(_options.InitCacheFlushTimeout); - var flushTask = cachingTransport.FlushAsync(); + var flushTask = transport.FlushAsync(); // If flush finished in time, finalize the task by awaiting it to // propagate potential exceptions. @@ -74,6 +88,7 @@ private ITransport CreateTransport() "Continuing without waiting for the task to finish.", _options.InitCacheFlushTimeout); } +#endif } catch (Exception ex) { @@ -82,8 +97,6 @@ private ITransport CreateTransport() ex); } } - - return cachingTransport; } public IBackgroundWorker CreateBackgroundWorker() diff --git a/src/Sentry/Internal/SynchronizedRandom.cs b/src/Sentry/Internal/SynchronizedRandom.cs index d89db9258c..3375d55e75 100644 --- a/src/Sentry/Internal/SynchronizedRandom.cs +++ b/src/Sentry/Internal/SynchronizedRandom.cs @@ -4,8 +4,30 @@ namespace Sentry.Internal { internal static class SynchronizedRandom { + public static bool NextBool(double rate) => rate switch + { + >= 1 => true, + <= 0 => false, + _ => NextDouble() < rate + }; + +#if NET6_0_OR_GREATER + public static int Next(int minValue, int maxValue) => Random.Shared.Next(minValue, maxValue); + public static int Next() => Random.Shared.Next(); + public static double NextDouble() => Random.Shared.NextDouble(); + public static void NextBytes(byte[] bytes) => Random.Shared.NextBytes(bytes); +#else + // TODO: ThreadLocal instance would avoid contention private static readonly Random Random = new(); + public static void NextBytes(byte[] bytes) + { + lock (Random) + { + Random.NextBytes(bytes); + } + } + public static double NextDouble() { lock (Random) @@ -14,11 +36,21 @@ public static double NextDouble() } } - public static bool NextBool(double rate) => rate switch + public static int Next(int minValue, int maxValue) { - >= 1 => true, - <= 0 => false, - _ => NextDouble() < rate - }; + lock (Random) + { + return Random.Next(minValue, maxValue); + } + } + + public static int Next() + { + lock (Random) + { + return Random.Next(); + } + } +#endif } } diff --git a/src/Sentry/Sentry.csproj b/src/Sentry/Sentry.csproj index ca792383f0..9ddce31e78 100644 --- a/src/Sentry/Sentry.csproj +++ b/src/Sentry/Sentry.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.0;netstandard2.1;netstandard2.0;net461 + net6.0;net5.0;netcoreapp3.0;netstandard2.1;netstandard2.0;net461 Official SDK for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. $(NoWarn);RS0017 $(AdditionalConstants) diff --git a/test/Sentry.AspNetCore.Grpc.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.AspNetCore.Grpc.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..be5e9c44fe --- /dev/null +++ b/test/Sentry.AspNetCore.Grpc.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,51 @@ +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Sentry.AspNetCore.Grpc +{ + public class DefaultProtobufRequestPayloadExtractor : Sentry.AspNetCore.Grpc.IProtobufRequestPayloadExtractor + { + public DefaultProtobufRequestPayloadExtractor() { } + public Google.Protobuf.IMessage ExtractPayload(Sentry.AspNetCore.Grpc.IProtobufRequest request) + where TRequest : class, Google.Protobuf.IMessage { } + } + public interface IProtobufRequestPayloadExtractor + { + Google.Protobuf.IMessage? ExtractPayload(Sentry.AspNetCore.Grpc.IProtobufRequest request) + where TRequest : class, Google.Protobuf.IMessage; + } + public interface IProtobufRequest + { + long? ContentLength { get; } + TRequest Request { get; } + } + public class ProtobufRequestExtractionDispatcher : Sentry.AspNetCore.Grpc.IProtobufRequestPayloadExtractor + { + public ProtobufRequestExtractionDispatcher(System.Collections.Generic.IEnumerable extractors, Sentry.SentryOptions options, System.Func sizeSwitch) { } + public Google.Protobuf.IMessage? ExtractPayload(Sentry.AspNetCore.Grpc.IProtobufRequest request) + where TRequest : class, Google.Protobuf.IMessage { } + } + public static class ScopeExtensions + { + public static void Populate(this Sentry.Scope scope, Grpc.Core.ServerCallContext context, TRequest? request, Sentry.AspNetCore.SentryAspNetCoreOptions options) + where TRequest : class { } + } + public static class SentryBuilderExtensions + { + public static Sentry.AspNetCore.ISentryBuilder AddGrpc(this Sentry.AspNetCore.ISentryBuilder builder) { } + } + public class SentryGrpcInterceptor : Grpc.Core.Interceptors.Interceptor + { + public SentryGrpcInterceptor(System.Func hubAccessor, Microsoft.Extensions.Options.IOptions options) { } + public override System.Threading.Tasks.Task ClientStreamingServerHandler(Grpc.Core.IAsyncStreamReader requestStream, Grpc.Core.ServerCallContext context, Grpc.Core.ClientStreamingServerMethod continuation) + where TRequest : class + where TResponse : class { } + public override System.Threading.Tasks.Task DuplexStreamingServerHandler(Grpc.Core.IAsyncStreamReader requestStream, Grpc.Core.IServerStreamWriter responseStream, Grpc.Core.ServerCallContext context, Grpc.Core.DuplexStreamingServerMethod continuation) + where TRequest : class + where TResponse : class { } + public override System.Threading.Tasks.Task ServerStreamingServerHandler(TRequest request, Grpc.Core.IServerStreamWriter responseStream, Grpc.Core.ServerCallContext context, Grpc.Core.ServerStreamingServerMethod continuation) + where TRequest : class + where TResponse : class { } + public override System.Threading.Tasks.Task UnaryServerHandler(TRequest request, Grpc.Core.ServerCallContext context, Grpc.Core.UnaryServerMethod continuation) + where TRequest : class + where TResponse : class { } + } +} \ No newline at end of file diff --git a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj index 958e38768c..0065b61c2f 100644 --- a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj +++ b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj @@ -1,7 +1,7 @@ - net5.0;netcoreapp3.1 + net6.0;net5.0;netcoreapp3.1 diff --git a/test/Sentry.AspNetCore.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.AspNetCore.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..0f7175ffb0 --- /dev/null +++ b/test/Sentry.AspNetCore.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,63 @@ +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Microsoft.AspNetCore.Builder +{ + public static class SentryTracingMiddlewareExtensions { } +} +namespace Microsoft.AspNetCore.Hosting +{ + public static class SentryWebHostBuilderExtensions { } +} +namespace Microsoft.Extensions.DependencyInjection +{ + public static class ServiceCollectionExtensions { } +} +namespace Sentry.AspNetCore +{ + public interface ISentryBuilder + { + Microsoft.Extensions.DependencyInjection.IServiceCollection Services { get; } + } + public interface IUserFactory + { + Sentry.User? Create(Microsoft.AspNetCore.Http.HttpContext context); + } + public static class SamplingExtensions + { + public static string? TryGetHttpMethod(this Sentry.TransactionSamplingContext samplingContext) { } + public static string? TryGetHttpPath(this Sentry.TransactionSamplingContext samplingContext) { } + public static string? TryGetHttpRoute(this Sentry.TransactionSamplingContext samplingContext) { } + } + public static class ScopeExtensions + { + public static void Populate(this Sentry.Scope scope, System.Diagnostics.Activity activity) { } + public static void Populate(this Sentry.Scope scope, Microsoft.AspNetCore.Http.HttpContext context, Sentry.AspNetCore.SentryAspNetCoreOptions options) { } + } + [Microsoft.Extensions.Logging.ProviderAlias("Sentry")] + public class SentryAspNetCoreLoggerProvider : Sentry.Extensions.Logging.SentryLoggerProvider + { + public SentryAspNetCoreLoggerProvider(Microsoft.Extensions.Options.IOptions options, Sentry.IHub hub) { } + } + public class SentryAspNetCoreOptions : Sentry.Extensions.Logging.SentryLoggingOptions + { + public SentryAspNetCoreOptions() { } + public bool AdjustStandardEnvironmentNameCasing { get; set; } + public bool FlushOnCompletedRequest { get; set; } + public System.TimeSpan FlushTimeout { get; set; } + public bool IncludeActivityData { get; set; } + public Sentry.Extensibility.RequestSize MaxRequestBodySize { get; set; } + } + public class SentryAspNetCoreOptionsSetup : Microsoft.Extensions.Options.ConfigureFromConfigurationOptions + { + public SentryAspNetCoreOptionsSetup(Microsoft.Extensions.Logging.Configuration.ILoggerProviderConfiguration providerConfiguration, Microsoft.AspNetCore.Hosting.IWebHostEnvironment hostingEnvironment) { } + public override void Configure(Sentry.AspNetCore.SentryAspNetCoreOptions options) { } + } + public static class SentryBuilderExtensions + { + public static Sentry.AspNetCore.ISentryBuilder AddSentryOptions(this Sentry.AspNetCore.ISentryBuilder builder, System.Action? configureOptions) { } + } + public class SentryStartupFilter : Microsoft.AspNetCore.Hosting.IStartupFilter + { + public SentryStartupFilter() { } + public System.Action Configure(System.Action next) { } + } +} \ No newline at end of file diff --git a/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj b/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj index b2e6a37310..9da8cb60a9 100644 --- a/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj +++ b/test/Sentry.AspNetCore.Tests/Sentry.AspNetCore.Tests.csproj @@ -6,7 +6,7 @@ - net5.0;netcoreapp3.1;netcoreapp2.1 + net6.0;net5.0;netcoreapp3.1;netcoreapp2.1 diff --git a/test/Sentry.AspNetCore.Tests/SentryHttpMessageHandlerBuilderFilterTests.cs b/test/Sentry.AspNetCore.Tests/SentryHttpMessageHandlerBuilderFilterTests.cs index 4138f98e90..444899a30a 100644 --- a/test/Sentry.AspNetCore.Tests/SentryHttpMessageHandlerBuilderFilterTests.cs +++ b/test/Sentry.AspNetCore.Tests/SentryHttpMessageHandlerBuilderFilterTests.cs @@ -1,4 +1,4 @@ -#if NET5_0 || NETCOREAPP3_1 +#if NETCOREAPP3_1_OR_GREATER using System; using System.Linq; using System.Net.Http; diff --git a/test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet3_0.verified.txt b/test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet3_0.verified.txt new file mode 100644 index 0000000000..ee7945e70c --- /dev/null +++ b/test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet3_0.verified.txt @@ -0,0 +1,9 @@ +[assembly: System.Runtime.Versioning.TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName="")] +namespace Sentry +{ + public static class SentryOptionsDiagnosticExtensions + { + public static void AddDiagnosticSourceIntegration(this Sentry.SentryOptions options) { } + public static void DisableDiagnosticSourceIntegration(this Sentry.SentryOptions options) { } + } +} \ No newline at end of file diff --git a/test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..95fa8c58dc --- /dev/null +++ b/test/Sentry.DiagnosticSource.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,1301 @@ +[assembly: System.CLSCompliant(true)] +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Sentry +{ + [System.Diagnostics.DebuggerDisplay("{FileName}")] + public class Attachment + { + public Attachment(Sentry.AttachmentType type, Sentry.IAttachmentContent content, string fileName, string? contentType) { } + public Sentry.IAttachmentContent Content { get; } + public string? ContentType { get; } + public string FileName { get; } + public Sentry.AttachmentType Type { get; } + } + public enum AttachmentType + { + Default = 0, + Minidump = 1, + AppleCrashReport = 2, + UnrealContext = 3, + UnrealLogs = 4, + } + [System.Diagnostics.DebuggerDisplay("Message: {Message}, Type: {Type}")] + public sealed class Breadcrumb : Sentry.IJsonSerializable + { + public Breadcrumb(string message, string type, System.Collections.Generic.IReadOnlyDictionary? data = null, string? category = null, Sentry.BreadcrumbLevel level = 0) { } + public string? Category { get; } + public System.Collections.Generic.IReadOnlyDictionary? Data { get; } + public Sentry.BreadcrumbLevel Level { get; } + public string? Message { get; } + public System.DateTimeOffset Timestamp { get; } + public string? Type { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Breadcrumb FromJson(System.Text.Json.JsonElement json) { } + } + public enum BreadcrumbLevel + { + [System.Runtime.Serialization.EnumMember(Value="debug")] + Debug = -1, + [System.Runtime.Serialization.EnumMember(Value="info")] + Info = 0, + [System.Runtime.Serialization.EnumMember(Value="warning")] + Warning = 1, + [System.Runtime.Serialization.EnumMember(Value="error")] + Error = 2, + [System.Runtime.Serialization.EnumMember(Value="critical")] + Critical = 3, + } + public static class Constants + { + public const int DefaultMaxBreadcrumbs = 100; + public const string DisableSdkDsnValue = ""; + public const string Platform = "csharp"; + public const int ProtocolVersion = 7; + } + public sealed class Contexts : System.Collections.Concurrent.ConcurrentDictionary, Sentry.IJsonSerializable + { + public Contexts() { } + public Sentry.Protocol.App App { get; } + public Sentry.Protocol.Browser Browser { get; } + public Sentry.Protocol.Device Device { get; } + public Sentry.Protocol.Gpu Gpu { get; } + public Sentry.Protocol.OperatingSystem OperatingSystem { get; } + public Sentry.Protocol.Runtime Runtime { get; } + public Sentry.Protocol.Trace Trace { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Contexts FromJson(System.Text.Json.JsonElement json) { } + } + [System.Flags] + public enum DeduplicateMode + { + SameEvent = 1, + SameExceptionInstance = 2, + InnerException = 4, + AggregateException = 8, + All = 2147483647, + } + public class DefaultSentryScopeStateProcessor : Sentry.ISentryScopeStateProcessor + { + public DefaultSentryScopeStateProcessor() { } + public void Apply(Sentry.Scope scope, object state) { } + } + [System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.All)] + public class DsnAttribute : System.Attribute + { + public DsnAttribute(string dsn) { } + public string Dsn { get; } + } + public static class EventLikeExtensions + { + public static bool HasUser(this Sentry.IEventLike eventLike) { } + public static void SetFingerprint(this Sentry.IEventLike eventLike, System.Collections.Generic.IEnumerable fingerprint) { } + public static void SetFingerprint(this Sentry.IEventLike eventLike, params string[] fingerprint) { } + } + public class FileAttachmentContent : Sentry.IAttachmentContent + { + public FileAttachmentContent(string filePath) { } + public System.IO.Stream GetStream() { } + } + public static class HasBreadcrumbsExtensions + { + public static void AddBreadcrumb(this Sentry.IHasBreadcrumbs hasBreadcrumbs, string message, string? category, string? type, System.ValueTuple? dataPair = default, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(this Sentry.IHasBreadcrumbs hasBreadcrumbs, string message, string? category = null, string? type = null, System.Collections.Generic.IReadOnlyDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(this Sentry.IHasBreadcrumbs hasBreadcrumbs, System.DateTimeOffset? timestamp, string message, string? category = null, string? type = null, System.Collections.Generic.IReadOnlyDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + } + public static class HasExtraExtensions + { + public static void SetExtras(this Sentry.IHasExtra hasExtra, System.Collections.Generic.IEnumerable> values) { } + } + public static class HasTagsExtensions + { + public static void SetTags(this Sentry.IHasTags hasTags, System.Collections.Generic.IEnumerable> tags) { } + } + public static class HubExtensions + { + public static void AddBreadcrumb(this Sentry.IHub hub, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(this Sentry.IHub hub, Sentry.Infrastructure.ISystemClock? clock, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void LockScope(this Sentry.IHub hub) { } + public static System.IDisposable PushAndLockScope(this Sentry.IHub hub) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, Sentry.ITransactionContext context) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, string name, string operation) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, string name, string operation, Sentry.SentryTraceHeader traceHeader) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, string name, string operation, string? description) { } + public static void UnlockScope(this Sentry.IHub hub) { } + } + public interface IAttachmentContent + { + System.IO.Stream GetStream(); + } + public interface IEventLike : Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags + { + Sentry.Contexts Contexts { get; set; } + string? Environment { get; set; } + System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + Sentry.SentryLevel? Level { get; set; } + string? Platform { get; set; } + string? Release { get; set; } + Sentry.Request Request { get; set; } + Sentry.SdkVersion Sdk { get; } + string? TransactionName { get; set; } + Sentry.User User { get; set; } + } + public interface IHasBreadcrumbs + { + System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + void AddBreadcrumb(Sentry.Breadcrumb breadcrumb); + } + public interface IHasExtra + { + System.Collections.Generic.IReadOnlyDictionary Extra { get; } + void SetExtra(string key, object? value); + } + public interface IHasTags + { + System.Collections.Generic.IReadOnlyDictionary Tags { get; } + void SetTag(string key, string value); + void UnsetTag(string key); + } + public interface IHub : Sentry.ISentryClient, Sentry.ISentryScopeManager + { + Sentry.SentryId LastEventId { get; } + void BindException(System.Exception exception, Sentry.ISpan span); + void EndSession(Sentry.SessionEndStatus status = 0); + Sentry.ISpan? GetSpan(); + Sentry.SentryTraceHeader? GetTraceHeader(); + void PauseSession(); + void ResumeSession(); + void StartSession(); + Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext); + } + public interface IJsonSerializable + { + void WriteTo(System.Text.Json.Utf8JsonWriter writer); + } + public interface IScopeObserver + { + void AddBreadcrumb(Sentry.Breadcrumb breadcrumb); + void SetExtra(string key, object? value); + void SetTag(string key, string value); + void SetUser(Sentry.User? user); + void UnsetTag(string key); + } + public interface ISentryClient + { + bool IsEnabled { get; } + Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope = null); + void CaptureSession(Sentry.SessionUpdate sessionUpdate); + void CaptureTransaction(Sentry.Transaction transaction); + void CaptureUserFeedback(Sentry.UserFeedback userFeedback); + System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout); + } + public interface ISentryScopeManager + { + void BindClient(Sentry.ISentryClient client); + void ConfigureScope(System.Action configureScope); + System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope); + System.IDisposable PushScope(); + System.IDisposable PushScope(TState state); + void WithScope(System.Action scopeCallback); + } + public interface ISentryScopeStateProcessor + { + void Apply(Sentry.Scope scope, object state); + } + public interface ISession + { + string? DistinctId { get; } + string? Environment { get; } + int ErrorCount { get; } + Sentry.SentryId Id { get; } + string? IpAddress { get; } + string Release { get; } + System.DateTimeOffset StartTimestamp { get; } + string? UserAgent { get; } + } + public interface ISpan : Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpanContext, Sentry.ISpanData, Sentry.Protocol.ITraceContext + { + new string? Description { get; set; } + new string Operation { get; set; } + new Sentry.SpanStatus? Status { get; set; } + void Finish(); + void Finish(Sentry.SpanStatus status); + void Finish(System.Exception exception); + void Finish(System.Exception exception, Sentry.SpanStatus status); + Sentry.ISpan StartChild(string operation); + } + public interface ISpanContext : Sentry.Protocol.ITraceContext { } + public interface ISpanData : Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpanContext, Sentry.Protocol.ITraceContext + { + System.DateTimeOffset? EndTimestamp { get; } + bool IsFinished { get; } + System.DateTimeOffset StartTimestamp { get; } + Sentry.SentryTraceHeader GetTraceHeader(); + } + public interface ITransaction : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpan, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransactionContext, Sentry.ITransactionData, Sentry.Protocol.ITraceContext + { + new bool? IsParentSampled { get; set; } + new string Name { get; set; } + System.Collections.Generic.IReadOnlyCollection Spans { get; } + Sentry.ISpan? GetLastActiveSpan(); + } + public interface ITransactionContext : Sentry.ISpanContext, Sentry.Protocol.ITraceContext + { + bool? IsParentSampled { get; } + string Name { get; } + } + public interface ITransactionData : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransactionContext, Sentry.Protocol.ITraceContext { } + public sealed class Package : Sentry.IJsonSerializable + { + public Package(string name, string version) { } + public string Name { get; } + public string Version { get; } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Package FromJson(System.Text.Json.JsonElement json) { } + } + public enum ReportAssembliesMode + { + None = 0, + Version = 1, + InformationalVersion = 2, + } + public sealed class Request : Sentry.IJsonSerializable + { + public Request() { } + public string? Cookies { get; set; } + public object? Data { get; set; } + public System.Collections.Generic.IDictionary Env { get; } + public System.Collections.Generic.IDictionary Headers { get; } + public string? Method { get; set; } + public System.Collections.Generic.IDictionary Other { get; } + public string? QueryString { get; set; } + public string? Url { get; set; } + public Sentry.Request Clone() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Request FromJson(System.Text.Json.JsonElement json) { } + } + public class Scope : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags + { + public Scope(Sentry.SentryOptions? options) { } + public System.Collections.Generic.IReadOnlyCollection Attachments { get; } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Environment { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public Sentry.SentryLevel? Level { get; set; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.ITransaction? Transaction { get; set; } + public string? TransactionName { get; set; } + public Sentry.User User { get; set; } + public void AddAttachment(Sentry.Attachment attachment) { } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public void Apply(Sentry.IEventLike other) { } + public void Apply(Sentry.Scope other) { } + public void Apply(object state) { } + public void ClearAttachments() { } + public Sentry.Scope Clone() { } + public Sentry.ISpan? GetSpan() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + } + public static class ScopeExtensions + { + public static void AddAttachment(this Sentry.Scope scope, string filePath, Sentry.AttachmentType type = 0, string? contentType = null) { } + public static void AddAttachment(this Sentry.Scope scope, byte[] data, string fileName, Sentry.AttachmentType type = 0, string? contentType = null) { } + public static void AddAttachment(this Sentry.Scope scope, System.IO.Stream stream, string fileName, Sentry.AttachmentType type = 0, string? contentType = null) { } + public static void AddEventProcessor(this Sentry.Scope scope, Sentry.Extensibility.ISentryEventProcessor processor) { } + public static void AddEventProcessor(this Sentry.Scope scope, System.Func processor) { } + public static void AddEventProcessors(this Sentry.Scope scope, System.Collections.Generic.IEnumerable processors) { } + public static void AddExceptionProcessor(this Sentry.Scope scope, Sentry.Extensibility.ISentryEventExceptionProcessor processor) { } + public static void AddExceptionProcessors(this Sentry.Scope scope, System.Collections.Generic.IEnumerable processors) { } + public static System.Collections.Generic.IEnumerable GetAllEventProcessors(this Sentry.Scope scope) { } + public static System.Collections.Generic.IEnumerable GetAllExceptionProcessors(this Sentry.Scope scope) { } + } + public sealed class SdkVersion : Sentry.IJsonSerializable + { + public SdkVersion() { } + public string? Name { get; set; } + public System.Collections.Generic.IEnumerable Packages { get; } + public string? Version { get; set; } + public void AddPackage(string name, string version) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SdkVersion FromJson(System.Text.Json.JsonElement json) { } + } + public class SentryClient : Sentry.ISentryClient, System.IDisposable + { + public SentryClient(Sentry.SentryOptions options) { } + public bool IsEnabled { get; } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent? @event, Sentry.Scope? scope = null) { } + public void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public void CaptureTransaction(Sentry.Transaction transaction) { } + public void CaptureUserFeedback(Sentry.UserFeedback userFeedback) { } + public void Dispose() { } + public System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + } + public static class SentryClientExtensions + { + public static Sentry.SentryId CaptureException(this Sentry.ISentryClient client, System.Exception ex) { } + public static Sentry.SentryId CaptureMessage(this Sentry.ISentryClient client, string message, Sentry.SentryLevel level = 1) { } + public static void CaptureUserFeedback(this Sentry.ISentryClient client, Sentry.SentryId eventId, string email, string comments, string? name = null) { } + } + [System.Diagnostics.DebuggerDisplay("{GetType().Name,nq}: {EventId,nq}")] + public sealed class SentryEvent : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.IJsonSerializable + { + public SentryEvent() { } + public SentryEvent(System.Exception? exception) { } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Environment { get; set; } + public Sentry.SentryId EventId { get; } + public System.Exception? Exception { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public Sentry.SentryLevel? Level { get; set; } + public string? Logger { get; set; } + public Sentry.SentryMessage? Message { get; set; } + public System.Collections.Generic.IDictionary Modules { get; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public System.Collections.Generic.IEnumerable? SentryExceptions { get; set; } + public System.Collections.Generic.IEnumerable? SentryThreads { get; set; } + public string? ServerName { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public System.DateTimeOffset Timestamp { get; } + public string? TransactionName { get; set; } + public Sentry.User User { get; set; } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryEvent FromJson(System.Text.Json.JsonElement json) { } + } + public static class SentryEventExtensions { } + public class SentryHttpMessageHandler : System.Net.Http.DelegatingHandler + { + public SentryHttpMessageHandler() { } + public SentryHttpMessageHandler(Sentry.IHub hub) { } + public SentryHttpMessageHandler(System.Net.Http.HttpMessageHandler innerHandler) { } + public SentryHttpMessageHandler(System.Net.Http.HttpMessageHandler innerHandler, Sentry.IHub hub) { } + protected override System.Threading.Tasks.Task SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { } + } + public readonly struct SentryId : Sentry.IJsonSerializable, System.IEquatable + { + public static readonly Sentry.SentryId Empty; + public SentryId(System.Guid guid) { } + public bool Equals(Sentry.SentryId other) { } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public override string ToString() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryId Create() { } + public static Sentry.SentryId FromJson(System.Text.Json.JsonElement json) { } + public static Sentry.SentryId Parse(string value) { } + public static System.Guid op_Implicit(Sentry.SentryId sentryId) { } + public static Sentry.SentryId op_Implicit(System.Guid guid) { } + public static bool operator !=(Sentry.SentryId left, Sentry.SentryId right) { } + public static bool operator ==(Sentry.SentryId left, Sentry.SentryId right) { } + } + public enum SentryLevel : short + { + [System.Runtime.Serialization.EnumMember(Value="debug")] + Debug = 0, + [System.Runtime.Serialization.EnumMember(Value="info")] + Info = 1, + [System.Runtime.Serialization.EnumMember(Value="warning")] + Warning = 2, + [System.Runtime.Serialization.EnumMember(Value="error")] + Error = 3, + [System.Runtime.Serialization.EnumMember(Value="fatal")] + Fatal = 4, + } + public sealed class SentryMessage : Sentry.IJsonSerializable + { + public SentryMessage() { } + public string? Formatted { get; set; } + public string? Message { get; set; } + public System.Collections.Generic.IEnumerable? Params { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryMessage FromJson(System.Text.Json.JsonElement json) { } + public static Sentry.SentryMessage op_Implicit(string? message) { } + } + public class SentryOptions + { + public SentryOptions() { } + public bool AttachStacktrace { get; set; } + public bool AutoSessionTracking { get; set; } + public System.TimeSpan AutoSessionTrackingInterval { get; set; } + public System.Func? BeforeBreadcrumb { get; set; } + public System.Func? BeforeSend { get; set; } + public string? CacheDirectoryPath { get; set; } + public System.Action? ConfigureClient { get; set; } + public System.Func? CrashedLastRun { get; set; } + public System.Func? CreateHttpClientHandler { get; set; } + public bool Debug { get; set; } + public System.Net.DecompressionMethods DecompressionMethods { get; set; } + public Sentry.DeduplicateMode DeduplicateMode { get; set; } + public System.Collections.Generic.Dictionary DefaultTags { get; } + public Sentry.StartupTimeDetectionMode DetectStartupTime { get; set; } + public Sentry.SentryLevel DiagnosticLevel { get; set; } + public Sentry.Extensibility.IDiagnosticLogger? DiagnosticLogger { get; set; } + public string? Dsn { get; set; } + public bool EnableScopeSync { get; set; } + public string? Environment { get; set; } + public System.Net.IWebProxy? HttpProxy { get; set; } + public System.TimeSpan InitCacheFlushTimeout { get; set; } + public bool IsEnvironmentUser { get; set; } + public bool IsGlobalModeEnabled { get; set; } + public long MaxAttachmentSize { get; set; } + public int MaxBreadcrumbs { get; set; } + public int MaxCacheItems { get; set; } + public int MaxQueueItems { get; set; } + public string? Release { get; set; } + [System.Obsolete("Use ReportAssembliesMode instead", false)] + public bool ReportAssemblies { get; set; } + public Sentry.ReportAssembliesMode ReportAssembliesMode { get; set; } + public bool RequestBodyCompressionBuffered { get; set; } + public System.IO.Compression.CompressionLevel RequestBodyCompressionLevel { get; set; } + public float? SampleRate { get; set; } + public Sentry.IScopeObserver? ScopeObserver { get; set; } + public bool SendDefaultPii { get; set; } + public Sentry.ISentryScopeStateProcessor SentryScopeStateProcessor { get; set; } + public string? ServerName { get; set; } + public System.TimeSpan ShutdownTimeout { get; set; } + public Sentry.StackTraceMode StackTraceMode { get; set; } + public double TracesSampleRate { get; set; } + public System.Func? TracesSampler { get; set; } + } + public static class SentryOptionsExtensions + { + public static void AddEventProcessor(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryEventProcessor processor) { } + public static void AddEventProcessorProvider(this Sentry.SentryOptions options, System.Func> processorProvider) { } + public static void AddEventProcessors(this Sentry.SentryOptions options, System.Collections.Generic.IEnumerable processors) { } + public static void AddExceptionFilter(this Sentry.SentryOptions options, Sentry.Extensibility.IExceptionFilter exceptionFilter) { } + public static void AddExceptionFilterForType(this Sentry.SentryOptions options) + where TException : System.Exception { } + public static void AddExceptionProcessor(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryEventExceptionProcessor processor) { } + public static void AddExceptionProcessorProvider(this Sentry.SentryOptions options, System.Func> processorProvider) { } + public static void AddExceptionProcessors(this Sentry.SentryOptions options, System.Collections.Generic.IEnumerable processors) { } + public static void AddInAppExclude(this Sentry.SentryOptions options, string prefix) { } + public static void AddInAppInclude(this Sentry.SentryOptions options, string prefix) { } + public static void AddIntegration(this Sentry.SentryOptions options, Sentry.Integrations.ISdkIntegration integration) { } + public static void ApplyDefaultTags(this Sentry.SentryOptions options, Sentry.IHasTags hasTags) { } + public static void DisableAppDomainProcessExitFlush(this Sentry.SentryOptions options) { } + public static void DisableAppDomainUnhandledExceptionCapture(this Sentry.SentryOptions options) { } + public static void DisableDiagnosticSourceIntegration(this Sentry.SentryOptions options) { } + public static void DisableDuplicateEventDetection(this Sentry.SentryOptions options) { } + public static void DisableTaskUnobservedTaskExceptionCapture(this Sentry.SentryOptions options) { } + public static System.Collections.Generic.IEnumerable GetAllEventProcessors(this Sentry.SentryOptions options) { } + public static System.Collections.Generic.IEnumerable GetAllExceptionProcessors(this Sentry.SentryOptions options) { } + public static Sentry.SentryOptions UseStackTraceFactory(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryStackTraceFactory sentryStackTraceFactory) { } + } + public static class SentrySdk + { + public static bool IsEnabled { get; } + public static Sentry.SentryId LastEventId { get; } + public static void AddBreadcrumb(string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(Sentry.Infrastructure.ISystemClock? clock, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void BindClient(Sentry.ISentryClient client) { } + public static void BindException(System.Exception exception, Sentry.ISpan span) { } + public static Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt) { } + public static Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope) { } + public static Sentry.SentryId CaptureException(System.Exception exception) { } + public static Sentry.SentryId CaptureMessage(string message, Sentry.SentryLevel level = 1) { } + public static void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public static void CaptureTransaction(Sentry.Transaction transaction) { } + public static void CaptureUserFeedback(Sentry.UserFeedback userFeedback) { } + public static void CaptureUserFeedback(Sentry.SentryId eventId, string email, string comments, string? name = null) { } + public static void Close() { } + public static void ConfigureScope(System.Action configureScope) { } + public static System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope) { } + public static void EndSession(Sentry.SessionEndStatus status = 0) { } + public static System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + public static Sentry.ISpan? GetSpan() { } + public static Sentry.SentryTraceHeader? GetTraceHeader() { } + public static System.IDisposable Init() { } + public static System.IDisposable Init(Sentry.SentryOptions options) { } + public static System.IDisposable Init(System.Action? configureOptions) { } + public static System.IDisposable Init(string? dsn) { } + public static void PauseSession() { } + public static System.IDisposable PushScope() { } + public static System.IDisposable PushScope(TState state) { } + public static void ResumeSession() { } + public static void StartSession() { } + public static Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context) { } + public static Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public static Sentry.ITransaction StartTransaction(string name, string operation) { } + public static Sentry.ITransaction StartTransaction(string name, string operation, Sentry.SentryTraceHeader traceHeader) { } + public static Sentry.ITransaction StartTransaction(string name, string operation, string? description) { } + public static void WithScope(System.Action scopeCallback) { } + } + public sealed class SentryStackFrame : Sentry.IJsonSerializable + { + public SentryStackFrame() { } + public string? AbsolutePath { get; set; } + public int? ColumnNumber { get; set; } + public string? ContextLine { get; set; } + public string? FileName { get; set; } + public System.Collections.Generic.IList FramesOmitted { get; } + public string? Function { get; set; } + public long ImageAddress { get; set; } + public bool? InApp { get; set; } + public string? InstructionAddress { get; set; } + public long? InstructionOffset { get; set; } + public int? LineNumber { get; set; } + public string? Module { get; set; } + public string? Package { get; set; } + public string? Platform { get; set; } + public System.Collections.Generic.IList PostContext { get; } + public System.Collections.Generic.IList PreContext { get; } + public long? SymbolAddress { get; set; } + public System.Collections.Generic.IDictionary Vars { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryStackFrame FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class SentryStackTrace : Sentry.IJsonSerializable + { + public SentryStackTrace() { } + public System.Collections.Generic.IList Frames { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryStackTrace FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class SentryThread : Sentry.IJsonSerializable + { + public SentryThread() { } + public bool? Crashed { get; set; } + public bool? Current { get; set; } + public int? Id { get; set; } + public string? Name { get; set; } + public Sentry.SentryStackTrace? Stacktrace { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryThread FromJson(System.Text.Json.JsonElement json) { } + } + public class SentryTraceHeader + { + public SentryTraceHeader(Sentry.SentryId traceId, Sentry.SpanId spanSpanId, bool? isSampled) { } + public bool? IsSampled { get; } + public Sentry.SpanId SpanId { get; } + public Sentry.SentryId TraceId { get; } + public override string ToString() { } + public static Sentry.SentryTraceHeader Parse(string value) { } + } + public sealed class SentryValues : Sentry.IJsonSerializable + { + public SentryValues(System.Collections.Generic.IEnumerable? values) { } + public System.Collections.Generic.IEnumerable Values { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + } + public class Session : Sentry.ISession + { + public Session(string? distinctId, string release, string? environment) { } + public string? DistinctId { get; } + public string? Environment { get; } + public int ErrorCount { get; } + public Sentry.SentryId Id { get; } + public string? IpAddress { get; } + public string Release { get; } + public System.DateTimeOffset StartTimestamp { get; } + public string? UserAgent { get; } + public void ReportError() { } + } + public enum SessionEndStatus + { + Exited = 0, + Crashed = 1, + Abnormal = 2, + } + public class SessionUpdate : Sentry.IJsonSerializable, Sentry.ISession + { + public SessionUpdate(Sentry.SessionUpdate sessionUpdate, bool isInitial) { } + public SessionUpdate(Sentry.SessionUpdate sessionUpdate, bool isInitial, Sentry.SessionEndStatus? endStatus) { } + public SessionUpdate(Sentry.ISession session, bool isInitial, System.DateTimeOffset timestamp, int sequenceNumber, Sentry.SessionEndStatus? endStatus) { } + public SessionUpdate(Sentry.SentryId id, string? distinctId, System.DateTimeOffset startTimestamp, string release, string? environment, string? ipAddress, string? userAgent, int errorCount, bool isInitial, System.DateTimeOffset timestamp, int sequenceNumber, Sentry.SessionEndStatus? endStatus) { } + public string? DistinctId { get; } + public System.TimeSpan Duration { get; } + public Sentry.SessionEndStatus? EndStatus { get; } + public string? Environment { get; } + public int ErrorCount { get; } + public Sentry.SentryId Id { get; } + public string? IpAddress { get; } + public bool IsInitial { get; } + public string Release { get; } + public int SequenceNumber { get; } + public System.DateTimeOffset StartTimestamp { get; } + public System.DateTimeOffset Timestamp { get; } + public string? UserAgent { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SessionUpdate FromJson(System.Text.Json.JsonElement json) { } + } + public class Span : Sentry.IHasExtra, Sentry.IHasTags, Sentry.IJsonSerializable, Sentry.ISpanContext, Sentry.ISpanData, Sentry.Protocol.ITraceContext + { + public Span(Sentry.ISpan tracer) { } + public Span(Sentry.SpanId? parentSpanId, string operation) { } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public bool IsFinished { get; } + public bool? IsSampled { get; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; } + public Sentry.SpanId SpanId { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Span FromJson(System.Text.Json.JsonElement json) { } + } + public class SpanContext : Sentry.ISpanContext, Sentry.Protocol.ITraceContext + { + public SpanContext(Sentry.SpanId spanId, Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string operation, string? description, Sentry.SpanStatus? status, bool? isSampled) { } + public string? Description { get; } + public bool? IsSampled { get; } + public string Operation { get; } + public Sentry.SpanId? ParentSpanId { get; } + public Sentry.SpanId SpanId { get; } + public Sentry.SpanStatus? Status { get; } + public Sentry.SentryId TraceId { get; } + } + public static class SpanExtensions + { + public static Sentry.ISpan StartChild(this Sentry.ISpan span, string operation, string? description) { } + } + public readonly struct SpanId : Sentry.IJsonSerializable, System.IEquatable + { + public static readonly Sentry.SpanId Empty; + public SpanId(string value) { } + public bool Equals(Sentry.SpanId other) { } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public override string ToString() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SpanId Create() { } + public static Sentry.SpanId FromJson(System.Text.Json.JsonElement json) { } + public static Sentry.SpanId Parse(string value) { } + public static string op_Implicit(Sentry.SpanId id) { } + public static bool operator !=(Sentry.SpanId left, Sentry.SpanId right) { } + public static bool operator ==(Sentry.SpanId left, Sentry.SpanId right) { } + } + public enum SpanStatus + { + Ok = 0, + DeadlineExceeded = 1, + Unauthenticated = 2, + PermissionDenied = 3, + NotFound = 4, + ResourceExhausted = 5, + InvalidArgument = 6, + Unimplemented = 7, + Unavailable = 8, + InternalError = 9, + UnknownError = 10, + Cancelled = 11, + AlreadyExists = 12, + FailedPrecondition = 13, + Aborted = 14, + OutOfRange = 15, + DataLoss = 16, + } + public class SpanTracer : Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpan, Sentry.ISpanContext, Sentry.ISpanData, Sentry.Protocol.ITraceContext + { + public SpanTracer(Sentry.IHub hub, Sentry.TransactionTracer transaction, Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string operation) { } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public bool IsFinished { get; } + public bool? IsSampled { get; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; } + public Sentry.SpanId SpanId { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public void Finish() { } + public void Finish(Sentry.SpanStatus status) { } + public void Finish(System.Exception exception) { } + public void Finish(System.Exception exception, Sentry.SpanStatus status) { } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public Sentry.ISpan StartChild(string operation) { } + public void UnsetTag(string key) { } + } + public enum StackTraceMode + { + Original = 0, + Enhanced = 1, + } + public enum StartupTimeDetectionMode + { + None = 0, + Fast = 1, + Best = 2, + } + public class StreamAttachmentContent : Sentry.IAttachmentContent + { + public StreamAttachmentContent(System.IO.Stream stream) { } + public System.IO.Stream GetStream() { } + } + public class Transaction : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.IJsonSerializable, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransactionContext, Sentry.ITransactionData, Sentry.Protocol.ITraceContext + { + public Transaction(Sentry.ITransaction tracer) { } + public Transaction(string name, string operation) { } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public string? Environment { get; set; } + public Sentry.SentryId EventId { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public bool IsFinished { get; } + public bool? IsParentSampled { get; set; } + public bool? IsSampled { get; } + public Sentry.SentryLevel? Level { get; set; } + public string Name { get; } + public string Operation { get; } + public Sentry.SpanId? ParentSpanId { get; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public Sentry.SpanId SpanId { get; } + public System.Collections.Generic.IReadOnlyCollection Spans { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public Sentry.User User { get; set; } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Transaction FromJson(System.Text.Json.JsonElement json) { } + } + public class TransactionContext : Sentry.SpanContext, Sentry.ISpanContext, Sentry.ITransactionContext, Sentry.Protocol.ITraceContext + { + public TransactionContext(string name, string operation) { } + public TransactionContext(string name, string operation, Sentry.SentryTraceHeader traceHeader) { } + public TransactionContext(string name, string operation, bool? isSampled) { } + public TransactionContext(Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string name, string operation, bool? isParentSampled) { } + public TransactionContext(Sentry.SpanId spanId, Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string name, string operation, string? description, Sentry.SpanStatus? status, bool? isSampled, bool? isParentSampled) { } + public bool? IsParentSampled { get; } + public string Name { get; } + } + public class TransactionSamplingContext + { + public TransactionSamplingContext(Sentry.ITransactionContext transactionContext, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public System.Collections.Generic.IReadOnlyDictionary CustomSamplingContext { get; } + public Sentry.ITransactionContext TransactionContext { get; } + } + public class TransactionTracer : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpan, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransaction, Sentry.ITransactionContext, Sentry.ITransactionData, Sentry.Protocol.ITraceContext + { + public TransactionTracer(Sentry.IHub hub, Sentry.ITransactionContext context) { } + public TransactionTracer(Sentry.IHub hub, string name, string operation) { } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public string? Environment { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public bool IsFinished { get; } + public bool? IsParentSampled { get; set; } + public bool? IsSampled { get; } + public Sentry.SentryLevel? Level { get; set; } + public string Name { get; set; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public Sentry.SpanId SpanId { get; } + public System.Collections.Generic.IReadOnlyCollection Spans { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public Sentry.User User { get; set; } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public void Finish() { } + public void Finish(Sentry.SpanStatus status) { } + public void Finish(System.Exception exception) { } + public void Finish(System.Exception exception, Sentry.SpanStatus status) { } + public Sentry.ISpan? GetLastActiveSpan() { } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public Sentry.ISpan StartChild(string operation) { } + public void UnsetTag(string key) { } + } + public sealed class User : Sentry.IJsonSerializable + { + public User() { } + public string? Email { get; set; } + public string? Id { get; set; } + public string? IpAddress { get; set; } + public System.Collections.Generic.IDictionary Other { get; set; } + public string? Username { get; set; } + public Sentry.User Clone() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.User FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class UserFeedback : Sentry.IJsonSerializable + { + public UserFeedback(Sentry.SentryId eventId, string? name, string? email, string? comments) { } + public string? Comments { get; } + public string? Email { get; } + public Sentry.SentryId EventId { get; } + public string? Name { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.UserFeedback FromJson(System.Text.Json.JsonElement json) { } + } +} +namespace Sentry.Extensibility +{ + public abstract class BaseRequestPayloadExtractor : Sentry.Extensibility.IRequestPayloadExtractor + { + protected BaseRequestPayloadExtractor() { } + protected abstract object? DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request); + public object? ExtractPayload(Sentry.Extensibility.IHttpRequest request) { } + protected abstract bool IsSupported(Sentry.Extensibility.IHttpRequest request); + } + public class DefaultRequestPayloadExtractor : Sentry.Extensibility.BaseRequestPayloadExtractor + { + public DefaultRequestPayloadExtractor() { } + protected override object? DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) { } + protected override bool IsSupported(Sentry.Extensibility.IHttpRequest request) { } + } + public static class DiagnosticLoggerExtensions + { + public static void LogDebug(this Sentry.Extensibility.IDiagnosticLogger logger, string message) { } + public static void LogDebug(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg) { } + public static void LogDebug(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception? exception = null) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception exception, TArg arg) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception exception, TArg arg, TArg2 arg2) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, System.Exception exception, string message, TArg arg, TArg2 arg2, TArg3 arg3) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception exception, TArg arg, TArg2 arg2, TArg3 arg3, TArg4 arg4) { } + public static void LogFatal(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception? exception = null) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2, TArg3 arg3) { } + public static void LogWarning(this Sentry.Extensibility.IDiagnosticLogger logger, string message) { } + public static void LogWarning(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg) { } + public static void LogWarning(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2) { } + } + public class DisabledHub : Sentry.IHub, Sentry.ISentryClient, Sentry.ISentryScopeManager, System.IDisposable + { + public static readonly Sentry.Extensibility.DisabledHub Instance; + public bool IsEnabled { get; } + public Sentry.SentryId LastEventId { get; } + public void BindClient(Sentry.ISentryClient client) { } + public void BindException(System.Exception exception, Sentry.ISpan span) { } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope = null) { } + public void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public void CaptureTransaction(Sentry.Transaction transaction) { } + public void CaptureUserFeedback(Sentry.UserFeedback userFeedback) { } + public void ConfigureScope(System.Action configureScope) { } + public System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope) { } + public void Dispose() { } + public void EndSession(Sentry.SessionEndStatus status = 0) { } + public System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + public Sentry.ISpan? GetSpan() { } + public Sentry.SentryTraceHeader? GetTraceHeader() { } + public void PauseSession() { } + public System.IDisposable PushScope() { } + public System.IDisposable PushScope(TState state) { } + public void ResumeSession() { } + public void StartSession() { } + public Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public void WithScope(System.Action scopeCallback) { } + } + public class FormRequestPayloadExtractor : Sentry.Extensibility.BaseRequestPayloadExtractor + { + public FormRequestPayloadExtractor() { } + protected override object? DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) { } + protected override bool IsSupported(Sentry.Extensibility.IHttpRequest request) { } + } + public sealed class HubAdapter : Sentry.IHub, Sentry.ISentryClient, Sentry.ISentryScopeManager + { + public static readonly Sentry.Extensibility.HubAdapter Instance; + public bool IsEnabled { get; } + public Sentry.SentryId LastEventId { get; } + public void AddBreadcrumb(string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public void AddBreadcrumb(Sentry.Infrastructure.ISystemClock clock, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public void BindClient(Sentry.ISentryClient client) { } + public void BindException(System.Exception exception, Sentry.ISpan span) { } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt) { } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope) { } + public Sentry.SentryId CaptureException(System.Exception exception) { } + public void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public void CaptureTransaction(Sentry.Transaction transaction) { } + public void CaptureUserFeedback(Sentry.UserFeedback sentryUserFeedback) { } + public void ConfigureScope(System.Action configureScope) { } + public System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope) { } + public void EndSession(Sentry.SessionEndStatus status = 0) { } + public System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + public Sentry.ISpan? GetSpan() { } + public Sentry.SentryTraceHeader? GetTraceHeader() { } + public void PauseSession() { } + public System.IDisposable PushScope() { } + public System.IDisposable PushScope(TState state) { } + public void ResumeSession() { } + public void StartSession() { } + public Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public void WithScope(System.Action scopeCallback) { } + } + public interface IDiagnosticLogger + { + bool IsEnabled(Sentry.SentryLevel level); + void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args); + } + public interface IExceptionFilter + { + bool Filter(System.Exception ex); + } + public interface IHttpRequest + { + System.IO.Stream? Body { get; } + long? ContentLength { get; } + string? ContentType { get; } + System.Collections.Generic.IEnumerable>>? Form { get; } + } + public interface IRequestPayloadExtractor + { + object? ExtractPayload(Sentry.Extensibility.IHttpRequest request); + } + public interface ISentryEventExceptionProcessor + { + void Process(System.Exception exception, Sentry.SentryEvent sentryEvent); + } + public interface ISentryEventProcessor + { + Sentry.SentryEvent? Process(Sentry.SentryEvent @event); + } + public interface ISentryStackTraceFactory + { + Sentry.SentryStackTrace? Create(System.Exception? exception = null); + } + public class RequestBodyExtractionDispatcher : Sentry.Extensibility.IRequestPayloadExtractor + { + public RequestBodyExtractionDispatcher(System.Collections.Generic.IEnumerable extractors, Sentry.SentryOptions options, System.Func sizeSwitch) { } + public object? ExtractPayload(Sentry.Extensibility.IHttpRequest request) { } + } + public enum RequestSize + { + None = 0, + Small = 1, + Medium = 2, + Always = 3, + } + public abstract class SentryEventExceptionProcessor : Sentry.Extensibility.ISentryEventExceptionProcessor + where TException : System.Exception + { + protected SentryEventExceptionProcessor() { } + public void Process(System.Exception? exception, Sentry.SentryEvent sentryEvent) { } + protected abstract void ProcessException(TException exception, Sentry.SentryEvent sentryEvent); + } + public class SentryStackTraceFactory : Sentry.Extensibility.ISentryStackTraceFactory + { + public SentryStackTraceFactory(Sentry.SentryOptions options) { } + public virtual Sentry.SentryStackTrace? Create(System.Exception? exception = null) { } + protected virtual Sentry.SentryStackFrame CreateFrame(System.Diagnostics.StackFrame stackFrame, bool isCurrentStackTrace) { } + protected virtual System.Diagnostics.StackTrace CreateStackTrace(System.Exception? exception) { } + protected virtual System.Reflection.MethodBase? GetMethod(System.Diagnostics.StackFrame stackFrame) { } + protected Sentry.SentryStackFrame InternalCreateFrame(System.Diagnostics.StackFrame stackFrame, bool demangle) { } + } +} +namespace Sentry.Http +{ + public interface ISentryHttpClientFactory + { + System.Net.Http.HttpClient Create(Sentry.SentryOptions options); + } +} +namespace Sentry.Infrastructure +{ + public class ConsoleDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public ConsoleDiagnosticLogger(Sentry.SentryLevel minimalLevel) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } + [System.Obsolete("Logger doesn\'t work outside of Sentry SDK. Please use TraceDiagnosticLogger inste" + + "ad")] + public class DebugDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public DebugDiagnosticLogger(Sentry.SentryLevel minimalLevel) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } + public interface ISystemClock + { + System.DateTimeOffset GetUtcNow(); + } + public sealed class SystemClock : Sentry.Infrastructure.ISystemClock + { + public static readonly Sentry.Infrastructure.SystemClock Clock; + public SystemClock() { } + public System.DateTimeOffset GetUtcNow() { } + } + public class TraceDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public TraceDiagnosticLogger(Sentry.SentryLevel minimalLevel) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } +} +namespace Sentry.Integrations +{ + public interface ISdkIntegration + { + void Register(Sentry.IHub hub, Sentry.SentryOptions options); + } +} +namespace Sentry.PlatformAbstractions +{ + public static class FrameworkInfo + { + public static System.Collections.Generic.IReadOnlyDictionary NetFxReleaseVersionMap { get; } + public static System.Collections.Generic.IEnumerable GetInstallations() { } + public static Sentry.PlatformAbstractions.FrameworkInstallation? GetLatest(int clr) { } + } + public class FrameworkInstallation + { + public FrameworkInstallation() { } + public Sentry.PlatformAbstractions.FrameworkProfile? Profile { get; set; } + public int? Release { get; set; } + public int? ServicePack { get; set; } + public string? ShortName { get; set; } + public System.Version? Version { get; set; } + public override string ToString() { } + } + public enum FrameworkProfile + { + Client = 0, + Full = 1, + } + public class Runtime + { + public Runtime(string? name = null, string? version = null, string? raw = null) { } + public string? Name { get; } + public string? Raw { get; } + public string? Version { get; } + public static Sentry.PlatformAbstractions.Runtime Current { get; } + public bool Equals(Sentry.PlatformAbstractions.Runtime other) { } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public override string? ToString() { } + } + public static class RuntimeExtensions + { + public static bool IsMono(this Sentry.PlatformAbstractions.Runtime runtime) { } + public static bool IsNetCore(this Sentry.PlatformAbstractions.Runtime runtime) { } + public static bool IsNetFx(this Sentry.PlatformAbstractions.Runtime runtime) { } + } +} +namespace Sentry.Protocol +{ + public sealed class App : Sentry.IJsonSerializable + { + public const string Type = "app"; + public App() { } + public string? Build { get; set; } + public string? BuildType { get; set; } + public string? Hash { get; set; } + public string? Identifier { get; set; } + public string? Name { get; set; } + public System.DateTimeOffset? StartTime { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.App FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class Browser : Sentry.IJsonSerializable + { + public const string Type = "browser"; + public Browser() { } + public string? Name { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Browser FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class Device : Sentry.IJsonSerializable + { + public const string Type = "device"; + public Device() { } + public string? Architecture { get; set; } + public short? BatteryLevel { get; set; } + public string? BatteryStatus { get; set; } + public System.DateTimeOffset? BootTime { get; set; } + public string? Brand { get; set; } + public string? CpuDescription { get; set; } + public string? DeviceType { get; set; } + public string? DeviceUniqueIdentifier { get; set; } + public long? ExternalFreeStorage { get; set; } + public long? ExternalStorageSize { get; set; } + public string? Family { get; set; } + public long? FreeMemory { get; set; } + public long? FreeStorage { get; set; } + public bool? IsCharging { get; set; } + public bool? IsOnline { get; set; } + public bool? LowMemory { get; set; } + public string? Manufacturer { get; set; } + public long? MemorySize { get; set; } + public string? Model { get; set; } + public string? ModelId { get; set; } + public string? Name { get; set; } + public Sentry.Protocol.DeviceOrientation? Orientation { get; set; } + public int? ProcessorCount { get; set; } + public int? ProcessorFrequency { get; set; } + public float? ScreenDensity { get; set; } + public int? ScreenDpi { get; set; } + public string? ScreenResolution { get; set; } + public bool? Simulator { get; set; } + public long? StorageSize { get; set; } + public bool? SupportsAccelerometer { get; set; } + public bool? SupportsAudio { get; set; } + public bool? SupportsGyroscope { get; set; } + public bool? SupportsLocationService { get; set; } + public bool? SupportsVibration { get; set; } + public System.TimeZoneInfo? Timezone { get; set; } + public long? UsableMemory { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Device FromJson(System.Text.Json.JsonElement json) { } + } + public enum DeviceOrientation + { + [System.Runtime.Serialization.EnumMember(Value="portrait")] + Portrait = 0, + [System.Runtime.Serialization.EnumMember(Value="landscape")] + Landscape = 1, + } + public sealed class Gpu : Sentry.IJsonSerializable + { + public const string Type = "gpu"; + public Gpu() { } + public string? ApiType { get; set; } + public string? GraphicsShaderLevel { get; set; } + public int? Id { get; set; } + public int? MaxTextureSize { get; set; } + public int? MemorySize { get; set; } + public bool? MultiThreadedRendering { get; set; } + public string? Name { get; set; } + public string? NpotSupport { get; set; } + public bool? SupportsComputeShaders { get; set; } + public bool? SupportsDrawCallInstancing { get; set; } + public bool? SupportsGeometryShaders { get; set; } + public bool? SupportsRayTracing { get; set; } + public string? VendorId { get; set; } + public string? VendorName { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Gpu FromJson(System.Text.Json.JsonElement json) { } + } + public interface ITraceContext + { + string? Description { get; } + bool? IsSampled { get; } + string Operation { get; } + Sentry.SpanId? ParentSpanId { get; } + Sentry.SpanId SpanId { get; } + Sentry.SpanStatus? Status { get; } + Sentry.SentryId TraceId { get; } + } + public sealed class Mechanism : Sentry.IJsonSerializable + { + public static readonly string HandledKey; + public static readonly string MechanismKey; + public Mechanism() { } + public System.Collections.Generic.IDictionary Data { get; } + public string? Description { get; set; } + public bool? Handled { get; set; } + public string? HelpLink { get; set; } + public System.Collections.Generic.IDictionary Meta { get; } + public string? Type { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Mechanism FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class OperatingSystem : Sentry.IJsonSerializable + { + public const string Type = "os"; + public OperatingSystem() { } + public string? Build { get; set; } + public string? KernelVersion { get; set; } + public string? Name { get; set; } + public string? RawDescription { get; set; } + public bool? Rooted { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.OperatingSystem FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class Runtime : Sentry.IJsonSerializable + { + public const string Type = "runtime"; + public Runtime() { } + public string? Build { get; set; } + public string? Name { get; set; } + public string? RawDescription { get; set; } + public string? Version { get; set; } + public Sentry.Protocol.Runtime Clone() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Runtime FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class SentryException : Sentry.IJsonSerializable + { + public SentryException() { } + public System.Collections.Generic.IDictionary Data { get; } + public Sentry.Protocol.Mechanism? Mechanism { get; set; } + public string? Module { get; set; } + public Sentry.SentryStackTrace? Stacktrace { get; set; } + public int ThreadId { get; set; } + public string? Type { get; set; } + public string? Value { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.SentryException FromJson(System.Text.Json.JsonElement json) { } + } + public class Trace : Sentry.IJsonSerializable, Sentry.Protocol.ITraceContext + { + public const string Type = "trace"; + public Trace() { } + public string? Description { get; set; } + public bool? IsSampled { get; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; set; } + public Sentry.SpanId SpanId { get; set; } + public Sentry.SpanStatus? Status { get; set; } + public Sentry.SentryId TraceId { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Trace FromJson(System.Text.Json.JsonElement json) { } + } +} +namespace Sentry.Reflection +{ + public static class AssemblyExtensions + { + public static Sentry.SdkVersion GetNameAndVersion(this System.Reflection.Assembly asm) { } + } +} +public static class SentryExceptionExtensions +{ + public static void AddSentryContext(this System.Exception ex, string name, System.Collections.Generic.IReadOnlyDictionary data) { } + public static void AddSentryTag(this System.Exception ex, string name, string value) { } +} \ No newline at end of file diff --git a/test/Sentry.DiagnosticSource.Tests/Integration/SQLite/SentryDiagnosticListenerTests.cs b/test/Sentry.DiagnosticSource.Tests/Integration/SQLite/SentryDiagnosticListenerTests.cs index 891a356f67..c4ac52848f 100644 --- a/test/Sentry.DiagnosticSource.Tests/Integration/SQLite/SentryDiagnosticListenerTests.cs +++ b/test/Sentry.DiagnosticSource.Tests/Integration/SQLite/SentryDiagnosticListenerTests.cs @@ -88,7 +88,7 @@ public void EfCoreIntegration_RunSynchronousQueryWithIssue_TransactionWithSpans( // Assert Assert.NotNull(exception); -#if NET461 || NETCOREAPP2_1 +#if NET461 || NETCOREAPP2_1 || NETCOREAPP3_1 Assert.Single(spans); //1 command #else Assert.Equal(2, spans.Count); //1 query compiler, 1 command @@ -112,7 +112,7 @@ public void EfCoreIntegration_RunSynchronousQuery_TransactionWithSpans() // Assert Assert.Equal(3, result.Count); -#if NET461 || NETCOREAPP2_1 +#if NET461 || NETCOREAPP2_1 || NETCOREAPP3_1 Assert.Single(spans); //1 command #else Assert.Equal(2, spans.Count); //1 query compiler, 1 command @@ -154,7 +154,7 @@ public async Task EfCoreIntegration_RunAsyncQuery_TransactionWithSpansWithOneCom // Assert Assert.Equal(totalCommands, itemsList.Count); Assert.Equal(totalCommands, spans.Count(s => s.Operation == "db.query")); -#if !NET461 && !NETCOREAPP2_1 +#if !NET461 && !NETCOREAPP2_1 && !NETCOREAPP3_1 Assert.Equal(totalCommands, spans.Count(s => s.Operation == "db.query_compiler")); #endif Assert.All(spans, span => @@ -187,7 +187,7 @@ public async Task EfCoreIntegration_RunAsyncQuery_TransactionWithSpans() // Assert Assert.Equal(3, result[0].Result.Count); Assert.Equal(4, spans.Count(s => s.Operation == "db.query")); -#if !NET461 && !NETCOREAPP2_1 +#if !NET461 && !NETCOREAPP2_1 && !NETCOREAPP3_1 Assert.Equal(4, spans.Count(s => s.Operation == "db.query_compiler")); #endif Assert.All(spans, span => diff --git a/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj b/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj index 88b4fd7274..acfb10d6d7 100644 --- a/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj +++ b/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj @@ -1,28 +1,42 @@  - net5.0;netcoreapp3.1;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;net461 - + + + - - - - - + + + + + + + + + - - - - + + 3.1.20 + + + 5.0.11 + + + 6.0.0-rc.* + + + + + - - + diff --git a/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj b/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj index f50b2eafa7..7e67ade17e 100644 --- a/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj +++ b/test/Sentry.Extensions.Logging.EfCore.Tests/Sentry.Extensions.Logging.EfCore.Tests.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;netcoreapp2.1;net461 @@ -16,6 +16,12 @@ + + + + + + diff --git a/test/Sentry.Extensions.Logging.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.Extensions.Logging.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..3b66c9be26 --- /dev/null +++ b/test/Sentry.Extensions.Logging.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,52 @@ +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Microsoft.Extensions.Logging +{ + public static class LoggingBuilderExtensions { } + public static class SentryLoggerFactoryExtensions { } +} +namespace Sentry.Extensions.Logging +{ + public class DelegateLogEntryFilter : Sentry.Extensions.Logging.ILogEntryFilter + { + public DelegateLogEntryFilter(System.Func filter) { } + public bool Filter(string categoryName, Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, System.Exception? exception) { } + } + public interface ILogEntryFilter + { + bool Filter(string categoryName, Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, System.Exception? exception); + } + public class MelDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public MelDiagnosticLogger(Microsoft.Extensions.Logging.ILogger logger, Sentry.SentryLevel level) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } + [Microsoft.Extensions.Logging.ProviderAlias("Sentry")] + public class SentryLoggerProvider : Microsoft.Extensions.Logging.ILoggerProvider, System.IDisposable + { + public SentryLoggerProvider(Microsoft.Extensions.Options.IOptions options, Sentry.IHub hub) { } + public Microsoft.Extensions.Logging.ILogger CreateLogger(string categoryName) { } + public void Dispose() { } + } + public class SentryLoggingOptions : Sentry.SentryOptions + { + public SentryLoggingOptions() { } + public bool InitializeSdk { get; set; } + public Microsoft.Extensions.Logging.LogLevel MinimumBreadcrumbLevel { get; set; } + public Microsoft.Extensions.Logging.LogLevel MinimumEventLevel { get; set; } + public void ConfigureScope(System.Action action) { } + } + public static class SentryLoggingOptionsExtensions + { + public static void AddLogEntryFilter(this Sentry.Extensions.Logging.SentryLoggingOptions options, Sentry.Extensions.Logging.ILogEntryFilter filter) { } + public static void AddLogEntryFilter(this Sentry.Extensions.Logging.SentryLoggingOptions options, System.Func filter) { } + } +} +namespace Sentry.Extensions.Logging.Extensions.DependencyInjection +{ + public static class ServiceCollectionExtensions + { + public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddSentry(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) + where TOptions : Sentry.Extensions.Logging.SentryLoggingOptions, new () { } + } +} \ No newline at end of file diff --git a/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj b/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj index 6210d28baa..c9b1d95de9 100644 --- a/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj +++ b/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;netcoreapp2.1;net461 @@ -17,6 +17,10 @@ + + + + diff --git a/test/Sentry.Google.Cloud.Functions.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.Google.Cloud.Functions.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..4dde5d4a89 --- /dev/null +++ b/test/Sentry.Google.Cloud.Functions.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,11 @@ +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Google.Cloud.Functions.Framework +{ + public class SentryStartup : Google.Cloud.Functions.Hosting.FunctionsStartup + { + public SentryStartup() { } + public override void Configure(Microsoft.AspNetCore.Hosting.WebHostBuilderContext context, Microsoft.AspNetCore.Builder.IApplicationBuilder app) { } + public override void ConfigureLogging(Microsoft.AspNetCore.Hosting.WebHostBuilderContext context, Microsoft.Extensions.Logging.ILoggingBuilder logging) { } + public override void ConfigureServices(Microsoft.AspNetCore.Hosting.WebHostBuilderContext context, Microsoft.Extensions.DependencyInjection.IServiceCollection services) { } + } +} \ No newline at end of file diff --git a/test/Sentry.Google.Cloud.Functions.Tests/Sentry.Google.Cloud.Functions.Tests.csproj b/test/Sentry.Google.Cloud.Functions.Tests/Sentry.Google.Cloud.Functions.Tests.csproj index 2da8763eac..f39496e950 100644 --- a/test/Sentry.Google.Cloud.Functions.Tests/Sentry.Google.Cloud.Functions.Tests.csproj +++ b/test/Sentry.Google.Cloud.Functions.Tests/Sentry.Google.Cloud.Functions.Tests.csproj @@ -1,7 +1,7 @@ - net5.0;netcoreapp3.1 + net6.0;net5.0;netcoreapp3.1 diff --git a/test/Sentry.Google.Cloud.Functions.Tests/SentryStartupTests.cs b/test/Sentry.Google.Cloud.Functions.Tests/SentryStartupTests.cs index e880ffeac0..0d5d44d9ca 100644 --- a/test/Sentry.Google.Cloud.Functions.Tests/SentryStartupTests.cs +++ b/test/Sentry.Google.Cloud.Functions.Tests/SentryStartupTests.cs @@ -11,6 +11,7 @@ using NSubstitute; using Sentry.AspNetCore; using Sentry.Internal; +using Sentry.Testing; using Xunit; namespace Sentry.Google.Cloud.Functions.Tests @@ -20,17 +21,20 @@ public class SentryStartupTests public IWebHostEnvironment HostingEnvironment { get; set; } = Substitute.For(); public WebHostBuilderContext WebHostBuilderContext { get; set; } - public IApplicationBuilder ApplicationBuilder { get; set; } = Substitute.For(); - public ILoggingBuilder LoggingBuilder { get; set; } public SentryStartupTests() { + var configuration = new ConfigurationBuilder() + .AddInMemoryCollection(new Dictionary()) + .Build(); + WebHostBuilderContext = new WebHostBuilderContext { - Configuration = Substitute.For(), + Configuration = configuration, HostingEnvironment = HostingEnvironment }; + LoggingBuilder = new TestLoggingBuilder(); LoggingBuilder.Services.AddSingleton(HostingEnvironment); @@ -42,18 +46,19 @@ private class TestLoggingBuilder : ILoggingBuilder } [Fact] - public void ConfigureLogging_SentryAspNetCoreOptions_ReleaseOptionsSet() + public void ConfigureLogging_ModifiesReleaseLocatorAndReadsKRevisionEnvVar_AppendsToRelease() { var sut = new SentryStartup(); - var scope = new Scope(null); - Environment.SetEnvironmentVariable("K_REVISION", "1"); - sut.ConfigureLogging(WebHostBuilderContext, LoggingBuilder); + EnvironmentVariableGuard.WithVariable("K_REVISION", "9", () => + { + sut.ConfigureLogging(WebHostBuilderContext, LoggingBuilder); - var provider = LoggingBuilder.Services.BuildServiceProvider(); - var option = provider.GetRequiredService>(); + var provider = LoggingBuilder.Services.BuildServiceProvider(); + var option = provider.GetRequiredService>(); - Assert.Null(option.Value.Release); - Assert.Equal("testhost@16.11.0+1", ReleaseLocator.Resolve(option.Value)); + Assert.Null(option.Value.Release); + Assert.EndsWith("+9", ReleaseLocator.Resolve(option.Value)); + }); } [Fact] diff --git a/test/Sentry.NLog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.NLog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..865a9695c1 --- /dev/null +++ b/test/Sentry.NLog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,83 @@ +[assembly: System.CLSCompliant(true)] +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace NLog +{ + public static class ConfigurationExtensions + { + public static NLog.Config.LoggingConfiguration AddSentry(this NLog.Config.LoggingConfiguration configuration, System.Action? optionsConfig = null) { } + public static NLog.Config.LoggingConfiguration AddSentry(this NLog.Config.LoggingConfiguration configuration, string? dsn, System.Action? optionsConfig = null) { } + public static NLog.Config.LoggingConfiguration AddSentry(this NLog.Config.LoggingConfiguration configuration, string? dsn, string targetName, System.Action? optionsConfig = null) { } + public static void AddTag(this Sentry.NLog.SentryNLogOptions options, string name, NLog.Layouts.Layout layout) { } + } +} +namespace Sentry.NLog +{ + [NLog.Config.NLogConfigurationItem] + public class SentryNLogOptions : Sentry.SentryOptions + { + public SentryNLogOptions() { } + [NLog.Config.NLogConfigurationIgnoreProperty] + public NLog.Layouts.Layout? BreadcrumbCategoryLayout { get; set; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public NLog.Layouts.Layout? BreadcrumbLayout { get; set; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public NLog.Layouts.Layout? DsnLayout { get; set; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public NLog.Layouts.Layout? EnvironmentLayout { get; set; } + public System.TimeSpan FlushTimeout { get; set; } + public bool IgnoreEventsWithNoException { get; set; } + public bool IncludeEventDataOnBreadcrumbs { get; set; } + public bool IncludeEventPropertiesAsTags { get; set; } + public bool InitializeSdk { get; set; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public NLog.Layouts.Layout? Layout { get; set; } + public NLog.LogLevel? MinimumBreadcrumbLevel { get; set; } + public NLog.LogLevel? MinimumEventLevel { get; set; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public NLog.Layouts.Layout? ReleaseLayout { get; set; } + public int ShutdownTimeoutSeconds { get; set; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public System.Collections.Generic.IList Tags { get; } + [NLog.Config.NLogConfigurationIgnoreProperty] + public Sentry.NLog.SentryNLogUser? User { get; set; } + } + [NLog.Config.NLogConfigurationItem] + public class SentryNLogUser + { + public SentryNLogUser() { } + public NLog.Layouts.Layout? Email { get; set; } + public NLog.Layouts.Layout? Id { get; set; } + public NLog.Layouts.Layout? IpAddress { get; set; } + [NLog.Config.ArrayParameter(typeof(NLog.Targets.TargetPropertyWithContext?), "other")] + public System.Collections.Generic.IList? Other { get; } + public NLog.Layouts.Layout? Username { get; set; } + } + [NLog.Targets.Target("Sentry")] + public sealed class SentryTarget : NLog.Targets.TargetWithContext + { + public SentryTarget() { } + public SentryTarget(Sentry.NLog.SentryNLogOptions options) { } + public NLog.Layouts.Layout? BreadcrumbCategory { get; set; } + public NLog.Layouts.Layout? BreadcrumbLayout { get; set; } + public NLog.Layouts.Layout? Dsn { get; set; } + public NLog.Layouts.Layout? Environment { get; set; } + public int FlushTimeoutSeconds { get; set; } + public bool IgnoreEventsWithNoException { get; set; } + public bool IncludeEventDataOnBreadcrumbs { get; set; } + public bool IncludeEventPropertiesAsTags { get; set; } + public bool InitializeSdk { get; set; } + public string MinimumBreadcrumbLevel { get; set; } + public string MinimumEventLevel { get; set; } + [NLog.Config.Advanced] + public Sentry.NLog.SentryNLogOptions Options { get; } + public NLog.Layouts.Layout? Release { get; set; } + public int ShutdownTimeoutSeconds { get; set; } + [NLog.Config.ArrayParameter(typeof(NLog.Targets.TargetPropertyWithContext), "tag")] + public System.Collections.Generic.IList Tags { get; } + public Sentry.NLog.SentryNLogUser? User { get; set; } + protected override void CloseTarget() { } + protected override void FlushAsync(NLog.Common.AsyncContinuation asyncContinuation) { } + protected override void InitializeTarget() { } + protected override void Write(NLog.LogEventInfo logEvent) { } + } +} \ No newline at end of file diff --git a/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj b/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj index edb5fa7e45..96fb9669b0 100644 --- a/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj +++ b/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;netcoreapp2.1;net461 diff --git a/test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..7353702180 --- /dev/null +++ b/test/Sentry.Serilog.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,73 @@ +[assembly: System.CLSCompliant(true)] +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Sentry.Serilog +{ + public class SentrySerilogOptions : Sentry.SentryOptions + { + public SentrySerilogOptions() { } + public System.IFormatProvider? FormatProvider { get; set; } + public bool InitializeSdk { get; set; } + public Serilog.Events.LogEventLevel MinimumBreadcrumbLevel { get; set; } + public Serilog.Events.LogEventLevel MinimumEventLevel { get; set; } + public Serilog.Formatting.ITextFormatter? TextFormatter { get; set; } + } +} +namespace Serilog +{ + public static class SentrySinkExtensions + { + public static void ConfigureSentrySerilogOptions( + Sentry.Serilog.SentrySerilogOptions sentrySerilogOptions, + string? dsn = null, + Serilog.Events.LogEventLevel? minimumEventLevel = default, + Serilog.Events.LogEventLevel? minimumBreadcrumbLevel = default, + System.IFormatProvider? formatProvider = null, + Serilog.Formatting.ITextFormatter? textFormatter = null, + bool? sendDefaultPii = default, + bool? isEnvironmentUser = default, + string? serverName = null, + bool? attachStackTrace = default, + int? maxBreadcrumbs = default, + float? sampleRate = default, + string? release = null, + string? environment = null, + int? maxQueueItems = default, + System.TimeSpan? shutdownTimeout = default, + System.Net.DecompressionMethods? decompressionMethods = default, + System.IO.Compression.CompressionLevel? requestBodyCompressionLevel = default, + bool? requestBodyCompressionBuffered = default, + bool? debug = default, + Sentry.SentryLevel? diagnosticLevel = default, + bool? reportAssemblies = default, + Sentry.DeduplicateMode? deduplicateMode = default, + bool? initializeSdk = default, + System.Collections.Generic.Dictionary? defaultTags = null) { } + public static Serilog.LoggerConfiguration Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action configureOptions) { } + public static Serilog.LoggerConfiguration Sentry( + this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, + string? dsn = null, + Serilog.Events.LogEventLevel minimumBreadcrumbLevel = 2, + Serilog.Events.LogEventLevel minimumEventLevel = 4, + System.IFormatProvider? formatProvider = null, + Serilog.Formatting.ITextFormatter? textFormatter = null, + bool? sendDefaultPii = default, + bool? isEnvironmentUser = default, + string? serverName = null, + bool? attachStackTrace = default, + int? maxBreadcrumbs = default, + float? sampleRate = default, + string? release = null, + string? environment = null, + int? maxQueueItems = default, + System.TimeSpan? shutdownTimeout = default, + System.Net.DecompressionMethods? decompressionMethods = default, + System.IO.Compression.CompressionLevel? requestBodyCompressionLevel = default, + bool? requestBodyCompressionBuffered = default, + bool? debug = default, + Sentry.SentryLevel? diagnosticLevel = default, + bool? reportAssemblies = default, + Sentry.DeduplicateMode? deduplicateMode = default, + bool? initializeSdk = default, + System.Collections.Generic.Dictionary? defaultTags = null) { } + } +} \ No newline at end of file diff --git a/test/Sentry.Serilog.Tests/AspNetSentrySdkTestFixture.cs b/test/Sentry.Serilog.Tests/AspNetSentrySdkTestFixture.cs index a5868abca4..de82330abd 100644 --- a/test/Sentry.Serilog.Tests/AspNetSentrySdkTestFixture.cs +++ b/test/Sentry.Serilog.Tests/AspNetSentrySdkTestFixture.cs @@ -35,7 +35,13 @@ protected override void ConfigureBuilder(WebHostBuilder builder) ConfigureApp = app => { #if NETCOREAPP3_1_OR_GREATER - app.UseExceptionHandler("/error"); + app.UseExceptionHandler(new ExceptionHandlerOptions + { +#if NET6_0_OR_GREATER + AllowStatusCode404Response = true, +#endif + ExceptionHandlingPath = "/error" + }); #endif }; diff --git a/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj b/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj index d5edf2bacf..ab88870e93 100644 --- a/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj +++ b/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;netcoreapp2.1;net461 diff --git a/test/Sentry.Testing/Sentry.Testing.csproj b/test/Sentry.Testing/Sentry.Testing.csproj index 094c334f03..a6cba1a869 100644 --- a/test/Sentry.Testing/Sentry.Testing.csproj +++ b/test/Sentry.Testing/Sentry.Testing.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;netcoreapp2.1;net461 false @@ -20,4 +20,8 @@ + + + + diff --git a/test/Sentry.Testing/StreamExtensions.cs b/test/Sentry.Testing/StreamExtensions.cs index 4912194267..e2526c73f7 100644 --- a/test/Sentry.Testing/StreamExtensions.cs +++ b/test/Sentry.Testing/StreamExtensions.cs @@ -2,13 +2,12 @@ using System.IO; using System.Text; using System.Threading.Tasks; +using Sentry.Internal; namespace Sentry.Testing { public static class StreamExtensions { - private static readonly Random _random = new(); - public static async Task FillWithRandomBytesAsync(this Stream stream, long length) { var remainingLength = length; @@ -16,7 +15,7 @@ public static async Task FillWithRandomBytesAsync(this Stream stream, long lengt while (remainingLength > 0) { - _random.NextBytes(buffer); + SynchronizedRandom.NextBytes(buffer); var bytesToCopy = (int)Math.Min(remainingLength, buffer.Length); await stream.WriteAsync(buffer, 0, bytesToCopy); diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..95fa8c58dc --- /dev/null +++ b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,1301 @@ +[assembly: System.CLSCompliant(true)] +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Sentry +{ + [System.Diagnostics.DebuggerDisplay("{FileName}")] + public class Attachment + { + public Attachment(Sentry.AttachmentType type, Sentry.IAttachmentContent content, string fileName, string? contentType) { } + public Sentry.IAttachmentContent Content { get; } + public string? ContentType { get; } + public string FileName { get; } + public Sentry.AttachmentType Type { get; } + } + public enum AttachmentType + { + Default = 0, + Minidump = 1, + AppleCrashReport = 2, + UnrealContext = 3, + UnrealLogs = 4, + } + [System.Diagnostics.DebuggerDisplay("Message: {Message}, Type: {Type}")] + public sealed class Breadcrumb : Sentry.IJsonSerializable + { + public Breadcrumb(string message, string type, System.Collections.Generic.IReadOnlyDictionary? data = null, string? category = null, Sentry.BreadcrumbLevel level = 0) { } + public string? Category { get; } + public System.Collections.Generic.IReadOnlyDictionary? Data { get; } + public Sentry.BreadcrumbLevel Level { get; } + public string? Message { get; } + public System.DateTimeOffset Timestamp { get; } + public string? Type { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Breadcrumb FromJson(System.Text.Json.JsonElement json) { } + } + public enum BreadcrumbLevel + { + [System.Runtime.Serialization.EnumMember(Value="debug")] + Debug = -1, + [System.Runtime.Serialization.EnumMember(Value="info")] + Info = 0, + [System.Runtime.Serialization.EnumMember(Value="warning")] + Warning = 1, + [System.Runtime.Serialization.EnumMember(Value="error")] + Error = 2, + [System.Runtime.Serialization.EnumMember(Value="critical")] + Critical = 3, + } + public static class Constants + { + public const int DefaultMaxBreadcrumbs = 100; + public const string DisableSdkDsnValue = ""; + public const string Platform = "csharp"; + public const int ProtocolVersion = 7; + } + public sealed class Contexts : System.Collections.Concurrent.ConcurrentDictionary, Sentry.IJsonSerializable + { + public Contexts() { } + public Sentry.Protocol.App App { get; } + public Sentry.Protocol.Browser Browser { get; } + public Sentry.Protocol.Device Device { get; } + public Sentry.Protocol.Gpu Gpu { get; } + public Sentry.Protocol.OperatingSystem OperatingSystem { get; } + public Sentry.Protocol.Runtime Runtime { get; } + public Sentry.Protocol.Trace Trace { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Contexts FromJson(System.Text.Json.JsonElement json) { } + } + [System.Flags] + public enum DeduplicateMode + { + SameEvent = 1, + SameExceptionInstance = 2, + InnerException = 4, + AggregateException = 8, + All = 2147483647, + } + public class DefaultSentryScopeStateProcessor : Sentry.ISentryScopeStateProcessor + { + public DefaultSentryScopeStateProcessor() { } + public void Apply(Sentry.Scope scope, object state) { } + } + [System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.All)] + public class DsnAttribute : System.Attribute + { + public DsnAttribute(string dsn) { } + public string Dsn { get; } + } + public static class EventLikeExtensions + { + public static bool HasUser(this Sentry.IEventLike eventLike) { } + public static void SetFingerprint(this Sentry.IEventLike eventLike, System.Collections.Generic.IEnumerable fingerprint) { } + public static void SetFingerprint(this Sentry.IEventLike eventLike, params string[] fingerprint) { } + } + public class FileAttachmentContent : Sentry.IAttachmentContent + { + public FileAttachmentContent(string filePath) { } + public System.IO.Stream GetStream() { } + } + public static class HasBreadcrumbsExtensions + { + public static void AddBreadcrumb(this Sentry.IHasBreadcrumbs hasBreadcrumbs, string message, string? category, string? type, System.ValueTuple? dataPair = default, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(this Sentry.IHasBreadcrumbs hasBreadcrumbs, string message, string? category = null, string? type = null, System.Collections.Generic.IReadOnlyDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(this Sentry.IHasBreadcrumbs hasBreadcrumbs, System.DateTimeOffset? timestamp, string message, string? category = null, string? type = null, System.Collections.Generic.IReadOnlyDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + } + public static class HasExtraExtensions + { + public static void SetExtras(this Sentry.IHasExtra hasExtra, System.Collections.Generic.IEnumerable> values) { } + } + public static class HasTagsExtensions + { + public static void SetTags(this Sentry.IHasTags hasTags, System.Collections.Generic.IEnumerable> tags) { } + } + public static class HubExtensions + { + public static void AddBreadcrumb(this Sentry.IHub hub, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(this Sentry.IHub hub, Sentry.Infrastructure.ISystemClock? clock, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void LockScope(this Sentry.IHub hub) { } + public static System.IDisposable PushAndLockScope(this Sentry.IHub hub) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, Sentry.ITransactionContext context) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, string name, string operation) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, string name, string operation, Sentry.SentryTraceHeader traceHeader) { } + public static Sentry.ITransaction StartTransaction(this Sentry.IHub hub, string name, string operation, string? description) { } + public static void UnlockScope(this Sentry.IHub hub) { } + } + public interface IAttachmentContent + { + System.IO.Stream GetStream(); + } + public interface IEventLike : Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags + { + Sentry.Contexts Contexts { get; set; } + string? Environment { get; set; } + System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + Sentry.SentryLevel? Level { get; set; } + string? Platform { get; set; } + string? Release { get; set; } + Sentry.Request Request { get; set; } + Sentry.SdkVersion Sdk { get; } + string? TransactionName { get; set; } + Sentry.User User { get; set; } + } + public interface IHasBreadcrumbs + { + System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + void AddBreadcrumb(Sentry.Breadcrumb breadcrumb); + } + public interface IHasExtra + { + System.Collections.Generic.IReadOnlyDictionary Extra { get; } + void SetExtra(string key, object? value); + } + public interface IHasTags + { + System.Collections.Generic.IReadOnlyDictionary Tags { get; } + void SetTag(string key, string value); + void UnsetTag(string key); + } + public interface IHub : Sentry.ISentryClient, Sentry.ISentryScopeManager + { + Sentry.SentryId LastEventId { get; } + void BindException(System.Exception exception, Sentry.ISpan span); + void EndSession(Sentry.SessionEndStatus status = 0); + Sentry.ISpan? GetSpan(); + Sentry.SentryTraceHeader? GetTraceHeader(); + void PauseSession(); + void ResumeSession(); + void StartSession(); + Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext); + } + public interface IJsonSerializable + { + void WriteTo(System.Text.Json.Utf8JsonWriter writer); + } + public interface IScopeObserver + { + void AddBreadcrumb(Sentry.Breadcrumb breadcrumb); + void SetExtra(string key, object? value); + void SetTag(string key, string value); + void SetUser(Sentry.User? user); + void UnsetTag(string key); + } + public interface ISentryClient + { + bool IsEnabled { get; } + Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope = null); + void CaptureSession(Sentry.SessionUpdate sessionUpdate); + void CaptureTransaction(Sentry.Transaction transaction); + void CaptureUserFeedback(Sentry.UserFeedback userFeedback); + System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout); + } + public interface ISentryScopeManager + { + void BindClient(Sentry.ISentryClient client); + void ConfigureScope(System.Action configureScope); + System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope); + System.IDisposable PushScope(); + System.IDisposable PushScope(TState state); + void WithScope(System.Action scopeCallback); + } + public interface ISentryScopeStateProcessor + { + void Apply(Sentry.Scope scope, object state); + } + public interface ISession + { + string? DistinctId { get; } + string? Environment { get; } + int ErrorCount { get; } + Sentry.SentryId Id { get; } + string? IpAddress { get; } + string Release { get; } + System.DateTimeOffset StartTimestamp { get; } + string? UserAgent { get; } + } + public interface ISpan : Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpanContext, Sentry.ISpanData, Sentry.Protocol.ITraceContext + { + new string? Description { get; set; } + new string Operation { get; set; } + new Sentry.SpanStatus? Status { get; set; } + void Finish(); + void Finish(Sentry.SpanStatus status); + void Finish(System.Exception exception); + void Finish(System.Exception exception, Sentry.SpanStatus status); + Sentry.ISpan StartChild(string operation); + } + public interface ISpanContext : Sentry.Protocol.ITraceContext { } + public interface ISpanData : Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpanContext, Sentry.Protocol.ITraceContext + { + System.DateTimeOffset? EndTimestamp { get; } + bool IsFinished { get; } + System.DateTimeOffset StartTimestamp { get; } + Sentry.SentryTraceHeader GetTraceHeader(); + } + public interface ITransaction : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpan, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransactionContext, Sentry.ITransactionData, Sentry.Protocol.ITraceContext + { + new bool? IsParentSampled { get; set; } + new string Name { get; set; } + System.Collections.Generic.IReadOnlyCollection Spans { get; } + Sentry.ISpan? GetLastActiveSpan(); + } + public interface ITransactionContext : Sentry.ISpanContext, Sentry.Protocol.ITraceContext + { + bool? IsParentSampled { get; } + string Name { get; } + } + public interface ITransactionData : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransactionContext, Sentry.Protocol.ITraceContext { } + public sealed class Package : Sentry.IJsonSerializable + { + public Package(string name, string version) { } + public string Name { get; } + public string Version { get; } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Package FromJson(System.Text.Json.JsonElement json) { } + } + public enum ReportAssembliesMode + { + None = 0, + Version = 1, + InformationalVersion = 2, + } + public sealed class Request : Sentry.IJsonSerializable + { + public Request() { } + public string? Cookies { get; set; } + public object? Data { get; set; } + public System.Collections.Generic.IDictionary Env { get; } + public System.Collections.Generic.IDictionary Headers { get; } + public string? Method { get; set; } + public System.Collections.Generic.IDictionary Other { get; } + public string? QueryString { get; set; } + public string? Url { get; set; } + public Sentry.Request Clone() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Request FromJson(System.Text.Json.JsonElement json) { } + } + public class Scope : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags + { + public Scope(Sentry.SentryOptions? options) { } + public System.Collections.Generic.IReadOnlyCollection Attachments { get; } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Environment { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public Sentry.SentryLevel? Level { get; set; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.ITransaction? Transaction { get; set; } + public string? TransactionName { get; set; } + public Sentry.User User { get; set; } + public void AddAttachment(Sentry.Attachment attachment) { } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public void Apply(Sentry.IEventLike other) { } + public void Apply(Sentry.Scope other) { } + public void Apply(object state) { } + public void ClearAttachments() { } + public Sentry.Scope Clone() { } + public Sentry.ISpan? GetSpan() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + } + public static class ScopeExtensions + { + public static void AddAttachment(this Sentry.Scope scope, string filePath, Sentry.AttachmentType type = 0, string? contentType = null) { } + public static void AddAttachment(this Sentry.Scope scope, byte[] data, string fileName, Sentry.AttachmentType type = 0, string? contentType = null) { } + public static void AddAttachment(this Sentry.Scope scope, System.IO.Stream stream, string fileName, Sentry.AttachmentType type = 0, string? contentType = null) { } + public static void AddEventProcessor(this Sentry.Scope scope, Sentry.Extensibility.ISentryEventProcessor processor) { } + public static void AddEventProcessor(this Sentry.Scope scope, System.Func processor) { } + public static void AddEventProcessors(this Sentry.Scope scope, System.Collections.Generic.IEnumerable processors) { } + public static void AddExceptionProcessor(this Sentry.Scope scope, Sentry.Extensibility.ISentryEventExceptionProcessor processor) { } + public static void AddExceptionProcessors(this Sentry.Scope scope, System.Collections.Generic.IEnumerable processors) { } + public static System.Collections.Generic.IEnumerable GetAllEventProcessors(this Sentry.Scope scope) { } + public static System.Collections.Generic.IEnumerable GetAllExceptionProcessors(this Sentry.Scope scope) { } + } + public sealed class SdkVersion : Sentry.IJsonSerializable + { + public SdkVersion() { } + public string? Name { get; set; } + public System.Collections.Generic.IEnumerable Packages { get; } + public string? Version { get; set; } + public void AddPackage(string name, string version) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SdkVersion FromJson(System.Text.Json.JsonElement json) { } + } + public class SentryClient : Sentry.ISentryClient, System.IDisposable + { + public SentryClient(Sentry.SentryOptions options) { } + public bool IsEnabled { get; } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent? @event, Sentry.Scope? scope = null) { } + public void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public void CaptureTransaction(Sentry.Transaction transaction) { } + public void CaptureUserFeedback(Sentry.UserFeedback userFeedback) { } + public void Dispose() { } + public System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + } + public static class SentryClientExtensions + { + public static Sentry.SentryId CaptureException(this Sentry.ISentryClient client, System.Exception ex) { } + public static Sentry.SentryId CaptureMessage(this Sentry.ISentryClient client, string message, Sentry.SentryLevel level = 1) { } + public static void CaptureUserFeedback(this Sentry.ISentryClient client, Sentry.SentryId eventId, string email, string comments, string? name = null) { } + } + [System.Diagnostics.DebuggerDisplay("{GetType().Name,nq}: {EventId,nq}")] + public sealed class SentryEvent : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.IJsonSerializable + { + public SentryEvent() { } + public SentryEvent(System.Exception? exception) { } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Environment { get; set; } + public Sentry.SentryId EventId { get; } + public System.Exception? Exception { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public Sentry.SentryLevel? Level { get; set; } + public string? Logger { get; set; } + public Sentry.SentryMessage? Message { get; set; } + public System.Collections.Generic.IDictionary Modules { get; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public System.Collections.Generic.IEnumerable? SentryExceptions { get; set; } + public System.Collections.Generic.IEnumerable? SentryThreads { get; set; } + public string? ServerName { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public System.DateTimeOffset Timestamp { get; } + public string? TransactionName { get; set; } + public Sentry.User User { get; set; } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryEvent FromJson(System.Text.Json.JsonElement json) { } + } + public static class SentryEventExtensions { } + public class SentryHttpMessageHandler : System.Net.Http.DelegatingHandler + { + public SentryHttpMessageHandler() { } + public SentryHttpMessageHandler(Sentry.IHub hub) { } + public SentryHttpMessageHandler(System.Net.Http.HttpMessageHandler innerHandler) { } + public SentryHttpMessageHandler(System.Net.Http.HttpMessageHandler innerHandler, Sentry.IHub hub) { } + protected override System.Threading.Tasks.Task SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { } + } + public readonly struct SentryId : Sentry.IJsonSerializable, System.IEquatable + { + public static readonly Sentry.SentryId Empty; + public SentryId(System.Guid guid) { } + public bool Equals(Sentry.SentryId other) { } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public override string ToString() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryId Create() { } + public static Sentry.SentryId FromJson(System.Text.Json.JsonElement json) { } + public static Sentry.SentryId Parse(string value) { } + public static System.Guid op_Implicit(Sentry.SentryId sentryId) { } + public static Sentry.SentryId op_Implicit(System.Guid guid) { } + public static bool operator !=(Sentry.SentryId left, Sentry.SentryId right) { } + public static bool operator ==(Sentry.SentryId left, Sentry.SentryId right) { } + } + public enum SentryLevel : short + { + [System.Runtime.Serialization.EnumMember(Value="debug")] + Debug = 0, + [System.Runtime.Serialization.EnumMember(Value="info")] + Info = 1, + [System.Runtime.Serialization.EnumMember(Value="warning")] + Warning = 2, + [System.Runtime.Serialization.EnumMember(Value="error")] + Error = 3, + [System.Runtime.Serialization.EnumMember(Value="fatal")] + Fatal = 4, + } + public sealed class SentryMessage : Sentry.IJsonSerializable + { + public SentryMessage() { } + public string? Formatted { get; set; } + public string? Message { get; set; } + public System.Collections.Generic.IEnumerable? Params { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryMessage FromJson(System.Text.Json.JsonElement json) { } + public static Sentry.SentryMessage op_Implicit(string? message) { } + } + public class SentryOptions + { + public SentryOptions() { } + public bool AttachStacktrace { get; set; } + public bool AutoSessionTracking { get; set; } + public System.TimeSpan AutoSessionTrackingInterval { get; set; } + public System.Func? BeforeBreadcrumb { get; set; } + public System.Func? BeforeSend { get; set; } + public string? CacheDirectoryPath { get; set; } + public System.Action? ConfigureClient { get; set; } + public System.Func? CrashedLastRun { get; set; } + public System.Func? CreateHttpClientHandler { get; set; } + public bool Debug { get; set; } + public System.Net.DecompressionMethods DecompressionMethods { get; set; } + public Sentry.DeduplicateMode DeduplicateMode { get; set; } + public System.Collections.Generic.Dictionary DefaultTags { get; } + public Sentry.StartupTimeDetectionMode DetectStartupTime { get; set; } + public Sentry.SentryLevel DiagnosticLevel { get; set; } + public Sentry.Extensibility.IDiagnosticLogger? DiagnosticLogger { get; set; } + public string? Dsn { get; set; } + public bool EnableScopeSync { get; set; } + public string? Environment { get; set; } + public System.Net.IWebProxy? HttpProxy { get; set; } + public System.TimeSpan InitCacheFlushTimeout { get; set; } + public bool IsEnvironmentUser { get; set; } + public bool IsGlobalModeEnabled { get; set; } + public long MaxAttachmentSize { get; set; } + public int MaxBreadcrumbs { get; set; } + public int MaxCacheItems { get; set; } + public int MaxQueueItems { get; set; } + public string? Release { get; set; } + [System.Obsolete("Use ReportAssembliesMode instead", false)] + public bool ReportAssemblies { get; set; } + public Sentry.ReportAssembliesMode ReportAssembliesMode { get; set; } + public bool RequestBodyCompressionBuffered { get; set; } + public System.IO.Compression.CompressionLevel RequestBodyCompressionLevel { get; set; } + public float? SampleRate { get; set; } + public Sentry.IScopeObserver? ScopeObserver { get; set; } + public bool SendDefaultPii { get; set; } + public Sentry.ISentryScopeStateProcessor SentryScopeStateProcessor { get; set; } + public string? ServerName { get; set; } + public System.TimeSpan ShutdownTimeout { get; set; } + public Sentry.StackTraceMode StackTraceMode { get; set; } + public double TracesSampleRate { get; set; } + public System.Func? TracesSampler { get; set; } + } + public static class SentryOptionsExtensions + { + public static void AddEventProcessor(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryEventProcessor processor) { } + public static void AddEventProcessorProvider(this Sentry.SentryOptions options, System.Func> processorProvider) { } + public static void AddEventProcessors(this Sentry.SentryOptions options, System.Collections.Generic.IEnumerable processors) { } + public static void AddExceptionFilter(this Sentry.SentryOptions options, Sentry.Extensibility.IExceptionFilter exceptionFilter) { } + public static void AddExceptionFilterForType(this Sentry.SentryOptions options) + where TException : System.Exception { } + public static void AddExceptionProcessor(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryEventExceptionProcessor processor) { } + public static void AddExceptionProcessorProvider(this Sentry.SentryOptions options, System.Func> processorProvider) { } + public static void AddExceptionProcessors(this Sentry.SentryOptions options, System.Collections.Generic.IEnumerable processors) { } + public static void AddInAppExclude(this Sentry.SentryOptions options, string prefix) { } + public static void AddInAppInclude(this Sentry.SentryOptions options, string prefix) { } + public static void AddIntegration(this Sentry.SentryOptions options, Sentry.Integrations.ISdkIntegration integration) { } + public static void ApplyDefaultTags(this Sentry.SentryOptions options, Sentry.IHasTags hasTags) { } + public static void DisableAppDomainProcessExitFlush(this Sentry.SentryOptions options) { } + public static void DisableAppDomainUnhandledExceptionCapture(this Sentry.SentryOptions options) { } + public static void DisableDiagnosticSourceIntegration(this Sentry.SentryOptions options) { } + public static void DisableDuplicateEventDetection(this Sentry.SentryOptions options) { } + public static void DisableTaskUnobservedTaskExceptionCapture(this Sentry.SentryOptions options) { } + public static System.Collections.Generic.IEnumerable GetAllEventProcessors(this Sentry.SentryOptions options) { } + public static System.Collections.Generic.IEnumerable GetAllExceptionProcessors(this Sentry.SentryOptions options) { } + public static Sentry.SentryOptions UseStackTraceFactory(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryStackTraceFactory sentryStackTraceFactory) { } + } + public static class SentrySdk + { + public static bool IsEnabled { get; } + public static Sentry.SentryId LastEventId { get; } + public static void AddBreadcrumb(string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void AddBreadcrumb(Sentry.Infrastructure.ISystemClock? clock, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public static void BindClient(Sentry.ISentryClient client) { } + public static void BindException(System.Exception exception, Sentry.ISpan span) { } + public static Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt) { } + public static Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope) { } + public static Sentry.SentryId CaptureException(System.Exception exception) { } + public static Sentry.SentryId CaptureMessage(string message, Sentry.SentryLevel level = 1) { } + public static void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public static void CaptureTransaction(Sentry.Transaction transaction) { } + public static void CaptureUserFeedback(Sentry.UserFeedback userFeedback) { } + public static void CaptureUserFeedback(Sentry.SentryId eventId, string email, string comments, string? name = null) { } + public static void Close() { } + public static void ConfigureScope(System.Action configureScope) { } + public static System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope) { } + public static void EndSession(Sentry.SessionEndStatus status = 0) { } + public static System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + public static Sentry.ISpan? GetSpan() { } + public static Sentry.SentryTraceHeader? GetTraceHeader() { } + public static System.IDisposable Init() { } + public static System.IDisposable Init(Sentry.SentryOptions options) { } + public static System.IDisposable Init(System.Action? configureOptions) { } + public static System.IDisposable Init(string? dsn) { } + public static void PauseSession() { } + public static System.IDisposable PushScope() { } + public static System.IDisposable PushScope(TState state) { } + public static void ResumeSession() { } + public static void StartSession() { } + public static Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context) { } + public static Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public static Sentry.ITransaction StartTransaction(string name, string operation) { } + public static Sentry.ITransaction StartTransaction(string name, string operation, Sentry.SentryTraceHeader traceHeader) { } + public static Sentry.ITransaction StartTransaction(string name, string operation, string? description) { } + public static void WithScope(System.Action scopeCallback) { } + } + public sealed class SentryStackFrame : Sentry.IJsonSerializable + { + public SentryStackFrame() { } + public string? AbsolutePath { get; set; } + public int? ColumnNumber { get; set; } + public string? ContextLine { get; set; } + public string? FileName { get; set; } + public System.Collections.Generic.IList FramesOmitted { get; } + public string? Function { get; set; } + public long ImageAddress { get; set; } + public bool? InApp { get; set; } + public string? InstructionAddress { get; set; } + public long? InstructionOffset { get; set; } + public int? LineNumber { get; set; } + public string? Module { get; set; } + public string? Package { get; set; } + public string? Platform { get; set; } + public System.Collections.Generic.IList PostContext { get; } + public System.Collections.Generic.IList PreContext { get; } + public long? SymbolAddress { get; set; } + public System.Collections.Generic.IDictionary Vars { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryStackFrame FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class SentryStackTrace : Sentry.IJsonSerializable + { + public SentryStackTrace() { } + public System.Collections.Generic.IList Frames { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryStackTrace FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class SentryThread : Sentry.IJsonSerializable + { + public SentryThread() { } + public bool? Crashed { get; set; } + public bool? Current { get; set; } + public int? Id { get; set; } + public string? Name { get; set; } + public Sentry.SentryStackTrace? Stacktrace { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SentryThread FromJson(System.Text.Json.JsonElement json) { } + } + public class SentryTraceHeader + { + public SentryTraceHeader(Sentry.SentryId traceId, Sentry.SpanId spanSpanId, bool? isSampled) { } + public bool? IsSampled { get; } + public Sentry.SpanId SpanId { get; } + public Sentry.SentryId TraceId { get; } + public override string ToString() { } + public static Sentry.SentryTraceHeader Parse(string value) { } + } + public sealed class SentryValues : Sentry.IJsonSerializable + { + public SentryValues(System.Collections.Generic.IEnumerable? values) { } + public System.Collections.Generic.IEnumerable Values { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + } + public class Session : Sentry.ISession + { + public Session(string? distinctId, string release, string? environment) { } + public string? DistinctId { get; } + public string? Environment { get; } + public int ErrorCount { get; } + public Sentry.SentryId Id { get; } + public string? IpAddress { get; } + public string Release { get; } + public System.DateTimeOffset StartTimestamp { get; } + public string? UserAgent { get; } + public void ReportError() { } + } + public enum SessionEndStatus + { + Exited = 0, + Crashed = 1, + Abnormal = 2, + } + public class SessionUpdate : Sentry.IJsonSerializable, Sentry.ISession + { + public SessionUpdate(Sentry.SessionUpdate sessionUpdate, bool isInitial) { } + public SessionUpdate(Sentry.SessionUpdate sessionUpdate, bool isInitial, Sentry.SessionEndStatus? endStatus) { } + public SessionUpdate(Sentry.ISession session, bool isInitial, System.DateTimeOffset timestamp, int sequenceNumber, Sentry.SessionEndStatus? endStatus) { } + public SessionUpdate(Sentry.SentryId id, string? distinctId, System.DateTimeOffset startTimestamp, string release, string? environment, string? ipAddress, string? userAgent, int errorCount, bool isInitial, System.DateTimeOffset timestamp, int sequenceNumber, Sentry.SessionEndStatus? endStatus) { } + public string? DistinctId { get; } + public System.TimeSpan Duration { get; } + public Sentry.SessionEndStatus? EndStatus { get; } + public string? Environment { get; } + public int ErrorCount { get; } + public Sentry.SentryId Id { get; } + public string? IpAddress { get; } + public bool IsInitial { get; } + public string Release { get; } + public int SequenceNumber { get; } + public System.DateTimeOffset StartTimestamp { get; } + public System.DateTimeOffset Timestamp { get; } + public string? UserAgent { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SessionUpdate FromJson(System.Text.Json.JsonElement json) { } + } + public class Span : Sentry.IHasExtra, Sentry.IHasTags, Sentry.IJsonSerializable, Sentry.ISpanContext, Sentry.ISpanData, Sentry.Protocol.ITraceContext + { + public Span(Sentry.ISpan tracer) { } + public Span(Sentry.SpanId? parentSpanId, string operation) { } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public bool IsFinished { get; } + public bool? IsSampled { get; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; } + public Sentry.SpanId SpanId { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Span FromJson(System.Text.Json.JsonElement json) { } + } + public class SpanContext : Sentry.ISpanContext, Sentry.Protocol.ITraceContext + { + public SpanContext(Sentry.SpanId spanId, Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string operation, string? description, Sentry.SpanStatus? status, bool? isSampled) { } + public string? Description { get; } + public bool? IsSampled { get; } + public string Operation { get; } + public Sentry.SpanId? ParentSpanId { get; } + public Sentry.SpanId SpanId { get; } + public Sentry.SpanStatus? Status { get; } + public Sentry.SentryId TraceId { get; } + } + public static class SpanExtensions + { + public static Sentry.ISpan StartChild(this Sentry.ISpan span, string operation, string? description) { } + } + public readonly struct SpanId : Sentry.IJsonSerializable, System.IEquatable + { + public static readonly Sentry.SpanId Empty; + public SpanId(string value) { } + public bool Equals(Sentry.SpanId other) { } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public override string ToString() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.SpanId Create() { } + public static Sentry.SpanId FromJson(System.Text.Json.JsonElement json) { } + public static Sentry.SpanId Parse(string value) { } + public static string op_Implicit(Sentry.SpanId id) { } + public static bool operator !=(Sentry.SpanId left, Sentry.SpanId right) { } + public static bool operator ==(Sentry.SpanId left, Sentry.SpanId right) { } + } + public enum SpanStatus + { + Ok = 0, + DeadlineExceeded = 1, + Unauthenticated = 2, + PermissionDenied = 3, + NotFound = 4, + ResourceExhausted = 5, + InvalidArgument = 6, + Unimplemented = 7, + Unavailable = 8, + InternalError = 9, + UnknownError = 10, + Cancelled = 11, + AlreadyExists = 12, + FailedPrecondition = 13, + Aborted = 14, + OutOfRange = 15, + DataLoss = 16, + } + public class SpanTracer : Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpan, Sentry.ISpanContext, Sentry.ISpanData, Sentry.Protocol.ITraceContext + { + public SpanTracer(Sentry.IHub hub, Sentry.TransactionTracer transaction, Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string operation) { } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public bool IsFinished { get; } + public bool? IsSampled { get; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; } + public Sentry.SpanId SpanId { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public void Finish() { } + public void Finish(Sentry.SpanStatus status) { } + public void Finish(System.Exception exception) { } + public void Finish(System.Exception exception, Sentry.SpanStatus status) { } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public Sentry.ISpan StartChild(string operation) { } + public void UnsetTag(string key) { } + } + public enum StackTraceMode + { + Original = 0, + Enhanced = 1, + } + public enum StartupTimeDetectionMode + { + None = 0, + Fast = 1, + Best = 2, + } + public class StreamAttachmentContent : Sentry.IAttachmentContent + { + public StreamAttachmentContent(System.IO.Stream stream) { } + public System.IO.Stream GetStream() { } + } + public class Transaction : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.IJsonSerializable, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransactionContext, Sentry.ITransactionData, Sentry.Protocol.ITraceContext + { + public Transaction(Sentry.ITransaction tracer) { } + public Transaction(string name, string operation) { } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public string? Environment { get; set; } + public Sentry.SentryId EventId { get; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public bool IsFinished { get; } + public bool? IsParentSampled { get; set; } + public bool? IsSampled { get; } + public Sentry.SentryLevel? Level { get; set; } + public string Name { get; } + public string Operation { get; } + public Sentry.SpanId? ParentSpanId { get; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public Sentry.SpanId SpanId { get; } + public System.Collections.Generic.IReadOnlyCollection Spans { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public Sentry.User User { get; set; } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public void UnsetTag(string key) { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Transaction FromJson(System.Text.Json.JsonElement json) { } + } + public class TransactionContext : Sentry.SpanContext, Sentry.ISpanContext, Sentry.ITransactionContext, Sentry.Protocol.ITraceContext + { + public TransactionContext(string name, string operation) { } + public TransactionContext(string name, string operation, Sentry.SentryTraceHeader traceHeader) { } + public TransactionContext(string name, string operation, bool? isSampled) { } + public TransactionContext(Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string name, string operation, bool? isParentSampled) { } + public TransactionContext(Sentry.SpanId spanId, Sentry.SpanId? parentSpanId, Sentry.SentryId traceId, string name, string operation, string? description, Sentry.SpanStatus? status, bool? isSampled, bool? isParentSampled) { } + public bool? IsParentSampled { get; } + public string Name { get; } + } + public class TransactionSamplingContext + { + public TransactionSamplingContext(Sentry.ITransactionContext transactionContext, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public System.Collections.Generic.IReadOnlyDictionary CustomSamplingContext { get; } + public Sentry.ITransactionContext TransactionContext { get; } + } + public class TransactionTracer : Sentry.IEventLike, Sentry.IHasBreadcrumbs, Sentry.IHasExtra, Sentry.IHasTags, Sentry.ISpan, Sentry.ISpanContext, Sentry.ISpanData, Sentry.ITransaction, Sentry.ITransactionContext, Sentry.ITransactionData, Sentry.Protocol.ITraceContext + { + public TransactionTracer(Sentry.IHub hub, Sentry.ITransactionContext context) { } + public TransactionTracer(Sentry.IHub hub, string name, string operation) { } + public System.Collections.Generic.IReadOnlyCollection Breadcrumbs { get; } + public Sentry.Contexts Contexts { get; set; } + public string? Description { get; set; } + public System.DateTimeOffset? EndTimestamp { get; } + public string? Environment { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Extra { get; } + public System.Collections.Generic.IReadOnlyList Fingerprint { get; set; } + public bool IsFinished { get; } + public bool? IsParentSampled { get; set; } + public bool? IsSampled { get; } + public Sentry.SentryLevel? Level { get; set; } + public string Name { get; set; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; } + public string? Platform { get; set; } + public string? Release { get; set; } + public Sentry.Request Request { get; set; } + public Sentry.SdkVersion Sdk { get; } + public Sentry.SpanId SpanId { get; } + public System.Collections.Generic.IReadOnlyCollection Spans { get; } + public System.DateTimeOffset StartTimestamp { get; } + public Sentry.SpanStatus? Status { get; set; } + public System.Collections.Generic.IReadOnlyDictionary Tags { get; } + public Sentry.SentryId TraceId { get; } + public Sentry.User User { get; set; } + public void AddBreadcrumb(Sentry.Breadcrumb breadcrumb) { } + public void Finish() { } + public void Finish(Sentry.SpanStatus status) { } + public void Finish(System.Exception exception) { } + public void Finish(System.Exception exception, Sentry.SpanStatus status) { } + public Sentry.ISpan? GetLastActiveSpan() { } + public Sentry.SentryTraceHeader GetTraceHeader() { } + public void SetExtra(string key, object? value) { } + public void SetTag(string key, string value) { } + public Sentry.ISpan StartChild(string operation) { } + public void UnsetTag(string key) { } + } + public sealed class User : Sentry.IJsonSerializable + { + public User() { } + public string? Email { get; set; } + public string? Id { get; set; } + public string? IpAddress { get; set; } + public System.Collections.Generic.IDictionary Other { get; set; } + public string? Username { get; set; } + public Sentry.User Clone() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.User FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class UserFeedback : Sentry.IJsonSerializable + { + public UserFeedback(Sentry.SentryId eventId, string? name, string? email, string? comments) { } + public string? Comments { get; } + public string? Email { get; } + public Sentry.SentryId EventId { get; } + public string? Name { get; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.UserFeedback FromJson(System.Text.Json.JsonElement json) { } + } +} +namespace Sentry.Extensibility +{ + public abstract class BaseRequestPayloadExtractor : Sentry.Extensibility.IRequestPayloadExtractor + { + protected BaseRequestPayloadExtractor() { } + protected abstract object? DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request); + public object? ExtractPayload(Sentry.Extensibility.IHttpRequest request) { } + protected abstract bool IsSupported(Sentry.Extensibility.IHttpRequest request); + } + public class DefaultRequestPayloadExtractor : Sentry.Extensibility.BaseRequestPayloadExtractor + { + public DefaultRequestPayloadExtractor() { } + protected override object? DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) { } + protected override bool IsSupported(Sentry.Extensibility.IHttpRequest request) { } + } + public static class DiagnosticLoggerExtensions + { + public static void LogDebug(this Sentry.Extensibility.IDiagnosticLogger logger, string message) { } + public static void LogDebug(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg) { } + public static void LogDebug(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception? exception = null) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception exception, TArg arg) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception exception, TArg arg, TArg2 arg2) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, System.Exception exception, string message, TArg arg, TArg2 arg2, TArg3 arg3) { } + public static void LogError(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception exception, TArg arg, TArg2 arg2, TArg3 arg3, TArg4 arg4) { } + public static void LogFatal(this Sentry.Extensibility.IDiagnosticLogger logger, string message, System.Exception? exception = null) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2) { } + public static void LogInfo(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2, TArg3 arg3) { } + public static void LogWarning(this Sentry.Extensibility.IDiagnosticLogger logger, string message) { } + public static void LogWarning(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg) { } + public static void LogWarning(this Sentry.Extensibility.IDiagnosticLogger logger, string message, TArg arg, TArg2 arg2) { } + } + public class DisabledHub : Sentry.IHub, Sentry.ISentryClient, Sentry.ISentryScopeManager, System.IDisposable + { + public static readonly Sentry.Extensibility.DisabledHub Instance; + public bool IsEnabled { get; } + public Sentry.SentryId LastEventId { get; } + public void BindClient(Sentry.ISentryClient client) { } + public void BindException(System.Exception exception, Sentry.ISpan span) { } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope = null) { } + public void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public void CaptureTransaction(Sentry.Transaction transaction) { } + public void CaptureUserFeedback(Sentry.UserFeedback userFeedback) { } + public void ConfigureScope(System.Action configureScope) { } + public System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope) { } + public void Dispose() { } + public void EndSession(Sentry.SessionEndStatus status = 0) { } + public System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + public Sentry.ISpan? GetSpan() { } + public Sentry.SentryTraceHeader? GetTraceHeader() { } + public void PauseSession() { } + public System.IDisposable PushScope() { } + public System.IDisposable PushScope(TState state) { } + public void ResumeSession() { } + public void StartSession() { } + public Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public void WithScope(System.Action scopeCallback) { } + } + public class FormRequestPayloadExtractor : Sentry.Extensibility.BaseRequestPayloadExtractor + { + public FormRequestPayloadExtractor() { } + protected override object? DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) { } + protected override bool IsSupported(Sentry.Extensibility.IHttpRequest request) { } + } + public sealed class HubAdapter : Sentry.IHub, Sentry.ISentryClient, Sentry.ISentryScopeManager + { + public static readonly Sentry.Extensibility.HubAdapter Instance; + public bool IsEnabled { get; } + public Sentry.SentryId LastEventId { get; } + public void AddBreadcrumb(string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public void AddBreadcrumb(Sentry.Infrastructure.ISystemClock clock, string message, string? category = null, string? type = null, System.Collections.Generic.IDictionary? data = null, Sentry.BreadcrumbLevel level = 0) { } + public void BindClient(Sentry.ISentryClient client) { } + public void BindException(System.Exception exception, Sentry.ISpan span) { } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt) { } + public Sentry.SentryId CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope? scope) { } + public Sentry.SentryId CaptureException(System.Exception exception) { } + public void CaptureSession(Sentry.SessionUpdate sessionUpdate) { } + public void CaptureTransaction(Sentry.Transaction transaction) { } + public void CaptureUserFeedback(Sentry.UserFeedback sentryUserFeedback) { } + public void ConfigureScope(System.Action configureScope) { } + public System.Threading.Tasks.Task ConfigureScopeAsync(System.Func configureScope) { } + public void EndSession(Sentry.SessionEndStatus status = 0) { } + public System.Threading.Tasks.Task FlushAsync(System.TimeSpan timeout) { } + public Sentry.ISpan? GetSpan() { } + public Sentry.SentryTraceHeader? GetTraceHeader() { } + public void PauseSession() { } + public System.IDisposable PushScope() { } + public System.IDisposable PushScope(TState state) { } + public void ResumeSession() { } + public void StartSession() { } + public Sentry.ITransaction StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { } + public void WithScope(System.Action scopeCallback) { } + } + public interface IDiagnosticLogger + { + bool IsEnabled(Sentry.SentryLevel level); + void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args); + } + public interface IExceptionFilter + { + bool Filter(System.Exception ex); + } + public interface IHttpRequest + { + System.IO.Stream? Body { get; } + long? ContentLength { get; } + string? ContentType { get; } + System.Collections.Generic.IEnumerable>>? Form { get; } + } + public interface IRequestPayloadExtractor + { + object? ExtractPayload(Sentry.Extensibility.IHttpRequest request); + } + public interface ISentryEventExceptionProcessor + { + void Process(System.Exception exception, Sentry.SentryEvent sentryEvent); + } + public interface ISentryEventProcessor + { + Sentry.SentryEvent? Process(Sentry.SentryEvent @event); + } + public interface ISentryStackTraceFactory + { + Sentry.SentryStackTrace? Create(System.Exception? exception = null); + } + public class RequestBodyExtractionDispatcher : Sentry.Extensibility.IRequestPayloadExtractor + { + public RequestBodyExtractionDispatcher(System.Collections.Generic.IEnumerable extractors, Sentry.SentryOptions options, System.Func sizeSwitch) { } + public object? ExtractPayload(Sentry.Extensibility.IHttpRequest request) { } + } + public enum RequestSize + { + None = 0, + Small = 1, + Medium = 2, + Always = 3, + } + public abstract class SentryEventExceptionProcessor : Sentry.Extensibility.ISentryEventExceptionProcessor + where TException : System.Exception + { + protected SentryEventExceptionProcessor() { } + public void Process(System.Exception? exception, Sentry.SentryEvent sentryEvent) { } + protected abstract void ProcessException(TException exception, Sentry.SentryEvent sentryEvent); + } + public class SentryStackTraceFactory : Sentry.Extensibility.ISentryStackTraceFactory + { + public SentryStackTraceFactory(Sentry.SentryOptions options) { } + public virtual Sentry.SentryStackTrace? Create(System.Exception? exception = null) { } + protected virtual Sentry.SentryStackFrame CreateFrame(System.Diagnostics.StackFrame stackFrame, bool isCurrentStackTrace) { } + protected virtual System.Diagnostics.StackTrace CreateStackTrace(System.Exception? exception) { } + protected virtual System.Reflection.MethodBase? GetMethod(System.Diagnostics.StackFrame stackFrame) { } + protected Sentry.SentryStackFrame InternalCreateFrame(System.Diagnostics.StackFrame stackFrame, bool demangle) { } + } +} +namespace Sentry.Http +{ + public interface ISentryHttpClientFactory + { + System.Net.Http.HttpClient Create(Sentry.SentryOptions options); + } +} +namespace Sentry.Infrastructure +{ + public class ConsoleDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public ConsoleDiagnosticLogger(Sentry.SentryLevel minimalLevel) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } + [System.Obsolete("Logger doesn\'t work outside of Sentry SDK. Please use TraceDiagnosticLogger inste" + + "ad")] + public class DebugDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public DebugDiagnosticLogger(Sentry.SentryLevel minimalLevel) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } + public interface ISystemClock + { + System.DateTimeOffset GetUtcNow(); + } + public sealed class SystemClock : Sentry.Infrastructure.ISystemClock + { + public static readonly Sentry.Infrastructure.SystemClock Clock; + public SystemClock() { } + public System.DateTimeOffset GetUtcNow() { } + } + public class TraceDiagnosticLogger : Sentry.Extensibility.IDiagnosticLogger + { + public TraceDiagnosticLogger(Sentry.SentryLevel minimalLevel) { } + public bool IsEnabled(Sentry.SentryLevel level) { } + public void Log(Sentry.SentryLevel logLevel, string message, System.Exception? exception = null, params object?[] args) { } + } +} +namespace Sentry.Integrations +{ + public interface ISdkIntegration + { + void Register(Sentry.IHub hub, Sentry.SentryOptions options); + } +} +namespace Sentry.PlatformAbstractions +{ + public static class FrameworkInfo + { + public static System.Collections.Generic.IReadOnlyDictionary NetFxReleaseVersionMap { get; } + public static System.Collections.Generic.IEnumerable GetInstallations() { } + public static Sentry.PlatformAbstractions.FrameworkInstallation? GetLatest(int clr) { } + } + public class FrameworkInstallation + { + public FrameworkInstallation() { } + public Sentry.PlatformAbstractions.FrameworkProfile? Profile { get; set; } + public int? Release { get; set; } + public int? ServicePack { get; set; } + public string? ShortName { get; set; } + public System.Version? Version { get; set; } + public override string ToString() { } + } + public enum FrameworkProfile + { + Client = 0, + Full = 1, + } + public class Runtime + { + public Runtime(string? name = null, string? version = null, string? raw = null) { } + public string? Name { get; } + public string? Raw { get; } + public string? Version { get; } + public static Sentry.PlatformAbstractions.Runtime Current { get; } + public bool Equals(Sentry.PlatformAbstractions.Runtime other) { } + public override bool Equals(object? obj) { } + public override int GetHashCode() { } + public override string? ToString() { } + } + public static class RuntimeExtensions + { + public static bool IsMono(this Sentry.PlatformAbstractions.Runtime runtime) { } + public static bool IsNetCore(this Sentry.PlatformAbstractions.Runtime runtime) { } + public static bool IsNetFx(this Sentry.PlatformAbstractions.Runtime runtime) { } + } +} +namespace Sentry.Protocol +{ + public sealed class App : Sentry.IJsonSerializable + { + public const string Type = "app"; + public App() { } + public string? Build { get; set; } + public string? BuildType { get; set; } + public string? Hash { get; set; } + public string? Identifier { get; set; } + public string? Name { get; set; } + public System.DateTimeOffset? StartTime { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.App FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class Browser : Sentry.IJsonSerializable + { + public const string Type = "browser"; + public Browser() { } + public string? Name { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Browser FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class Device : Sentry.IJsonSerializable + { + public const string Type = "device"; + public Device() { } + public string? Architecture { get; set; } + public short? BatteryLevel { get; set; } + public string? BatteryStatus { get; set; } + public System.DateTimeOffset? BootTime { get; set; } + public string? Brand { get; set; } + public string? CpuDescription { get; set; } + public string? DeviceType { get; set; } + public string? DeviceUniqueIdentifier { get; set; } + public long? ExternalFreeStorage { get; set; } + public long? ExternalStorageSize { get; set; } + public string? Family { get; set; } + public long? FreeMemory { get; set; } + public long? FreeStorage { get; set; } + public bool? IsCharging { get; set; } + public bool? IsOnline { get; set; } + public bool? LowMemory { get; set; } + public string? Manufacturer { get; set; } + public long? MemorySize { get; set; } + public string? Model { get; set; } + public string? ModelId { get; set; } + public string? Name { get; set; } + public Sentry.Protocol.DeviceOrientation? Orientation { get; set; } + public int? ProcessorCount { get; set; } + public int? ProcessorFrequency { get; set; } + public float? ScreenDensity { get; set; } + public int? ScreenDpi { get; set; } + public string? ScreenResolution { get; set; } + public bool? Simulator { get; set; } + public long? StorageSize { get; set; } + public bool? SupportsAccelerometer { get; set; } + public bool? SupportsAudio { get; set; } + public bool? SupportsGyroscope { get; set; } + public bool? SupportsLocationService { get; set; } + public bool? SupportsVibration { get; set; } + public System.TimeZoneInfo? Timezone { get; set; } + public long? UsableMemory { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Device FromJson(System.Text.Json.JsonElement json) { } + } + public enum DeviceOrientation + { + [System.Runtime.Serialization.EnumMember(Value="portrait")] + Portrait = 0, + [System.Runtime.Serialization.EnumMember(Value="landscape")] + Landscape = 1, + } + public sealed class Gpu : Sentry.IJsonSerializable + { + public const string Type = "gpu"; + public Gpu() { } + public string? ApiType { get; set; } + public string? GraphicsShaderLevel { get; set; } + public int? Id { get; set; } + public int? MaxTextureSize { get; set; } + public int? MemorySize { get; set; } + public bool? MultiThreadedRendering { get; set; } + public string? Name { get; set; } + public string? NpotSupport { get; set; } + public bool? SupportsComputeShaders { get; set; } + public bool? SupportsDrawCallInstancing { get; set; } + public bool? SupportsGeometryShaders { get; set; } + public bool? SupportsRayTracing { get; set; } + public string? VendorId { get; set; } + public string? VendorName { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Gpu FromJson(System.Text.Json.JsonElement json) { } + } + public interface ITraceContext + { + string? Description { get; } + bool? IsSampled { get; } + string Operation { get; } + Sentry.SpanId? ParentSpanId { get; } + Sentry.SpanId SpanId { get; } + Sentry.SpanStatus? Status { get; } + Sentry.SentryId TraceId { get; } + } + public sealed class Mechanism : Sentry.IJsonSerializable + { + public static readonly string HandledKey; + public static readonly string MechanismKey; + public Mechanism() { } + public System.Collections.Generic.IDictionary Data { get; } + public string? Description { get; set; } + public bool? Handled { get; set; } + public string? HelpLink { get; set; } + public System.Collections.Generic.IDictionary Meta { get; } + public string? Type { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Mechanism FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class OperatingSystem : Sentry.IJsonSerializable + { + public const string Type = "os"; + public OperatingSystem() { } + public string? Build { get; set; } + public string? KernelVersion { get; set; } + public string? Name { get; set; } + public string? RawDescription { get; set; } + public bool? Rooted { get; set; } + public string? Version { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.OperatingSystem FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class Runtime : Sentry.IJsonSerializable + { + public const string Type = "runtime"; + public Runtime() { } + public string? Build { get; set; } + public string? Name { get; set; } + public string? RawDescription { get; set; } + public string? Version { get; set; } + public Sentry.Protocol.Runtime Clone() { } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Runtime FromJson(System.Text.Json.JsonElement json) { } + } + public sealed class SentryException : Sentry.IJsonSerializable + { + public SentryException() { } + public System.Collections.Generic.IDictionary Data { get; } + public Sentry.Protocol.Mechanism? Mechanism { get; set; } + public string? Module { get; set; } + public Sentry.SentryStackTrace? Stacktrace { get; set; } + public int ThreadId { get; set; } + public string? Type { get; set; } + public string? Value { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.SentryException FromJson(System.Text.Json.JsonElement json) { } + } + public class Trace : Sentry.IJsonSerializable, Sentry.Protocol.ITraceContext + { + public const string Type = "trace"; + public Trace() { } + public string? Description { get; set; } + public bool? IsSampled { get; } + public string Operation { get; set; } + public Sentry.SpanId? ParentSpanId { get; set; } + public Sentry.SpanId SpanId { get; set; } + public Sentry.SpanStatus? Status { get; set; } + public Sentry.SentryId TraceId { get; set; } + public void WriteTo(System.Text.Json.Utf8JsonWriter writer) { } + public static Sentry.Protocol.Trace FromJson(System.Text.Json.JsonElement json) { } + } +} +namespace Sentry.Reflection +{ + public static class AssemblyExtensions + { + public static Sentry.SdkVersion GetNameAndVersion(this System.Reflection.Assembly asm) { } + } +} +public static class SentryExceptionExtensions +{ + public static void AddSentryContext(this System.Exception ex, string name, System.Collections.Generic.IReadOnlyDictionary data) { } + public static void AddSentryTag(this System.Exception ex, string name, string value) { } +} \ No newline at end of file diff --git a/test/Sentry.Tests/Internals/Http/HttpTransportTests.cs b/test/Sentry.Tests/Internals/Http/HttpTransportTests.cs index 576cbcad7f..dba3c657c4 100644 --- a/test/Sentry.Tests/Internals/Http/HttpTransportTests.cs +++ b/test/Sentry.Tests/Internals/Http/HttpTransportTests.cs @@ -39,7 +39,7 @@ public async Task SendEnvelopeAsync_CancellationToken_PassedToClient() var envelope = Envelope.FromEvent( new SentryEvent(eventId: SentryResponses.ResponseId)); -#if NET5_0 +#if NET5_0_OR_GREATER await Assert.ThrowsAsync(() => httpTransport.SendEnvelopeAsync(envelope, token)); #else // Act diff --git a/test/Sentry.Tests/Internals/JsonTests.cs b/test/Sentry.Tests/Internals/JsonTests.cs index 9fdfc9f14f..0bbe6d7dc9 100644 --- a/test/Sentry.Tests/Internals/JsonTests.cs +++ b/test/Sentry.Tests/Internals/JsonTests.cs @@ -206,8 +206,12 @@ public void WriteDynamicValue_ClassWithTimeZone_SerializedClassWithTimeZoneInfo( "\"Id\":\"tz_id\"", "\"DisplayName\":\"my timezone\"", "\"StandardName\":\"my timezone\"", +#if NET6_0 + "\"BaseUtcOffset\":\"02:00:00\"", +#else "\"BaseUtcOffset\":{\"Ticks\":72000000000,\"Days\":0,\"Hours\":2,\"Milliseconds\":0,\"Minutes\":0,\"Seconds\":0", "\"TotalHours\":2,\"TotalMilliseconds\":7200000,\"TotalMinutes\":120,\"TotalSeconds\":7200},", +#endif }; var data = new DataWithSerializableObject(timeZone); diff --git a/test/Sentry.Tests/ModuleInitializerAttribute.cs b/test/Sentry.Tests/ModuleInitializerAttribute.cs index 23a0008f4a..2ea3ecf6c8 100644 --- a/test/Sentry.Tests/ModuleInitializerAttribute.cs +++ b/test/Sentry.Tests/ModuleInitializerAttribute.cs @@ -1,4 +1,4 @@ -#if !NET5_0 +#if !NET5_0_OR_GREATER // ReSharper disable once CheckNamespace - It's a polyfill to a type on this location namespace System.Runtime.CompilerServices { diff --git a/test/Sentry.Tests/Protocol/DsnTests.cs b/test/Sentry.Tests/Protocol/DsnTests.cs index fab931eb05..a68718078e 100644 --- a/test/Sentry.Tests/Protocol/DsnTests.cs +++ b/test/Sentry.Tests/Protocol/DsnTests.cs @@ -1,4 +1,5 @@ using System; +using Sentry.Internal; using Xunit; namespace Sentry.Tests.Protocol @@ -271,8 +272,6 @@ public void TryParse_NullDsn_ThrowsArgumentNull() [Fact] public void IsDisabled_EmptyStringDsn_True() => Assert.True(Dsn.IsDisabled(string.Empty)); - private static readonly Random Rnd = new(); - private class DsnTestCase { public string Scheme { get; set; } = "https"; @@ -280,8 +279,8 @@ private class DsnTestCase public string SecretKey { get; set; } = Guid.NewGuid().ToString("N"); public string Host { get; set; } = "sentry.io"; public string Path { get; set; } = "/some-path"; - public int? Port { get; set; } = Rnd.Next(1, 65535); - public string ProjectId { get; set; } = Rnd.Next().ToString(); + public int? Port { get; set; } = SynchronizedRandom.Next(1, 65535); + public string ProjectId { get; set; } = SynchronizedRandom.Next().ToString(); public string CredentialSeparator { private get; set; } = ":"; public string UserInfoSeparator { private get; set; } = "@"; diff --git a/test/Sentry.Tests/Sentry.Tests.csproj b/test/Sentry.Tests/Sentry.Tests.csproj index dbe3b5b565..2831c60d96 100644 --- a/test/Sentry.Tests/Sentry.Tests.csproj +++ b/test/Sentry.Tests/Sentry.Tests.csproj @@ -1,7 +1,7 @@  - net5.0;netcoreapp3.1;netcoreapp3.0;netcoreapp2.1;net461 + net6.0;net5.0;netcoreapp3.1;netcoreapp3.0;netcoreapp2.1;net461 diff --git a/test/Sentry.Tunnel.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt b/test/Sentry.Tunnel.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt new file mode 100644 index 0000000000..9ff99474cb --- /dev/null +++ b/test/Sentry.Tunnel.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt @@ -0,0 +1,14 @@ +[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")] +namespace Sentry.Tunnel +{ + public class SentryTunnelMiddleware : Microsoft.AspNetCore.Http.IMiddleware + { + public SentryTunnelMiddleware(string[] allowedHosts) { } + public System.Threading.Tasks.Task InvokeAsync(Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Http.RequestDelegate next) { } + } + public static class SentryTunnelingApplicationBuilderExtensions + { + public static void AddSentryTunneling(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, params string[] hostnames) { } + public static void UseSentryTunneling(this Microsoft.AspNetCore.Builder.IApplicationBuilder builder, string path = "/tunnel") { } + } +} \ No newline at end of file diff --git a/test/Sentry.Tunnel.Tests/Sentry.Tunnel.Tests.csproj b/test/Sentry.Tunnel.Tests/Sentry.Tunnel.Tests.csproj index 68219b23b7..655f495524 100644 --- a/test/Sentry.Tunnel.Tests/Sentry.Tunnel.Tests.csproj +++ b/test/Sentry.Tunnel.Tests/Sentry.Tunnel.Tests.csproj @@ -1,7 +1,7 @@ - net5.0;netcoreapp3.1 + net6.0;net5.0;netcoreapp3.1 From 40b298e30cb77de446b2d8a01b1edd7b7a56b8cf Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Sun, 7 Nov 2021 22:29:38 +0000 Subject: [PATCH 15/23] release: 3.12.0-alpha.1 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f78bac5c2b..d16c388150 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 3.12.0-alpha.1 ### Features From 3853c717b17abe895066fc320bfea90daf38c8bb Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Sun, 7 Nov 2021 19:43:16 -0500 Subject: [PATCH 16/23] bump C# 10 (#1311) --- Directory.Build.props | 2 +- src/Sentry/Sentry.csproj | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index bef7d4dfcd..59900d2316 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,7 +2,7 @@ 3.12.0-alpha.1 - 9 + 10 true $(MSBuildThisFileDirectory).assets/Sentry.snk true diff --git a/src/Sentry/Sentry.csproj b/src/Sentry/Sentry.csproj index 9ddce31e78..59e867f1de 100644 --- a/src/Sentry/Sentry.csproj +++ b/src/Sentry/Sentry.csproj @@ -2,6 +2,8 @@ net6.0;net5.0;netcoreapp3.0;netstandard2.1;netstandard2.0;net461 + + 9 Official SDK for Sentry - Open-source error tracking that helps developers monitor and fix crashes in real time. $(NoWarn);RS0017 $(AdditionalConstants) From 30d4e0bd520f0565ad06d72576c74c32bbe93485 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Nov 2021 00:55:05 +0000 Subject: [PATCH 17/23] Bump Microsoft.NET.Test.Sdk from 16.11.0 to 17.0.0 (#1305) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bruno Garcia --- test/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index 9a83da5b86..657867af2c 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -20,7 +20,7 @@ - + From a8e7ae0a233c05116fd0b7ea87bc22eba8e7a2af Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Sun, 7 Nov 2021 20:26:11 -0500 Subject: [PATCH 18/23] remove ReferenceAssemblies (#1312) --- Directory.Build.props | 1 - 1 file changed, 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 59900d2316..70a6de5274 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -23,7 +23,6 @@ - From f6e712513c34c1f4c00fc03e1586387c7abeea7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Nov 2021 19:56:10 +1100 Subject: [PATCH 19/23] Bump Serilog.Sinks.Console from 3.1.1 to 4.0.0 (#1306) Bumps [Serilog.Sinks.Console](https://github.com/serilog/serilog-sinks-console) from 3.1.1 to 4.0.0. - [Release notes](https://github.com/serilog/serilog-sinks-console/releases) - [Commits](https://github.com/serilog/serilog-sinks-console/compare/v3.1.1...v4.0.0) --- updated-dependencies: - dependency-name: Serilog.Sinks.Console dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Cropp --- .../Sentry.Samples.AspNetCore.Serilog.csproj | 2 +- samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj b/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj index 4b6ae92f9d..9440077d1c 100644 --- a/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj +++ b/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj @@ -6,7 +6,7 @@ - + diff --git a/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj b/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj index 69712b3e4f..a0f593c61a 100644 --- a/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj +++ b/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj @@ -7,7 +7,7 @@ - + From 0fc523705b4dedf4572e669417a13014a68a5480 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 8 Nov 2021 22:17:58 +1100 Subject: [PATCH 20/23] fix Serilog.AspNetCore ref in sample (#1314) --- .../Sentry.Samples.AspNetCore.Serilog.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj b/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj index 9440077d1c..b742c192bb 100644 --- a/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj +++ b/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj @@ -7,7 +7,7 @@ - + From 78aa0500867e491a162a87c95190184d3a60cf77 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 9 Nov 2021 05:20:38 +1100 Subject: [PATCH 21/23] remove non existing props from sln (#1316) --- Sentry.sln | 3 --- 1 file changed, 3 deletions(-) diff --git a/Sentry.sln b/Sentry.sln index 24928e915b..8ada52d976 100644 --- a/Sentry.sln +++ b/Sentry.sln @@ -46,9 +46,6 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sentry.Benchmarks", "benchmarks\Sentry.Benchmarks\Sentry.Benchmarks.csproj", "{BD43F598-5B20-477D-88C9-55B186542179}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{97EF834D-6BEB-45E8-B69A-1F9B7815B8B4}" - ProjectSection(SolutionItems) = preProject - benchmarks\Directory.Build.props = benchmarks\Directory.Build.props - EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sentry.AspNetCore", "src\Sentry.AspNetCore\Sentry.AspNetCore.csproj", "{EBD057E5-771A-47EC-90E3-3C2625426A05}" EndProject From b8aee289cb6903c9ea5917cac5ddcfe479788384 Mon Sep 17 00:00:00 2001 From: LucasZF Date: Mon, 8 Nov 2021 17:52:47 -0300 Subject: [PATCH 22/23] Finish unfinished Spans on Transaction completion (#1296) Co-authored-by: Sentry Github Bot --- CHANGELOG.md | 6 +++ src/Sentry/Internal/Hub.cs | 5 -- src/Sentry/SentryEventExtensions.cs | 13 ----- src/Sentry/Transaction.cs | 2 +- src/Sentry/TransactionTracer.cs | 8 ++++ test/Sentry.Tests/HubTests.cs | 48 +++++++++++++++++-- .../Sentry.Tests/Protocol/TransactionTests.cs | 37 +++++++------- 7 files changed, 76 insertions(+), 43 deletions(-) delete mode 100644 src/Sentry/SentryEventExtensions.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index d16c388150..13eee8b60f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes + +- Finish unfinished Spans on Transaction completion ([#1296](https://github.com/getsentry/sentry-dotnet/pull/1296)) + ## 3.12.0-alpha.1 ### Features diff --git a/src/Sentry/Internal/Hub.cs b/src/Sentry/Internal/Hub.cs index 5635c636d1..2d36303a46 100644 --- a/src/Sentry/Internal/Hub.cs +++ b/src/Sentry/Internal/Hub.cs @@ -285,11 +285,6 @@ public SentryId CaptureEvent(SentryEvent evt, Scope? scope = null) evt.Contexts.Trace.TraceId = linkedSpan.TraceId; evt.Contexts.Trace.ParentSpanId = linkedSpan.ParentSpanId; } - else if (evt.IsErrored() && scope?.LastCreatedSpan() is { } lastSpan && lastSpan?.IsFinished == false) - { - // Can still be reset by the owner but lets consider it finished and errored for now. - lastSpan.Finish(SpanStatus.InternalError); - } actualScope.SessionUpdate = evt switch { diff --git a/src/Sentry/SentryEventExtensions.cs b/src/Sentry/SentryEventExtensions.cs deleted file mode 100644 index ed2d19d4e6..0000000000 --- a/src/Sentry/SentryEventExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Linq; - -namespace Sentry -{ - /// - /// Extension methods for - /// - public static class SentryEventExtensions - { - internal static bool IsErrored(this SentryEvent @event) - => @event.Exception is not null || @event.SentryExceptions?.Any() == true; - } -} diff --git a/src/Sentry/Transaction.cs b/src/Sentry/Transaction.cs index ee08f097a2..9e6fcd6e0c 100644 --- a/src/Sentry/Transaction.cs +++ b/src/Sentry/Transaction.cs @@ -225,7 +225,7 @@ public Transaction(ITransaction tracer) _breadcrumbs = tracer.Breadcrumbs.ToList(); _extra = tracer.Extra.ToDictionary(); _tags = tracer.Tags.ToDictionary(); - _spans = tracer.Spans.Where(s => s.IsFinished).Select(s => new Span(s)).ToArray(); + _spans = tracer.Spans.Select(s => new Span(s)).ToArray(); } /// diff --git a/src/Sentry/TransactionTracer.cs b/src/Sentry/TransactionTracer.cs index b8137fecf0..b643460c57 100644 --- a/src/Sentry/TransactionTracer.cs +++ b/src/Sentry/TransactionTracer.cs @@ -225,6 +225,14 @@ public void Finish() Status ??= SpanStatus.UnknownError; EndTimestamp = DateTimeOffset.UtcNow; + foreach (var span in _spans) + { + if (!span.IsFinished) + { + span.Finish(SpanStatus.DeadlineExceeded); + } + } + // Clear the transaction from the scope _hub.ConfigureScope(scope => scope.ResetTransaction(this)); diff --git a/test/Sentry.Tests/HubTests.cs b/test/Sentry.Tests/HubTests.cs index b0a65e48d1..29e7f7465a 100644 --- a/test/Sentry.Tests/HubTests.cs +++ b/test/Sentry.Tests/HubTests.cs @@ -277,7 +277,7 @@ public void CaptureEvent_SessionActive_NoExceptionDoesNotReportError() } [Fact] - public void CaptureEvent_ExceptionWithOpenSpan_SpanFinishedWithInternalError() + public void CaptureEvent_ExceptionWithOpenSpan_SpanLinkedToEventContext() { // Arrange var client = Substitute.For(); @@ -285,18 +285,21 @@ public void CaptureEvent_ExceptionWithOpenSpan_SpanFinishedWithInternalError() var hub = new Hub(new SentryOptions { Dsn = DsnSamples.ValidDsnWithSecret, + TracesSampleRate = 1 }, client); var scope = new Scope(); + var evt = new SentryEvent(new Exception()); scope.Transaction = hub.StartTransaction("transaction", "operation"); var child = scope.Transaction.StartChild("child", "child"); // Act - hub.CaptureEvent(new SentryEvent(new Exception()), scope); + hub.CaptureEvent(evt, scope); // Assert - Assert.Equal(SpanStatus.InternalError, child.Status); - Assert.True(child.IsFinished); + Assert.Equal(child.SpanId, evt.Contexts.Trace.SpanId); + Assert.Equal(child.TraceId, evt.Contexts.Trace.TraceId); + Assert.Equal(child.ParentSpanId, evt.Contexts.Trace.ParentSpanId); } [Fact] @@ -1016,5 +1019,42 @@ public void ResumeSession_NoPausedSession_DoesNothing() // Assert client.DidNotReceive().CaptureSession(Arg.Is(s => s.EndStatus != null)); } + + [Theory] + [InlineData(SentryLevel.Warning)] + [InlineData(SentryLevel.Info)] + [InlineData(SentryLevel.Debug)] + [InlineData(SentryLevel.Error)] + [InlineData(SentryLevel.Fatal)] + public void CaptureEvent_MessageOnlyEvent_SpanLinkedToEventContext(SentryLevel level) + { + // Arrange + var client = Substitute.For(); + + var hub = new Hub(new SentryOptions + { + Dsn = DsnSamples.ValidDsnWithSecret, + TracesSampleRate = 1 + }, client); + var scope = new Scope(); + var evt = new SentryEvent() + { + Message = "Logger error", + Level = level + }; + scope.Transaction = hub.StartTransaction("transaction", "operation"); + + var child = scope.Transaction.StartChild("child", "child"); + + // Act + hub.CaptureEvent(evt, scope); + + // Assert + Assert.Equal(child.SpanId, evt.Contexts.Trace.SpanId); + Assert.Equal(child.TraceId, evt.Contexts.Trace.TraceId); + Assert.Equal(child.ParentSpanId, evt.Contexts.Trace.ParentSpanId); + Assert.False(child.IsFinished); + Assert.Null(child.Status); + } } } diff --git a/test/Sentry.Tests/Protocol/TransactionTests.cs b/test/Sentry.Tests/Protocol/TransactionTests.cs index 1a09a05511..e3886504e2 100644 --- a/test/Sentry.Tests/Protocol/TransactionTests.cs +++ b/test/Sentry.Tests/Protocol/TransactionTests.cs @@ -235,46 +235,43 @@ public void Finish_RecordsTime() } [Fact] - public void Finish_CapturesTransaction() + public void Finish_UnfinishedSpansGetsFinishedWithDeadlineStatus() { // Arrange - var client = Substitute.For(); - var options = new SentryOptions { Dsn = DsnSamples.ValidDsnWithoutSecret }; - var hub = new Hub(options, client); - - var transaction = new TransactionTracer(hub, "my name", "my op"); + var transaction = new TransactionTracer(DisabledHub.Instance, "my name", "my op"); + transaction.StartChild("children1"); + transaction.StartChild("children2"); + transaction.StartChild("children3.finished").Finish(SpanStatus.Ok); + transaction.StartChild("children4"); // Act transaction.Finish(); // Assert - client.Received(1).CaptureTransaction(Arg.Any()); + + Assert.All(transaction.Spans.Where(span => !span.Operation.EndsWith("finished")), span => + { + Assert.True(span.IsFinished); + Assert.Equal(SpanStatus.DeadlineExceeded, span.Status); + }); + Assert.Single(transaction.Spans.Where(span => span.Operation.EndsWith("finished") && span.Status == SpanStatus.Ok)); } [Fact] - public void Finish_DropsUnfinishedSpans() + public void Finish_CapturesTransaction() { // Arrange var client = Substitute.For(); - var hub = new Hub(new SentryOptions { Dsn = DsnSamples.ValidDsnWithoutSecret }, client); + var options = new SentryOptions { Dsn = DsnSamples.ValidDsnWithoutSecret }; + var hub = new Hub(options, client); var transaction = new TransactionTracer(hub, "my name", "my op"); - transaction.StartChild("op1").Finish(); - transaction.StartChild("op2"); - transaction.StartChild("op3").Finish(); - // Act transaction.Finish(); // Assert - client.Received(1).CaptureTransaction( - Arg.Is(t => - t.Spans.Count == 2 && - t.Spans.Any(s => s.Operation == "op1") && - t.Spans.All(s => s.Operation != "op2") && - t.Spans.Any(s => s.Operation == "op3") - )); + client.Received(1).CaptureTransaction(Arg.Any()); } [Fact] From b6246352c28dfe0802ee6bd2bc2c3c48ba78f908 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 9 Nov 2021 09:05:28 +1100 Subject: [PATCH 23/23] remove PublicAPI.* files (#1313) since we went with https://github.com/getsentry/sentry-dotnet/pull/1287 --- src/Directory.Build.props | 11 - src/Sentry.AspNetCore/PublicAPI.Shipped.txt | 20 -- src/Sentry.AspNetCore/PublicAPI.Unshipped.txt | 0 .../PublicAPI.Shipped.txt | 37 --- .../PublicAPI.Unshipped.txt | 0 src/Sentry.Log4Net/PublicAPI.Shipped.txt | 10 - src/Sentry.Log4Net/PublicAPI.Unshipped.txt | 1 - src/Sentry.NLog/PublicAPI.Shipped.txt | 82 ------ src/Sentry.NLog/PublicAPI.Unshipped.txt | 0 src/Sentry.Serilog/PublicAPI.Shipped.txt | 13 - src/Sentry.Serilog/PublicAPI.Unshipped.txt | 0 src/Sentry/PublicAPI.Shipped.txt | 235 ------------------ src/Sentry/PublicAPI.Unshipped.txt | 0 13 files changed, 409 deletions(-) delete mode 100644 src/Sentry.AspNetCore/PublicAPI.Shipped.txt delete mode 100644 src/Sentry.AspNetCore/PublicAPI.Unshipped.txt delete mode 100644 src/Sentry.Extensions.Logging/PublicAPI.Shipped.txt delete mode 100644 src/Sentry.Extensions.Logging/PublicAPI.Unshipped.txt delete mode 100644 src/Sentry.Log4Net/PublicAPI.Shipped.txt delete mode 100644 src/Sentry.Log4Net/PublicAPI.Unshipped.txt delete mode 100644 src/Sentry.NLog/PublicAPI.Shipped.txt delete mode 100644 src/Sentry.NLog/PublicAPI.Unshipped.txt delete mode 100644 src/Sentry.Serilog/PublicAPI.Shipped.txt delete mode 100644 src/Sentry.Serilog/PublicAPI.Unshipped.txt delete mode 100644 src/Sentry/PublicAPI.Shipped.txt delete mode 100644 src/Sentry/PublicAPI.Unshipped.txt diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 770ff0e452..50acb7efac 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -61,15 +61,4 @@ - - - - - - - - - - - diff --git a/src/Sentry.AspNetCore/PublicAPI.Shipped.txt b/src/Sentry.AspNetCore/PublicAPI.Shipped.txt deleted file mode 100644 index 121c1b119b..0000000000 --- a/src/Sentry.AspNetCore/PublicAPI.Shipped.txt +++ /dev/null @@ -1,20 +0,0 @@ -Microsoft.AspNetCore.Hosting.SentryWebHostBuilderExtensions -Sentry.AspNetCore.IUserFactory -Sentry.AspNetCore.IUserFactory.Create(Microsoft.AspNetCore.Http.HttpContext context) -> Sentry.Protocol.User -Sentry.AspNetCore.ScopeExtensions -Sentry.AspNetCore.SentryAspNetCoreOptions -Sentry.AspNetCore.SentryAspNetCoreOptions.IncludeActivityData.get -> bool -Sentry.AspNetCore.SentryAspNetCoreOptions.IncludeActivityData.set -> void -Sentry.AspNetCore.SentryAspNetCoreOptions.MaxRequestBodySize.get -> Sentry.Extensibility.RequestSize -Sentry.AspNetCore.SentryAspNetCoreOptions.MaxRequestBodySize.set -> void -Sentry.AspNetCore.SentryAspNetCoreOptions.SentryAspNetCoreOptions() -> void -Sentry.AspNetCore.SentryAspNetCoreOptions.FlushOnCompletedRequest.get -> bool -Sentry.AspNetCore.SentryAspNetCoreOptions.FlushOnCompletedRequest.set -> void -Sentry.AspNetCore.SentryAspNetCoreOptions.FlushTimeout.get -> System.TimeSpan -Sentry.AspNetCore.SentryAspNetCoreOptions.FlushTimeout.set -> void -static Microsoft.AspNetCore.Hosting.SentryWebHostBuilderExtensions.UseSentry(this Microsoft.AspNetCore.Hosting.IWebHostBuilder builder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder -static Microsoft.AspNetCore.Hosting.SentryWebHostBuilderExtensions.UseSentry(this Microsoft.AspNetCore.Hosting.IWebHostBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder -static Microsoft.AspNetCore.Hosting.SentryWebHostBuilderExtensions.UseSentry(this Microsoft.AspNetCore.Hosting.IWebHostBuilder builder, System.Action configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder -static Microsoft.AspNetCore.Hosting.SentryWebHostBuilderExtensions.UseSentry(this Microsoft.AspNetCore.Hosting.IWebHostBuilder builder, string dsn) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder -static Sentry.AspNetCore.ScopeExtensions.Populate(this Sentry.Scope scope, Microsoft.AspNetCore.Http.HttpContext context, Sentry.AspNetCore.SentryAspNetCoreOptions options) -> void -static Sentry.AspNetCore.ScopeExtensions.Populate(this Sentry.Scope scope, System.Diagnostics.Activity activity) -> void diff --git a/src/Sentry.AspNetCore/PublicAPI.Unshipped.txt b/src/Sentry.AspNetCore/PublicAPI.Unshipped.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Sentry.Extensions.Logging/PublicAPI.Shipped.txt b/src/Sentry.Extensions.Logging/PublicAPI.Shipped.txt deleted file mode 100644 index abfe8c78bc..0000000000 --- a/src/Sentry.Extensions.Logging/PublicAPI.Shipped.txt +++ /dev/null @@ -1,37 +0,0 @@ -Microsoft.Extensions.Logging.LoggingBuilderExtensions -Microsoft.Extensions.Logging.SentryLoggerFactoryExtensions -Sentry.Extensions.Logging.DelegateLogEntryFilter -Sentry.Extensions.Logging.DelegateLogEntryFilter.DelegateLogEntryFilter(System.Func filter) -> void -Sentry.Extensions.Logging.DelegateLogEntryFilter.Filter(string categoryName, Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, System.Exception exception) -> bool -Sentry.Extensions.Logging.Extensions.DependencyInjection.ServiceCollectionExtensions -Sentry.Extensions.Logging.ILogEntryFilter -Sentry.Extensions.Logging.ILogEntryFilter.Filter(string categoryName, Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, System.Exception exception) -> bool -Sentry.Extensions.Logging.MelDiagnosticLogger -Sentry.Extensions.Logging.MelDiagnosticLogger.IsEnabled(Sentry.Protocol.SentryLevel level) -> bool -Sentry.Extensions.Logging.MelDiagnosticLogger.Log(Sentry.Protocol.SentryLevel logLevel, string message, System.Exception exception = null, params object[] args) -> void -Sentry.Extensions.Logging.MelDiagnosticLogger.MelDiagnosticLogger(Microsoft.Extensions.Logging.ILogger logger, Sentry.Protocol.SentryLevel level) -> void -Sentry.Extensions.Logging.SentryLoggerProvider -Sentry.Extensions.Logging.SentryLoggerProvider.CreateLogger(string categoryName) -> Microsoft.Extensions.Logging.ILogger -Sentry.Extensions.Logging.SentryLoggerProvider.Dispose() -> void -Sentry.Extensions.Logging.SentryLoggerProvider.SentryLoggerProvider(Microsoft.Extensions.Options.IOptions options, Sentry.IHub hub) -> void -Sentry.Extensions.Logging.SentryLoggingOptions -Sentry.Extensions.Logging.SentryLoggingOptions.ConfigureScope(System.Action action) -> void -Sentry.Extensions.Logging.SentryLoggingOptions.Dsn.get -> string -Sentry.Extensions.Logging.SentryLoggingOptions.Dsn.set -> void -Sentry.Extensions.Logging.SentryLoggingOptions.InitializeSdk.get -> bool -Sentry.Extensions.Logging.SentryLoggingOptions.InitializeSdk.set -> void -Sentry.Extensions.Logging.SentryLoggingOptions.MinimumBreadcrumbLevel.get -> Microsoft.Extensions.Logging.LogLevel -Sentry.Extensions.Logging.SentryLoggingOptions.MinimumBreadcrumbLevel.set -> void -Sentry.Extensions.Logging.SentryLoggingOptions.MinimumEventLevel.get -> Microsoft.Extensions.Logging.LogLevel -Sentry.Extensions.Logging.SentryLoggingOptions.MinimumEventLevel.set -> void -Sentry.Extensions.Logging.SentryLoggingOptions.SentryLoggingOptions() -> void -Sentry.Extensions.Logging.SentryLoggingOptionsExtensions -static Microsoft.Extensions.Logging.LoggingBuilderExtensions.AddSentry(this Microsoft.Extensions.Logging.ILoggingBuilder builder) -> Microsoft.Extensions.Logging.ILoggingBuilder -static Microsoft.Extensions.Logging.LoggingBuilderExtensions.AddSentry(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action optionsConfiguration) -> Microsoft.Extensions.Logging.ILoggingBuilder -static Microsoft.Extensions.Logging.LoggingBuilderExtensions.AddSentry(this Microsoft.Extensions.Logging.ILoggingBuilder builder, string dsn) -> Microsoft.Extensions.Logging.ILoggingBuilder -static Microsoft.Extensions.Logging.SentryLoggerFactoryExtensions.AddSentry(this Microsoft.Extensions.Logging.ILoggerFactory factory, System.Action optionsConfiguration = null) -> Microsoft.Extensions.Logging.ILoggerFactory -static Sentry.Extensions.Logging.Extensions.DependencyInjection.ServiceCollectionExtensions.AddSentry(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection -static Sentry.Extensions.Logging.SentryLoggingOptionsExtensions.AddLogEntryFilter(this Sentry.Extensions.Logging.SentryLoggingOptions options, Sentry.Extensions.Logging.ILogEntryFilter filter) -> void -static Sentry.Extensions.Logging.SentryLoggingOptionsExtensions.AddLogEntryFilter(this Sentry.Extensions.Logging.SentryLoggingOptions options, System.Func filter) -> void -static Sentry.Extensions.Logging.SentryLoggingOptionsExtensions.ApplyDefaultTags(this Sentry.Extensions.Logging.SentryLoggingOptions options, Sentry.SentryEvent event) -> void -Sentry.Extensions.Logging.SentryLoggingOptions.DefaultTags.get -> System.Collections.Generic.Dictionary diff --git a/src/Sentry.Extensions.Logging/PublicAPI.Unshipped.txt b/src/Sentry.Extensions.Logging/PublicAPI.Unshipped.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Sentry.Log4Net/PublicAPI.Shipped.txt b/src/Sentry.Log4Net/PublicAPI.Shipped.txt deleted file mode 100644 index 95417e92f1..0000000000 --- a/src/Sentry.Log4Net/PublicAPI.Shipped.txt +++ /dev/null @@ -1,10 +0,0 @@ -Sentry.Log4Net.SentryAppender -Sentry.Log4Net.SentryAppender.Dsn.get -> string -Sentry.Log4Net.SentryAppender.Dsn.set -> void -Sentry.Log4Net.SentryAppender.Environment.get -> string -Sentry.Log4Net.SentryAppender.Environment.set -> void -Sentry.Log4Net.SentryAppender.SendIdentity.get -> bool -Sentry.Log4Net.SentryAppender.SendIdentity.set -> void -Sentry.Log4Net.SentryAppender.SentryAppender() -> void -override Sentry.Log4Net.SentryAppender.Append(log4net.Core.LoggingEvent loggingEvent) -> void -override Sentry.Log4Net.SentryAppender.OnClose() -> void diff --git a/src/Sentry.Log4Net/PublicAPI.Unshipped.txt b/src/Sentry.Log4Net/PublicAPI.Unshipped.txt deleted file mode 100644 index 5f282702bb..0000000000 --- a/src/Sentry.Log4Net/PublicAPI.Unshipped.txt +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Sentry.NLog/PublicAPI.Shipped.txt b/src/Sentry.NLog/PublicAPI.Shipped.txt deleted file mode 100644 index 88690188f8..0000000000 --- a/src/Sentry.NLog/PublicAPI.Shipped.txt +++ /dev/null @@ -1,82 +0,0 @@ -NLog.ConfigurationExtensions -Sentry.NLog.SentryNLogOptions -Sentry.NLog.SentryNLogOptions.BreadcrumbLayout.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogOptions.BreadcrumbLayout.set -> void -Sentry.NLog.SentryNLogOptions.DsnLayout.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogOptions.DsnLayout.set -> void -Sentry.NLog.SentryNLogOptions.EnvironmentLayout.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogOptions.EnvironmentLayout.set -> void -Sentry.NLog.SentryNLogOptions.FlushTimeout.get -> System.TimeSpan -Sentry.NLog.SentryNLogOptions.FlushTimeout.set -> void -Sentry.NLog.SentryNLogOptions.IgnoreEventsWithNoException.get -> bool -Sentry.NLog.SentryNLogOptions.IgnoreEventsWithNoException.set -> void -Sentry.NLog.SentryNLogOptions.IncludeEventDataOnBreadcrumbs.get -> bool -Sentry.NLog.SentryNLogOptions.IncludeEventDataOnBreadcrumbs.set -> void -Sentry.NLog.SentryNLogOptions.InitializeSdk.get -> bool -Sentry.NLog.SentryNLogOptions.InitializeSdk.set -> void -Sentry.NLog.SentryNLogOptions.Layout.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogOptions.Layout.set -> void -Sentry.NLog.SentryNLogOptions.MinimumBreadcrumbLevel.get -> NLog.LogLevel -Sentry.NLog.SentryNLogOptions.MinimumBreadcrumbLevel.set -> void -Sentry.NLog.SentryNLogOptions.MinimumEventLevel.get -> NLog.LogLevel -Sentry.NLog.SentryNLogOptions.MinimumEventLevel.set -> void -Sentry.NLog.SentryNLogOptions.ReleaseLayout.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogOptions.ReleaseLayout.set -> void -Sentry.NLog.SentryNLogOptions.IncludeEventPropertiesAsTags.get -> bool -Sentry.NLog.SentryNLogOptions.IncludeEventPropertiesAsTags.set -> void -Sentry.NLog.SentryNLogOptions.SentryNLogOptions() -> void -Sentry.NLog.SentryNLogOptions.ShutdownTimeoutSeconds.get -> int -Sentry.NLog.SentryNLogOptions.ShutdownTimeoutSeconds.set -> void -Sentry.NLog.SentryNLogOptions.Tags.get -> System.Collections.Generic.IList -Sentry.NLog.SentryTarget -Sentry.NLog.SentryTarget.BreadcrumbLayout.get -> NLog.Layouts.Layout -Sentry.NLog.SentryTarget.BreadcrumbLayout.set -> void -Sentry.NLog.SentryTarget.Dsn.get -> NLog.Layouts.Layout -Sentry.NLog.SentryTarget.Dsn.set -> void -Sentry.NLog.SentryTarget.Environment.get -> NLog.Layouts.Layout -Sentry.NLog.SentryTarget.Environment.set -> void -Sentry.NLog.SentryTarget.FlushTimeoutSeconds.get -> int -Sentry.NLog.SentryTarget.FlushTimeoutSeconds.set -> void -Sentry.NLog.SentryTarget.IgnoreEventsWithNoException.get -> bool -Sentry.NLog.SentryTarget.IgnoreEventsWithNoException.set -> void -Sentry.NLog.SentryTarget.IncludeEventDataOnBreadcrumbs.get -> bool -Sentry.NLog.SentryTarget.IncludeEventDataOnBreadcrumbs.set -> void -Sentry.NLog.SentryTarget.IncludeEventPropertiesAsTags.get -> bool -Sentry.NLog.SentryTarget.IncludeEventPropertiesAsTags.set -> void -Sentry.NLog.SentryTarget.InitializeSdk.get -> bool -Sentry.NLog.SentryTarget.InitializeSdk.set -> void -Sentry.NLog.SentryTarget.MinimumBreadcrumbLevel.get -> string -Sentry.NLog.SentryTarget.MinimumBreadcrumbLevel.set -> void -Sentry.NLog.SentryTarget.MinimumEventLevel.get -> string -Sentry.NLog.SentryTarget.MinimumEventLevel.set -> void -Sentry.NLog.SentryTarget.Options.get -> Sentry.NLog.SentryNLogOptions -Sentry.NLog.SentryTarget.Release.get -> NLog.Layouts.Layout -Sentry.NLog.SentryTarget.Release.set -> void -Sentry.NLog.SentryTarget.SendEventPropertiesAsData.get -> bool -Sentry.NLog.SentryTarget.SendEventPropertiesAsData.set -> void -Sentry.NLog.SentryTarget.SendEventPropertiesAsTags.get -> bool -Sentry.NLog.SentryTarget.SendEventPropertiesAsTags.set -> void -Sentry.NLog.SentryTarget.SentryTarget() -> void -Sentry.NLog.SentryTarget.SentryTarget(Sentry.NLog.SentryNLogOptions options) -> void -Sentry.NLog.SentryTarget.ShutdownTimeoutSeconds.get -> int -Sentry.NLog.SentryTarget.ShutdownTimeoutSeconds.set -> void -Sentry.NLog.SentryTarget.Tags.get -> System.Collections.Generic.IList -static NLog.ConfigurationExtensions.AddSentry(this NLog.Config.LoggingConfiguration configuration, System.Action optionsConfig = null) -> NLog.Config.LoggingConfiguration -static NLog.ConfigurationExtensions.AddSentry(this NLog.Config.LoggingConfiguration configuration, string dsn, System.Action optionsConfig = null) -> NLog.Config.LoggingConfiguration -static NLog.ConfigurationExtensions.AddSentry(this NLog.Config.LoggingConfiguration configuration, string dsn, string targetName, System.Action optionsConfig = null) -> NLog.Config.LoggingConfiguration -static NLog.ConfigurationExtensions.AddTag(this Sentry.NLog.SentryNLogOptions options, string name, NLog.Layouts.Layout layout) -> void -Sentry.NLog.SentryNLogOptions.User.get -> Sentry.NLog.SentryNLogUser -Sentry.NLog.SentryNLogOptions.User.set -> void -Sentry.NLog.SentryNLogUser -Sentry.NLog.SentryNLogUser.Email.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogUser.Email.set -> void -Sentry.NLog.SentryNLogUser.Id.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogUser.Id.set -> void -Sentry.NLog.SentryNLogUser.IpAddress.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogUser.IpAddress.set -> void -Sentry.NLog.SentryNLogUser.Other.get -> System.Collections.Generic.IList -Sentry.NLog.SentryNLogUser.SentryNLogUser() -> void -Sentry.NLog.SentryNLogUser.Username.get -> NLog.Layouts.Layout -Sentry.NLog.SentryNLogUser.Username.set -> void -Sentry.NLog.SentryTarget.User.get -> Sentry.NLog.SentryNLogUser -Sentry.NLog.SentryTarget.User.set -> void diff --git a/src/Sentry.NLog/PublicAPI.Unshipped.txt b/src/Sentry.NLog/PublicAPI.Unshipped.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Sentry.Serilog/PublicAPI.Shipped.txt b/src/Sentry.Serilog/PublicAPI.Shipped.txt deleted file mode 100644 index 96a79a3624..0000000000 --- a/src/Sentry.Serilog/PublicAPI.Shipped.txt +++ /dev/null @@ -1,13 +0,0 @@ -Sentry.Serilog.SentrySerilogOptions -Sentry.Serilog.SentrySerilogOptions.FormatProvider.get -> System.IFormatProvider -Sentry.Serilog.SentrySerilogOptions.FormatProvider.set -> void -Sentry.Serilog.SentrySerilogOptions.InitializeSdk.get -> bool -Sentry.Serilog.SentrySerilogOptions.InitializeSdk.set -> void -Sentry.Serilog.SentrySerilogOptions.MinimumBreadcrumbLevel.get -> Serilog.Events.LogEventLevel -Sentry.Serilog.SentrySerilogOptions.MinimumBreadcrumbLevel.set -> void -Sentry.Serilog.SentrySerilogOptions.MinimumEventLevel.get -> Serilog.Events.LogEventLevel -Sentry.Serilog.SentrySerilogOptions.MinimumEventLevel.set -> void -Sentry.Serilog.SentrySerilogOptions.SentrySerilogOptions() -> void -Serilog.SentrySinkExtensions -static Serilog.SentrySinkExtensions.Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, System.Action configureOptions) -> Serilog.LoggerConfiguration -static Serilog.SentrySinkExtensions.Sentry(this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration, string dsn = null, Serilog.Events.LogEventLevel minimumBreadcrumbLevel = Serilog.Events.LogEventLevel.Information, Serilog.Events.LogEventLevel minimumEventLevel = Serilog.Events.LogEventLevel.Error, System.IFormatProvider formatProvider = null) -> Serilog.LoggerConfiguration diff --git a/src/Sentry.Serilog/PublicAPI.Unshipped.txt b/src/Sentry.Serilog/PublicAPI.Unshipped.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Sentry/PublicAPI.Shipped.txt b/src/Sentry/PublicAPI.Shipped.txt deleted file mode 100644 index 9aed9781f3..0000000000 --- a/src/Sentry/PublicAPI.Shipped.txt +++ /dev/null @@ -1,235 +0,0 @@ -Sentry.DsnAttribute -Sentry.DsnAttribute.Dsn.get -> string -Sentry.DsnAttribute.DsnAttribute(string dsn) -> void -Sentry.Extensibility.BaseRequestPayloadExtractor -Sentry.Extensibility.BaseRequestPayloadExtractor.BaseRequestPayloadExtractor() -> void -Sentry.Extensibility.BaseRequestPayloadExtractor.ExtractPayload(Sentry.Extensibility.IHttpRequest request) -> object -Sentry.Extensibility.DefaultRequestPayloadExtractor -Sentry.Extensibility.DefaultRequestPayloadExtractor.DefaultRequestPayloadExtractor() -> void -Sentry.Extensibility.DisabledHub -Sentry.Extensibility.DisabledHub.BindClient(Sentry.ISentryClient client) -> void -Sentry.Extensibility.DisabledHub.CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope scope = null) -> Sentry.Protocol.SentryId -Sentry.Extensibility.DisabledHub.ConfigureScope(System.Action configureScope) -> void -Sentry.Extensibility.DisabledHub.ConfigureScopeAsync(System.Func configureScope) -> System.Threading.Tasks.Task -Sentry.Extensibility.DisabledHub.Dispose() -> void -Sentry.Extensibility.DisabledHub.FlushAsync(System.TimeSpan timeout) -> System.Threading.Tasks.Task -Sentry.Extensibility.DisabledHub.IsEnabled.get -> bool -Sentry.Extensibility.DisabledHub.LastEventId.get -> Sentry.Protocol.SentryId -Sentry.Extensibility.DisabledHub.PushScope() -> System.IDisposable -Sentry.Extensibility.DisabledHub.PushScope(TState state) -> System.IDisposable -Sentry.Extensibility.DisabledHub.WithScope(System.Action scopeCallback) -> void -Sentry.Extensibility.FormRequestPayloadExtractor -Sentry.Extensibility.FormRequestPayloadExtractor.FormRequestPayloadExtractor() -> void -Sentry.Extensibility.HubAdapter -Sentry.Extensibility.HubAdapter.AddBreadcrumb(Sentry.Infrastructure.ISystemClock clock, string message, string category = null, string type = null, System.Collections.Generic.IDictionary data = null, Sentry.Protocol.BreadcrumbLevel level = Sentry.Protocol.BreadcrumbLevel.Info) -> void -Sentry.Extensibility.HubAdapter.AddBreadcrumb(string message, string category = null, string type = null, System.Collections.Generic.IDictionary data = null, Sentry.Protocol.BreadcrumbLevel level = Sentry.Protocol.BreadcrumbLevel.Info) -> void -Sentry.Extensibility.HubAdapter.BindClient(Sentry.ISentryClient client) -> void -Sentry.Extensibility.HubAdapter.CaptureEvent(Sentry.SentryEvent evt) -> Sentry.Protocol.SentryId -Sentry.Extensibility.HubAdapter.CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope scope) -> Sentry.Protocol.SentryId -Sentry.Extensibility.HubAdapter.CaptureException(System.Exception exception) -> Sentry.Protocol.SentryId -Sentry.Extensibility.HubAdapter.ConfigureScope(System.Action configureScope) -> void -Sentry.Extensibility.HubAdapter.ConfigureScopeAsync(System.Func configureScope) -> System.Threading.Tasks.Task -Sentry.Extensibility.HubAdapter.FlushAsync(System.TimeSpan timeout) -> System.Threading.Tasks.Task -Sentry.Extensibility.HubAdapter.IsEnabled.get -> bool -Sentry.Extensibility.HubAdapter.LastEventId.get -> Sentry.Protocol.SentryId -Sentry.Extensibility.HubAdapter.PushScope() -> System.IDisposable -Sentry.Extensibility.HubAdapter.PushScope(TState state) -> System.IDisposable -Sentry.Extensibility.HubAdapter.WithScope(System.Action scopeCallback) -> void -Sentry.Extensibility.IBackgroundWorker -Sentry.Extensibility.IBackgroundWorker.EnqueueEvent(Sentry.SentryEvent event) -> bool -Sentry.Extensibility.IBackgroundWorker.FlushAsync(System.TimeSpan timeout) -> System.Threading.Tasks.Task -Sentry.Extensibility.IBackgroundWorker.QueuedItems.get -> int -Sentry.Extensibility.IDiagnosticLogger -Sentry.Extensibility.IDiagnosticLogger.IsEnabled(Sentry.Protocol.SentryLevel level) -> bool -Sentry.Extensibility.IDiagnosticLogger.Log(Sentry.Protocol.SentryLevel logLevel, string message, System.Exception exception = null, params object[] args) -> void -Sentry.Extensibility.IHttpRequest -Sentry.Extensibility.IHttpRequest.Body.get -> System.IO.Stream -Sentry.Extensibility.IHttpRequest.ContentLength.get -> long? -Sentry.Extensibility.IHttpRequest.ContentType.get -> string -Sentry.Extensibility.IHttpRequest.Form.get -> System.Collections.Generic.IEnumerable>> -Sentry.Extensibility.IRequestPayloadExtractor -Sentry.Extensibility.IRequestPayloadExtractor.ExtractPayload(Sentry.Extensibility.IHttpRequest request) -> object -Sentry.Extensibility.ISentryEventExceptionProcessor -Sentry.Extensibility.ISentryEventExceptionProcessor.Process(System.Exception exception, Sentry.SentryEvent sentryEvent) -> void -Sentry.Extensibility.ISentryEventProcessor -Sentry.Extensibility.ISentryEventProcessor.Process(Sentry.SentryEvent event) -> Sentry.SentryEvent -Sentry.Extensibility.ISentryStackTraceFactory -Sentry.Extensibility.ISentryStackTraceFactory.Create(System.Exception exception = null) -> Sentry.Protocol.SentryStackTrace -Sentry.Extensibility.ITransport -Sentry.Extensibility.ITransport.CaptureEventAsync(Sentry.SentryEvent event, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task -Sentry.Extensibility.RequestBodyExtractionDispatcher -Sentry.Extensibility.RequestBodyExtractionDispatcher.ExtractPayload(Sentry.Extensibility.IHttpRequest request) -> object -Sentry.Extensibility.RequestBodyExtractionDispatcher.RequestBodyExtractionDispatcher(System.Collections.Generic.IEnumerable extractors, Sentry.SentryOptions options, System.Func sizeSwitch) -> void -Sentry.Extensibility.RequestSize -Sentry.Extensibility.RequestSize.Always = 3 -> Sentry.Extensibility.RequestSize -Sentry.Extensibility.RequestSize.Medium = 2 -> Sentry.Extensibility.RequestSize -Sentry.Extensibility.RequestSize.None = 0 -> Sentry.Extensibility.RequestSize -Sentry.Extensibility.RequestSize.Small = 1 -> Sentry.Extensibility.RequestSize -Sentry.Extensibility.SentryEventExceptionProcessor -Sentry.Extensibility.SentryEventExceptionProcessor.Process(System.Exception exception, Sentry.SentryEvent sentryEvent) -> void -Sentry.Extensibility.SentryEventExceptionProcessor.SentryEventExceptionProcessor() -> void -Sentry.Extensibility.SentryStackTraceFactory -Sentry.Extensibility.SentryStackTraceFactory.Create(System.Exception exception = null) -> Sentry.Protocol.SentryStackTrace -Sentry.Extensibility.SentryStackTraceFactory.InternalCreateFrame(System.Diagnostics.StackFrame stackFrame, bool demangle) -> Sentry.Protocol.SentryStackFrame -Sentry.Extensibility.SentryStackTraceFactory.SentryStackTraceFactory(Sentry.SentryOptions options) -> void -Sentry.Http.ISentryHttpClientFactory -Sentry.Http.ISentryHttpClientFactory.Create(Sentry.Dsn dsn, Sentry.SentryOptions options) -> System.Net.Http.HttpClient -Sentry.HubExtensions -Sentry.IHub -Sentry.IHub.LastEventId.get -> Sentry.Protocol.SentryId -Sentry.ISentryClient -Sentry.ISentryClient.CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope scope = null) -> Sentry.Protocol.SentryId -Sentry.ISentryClient.FlushAsync(System.TimeSpan timeout) -> System.Threading.Tasks.Task -Sentry.ISentryClient.IsEnabled.get -> bool -Sentry.ISentryScopeManager -Sentry.ISentryScopeManager.BindClient(Sentry.ISentryClient client) -> void -Sentry.ISentryScopeManager.ConfigureScope(System.Action configureScope) -> void -Sentry.ISentryScopeManager.ConfigureScopeAsync(System.Func configureScope) -> System.Threading.Tasks.Task -Sentry.ISentryScopeManager.PushScope() -> System.IDisposable -Sentry.ISentryScopeManager.PushScope(TState state) -> System.IDisposable -Sentry.ISentryScopeManager.WithScope(System.Action scopeCallback) -> void -Sentry.Infrastructure.ConsoleDiagnosticLogger -Sentry.Infrastructure.ConsoleDiagnosticLogger.ConsoleDiagnosticLogger(Sentry.Protocol.SentryLevel minimalLevel) -> void -Sentry.Infrastructure.ConsoleDiagnosticLogger.IsEnabled(Sentry.Protocol.SentryLevel level) -> bool -Sentry.Infrastructure.ConsoleDiagnosticLogger.Log(Sentry.Protocol.SentryLevel logLevel, string message, System.Exception exception = null, params object[] args) -> void -Sentry.Infrastructure.DebugDiagnosticLogger -Sentry.Infrastructure.DebugDiagnosticLogger.DebugDiagnosticLogger(Sentry.Protocol.SentryLevel minimalLevel) -> void -Sentry.Infrastructure.DebugDiagnosticLogger.IsEnabled(Sentry.Protocol.SentryLevel level) -> bool -Sentry.Infrastructure.DebugDiagnosticLogger.Log(Sentry.Protocol.SentryLevel logLevel, string message, System.Exception exception = null, params object[] args) -> void -Sentry.Infrastructure.ISystemClock -Sentry.Infrastructure.ISystemClock.GetUtcNow() -> System.DateTimeOffset -Sentry.Infrastructure.SystemClock -Sentry.Infrastructure.SystemClock.GetUtcNow() -> System.DateTimeOffset -Sentry.Infrastructure.SystemClock.SystemClock() -> void -Sentry.Integrations.ISdkIntegration -Sentry.Integrations.ISdkIntegration.Register(Sentry.IHub hub, Sentry.SentryOptions options) -> void -Sentry.Reflection.AssemblyExtensions -Sentry.Scope -Sentry.Scope.Clone() -> Sentry.Scope -Sentry.Scope.Scope(Sentry.SentryOptions options) -> void -Sentry.ScopeExtensions -Sentry.SentryClient -Sentry.SentryClient.CaptureEvent(Sentry.SentryEvent event, Sentry.Scope scope = null) -> Sentry.Protocol.SentryId -Sentry.SentryClient.Dispose() -> void -Sentry.SentryClient.FlushAsync(System.TimeSpan timeout) -> System.Threading.Tasks.Task -Sentry.SentryClient.IsEnabled.get -> bool -Sentry.SentryClient.SentryClient(Sentry.SentryOptions options) -> void -Sentry.SentryClientExtensions -Sentry.SentryOptions -Sentry.SentryOptions.AttachStacktrace.get -> bool -Sentry.SentryOptions.AttachStacktrace.set -> void -Sentry.SentryOptions.BeforeBreadcrumb.get -> System.Func -Sentry.SentryOptions.BeforeBreadcrumb.set -> void -Sentry.SentryOptions.BeforeSend.get -> System.Func -Sentry.SentryOptions.BeforeSend.set -> void -Sentry.SentryOptions.CreateHttpClientHandler.get -> System.Func -Sentry.SentryOptions.CreateHttpClientHandler.set -> void -Sentry.SentryOptions.ConfigureClient.get -> System.Action -Sentry.SentryOptions.ConfigureClient.set -> void -Sentry.SentryOptions.ConfigureHandler.get -> System.Action -Sentry.SentryOptions.ConfigureHandler.set -> void -Sentry.SentryOptions.Debug.get -> bool -Sentry.SentryOptions.Debug.set -> void -Sentry.SentryOptions.DecompressionMethods.get -> System.Net.DecompressionMethods -Sentry.SentryOptions.DecompressionMethods.set -> void -Sentry.SentryOptions.DiagnosticLogger.get -> Sentry.Extensibility.IDiagnosticLogger -Sentry.SentryOptions.DiagnosticLogger.set -> void -Sentry.SentryOptions.DiagnosticLevel.get -> Sentry.Protocol.SentryLevel -Sentry.SentryOptions.DiagnosticLevel.set -> void -Sentry.SentryOptions.Dsn.get -> Sentry.Dsn -Sentry.SentryOptions.Dsn.set -> void -Sentry.SentryOptions.Environment.get -> string -Sentry.SentryOptions.Environment.set -> void -Sentry.SentryOptions.HttpProxy.get -> System.Net.IWebProxy -Sentry.SentryOptions.HttpProxy.set -> void -Sentry.SentryOptions.IsEnvironmentUser.get -> bool -Sentry.SentryOptions.IsEnvironmentUser.set -> void -Sentry.SentryOptions.MaxBreadcrumbs.get -> int -Sentry.SentryOptions.MaxBreadcrumbs.set -> void -Sentry.SentryOptions.MaxRequestBodySize.get -> Sentry.Extensibility.RequestSize -Sentry.SentryOptions.MaxRequestBodySize.set -> void -Sentry.SentryOptions.MaxQueueItems.get -> int -Sentry.SentryOptions.MaxQueueItems.set -> void -Sentry.SentryOptions.Release.get -> string -Sentry.SentryOptions.Release.set -> void -Sentry.SentryOptions.ReportAssemblies.get -> bool -Sentry.SentryOptions.ReportAssemblies.set -> void -Sentry.SentryOptions.RequestBodyCompressionBuffered.get -> bool -Sentry.SentryOptions.RequestBodyCompressionBuffered.set -> void -Sentry.SentryOptions.RequestBodyCompressionLevel.get -> System.IO.Compression.CompressionLevel -Sentry.SentryOptions.RequestBodyCompressionLevel.set -> void -Sentry.SentryOptions.SampleRate.get -> float? -Sentry.SentryOptions.SampleRate.set -> void -Sentry.SentryOptions.SendDefaultPii.get -> bool -Sentry.SentryOptions.SendDefaultPii.set -> void -Sentry.SentryOptions.SentryOptions() -> void -Sentry.SentryOptions.ServerName.get -> string -Sentry.SentryOptions.ServerName.set -> void -Sentry.SentryOptions.ShutdownTimeout.get -> System.TimeSpan -Sentry.SentryOptions.ShutdownTimeout.set -> void -Sentry.SentryOptionsExtensions -Sentry.SentrySdk -abstract Sentry.Extensibility.BaseRequestPayloadExtractor.DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) -> object -abstract Sentry.Extensibility.BaseRequestPayloadExtractor.IsSupported(Sentry.Extensibility.IHttpRequest request) -> bool -abstract Sentry.Extensibility.SentryEventExceptionProcessor.ProcessException(TException exception, Sentry.SentryEvent sentryEvent) -> void -override Sentry.Extensibility.DefaultRequestPayloadExtractor.DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) -> object -override Sentry.Extensibility.DefaultRequestPayloadExtractor.IsSupported(Sentry.Extensibility.IHttpRequest request) -> bool -override Sentry.Extensibility.FormRequestPayloadExtractor.DoExtractPayLoad(Sentry.Extensibility.IHttpRequest request) -> object -override Sentry.Extensibility.FormRequestPayloadExtractor.IsSupported(Sentry.Extensibility.IHttpRequest request) -> bool -static Sentry.Extensibility.DisabledHub.Instance -> Sentry.Extensibility.DisabledHub -static Sentry.HubExtensions.AddBreadcrumb(this Sentry.IHub hub, Sentry.Infrastructure.ISystemClock clock, string message, string category = null, string type = null, System.Collections.Generic.IDictionary data = null, Sentry.Protocol.BreadcrumbLevel level = Sentry.Protocol.BreadcrumbLevel.Info) -> void -static Sentry.HubExtensions.AddBreadcrumb(this Sentry.IHub hub, string message, string category = null, string type = null, System.Collections.Generic.IDictionary data = null, Sentry.Protocol.BreadcrumbLevel level = Sentry.Protocol.BreadcrumbLevel.Info) -> void -static Sentry.HubExtensions.LockScope(this Sentry.IHub hub) -> void -static Sentry.HubExtensions.PushAndLockScope(this Sentry.IHub hub) -> System.IDisposable -static Sentry.HubExtensions.UnlockScope(this Sentry.IHub hub) -> void -static Sentry.ScopeExtensions.AddEventProcessor(this Sentry.Scope scope, Sentry.Extensibility.ISentryEventProcessor processor) -> void -static Sentry.ScopeExtensions.AddEventProcessor(this Sentry.Scope scope, System.Func processor) -> void -static Sentry.ScopeExtensions.AddEventProcessors(this Sentry.Scope scope, System.Collections.Generic.IEnumerable processors) -> void -static Sentry.ScopeExtensions.AddExceptionProcessor(this Sentry.Scope scope, Sentry.Extensibility.ISentryEventExceptionProcessor processor) -> void -static Sentry.ScopeExtensions.AddExceptionProcessors(this Sentry.Scope scope, System.Collections.Generic.IEnumerable processors) -> void -static Sentry.ScopeExtensions.GetAllEventProcessors(this Sentry.Scope scope) -> System.Collections.Generic.IEnumerable -static Sentry.ScopeExtensions.GetAllExceptionProcessors(this Sentry.Scope scope) -> System.Collections.Generic.IEnumerable -static Sentry.SentryClientExtensions.CaptureException(this Sentry.ISentryClient client, System.Exception ex) -> Sentry.Protocol.SentryId -static Sentry.SentryClientExtensions.CaptureMessage(this Sentry.ISentryClient client, string message, Sentry.Protocol.SentryLevel level = Sentry.Protocol.SentryLevel.Info) -> Sentry.Protocol.SentryId -static Sentry.SentryOptionsExtensions.AddEventProcessor(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryEventProcessor processor) -> void -static Sentry.SentryOptionsExtensions.AddEventProcessorProvider(this Sentry.SentryOptions options, System.Func> processorProvider) -> void -static Sentry.SentryOptionsExtensions.AddEventProcessors(this Sentry.SentryOptions options, System.Collections.Generic.IEnumerable processors) -> void -static Sentry.SentryOptionsExtensions.AddExceptionProcessor(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryEventExceptionProcessor processor) -> void -static Sentry.SentryOptionsExtensions.AddExceptionProcessorProvider(this Sentry.SentryOptions options, System.Func> processorProvider) -> void -static Sentry.SentryOptionsExtensions.AddExceptionProcessors(this Sentry.SentryOptions options, System.Collections.Generic.IEnumerable processors) -> void -static Sentry.SentryOptionsExtensions.AddInAppExclude(this Sentry.SentryOptions options, string prefix) -> void -static Sentry.SentryOptionsExtensions.AddInAppInclude(this Sentry.SentryOptions options, string prefix) -> void -static Sentry.SentryOptionsExtensions.AddIntegration(this Sentry.SentryOptions options, Sentry.Integrations.ISdkIntegration integration) -> void -static Sentry.SentryOptionsExtensions.DisableAppDomainUnhandledExceptionCapture(this Sentry.SentryOptions options) -> void -static Sentry.SentryOptionsExtensions.DisableDuplicateEventDetection(this Sentry.SentryOptions options) -> void -static Sentry.SentryOptionsExtensions.GetAllEventProcessors(this Sentry.SentryOptions options) -> System.Collections.Generic.IEnumerable -static Sentry.SentryOptionsExtensions.GetAllExceptionProcessors(this Sentry.SentryOptions options) -> System.Collections.Generic.IEnumerable -static Sentry.SentryOptionsExtensions.UseStackTraceFactory(this Sentry.SentryOptions options, Sentry.Extensibility.ISentryStackTraceFactory sentryStackTraceFactory) -> Sentry.SentryOptions -static Sentry.SentryOptionsExtensions.DisableAppDomainProcessExitFlush(this Sentry.SentryOptions options) -> void -static Sentry.SentrySdk.AddBreadcrumb(Sentry.Infrastructure.ISystemClock clock, string message, string category = null, string type = null, System.Collections.Generic.IDictionary data = null, Sentry.Protocol.BreadcrumbLevel level = Sentry.Protocol.BreadcrumbLevel.Info) -> void -static Sentry.SentrySdk.AddBreadcrumb(string message, string category = null, string type = null, System.Collections.Generic.IDictionary data = null, Sentry.Protocol.BreadcrumbLevel level = Sentry.Protocol.BreadcrumbLevel.Info) -> void -static Sentry.SentrySdk.BindClient(Sentry.ISentryClient client) -> void -static Sentry.SentrySdk.CaptureEvent(Sentry.SentryEvent evt) -> Sentry.Protocol.SentryId -static Sentry.SentrySdk.CaptureEvent(Sentry.SentryEvent evt, Sentry.Scope scope) -> Sentry.Protocol.SentryId -static Sentry.SentrySdk.CaptureException(System.Exception exception) -> Sentry.Protocol.SentryId -static Sentry.SentrySdk.CaptureMessage(string message, Sentry.Protocol.SentryLevel level = Sentry.Protocol.SentryLevel.Info) -> Sentry.Protocol.SentryId -static Sentry.SentrySdk.Close() -> void -static Sentry.SentrySdk.ConfigureScope(System.Action configureScope) -> void -static Sentry.SentrySdk.ConfigureScopeAsync(System.Func configureScope) -> System.Threading.Tasks.Task -static Sentry.SentrySdk.FlushAsync(System.TimeSpan timeout) -> System.Threading.Tasks.Task -static Sentry.SentrySdk.Init() -> System.IDisposable -static Sentry.SentrySdk.Init(Sentry.Dsn dsn) -> System.IDisposable -static Sentry.SentrySdk.Init(Sentry.SentryOptions options) -> System.IDisposable -static Sentry.SentrySdk.Init(System.Action configureOptions) -> System.IDisposable -static Sentry.SentrySdk.Init(string dsn) -> System.IDisposable -static Sentry.SentrySdk.IsEnabled.get -> bool -static Sentry.SentrySdk.LastEventId.get -> Sentry.Protocol.SentryId -static Sentry.SentrySdk.PushScope() -> System.IDisposable -static Sentry.SentrySdk.PushScope(TState state) -> System.IDisposable -static Sentry.SentrySdk.WithScope(System.Action scopeCallback) -> void -static readonly Sentry.Extensibility.HubAdapter.Instance -> Sentry.Extensibility.HubAdapter -static readonly Sentry.Infrastructure.SystemClock.Clock -> Sentry.Infrastructure.SystemClock -static Sentry.Reflection.AssemblyExtensions.GetNameAndVersion(this System.Reflection.Assembly asm) -> Sentry.Protocol.SdkVersion -virtual Sentry.Extensibility.SentryStackTraceFactory.CreateFrame(System.Diagnostics.StackFrame stackFrame, bool isCurrentStackTrace) -> Sentry.Protocol.SentryStackFrame -virtual Sentry.Extensibility.SentryStackTraceFactory.CreateStackTrace(System.Exception exception) -> System.Diagnostics.StackTrace -virtual Sentry.Extensibility.SentryStackTraceFactory.GetMethod(System.Diagnostics.StackFrame stackFrame) -> System.Reflection.MethodBase diff --git a/src/Sentry/PublicAPI.Unshipped.txt b/src/Sentry/PublicAPI.Unshipped.txt deleted file mode 100644 index e69de29bb2..0000000000