sentry-dotnet icon indicating copy to clipboard operation
sentry-dotnet copied to clipboard

Native AOT stack trace integration test

Open vaind opened this issue 2 years ago • 5 comments

We can't unit test Native AOT implementation of DebugStackTrace (there's no xUnit runner to support AOT so no way to test this in unit tests. There's a tracking issue: https://github.com/dotnet/runtime/issues/91069). Instead, we need to have an integration test that captures app requests.

Possible solutions

  • use something like the Sentry CLI integration test pwsh script and mock the sentry server
  • use something like the SingleFileTestApp and run through unit tests: https://github.com/getsentry/sentry-dotnet/blob/feat/4.0.0/test/Sentry.Tests/Internals/ILSpy/SingleFileAppTests.cs

More context: https://github.com/getsentry/sentry-dotnet/pull/2732#discussion_r1371006441

TODO items have been left as markers in DebugStackTraceTests.verify, to indicate the test cases that we should try to cover. For example:

// TODO: Create integration test to test this behaviour when publishing AOT apps
// See https://github.com/getsentry/sentry-dotnet/issues/2772
    [Fact]
    public void CreateSentryStackFrame_AppNamespace_InAppFrame()
    {
        var frame = new StackFrame();
        var sut = _fixture.GetSut();

        var actual = sut.CreateFrame(new RealStackFrame(frame));

        Assert.True(actual?.InApp);
    }

vaind avatar Oct 31 '23 12:10 vaind

@vaind are there any gaps on this issue that I can help with? I see you've already got various integration tests here. I'm not sure if that covers all the scenarios we wanted to cover though... e.g. all the TODO items in DebugStackTraceTests.verify.cs.

I figured integration tests is probably the most important thing still sitting on the backlog besides what you're doing.

jamescrosswell avatar Nov 07 '23 09:11 jamescrosswell

I'm not sure if that covers all the scenarios we wanted to cover though... e.g. all the TODO items in DebugStackTraceTests.verify.cs.

It doesn't but that PR will enable us to implement these, once it's merged.

vaind avatar Nov 07 '23 10:11 vaind

There are some basic runtime tests for AOT in integration-test/runtime.Tests.ps added by #2781

I've had a look at the places marked with TODO linking this issue & integration testing it would be quite a bit of work so I hope we could wait for https://github.com/dotnet/runtime/issues/91069

vaind avatar Nov 09 '23 16:11 vaind

For future investigation: I've had an idea to run the MAUI devicetest app with a NativeAOT published build. I can't try it out at the moment because we need to update device-tests to net8 first, which is blocked (#2854).

vaind avatar Nov 22 '23 13:11 vaind

For future investigation: I've had an idea to run the MAUI devicetest app with a NativeAOT published build. I can't try it out at the moment because we need to update device-tests to net8 first, which is blocked (#2854).

FWIW, we will be standing up MAUI device tests with NativeAOT on iOS, which is being tracked here: https://github.com/dotnet/maui/issues/19817

ivanpovazan avatar Jan 17 '24 14:01 ivanpovazan