From f4fa54e861c3b6182121c1716799982217c555ed Mon Sep 17 00:00:00 2001 From: Matt Johnson-Pint Date: Mon, 22 May 2023 08:50:35 -0700 Subject: [PATCH] feat(grouping): Exception Groups (#48653) Implements issue grouping and titling changes required for processing exception groups per [Sentry RFC 79](https://github.com/getsentry/rfcs/blob/main/text/0079-exception-groups.md#sentry-issue-grouping). Part of #37716 A few notes: - The issue titling requirements were implemented by dropping a `main_exception_id` on the event data in the exception grouping logic, and then later using it in the `ErrorEvent.extract_metadata` function. If present, it uses the corresponding exception for metadata including the title. This is working well, but just wanted to check if this is safe, or if there's a better way. - In the RFC, I had indicated that disparate top-level exceptions would be grouped under their immediate parent exception, which might not necessarily be the root exception. This turned out to be difficult to implement, and didn't add much value. Instead, I always use the root exception. This seems to work well enough. I included a comment at the appropriate place in the code, in case it comes up in the future. - I only modified the `NewStyle` strategy. I'm not sure if `Legacy` or other strategies should be updated as well? - I fixed a related bug in `exception.py`, which was that the first exception was being used to create default issue tags instead of the last. This should be done regardless of exception groups, as it corrects the `handled` and `mechanism` event tags such that they are for the outermost (latest) exception. Tests are updated to match this change as well. --- src/sentry/eventtypes/error.py | 27 +++- src/sentry/grouping/strategies/newstyle.py | 142 +++++++++++++++++- src/sentry/interfaces/exception.py | 6 +- .../test_context_with_mechanism.pysnap | 13 +- ...ith_two_exceptions_having_mechanism.pysnap | 115 ++++++++++++++ .../interfaces/test_exception.py | 61 ++++++-- tests/sentry/eventtypes/test_error.py | 33 ++++ .../exception-groups-bad-duplicate-id.json | 38 +++++ .../exception-groups-bad-missing-parent.json | 38 +++++ .../exception-groups-bad-out-of-sequence.json | 38 +++++ ...ception-groups-bad-parent-with-parent.json | 17 +++ .../exception-groups-bad-with-cycle.json | 38 +++++ .../exception-groups-one-exception.json | 27 ++++ ...n-groups-one-type-under-nested-groups.json | 61 ++++++++ ...groups-one-type-with-different-values.json | 38 +++++ ...type-with-similar-values-and-children.json | 60 ++++++++ ...n-groups-one-type-with-similar-values.json | 38 +++++ ...-groups-two-types-under-nested-groups.json | 50 ++++++ .../exception-groups-two-types.json | 38 +++++ .../exception_groups_bad_duplicate_id.pysnap | 54 +++++++ ...exception_groups_bad_missing_parent.pysnap | 12 ++ ...xception_groups_bad_out_of_sequence.pysnap | 29 ++++ ...ption_groups_bad_parent_with_parent.pysnap | 30 ++++ .../exception_groups_bad_with_cycle.pysnap | 30 ++++ .../exception_groups_one_exception.pysnap | 12 ++ ...groups_one_type_under_nested_groups.pysnap | 12 ++ ...oups_one_type_with_different_values.pysnap | 76 ++++++++++ ...groups_one_type_with_similar_values.pysnap | 12 ++ ...pe_with_similar_values_and_children.pysnap | 29 ++++ .../exception_groups_two_types.pysnap | 38 +++++ ...roups_two_types_under_nested_groups.pysnap | 38 +++++ .../exception_groups_bad_duplicate_id.pysnap | 46 ++++++ ...exception_groups_bad_missing_parent.pysnap | 46 ++++++ ...xception_groups_bad_out_of_sequence.pysnap | 46 ++++++ ...ption_groups_bad_parent_with_parent.pysnap | 24 +++ .../exception_groups_bad_with_cycle.pysnap | 46 ++++++ .../exception_groups_one_exception.pysnap | 36 +++++ ...groups_one_type_under_nested_groups.pysnap | 66 ++++++++ ...oups_one_type_with_different_values.pysnap | 46 ++++++ ...groups_one_type_with_similar_values.pysnap | 44 ++++++ ...pe_with_similar_values_and_children.pysnap | 66 ++++++++ .../exception_groups_two_types.pysnap | 46 ++++++ ...roups_two_types_under_nested_groups.pysnap | 56 +++++++ .../exception_groups_bad_duplicate_id.pysnap | 25 +++ ...exception_groups_bad_missing_parent.pysnap | 14 ++ ...xception_groups_bad_out_of_sequence.pysnap | 20 +++ ...ption_groups_bad_parent_with_parent.pysnap | 14 ++ .../exception_groups_bad_with_cycle.pysnap | 14 ++ .../exception_groups_one_exception.pysnap | 14 ++ ...groups_one_type_under_nested_groups.pysnap | 14 ++ ...oups_one_type_with_different_values.pysnap | 25 +++ ...groups_one_type_with_similar_values.pysnap | 14 ++ ...pe_with_similar_values_and_children.pysnap | 20 +++ .../exception_groups_two_types.pysnap | 25 +++ ...roups_two_types_under_nested_groups.pysnap | 25 +++ .../exception_groups_bad_duplicate_id.pysnap | 19 +++ ...exception_groups_bad_missing_parent.pysnap | 12 ++ ...xception_groups_bad_out_of_sequence.pysnap | 16 ++ ...ption_groups_bad_parent_with_parent.pysnap | 12 ++ .../exception_groups_bad_with_cycle.pysnap | 12 ++ .../exception_groups_one_exception.pysnap | 12 ++ ...groups_one_type_under_nested_groups.pysnap | 12 ++ ...oups_one_type_with_different_values.pysnap | 12 ++ ...groups_one_type_with_similar_values.pysnap | 12 ++ ...pe_with_similar_values_and_children.pysnap | 16 ++ .../exception_groups_two_types.pysnap | 19 +++ ...roups_two_types_under_nested_groups.pysnap | 19 +++ .../exception_groups_bad_duplicate_id.pysnap | 25 +++ ...exception_groups_bad_missing_parent.pysnap | 14 ++ ...xception_groups_bad_out_of_sequence.pysnap | 20 +++ ...ption_groups_bad_parent_with_parent.pysnap | 14 ++ .../exception_groups_bad_with_cycle.pysnap | 14 ++ .../exception_groups_one_exception.pysnap | 14 ++ ...groups_one_type_under_nested_groups.pysnap | 14 ++ ...oups_one_type_with_different_values.pysnap | 25 +++ ...groups_one_type_with_similar_values.pysnap | 14 ++ ...pe_with_similar_values_and_children.pysnap | 20 +++ .../exception_groups_two_types.pysnap | 25 +++ ...roups_two_types_under_nested_groups.pysnap | 25 +++ .../exception_groups_bad_duplicate_id.pysnap | 25 +++ ...exception_groups_bad_missing_parent.pysnap | 14 ++ ...xception_groups_bad_out_of_sequence.pysnap | 20 +++ ...ption_groups_bad_parent_with_parent.pysnap | 14 ++ .../exception_groups_bad_with_cycle.pysnap | 14 ++ .../exception_groups_one_exception.pysnap | 14 ++ ...groups_one_type_under_nested_groups.pysnap | 14 ++ ...oups_one_type_with_different_values.pysnap | 25 +++ ...groups_one_type_with_similar_values.pysnap | 14 ++ ...pe_with_similar_values_and_children.pysnap | 20 +++ .../exception_groups_two_types.pysnap | 25 +++ ...roups_two_types_under_nested_groups.pysnap | 25 +++ .../exception_groups_bad_duplicate_id.pysnap | 25 +++ ...exception_groups_bad_missing_parent.pysnap | 14 ++ ...xception_groups_bad_out_of_sequence.pysnap | 20 +++ ...ption_groups_bad_parent_with_parent.pysnap | 14 ++ .../exception_groups_bad_with_cycle.pysnap | 14 ++ .../exception_groups_one_exception.pysnap | 14 ++ ...groups_one_type_under_nested_groups.pysnap | 14 ++ ...oups_one_type_with_different_values.pysnap | 25 +++ ...groups_one_type_with_similar_values.pysnap | 14 ++ ...pe_with_similar_values_and_children.pysnap | 20 +++ .../exception_groups_two_types.pysnap | 25 +++ ...roups_two_types_under_nested_groups.pysnap | 25 +++ .../exception_groups_bad_duplicate_id.pysnap | 25 +++ ...exception_groups_bad_missing_parent.pysnap | 14 ++ ...xception_groups_bad_out_of_sequence.pysnap | 20 +++ ...ption_groups_bad_parent_with_parent.pysnap | 14 ++ .../exception_groups_bad_with_cycle.pysnap | 14 ++ .../exception_groups_one_exception.pysnap | 14 ++ ...groups_one_type_under_nested_groups.pysnap | 14 ++ ...oups_one_type_with_different_values.pysnap | 25 +++ ...groups_one_type_with_similar_values.pysnap | 14 ++ ...pe_with_similar_values_and_children.pysnap | 20 +++ .../exception_groups_two_types.pysnap | 25 +++ ...roups_two_types_under_nested_groups.pysnap | 25 +++ .../exception_groups_bad_duplicate_id.pysnap | 25 +++ ...exception_groups_bad_missing_parent.pysnap | 14 ++ ...xception_groups_bad_out_of_sequence.pysnap | 20 +++ ...ption_groups_bad_parent_with_parent.pysnap | 14 ++ .../exception_groups_bad_with_cycle.pysnap | 14 ++ .../exception_groups_one_exception.pysnap | 14 ++ ...groups_one_type_under_nested_groups.pysnap | 14 ++ ...oups_one_type_with_different_values.pysnap | 25 +++ ...groups_one_type_with_similar_values.pysnap | 14 ++ ...pe_with_similar_values_and_children.pysnap | 20 +++ .../exception_groups_two_types.pysnap | 25 +++ ...roups_two_types_under_nested_groups.pysnap | 25 +++ 127 files changed, 3307 insertions(+), 28 deletions(-) create mode 100644 tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_two_exceptions_having_mechanism.pysnap create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-bad-duplicate-id.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-bad-missing-parent.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-bad-out-of-sequence.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-bad-parent-with-parent.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-bad-with-cycle.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-one-exception.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-one-type-under-nested-groups.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-different-values.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values-and-children.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-two-types-under-nested-groups.json create mode 100644 tests/sentry/grouping/grouping_inputs/exception-groups-two-types.json create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/legacy@2019_03_12/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_duplicate_id.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_missing_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_out_of_sequence.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_parent_with_parent.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_with_cycle.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_exception.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_under_nested_groups.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_different_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values_and_children.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types.pysnap create mode 100644 tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types_under_nested_groups.pysnap diff --git a/src/sentry/eventtypes/error.py b/src/sentry/eventtypes/error.py index 6441d0fad69e8..e81c937fbab3c 100644 --- a/src/sentry/eventtypes/error.py +++ b/src/sentry/eventtypes/error.py @@ -23,7 +23,32 @@ class ErrorEvent(BaseEvent): key = "error" def extract_metadata(self, data): - exception = get_path(data, "exception", "values", -1) + + exceptions = get_path(data, "exception", "values") + if not exceptions: + return {} + + # When there are multiple exceptions, we need to pick one to extract the metadata from. + # If the event data has been marked with a main_exception_id, then we should be able to + # find the exception with the matching metadata.exception_id and use that one. + # This can be the case for some exception groups. + + # Otherwise, the default behavior is to use the last one in the list. + + main_exception_id = get_path(data, "main_exception_id") + exception = ( + next( + exception + for exception in exceptions + if get_path(exception, "mechanism", "exception_id") == main_exception_id + ) + if main_exception_id + else None + ) + + if not exception: + exception = get_path(exceptions, -1) + if not exception: return {} diff --git a/src/sentry/grouping/strategies/newstyle.py b/src/sentry/grouping/strategies/newstyle.py index 31e266f2806d6..f1b8176e4b41b 100644 --- a/src/sentry/grouping/strategies/newstyle.py +++ b/src/sentry/grouping/strategies/newstyle.py @@ -1,5 +1,8 @@ +import itertools import re -from typing import Any, Dict, List, Optional +from typing import Any, Dict, Generator, List, Optional + +import sentry_sdk from sentry.eventstore.models import Event from sentry.grouping.component import GroupingComponent, calculate_tree_label @@ -13,8 +16,9 @@ from sentry.grouping.strategies.message import trim_message_for_grouping from sentry.grouping.strategies.similarity_encoders import ident_encoder, text_shingle_encoder from sentry.grouping.strategies.utils import has_url_origin, remove_non_stacktrace_variants +from sentry.grouping.utils import hash_from_values from sentry.interfaces.exception import Exception as ChainedException -from sentry.interfaces.exception import SingleException +from sentry.interfaces.exception import Mechanism, SingleException from sentry.interfaces.stacktrace import Frame, Stacktrace from sentry.interfaces.threads import Threads from sentry.stacktraces.platform import get_behavior_family_for_platform @@ -706,19 +710,40 @@ def single_exception( def chained_exception( interface: ChainedException, event: Event, context: GroupingContext, **meta: Any ) -> ReturnedVariants: + + # Get all the exceptions to consider. + all_exceptions = interface.exceptions() + + # Get the grouping components for all exceptions up front, as we'll need them in a few places and only want to compute them once. + exception_components = { + id(exception): context.get_grouping_component(exception, event=event, **meta) + for exception in all_exceptions + } + + # Filter the exceptions according to rules for handling exception groups. + with sentry_sdk.start_span( + op="grouping.strategies.newstyle.filter_exceptions_for_exception_groups" + ) as span: + try: + exceptions = filter_exceptions_for_exception_groups( + all_exceptions, exception_components, event + ) + except Exception: + # We shouldn't have exceptions here. But if we do, just record it and continue with the original list. + sentry_sdk.capture_exception() + span.set_status("internal_error") + exceptions = all_exceptions + # Case 1: we have a single exception, use the single exception # component directly to avoid a level of nesting - exceptions = interface.exceptions() if len(exceptions) == 1: - return context.get_grouping_component(exceptions[0], event=event, **meta) + return exception_components[id(exceptions[0])] # Case 2: produce a component for each chained exception by_name: Dict[str, List[GroupingComponent]] = {} for exception in exceptions: - for name, component in context.get_grouping_component( - exception, event=event, **meta - ).items(): + for name, component in exception_components[id(exception)].items(): by_name.setdefault(name, []).append(component) rv = {} @@ -733,6 +758,109 @@ def chained_exception( return rv +# See https://github.com/getsentry/rfcs/blob/main/text/0079-exception-groups.md#sentry-issue-grouping +def filter_exceptions_for_exception_groups( + exceptions: List[SingleException], + exception_components: Dict[int, GroupingComponent], + event: Event, +) -> List[SingleException]: + + # This function only filters exceptions if there are at least two exceptions. + if len(exceptions) <= 1: + return exceptions + + # Reconstruct the tree of exceptions if the required data is present. + class ExceptionTreeNode: + def __init__( + self, + exception: Optional[SingleException] = None, + children: Optional[List[SingleException]] = None, + ): + self.exception = exception + self.children = children if children else [] + + exception_tree: Dict[int, ExceptionTreeNode] = {} + for exception in reversed(exceptions): + mechanism: Mechanism = exception.mechanism + if mechanism and mechanism.exception_id is not None: + node = exception_tree.setdefault( + mechanism.exception_id, ExceptionTreeNode() + ).exception = exception + node.exception = exception + if mechanism.parent_id is not None: + parent_node = exception_tree.setdefault(mechanism.parent_id, ExceptionTreeNode()) + parent_node.children.append(exception) + else: + # At least one exception is missing mechanism ids, so we can't continue with the filter. + # Exit early to not waste perf. + return exceptions + + # This gets the child exceptions for an exception using the exception_id from the mechanism. + # That data is guaranteed to exist at this point. + def get_child_exceptions(exception: SingleException) -> List[SingleException]: + exception_id = exception.mechanism.exception_id + node = exception_tree.get(exception_id) + return node.children if node else [] + + # This recursive generator gets the "top-level exceptions", and is used below. + # "Top-level exceptions are those that are the first descendants of the root that are not exception groups. + # For examples, see https://github.com/getsentry/rfcs/blob/main/text/0079-exception-groups.md#sentry-issue-grouping + def get_top_level_exceptions( + exception: SingleException, + ) -> Generator[SingleException, None, None]: + if exception.mechanism.is_exception_group: + children = get_child_exceptions(exception) + yield from itertools.chain.from_iterable( + get_top_level_exceptions(child) for child in children + ) + else: + yield exception + + # This recursive generator gets the "first-path" of exceptions, and is used below. + # The first path follows from the root to a leaf node, but only following the first child of each node. + def get_first_path(exception: SingleException) -> Generator[SingleException, None, None]: + yield exception + children = get_child_exceptions(exception) + if children: + yield from get_first_path(children[0]) + + # Traverse the tree recursively from the root exception to get all "top-level exceptions" and sort for consistency. + top_level_exceptions = sorted( + get_top_level_exceptions(exception_tree[0].exception), + key=lambda exception: str(exception.type), + reverse=True, + ) + + # Figure out the distinct top-level exceptions, grouping by the hash of the grouping component values. + distinct_top_level_exceptions = [ + next(group) + for _, group in itertools.groupby( + top_level_exceptions, + key=lambda exception: hash_from_values(exception_components[id(exception)].values()) + or "", + ) + ] + + # If there's only one distinct top-level exception in the group, + # use it and its first-path children, but throw out the exception group and any copies. + # For example, Group<['Da', 'Da', 'Da']> should just be treated as a single 'Da'. + # We'll also set the main_exception_id, which is used in the extract_metadata function + # in src/sentry/eventtypes/error.py - which will ensure the issue is titled by this + # item rather than the exception group. + if len(distinct_top_level_exceptions) == 1: + main_exception = distinct_top_level_exceptions[0] + event.data["main_exception_id"] = main_exception.mechanism.exception_id + return list(get_first_path(main_exception)) + + # When there's more than one distinct top-level exception, return one of each of them AND the root exception group. + # NOTE: This deviates from the original RFC, because finding a common ancestor that shares + # one of each top-level exception that is _not_ the root is overly complicated. + # Also, it's more likely the stack trace of the root exception will be more meaningful + # than one of an inner exception group. + distinct_top_level_exceptions.append(exception_tree[0].exception) + return distinct_top_level_exceptions + + @chained_exception.variant_processor def chained_exception_variant_processor( variants: ReturnedVariants, context: GroupingContext, **meta: Any diff --git a/src/sentry/interfaces/exception.py b/src/sentry/interfaces/exception.py index 27009183f1d10..7564763422d00 100644 --- a/src/sentry/interfaces/exception.py +++ b/src/sentry/interfaces/exception.py @@ -465,15 +465,15 @@ def to_string(self, event, is_public=False, **kwargs): return ("".join(output)).strip() def get_stacktrace(self, *args, **kwargs): - exc = self.values[0] + exc = self.values[-1] if exc.stacktrace: return exc.stacktrace.get_stacktrace(*args, **kwargs) return "" def iter_tags(self): - if not self.values or not self.values[0]: + if not self.values or not self.values[-1]: return - mechanism = self.values[0].mechanism + mechanism = self.values[-1].mechanism if mechanism: yield from mechanism.iter_tags() diff --git a/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_mechanism.pysnap b/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_mechanism.pysnap index fcc2faba17fef..0b15d3115f12c 100644 --- a/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_mechanism.pysnap +++ b/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_mechanism.pysnap @@ -1,5 +1,5 @@ --- -created: '2023-04-19T16:08:28.133847Z' +created: '2023-05-05T19:28:49.089651Z' creator: sentry source: tests/sentry/event_manager/interfaces/test_exception.py --- @@ -9,9 +9,7 @@ get_api_context: hasSystemFrames: true values: - mechanism: - exception_id: 1 - is_exception_group: true - parent_id: 0 + exception_id: 0 source: __context__ type: generic module: foo.bar @@ -41,12 +39,13 @@ get_api_context: threadId: null type: ValueError value: hello world +tags: +- - mechanism + - generic to_json: values: - mechanism: - exception_id: 1 - is_exception_group: true - parent_id: 0 + exception_id: 0 source: __context__ type: generic module: foo.bar diff --git a/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_two_exceptions_having_mechanism.pysnap b/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_two_exceptions_having_mechanism.pysnap new file mode 100644 index 0000000000000..789de2ad2f132 --- /dev/null +++ b/tests/sentry/event_manager/interfaces/snapshots/test_exception/test_context_with_two_exceptions_having_mechanism.pysnap @@ -0,0 +1,115 @@ +--- +created: '2023-05-05T19:28:49.100372Z' +creator: sentry +source: tests/sentry/event_manager/interfaces/test_exception.py +--- +errors: null +get_api_context: + excOmitted: null + hasSystemFrames: true + values: + - mechanism: + exception_id: 1 + handled: true + parent_id: 0 + source: __context__ + type: chained + module: foo.bar + rawStacktrace: null + stacktrace: + frames: + - absPath: foo/baz.py + colNo: null + context: [] + errors: null + filename: foo/baz.py + function: null + inApp: true + instructionAddr: null + lineNo: 1 + module: null + package: null + platform: null + rawFunction: null + symbol: null + symbolAddr: null + trust: null + vars: null + framesOmitted: null + hasSystemFrames: true + registers: null + threadId: null + type: ValueError + value: hello world + - mechanism: + exception_id: 0 + handled: false + is_exception_group: true + source: __context__ + type: generic + module: foo.bar + rawStacktrace: null + stacktrace: + frames: + - absPath: foo/baz.py + colNo: null + context: [] + errors: null + filename: foo/baz.py + function: null + inApp: true + instructionAddr: null + lineNo: 1 + module: null + package: null + platform: null + rawFunction: null + symbol: null + symbolAddr: null + trust: null + vars: null + framesOmitted: null + hasSystemFrames: true + registers: null + threadId: null + type: ValueError + value: hello world +tags: +- - handled + - 'no' +- - mechanism + - generic +to_json: + values: + - mechanism: + exception_id: 1 + handled: true + parent_id: 0 + source: __context__ + type: chained + module: foo.bar + stacktrace: + frames: + - abs_path: foo/baz.py + filename: foo/baz.py + in_app: true + lineno: 1 + type: ValueError + value: hello world + - mechanism: + exception_id: 0 + handled: false + is_exception_group: true + source: __context__ + type: generic + module: foo.bar + stacktrace: + frames: + - abs_path: foo/baz.py + filename: foo/baz.py + in_app: true + lineno: 1 + type: ValueError + value: hello world +to_string: "ValueError: hello world\n File \"foo/baz.py\", line 1\n\nValueError:\ + \ hello world\n File \"foo/baz.py\", line 1" diff --git a/tests/sentry/event_manager/interfaces/test_exception.py b/tests/sentry/event_manager/interfaces/test_exception.py index 93f99492a4c52..b0ed1e4914678 100644 --- a/tests/sentry/event_manager/interfaces/test_exception.py +++ b/tests/sentry/event_manager/interfaces/test_exception.py @@ -15,14 +15,18 @@ def inner(data): interface = evt.interfaces.get("exception") - insta_snapshot( - { - "errors": evt.data.get("errors"), - "to_json": interface and interface.to_json(), - "get_api_context": interface and interface.get_api_context(), - "to_string": interface and interface.to_string(evt), - } - ) + snapshot_values = { + "errors": evt.data.get("errors"), + "to_json": interface and interface.to_json(), + "get_api_context": interface and interface.get_api_context(), + "to_string": interface and interface.to_string(evt), + } + + tags = sorted(interface.iter_tags()) + if len(tags) > 0: + snapshot_values["tags"] = tags + + insta_snapshot(snapshot_values) return inner @@ -209,11 +213,48 @@ def test_context_with_mechanism(make_exception_snapshot): "mechanism": { "type": "generic", "source": "__context__", - "is_exception_group": True, + "exception_id": 0, + }, + } + ] + ) + ) + + +def test_context_with_two_exceptions_having_mechanism(make_exception_snapshot): + make_exception_snapshot( + dict( + values=[ + { + "type": "ValueError", + "value": "hello world", + "module": "foo.bar", + "stacktrace": { + "frames": [{"filename": "foo/baz.py", "lineno": 1, "in_app": True}] + }, + "mechanism": { + "type": "chained", + "handled": True, + "source": "__context__", "exception_id": 1, "parent_id": 0, }, - } + }, + { + "type": "ValueError", + "value": "hello world", + "module": "foo.bar", + "stacktrace": { + "frames": [{"filename": "foo/baz.py", "lineno": 1, "in_app": True}] + }, + "mechanism": { + "type": "generic", + "handled": False, + "source": "__context__", + "is_exception_group": True, + "exception_id": 0, + }, + }, ] ) ) diff --git a/tests/sentry/eventtypes/test_error.py b/tests/sentry/eventtypes/test_error.py index 858b4ca417d26..6323e9221c58d 100644 --- a/tests/sentry/eventtypes/test_error.py +++ b/tests/sentry/eventtypes/test_error.py @@ -58,6 +58,39 @@ def test_get_metadata_function_none_frame(self): "display_title_with_tree_label": False, } + def test_get_metadata_multiple_exceptions_default(self): + inst = ErrorEvent() + data = { + "exception": { + "values": [ + {"type": "Exception", "value": "Bar"}, + {"type": "Exception", "value": "Foo"}, + ] + } + } + assert inst.get_metadata(data) == { + "type": "Exception", + "value": "Foo", + "display_title_with_tree_label": False, + } + + def test_get_metadata_multiple_exceptions_main_indicated(self): + inst = ErrorEvent() + data = { + "main_exception_id": 1, + "exception": { + "values": [ + {"type": "Exception", "value": "Bar", "mechanism": {"exception_id": 1}}, + {"type": "Exception", "value": "Foo", "mechanism": {"exception_id": 0}}, + ] + }, + } + assert inst.get_metadata(data) == { + "type": "Exception", + "value": "Bar", + "display_title_with_tree_label": False, + } + def test_get_title_none_value(self): inst = ErrorEvent() result = inst.get_title({"type": "Error", "value": None}) diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-bad-duplicate-id.json b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-duplicate-id.json new file mode 100644 index 0000000000000..f5c771ecbb4d9 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-duplicate-id.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "System.Exception", + "value": "Some Inner Exception", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerException", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-bad-missing-parent.json b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-missing-parent.json new file mode 100644 index 0000000000000..71bb9042564ac --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-missing-parent.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "System.Exception", + "value": "Some Inner Exception", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerException", + "exception_id": 3, + "parent_id": 1 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 2, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-bad-out-of-sequence.json b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-out-of-sequence.json new file mode 100644 index 0000000000000..fddbf05e865d3 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-out-of-sequence.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.Exception", + "value": "Some Inner Exception", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerException", + "exception_id": 2, + "parent_id": 1 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-bad-parent-with-parent.json b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-parent-with-parent.json new file mode 100644 index 0000000000000..04abaa224c4d2 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-parent-with-parent.json @@ -0,0 +1,17 @@ +{ + "exception": { + "values": [ + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0, + "parent_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-bad-with-cycle.json b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-with-cycle.json new file mode 100644 index 0000000000000..2d1dd847dfcaf --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-bad-with-cycle.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "System.Exception", + "value": "Some Inner Exception", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerException", + "exception_id": 2, + "parent_id": 1 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 2 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-one-exception.json b/tests/sentry/grouping/grouping_inputs/exception-groups-one-exception.json new file mode 100644 index 0000000000000..2a4b1e7a5c3e4 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-one-exception.json @@ -0,0 +1,27 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-under-nested-groups.json b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-under-nested-groups.json new file mode 100644 index 0000000000000..946be2e68dd7c --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-under-nested-groups.json @@ -0,0 +1,61 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.Exception", + "value": "Test 3", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[1]", + "exception_id": 4, + "parent_id": 1 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 2", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 3, + "parent_id": 1 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 2, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "source": "InnerExceptions[0]", + "is_exception_group": true, + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-different-values.json b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-different-values.json new file mode 100644 index 0000000000000..f1df7e56ed32f --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-different-values.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.Exception", + "value": "And now for something completely different.", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[1]", + "exception_id": 2, + "parent_id": 0 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values-and-children.json b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values-and-children.json new file mode 100644 index 0000000000000..e269d951879a7 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values-and-children.json @@ -0,0 +1,60 @@ +{ + "exception": { + "values": [ + { + "type": "System.Exception", + "value": "Some Inner Exception", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerException", + "exception_id": 4, + "parent_id": 3 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 2", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[1]", + "exception_id": 3, + "parent_id": 0 + } + }, + { + "type": "System.Exception", + "value": "Some Inner Exception", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerException", + "exception_id": 2, + "parent_id": 1 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values.json b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values.json new file mode 100644 index 0000000000000..2a71660762dc0 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-one-type-with-similar-values.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.Exception", + "value": "Test 2", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[1]", + "exception_id": 2, + "parent_id": 0 + } + }, + { + "type": "MyApp.Exception", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-two-types-under-nested-groups.json b/tests/sentry/grouping/grouping_inputs/exception-groups-two-types-under-nested-groups.json new file mode 100644 index 0000000000000..55d359184d819 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-two-types-under-nested-groups.json @@ -0,0 +1,50 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.BeansException", + "value": "Test 2", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[1]", + "exception_id": 3, + "parent_id": 1 + } + }, + { + "type": "MyApp.CoolException", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 2, + "parent_id": 1 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "source": "InnerExceptions[0]", + "is_exception_group": true, + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/grouping_inputs/exception-groups-two-types.json b/tests/sentry/grouping/grouping_inputs/exception-groups-two-types.json new file mode 100644 index 0000000000000..56eef31fcaf61 --- /dev/null +++ b/tests/sentry/grouping/grouping_inputs/exception-groups-two-types.json @@ -0,0 +1,38 @@ +{ + "exception": { + "values": [ + { + "type": "MyApp.SuchWowException", + "value": "Test 2", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[1]", + "exception_id": 2, + "parent_id": 0 + } + }, + { + "type": "MyApp.AmazingException", + "value": "Test 1", + "mechanism": { + "type": "chained", + "handled": true, + "source": "InnerExceptions[0]", + "exception_id": 1, + "parent_id": 0 + } + }, + { + "type": "System.AggregateException", + "value": "One or more errors occurred.", + "mechanism": { + "type": "AppDomain.UnhandledException", + "handled": false, + "is_exception_group": true, + "exception_id": 0 + } + } + ] + } +} diff --git a/tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..d2c9c76351902 --- /dev/null +++ b/tests/sentry/grouping/similarity/snapshots/test_features/test_similarity_extract_grouping_input/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,54 @@ +--- +created: '2023-05-16T04:46:05.184182Z' +creator: sentry +source: tests/sentry/grouping/similarity/test_features.py +--- +similarity:2020-07-23:type:ident-shingle: "MyApp.Exception" +similarity:2020-07-23:type:ident-shingle: "System.AggregateException" +similarity:2020-07-23:type:ident-shingle: "System.Exception" +similarity:2020-07-23:value:character-5-shingle: " " +similarity:2020-07-23:value:character-5-shingle: "Excep" +similarity:2020-07-23:value:character-5-shingle: "Inner" +similarity:2020-07-23:value:character-5-shingle: "One o" +similarity:2020-07-23:value:character-5-shingle: "Some " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "ccurr" +similarity:2020-07-23:value:character-5-shingle: "cepti" +similarity:2020-07-23:value:character-5-shingle: "curre" +similarity:2020-07-23:value:character-5-shingle: "e Inn" +similarity:2020-07-23:value:character-5-shingle: "e err" +similarity:2020-07-23:value:character-5-shingle: "e or " +similarity:2020-07-23:value:character-5-shingle: "eptio" +similarity:2020-07-23:value:character-5-shingle: "er Ex" +similarity:2020-07-23:value:character-5-shingle: "error" +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "me In" +similarity:2020-07-23:value:character-5-shingle: "more " +similarity:2020-07-23:value:character-5-shingle: "ne or" +similarity:2020-07-23:value:character-5-shingle: "ner E" +similarity:2020-07-23:value:character-5-shingle: "nner " +similarity:2020-07-23:value:character-5-shingle: "occur" +similarity:2020-07-23:value:character-5-shingle: "ome I" +similarity:2020-07-23:value:character-5-shingle: "or mo" +similarity:2020-07-23:value:character-5-shingle: "ore e" +similarity:2020-07-23:value:character-5-shingle: "ors o" +similarity:2020-07-23:value:character-5-shingle: "ption" +similarity:2020-07-23:value:character-5-shingle: "r Exc" +similarity:2020-07-23:value:character-5-shingle: "r mor" +similarity:2020-07-23:value:character-5-shingle: "re er" +similarity:2020-07-23:value:character-5-shingle: "rors " +similarity:2020-07-23:value:character-5-shingle: "rred." +similarity:2020-07-23:value:character-5-shingle: "rrors" +similarity:2020-07-23:value:character-5-shingle: "rs oc" +similarity:2020-07-23:value:character-5-shingle: "s occ" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "Excep" +similarity:2020-07-23:value:character-5-shingle: "Inner" +similarity:2020-07-23:value:character-5-shingle: "Some " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "cepti" +similarity:2020-07-23:value:character-5-shingle: "e Inn" +similarity:2020-07-23:value:character-5-shingle: "eptio" +similarity:2020-07-23:value:character-5-shingle: "er Ex" +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "me In" +similarity:2020-07-23:value:character-5-shingle: "ner E" +similarity:2020-07-23:value:character-5-shingle: "nner " +similarity:2020-07-23:value:character-5-shingle: "ome I" +similarity:2020-07-23:value:character-5-shingle: "ption" +similarity:2020-07-23:value:character-5-shingle: "r Exc" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "And n" +similarity:2020-07-23:value:character-5-shingle: "One o" +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "ccurr" +similarity:2020-07-23:value:character-5-shingle: "compl" +similarity:2020-07-23:value:character-5-shingle: "curre" +similarity:2020-07-23:value:character-5-shingle: "d now" +similarity:2020-07-23:value:character-5-shingle: "diffe" +similarity:2020-07-23:value:character-5-shingle: "e err" +similarity:2020-07-23:value:character-5-shingle: "e or " +similarity:2020-07-23:value:character-5-shingle: "ely d" +similarity:2020-07-23:value:character-5-shingle: "erent" +similarity:2020-07-23:value:character-5-shingle: "error" +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "etely" +similarity:2020-07-23:value:character-5-shingle: "ethin" +similarity:2020-07-23:value:character-5-shingle: "feren" +similarity:2020-07-23:value:character-5-shingle: "ffere" +similarity:2020-07-23:value:character-5-shingle: "for s" +similarity:2020-07-23:value:character-5-shingle: "g com" +similarity:2020-07-23:value:character-5-shingle: "hing " +similarity:2020-07-23:value:character-5-shingle: "iffer" +similarity:2020-07-23:value:character-5-shingle: "ing c" +similarity:2020-07-23:value:character-5-shingle: "letel" +similarity:2020-07-23:value:character-5-shingle: "ly di" +similarity:2020-07-23:value:character-5-shingle: "methi" +similarity:2020-07-23:value:character-5-shingle: "more " +similarity:2020-07-23:value:character-5-shingle: "mplet" +similarity:2020-07-23:value:character-5-shingle: "nd no" +similarity:2020-07-23:value:character-5-shingle: "ne or" +similarity:2020-07-23:value:character-5-shingle: "ng co" +similarity:2020-07-23:value:character-5-shingle: "now f" +similarity:2020-07-23:value:character-5-shingle: "occur" +similarity:2020-07-23:value:character-5-shingle: "ometh" +similarity:2020-07-23:value:character-5-shingle: "omple" +similarity:2020-07-23:value:character-5-shingle: "or mo" +similarity:2020-07-23:value:character-5-shingle: "or so" +similarity:2020-07-23:value:character-5-shingle: "ore e" +similarity:2020-07-23:value:character-5-shingle: "ors o" +similarity:2020-07-23:value:character-5-shingle: "ow fo" +similarity:2020-07-23:value:character-5-shingle: "plete" +similarity:2020-07-23:value:character-5-shingle: "r mor" +similarity:2020-07-23:value:character-5-shingle: "r som" +similarity:2020-07-23:value:character-5-shingle: "re er" +similarity:2020-07-23:value:character-5-shingle: "rent." +similarity:2020-07-23:value:character-5-shingle: "rors " +similarity:2020-07-23:value:character-5-shingle: "rred." +similarity:2020-07-23:value:character-5-shingle: "rrors" +similarity:2020-07-23:value:character-5-shingle: "rs oc" +similarity:2020-07-23:value:character-5-shingle: "s occ" +similarity:2020-07-23:value:character-5-shingle: "somet" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "Excep" +similarity:2020-07-23:value:character-5-shingle: "Inner" +similarity:2020-07-23:value:character-5-shingle: "Some " +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "cepti" +similarity:2020-07-23:value:character-5-shingle: "e Inn" +similarity:2020-07-23:value:character-5-shingle: "eptio" +similarity:2020-07-23:value:character-5-shingle: "er Ex" +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "me In" +similarity:2020-07-23:value:character-5-shingle: "ner E" +similarity:2020-07-23:value:character-5-shingle: "nner " +similarity:2020-07-23:value:character-5-shingle: "ome I" +similarity:2020-07-23:value:character-5-shingle: "ption" +similarity:2020-07-23:value:character-5-shingle: "r Exc" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "One o" +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "ccurr" +similarity:2020-07-23:value:character-5-shingle: "curre" +similarity:2020-07-23:value:character-5-shingle: "e err" +similarity:2020-07-23:value:character-5-shingle: "e or " +similarity:2020-07-23:value:character-5-shingle: "error" +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "more " +similarity:2020-07-23:value:character-5-shingle: "ne or" +similarity:2020-07-23:value:character-5-shingle: "occur" +similarity:2020-07-23:value:character-5-shingle: "or mo" +similarity:2020-07-23:value:character-5-shingle: "ore e" +similarity:2020-07-23:value:character-5-shingle: "ors o" +similarity:2020-07-23:value:character-5-shingle: "r mor" +similarity:2020-07-23:value:character-5-shingle: "re er" +similarity:2020-07-23:value:character-5-shingle: "rors " +similarity:2020-07-23:value:character-5-shingle: "rred." +similarity:2020-07-23:value:character-5-shingle: "rrors" +similarity:2020-07-23:value:character-5-shingle: "rs oc" +similarity:2020-07-23:value:character-5-shingle: "s occ" +similarity:2020-07-23:value:character-5-shingle: "st " +similarity:2020-07-23:value:character-5-shingle: "One o" +similarity:2020-07-23:value:character-5-shingle: "Test " +similarity:2020-07-23:value:character-5-shingle: "ccurr" +similarity:2020-07-23:value:character-5-shingle: "curre" +similarity:2020-07-23:value:character-5-shingle: "e err" +similarity:2020-07-23:value:character-5-shingle: "e or " +similarity:2020-07-23:value:character-5-shingle: "error" +similarity:2020-07-23:value:character-5-shingle: "est <" +similarity:2020-07-23:value:character-5-shingle: "more " +similarity:2020-07-23:value:character-5-shingle: "ne or" +similarity:2020-07-23:value:character-5-shingle: "occur" +similarity:2020-07-23:value:character-5-shingle: "or mo" +similarity:2020-07-23:value:character-5-shingle: "ore e" +similarity:2020-07-23:value:character-5-shingle: "ors o" +similarity:2020-07-23:value:character-5-shingle: "r mor" +similarity:2020-07-23:value:character-5-shingle: "re er" +similarity:2020-07-23:value:character-5-shingle: "rors " +similarity:2020-07-23:value:character-5-shingle: "rred." +similarity:2020-07-23:value:character-5-shingle: "rrors" +similarity:2020-07-23:value:character-5-shingle: "rs oc" +similarity:2020-07-23:value:character-5-shingle: "s occ" +similarity:2020-07-23:value:character-5-shingle: "st " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..ac612c5099cb8 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:34.755222Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..c1bcfdf500cc7 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-16T04:46:59.470725Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..724d2f2ad24bd --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:37.400849Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..8eaf080353f88 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:39.570873Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..ad254e82f3d55 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_exception.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T06:18:46.927835Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..6a2037d5aa81a --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T05:13:35.402527Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..07742bcba719c --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T20:21:21.904829Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "17022e0561e9b6e6351723a08aa81b18" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.Exception" + value* + "And now for something completely different." + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..298d0fe05d751 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T00:43:37.180322Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..cb08868eaf8e5 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-04T01:23:18.165592Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..ca0ed1b538bd8 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T05:13:35.454977Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "bca604b98cb4637167eb6190a92e8933" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.AmazingException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..80595ff76efcc --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/mobile@2021_02_12/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T06:07:44.977614Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "fca0fd23f09e8da4481304ef2a531100" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.BeansException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..bf49686fe71b8 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,19 @@ +--- +created: '2023-05-16T04:46:52.871784Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "9f7b2c7e963b17ad8755e976534c53bf" + component: + app* + chained-exception* + exception* + type* + "System.Exception" + exception* + type* + "MyApp.Exception" + exception* + type* + "System.AggregateException" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..78314e7f02eb7 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-16T04:46:59.813014Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "961abf173f19a77619017a015c961984" + component: + app* + exception* + type* + "MyApp.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..5db5de1ab2c40 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,16 @@ +--- +created: '2023-05-16T04:47:09.460523Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "d893a00b9b0c92a701be84b929bca470" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + exception* + type* + "System.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..aa1e96c3cdaa3 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-16T04:46:52.478474Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "87021eb61da600fb3efd9158d979e63d" + component: + app* + exception* + type* + "System.AggregateException" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..c1e6c20575597 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-16T04:47:10.451318Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "87021eb61da600fb3efd9158d979e63d" + component: + app* + exception* + type* + "System.AggregateException" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..b6a28818afa76 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_exception.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-04T06:18:46.319999Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "961abf173f19a77619017a015c961984" + component: + app* + exception* + type* + "MyApp.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..1743224d2810d --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-04T05:13:36.444479Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "961abf173f19a77619017a015c961984" + component: + app* + exception* + type* + "MyApp.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..510a81db2e3f2 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-04T20:21:21.876238Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "961abf173f19a77619017a015c961984" + component: + app* + exception* + type* + "MyApp.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..5e7e2b2ab2080 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,12 @@ +--- +created: '2023-05-04T00:43:37.161937Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "961abf173f19a77619017a015c961984" + component: + app* + exception* + type* + "MyApp.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..5bacb3ff9bac1 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,16 @@ +--- +created: '2023-05-04T01:23:18.917826Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "d893a00b9b0c92a701be84b929bca470" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + exception* + type* + "System.Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..f8bb7b6c0e874 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types.pysnap @@ -0,0 +1,19 @@ +--- +created: '2023-05-04T05:13:36.779973Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "3fce726c101f44c9d4b53784111a571b" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + exception* + type* + "MyApp.AmazingException" + exception* + type* + "System.AggregateException" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..8f68aab16aba4 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_05/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,19 @@ +--- +created: '2023-05-04T06:07:43.692225Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a19d433f4e4bcafc2dfeae72db711449" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + exception* + type* + "MyApp.BeansException" + exception* + type* + "System.AggregateException" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..c2ad80b503c64 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-16T04:47:05.136434Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "e2bf1e0628b7b1824a9b63dec7a079a3" + component: + app* + chained-exception* + exception* + type* + "System.Exception" + value* + "Some Inner Exception" + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..264116616ecce --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:40.289006Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..8c2043b216990 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-16T04:47:05.447840Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..74519127d6d4a --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:39.826880Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..33aa4c1b4da22 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:47.510211Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..bd6926c498024 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_exception.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T06:18:46.012651Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..ec1fcd64d2457 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T05:13:36.294433Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..4e581e0956b8d --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T20:21:23.964337Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "17022e0561e9b6e6351723a08aa81b18" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.Exception" + value* + "And now for something completely different." + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..50e5bd30ceb9f --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T00:43:37.147164Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..c527a4927f548 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-04T01:23:19.194739Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..30f14e0bff4c0 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T05:13:36.504084Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "bca604b98cb4637167eb6190a92e8933" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.AmazingException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..84bed28397695 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_04_17/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T06:07:44.630157Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "fca0fd23f09e8da4481304ef2a531100" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.BeansException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..d14c99ed6b4d3 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-16T04:46:13.601320Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "e2bf1e0628b7b1824a9b63dec7a079a3" + component: + app* + chained-exception* + exception* + type* + "System.Exception" + value* + "Some Inner Exception" + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..201324fd7a4ab --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:47:01.745042Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..b9171860190f5 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-16T04:46:25.199338Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..882929361abd9 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:47:02.566841Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..fead9e13d14e9 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:47:10.467599Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..1c00f8dec658d --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_exception.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T06:18:44.222149Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..8161916d1a3bb --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T05:13:36.607396Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..63986311920ed --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T20:21:22.496734Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "17022e0561e9b6e6351723a08aa81b18" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.Exception" + value* + "And now for something completely different." + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..3c1d8d340a908 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T00:43:37.188227Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..3e2e3436fb66f --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-04T01:23:18.754575Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..c30f7ad56699f --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T05:13:35.411590Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "bca604b98cb4637167eb6190a92e8933" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.AmazingException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..cd5bef6655484 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_05_08/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T06:07:44.875962Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "fca0fd23f09e8da4481304ef2a531100" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.BeansException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..b4dce12f48111 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-16T04:46:13.428951Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "e2bf1e0628b7b1824a9b63dec7a079a3" + component: + app* + chained-exception* + exception* + type* + "System.Exception" + value* + "Some Inner Exception" + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..a57b1c515c0a3 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:15.786735Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..6eacc5bb10255 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-16T04:47:06.090373Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..93bfd8fc41e7a --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:47:01.755829Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..807d41fe31871 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:13.473397Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..52e94da64cd1a --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_exception.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T06:18:46.623984Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..53dac13eff82f --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T05:13:36.297914Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..1b6fd4e6c7f90 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T20:21:22.180925Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "17022e0561e9b6e6351723a08aa81b18" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.Exception" + value* + "And now for something completely different." + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..89bb0681dc42f --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T00:43:37.187850Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..006e3fc939e97 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-04T01:23:18.754551Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..5dc8734bc731c --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T05:13:36.689076Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "bca604b98cb4637167eb6190a92e8933" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.AmazingException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..148da0054ec91 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2019_10_29/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T06:07:44.633291Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "fca0fd23f09e8da4481304ef2a531100" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.BeansException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..dfd261d3a8c03 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-16T04:37:32.010859Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "e2bf1e0628b7b1824a9b63dec7a079a3" + component: + app* + chained-exception* + exception* + type* + "System.Exception" + value* + "Some Inner Exception" + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..720888bb39b6b --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:37:32.352194Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..876703bf96b3e --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-16T04:37:32.024833Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..8411f3c48254a --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:37:32.016104Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..06a331de2f4b7 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:43:16.573431Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..8f45c26503e21 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_exception.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T06:18:44.884594Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..2736b7ddf5fc2 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T05:13:36.604916Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..e6e4138c369ca --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T20:21:22.132827Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "17022e0561e9b6e6351723a08aa81b18" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.Exception" + value* + "And now for something completely different." + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..f597b03f78709 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T00:40:08.958930Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..b91ac6b5fa267 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-04T01:23:18.164594Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..83bdafda30f18 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T05:13:35.443285Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "bca604b98cb4637167eb6190a92e8933" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.AmazingException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..3edd393856a20 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/newstyle@2023_01_11/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T06:07:44.723852Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "fca0fd23f09e8da4481304ef2a531100" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.BeansException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_duplicate_id.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_duplicate_id.pysnap new file mode 100644 index 0000000000000..9e2f522d53f85 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_duplicate_id.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-16T04:46:09.270589Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "e2bf1e0628b7b1824a9b63dec7a079a3" + component: + app* + chained-exception* + exception* + type* + "System.Exception" + value* + "Some Inner Exception" + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_missing_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_missing_parent.pysnap new file mode 100644 index 0000000000000..b2c00c798aec0 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_missing_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:47:06.095222Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_out_of_sequence.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_out_of_sequence.pysnap new file mode 100644 index 0000000000000..3d1dd598aed6e --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_out_of_sequence.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-16T04:47:03.085193Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_parent_with_parent.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_parent_with_parent.pysnap new file mode 100644 index 0000000000000..0a80a8d4bbec9 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_parent_with_parent.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:47:08.828812Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_with_cycle.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_with_cycle.pysnap new file mode 100644 index 0000000000000..bf414cab2ac31 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_bad_with_cycle.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-16T04:46:13.788787Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "0809098f9f613b63467605dd1739cc9b" + component: + app* + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_exception.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_exception.pysnap new file mode 100644 index 0000000000000..74aaeb1764930 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_exception.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T06:18:44.871225Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_under_nested_groups.pysnap new file mode 100644 index 0000000000000..7b22d3cbe7e18 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_under_nested_groups.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T05:13:36.424974Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_different_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_different_values.pysnap new file mode 100644 index 0000000000000..a5863695951ff --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_different_values.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T20:21:23.691979Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "17022e0561e9b6e6351723a08aa81b18" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.Exception" + value* + "And now for something completely different." + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values.pysnap new file mode 100644 index 0000000000000..413f851029731 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values.pysnap @@ -0,0 +1,14 @@ +--- +created: '2023-05-04T00:43:37.182032Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "a4f16891fa438620699cb2d9af5cc827" + component: + app* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values_and_children.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values_and_children.pysnap new file mode 100644 index 0000000000000..25bbedccbdc00 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_one_type_with_similar_values_and_children.pysnap @@ -0,0 +1,20 @@ +--- +created: '2023-05-04T01:23:19.178573Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "f0078a82f351095ba595daa7d493aa3c" + component: + app* + chained-exception* + exception* + type* + "MyApp.Exception" + value* (stripped common values) + "Test " + exception* + type* + "System.Exception" + value* + "Some Inner Exception" diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types.pysnap new file mode 100644 index 0000000000000..e41dbd0cabf99 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T05:13:35.427677Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "bca604b98cb4637167eb6190a92e8933" + component: + app* + chained-exception* + exception* + type* + "MyApp.SuchWowException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.AmazingException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred." diff --git a/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types_under_nested_groups.pysnap b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types_under_nested_groups.pysnap new file mode 100644 index 0000000000000..2ec8afe5049a8 --- /dev/null +++ b/tests/sentry/grouping/snapshots/test_variants/test_event_hash_variant/similarity@2020_07_23/exception_groups_two_types_under_nested_groups.pysnap @@ -0,0 +1,25 @@ +--- +created: '2023-05-04T06:07:44.989928Z' +creator: sentry +source: tests/sentry/grouping/test_variants.py +--- +app: + hash: "fca0fd23f09e8da4481304ef2a531100" + component: + app* + chained-exception* + exception* + type* + "MyApp.CoolException" + value* (stripped common values) + "Test " + exception* + type* + "MyApp.BeansException" + value* (stripped common values) + "Test " + exception* + type* + "System.AggregateException" + value* + "One or more errors occurred."