-
-
Notifications
You must be signed in to change notification settings - Fork 440
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integration testing for the sentry-native new unwinder #1359
Comments
Not really, things should be fine. Some customers reported completely empty traces before, some related to C++ code, etc. Not sure we can hit those conditions with simplified testcases here. But it would be good enough to ensure we don’t regress for these simpler cases. |
to be honest my biggest concern here is not even the frames content but actually if it crashes the user's Apps. |
Short update:
|
We seem to be running into this issue: android/android-test#743 |
does it work on Android < 11? we could focus on that for now if its the case |
@marandaneto It did not work on the AppCenter Android 10 devices either. |
Also tried another approach, triggering the Crash from a Service that runs in its own process, circumventing the issue that the test process is also taken down and orchestrator not working on devices. Unfortunately, this also did not work, as there was no envelope file written to So with the limitations above, I'm not sure we can do this on I'm open for more ideas/suggestions on how to do this. |
Ok, so basically we run two UI tests in #1371 with the following goals:
In the second test, the Sentry SDK is not initialized, so the file is not ingested and deleted. The biggest issues is due to the fact that the Android OS displays a dialog which is warning users when an app keeps crashing. We try to dismiss this dialog, but it seems that this does not always succeed. Another source of failure is other system dailogs, for example the Phone app crashing or some information about USB connection regarding debugging, that get into the way of our UI tests. After running initially, we would run again on the failed devices. If there are still devices failing, we'd check the logs manually to see if the native SDK handled the envelope during the first test. It is rather non-deterministic which devices will fail, so i'm not sure we can automate this with the confidence that we would need for CI. Also, tests runs could be blocked by other tests running on AppCenter, which was often the case during manual test runs. Lastly, we would need to read the result of the test through the AppCenter API. Do you have anything to add to this @marandaneto and @bruno-garcia? |
Sounds like it'll be hard to maintain this. Given the false positives. Trying to think if we could rely on the screenshot of the failed test to quickly dismiss as false positive for example. And only really trigger these tests on a weekly basis for example. It sounds like we'll end up using this manually as needed, in cases such as this. When we make a significant change to it. |
instead of using AppCenter and AppenterAPI to read logs, we could run on a set of emulators on CI, with different arch. and OS versions, which is good enough for CI, obviously we'd run on AppCenter too when there's the chance to crash users. |
I think we can have a 2nd Android example that mimics the behavior of this test and we compile/run manually on AppCenter when necessary, it'd be the least flaky I guess. |
I assume we can close this since we've done the 400-device test already? |
We've updated sentry-native with a new stack unwinder. Initial testing was successful but we need more real device testing.
This is a good candidate for a proper e2e test on a device farm.
We need to test the latest version (with the new stackwalker):
https://github.com/getsentry/sentry-java/releases/tag/4.4.0-alpha.1
vs and older version:
https://github.com/getsentry/sentry-java/releases/tag/4.3.0
The idea is to load the sample project and hit the native crash button. Then copy the generated envelope and send it somewhere for analysis.
This somewhere could be a Sentry event. The issue could be the Android SDK version and the device name/version could be a tag. The envelope can be an attachments. This way we can compare the attachments of both versions.
Or perhaps more easily is to push this to a GCP bucket so we can script out a side-by-side comparisson between the two version.
Make sure to keep around the debug symbols in case we need to ingest these events (or if we can restart the app the event will actually be sent already and properly symbolicated). This way best to use a new sentry project in
sentry-sdks
so we can look at the data there.This code doesn't need to be merged here so hack away.
@Swatinem do we need anything specific in terms of stacktrace? Do we need some number of frames like 10 or whatever we have on the sample app today is fine?
The current sample native crash actually has a LOT of frames:
https://sentry.io/organizations/sentry-sdks/issues/2260073983/?project=5428559&query=is%3Aunresolved
The text was updated successfully, but these errors were encountered: