def test_grouping_reset(self): """ Regression test against a specific mutability bug involving grouping, stacktrace normalization and memoized interfaces """ event_data = { "exception": { "values": [ { "type": "Hello", "stacktrace": { "frames": [ { "function": "foo", }, { "function": "bar", }, ] }, } ] }, } enhancement = Enhancements.from_config_string( """ function:foo category=foo_like category:foo_like -group """, ) grouping_config = { "enhancements": enhancement.dumps(), "id": "mobile:2021-02-12", } event1 = Event( event_id="a" * 32, data=event_data, project_id=self.project.id, ) variants1 = event1.get_grouping_variants(grouping_config, normalize_stacktraces=True) event2 = Event( event_id="b" * 32, data=event_data, project_id=self.project.id, ) event2.interfaces # Populate cache variants2 = event2.get_grouping_variants(grouping_config, normalize_stacktraces=True) assert sorted(v.as_dict()["hash"] for v in variants1.values()) == sorted( v.as_dict()["hash"] for v in variants2.values() )
def dump_variants(config, event: Event) -> str: # Copied from sentry/tests/sentry/grouping/test_variants.py rv: List[str] = [] for (key, value) in sorted( event.get_grouping_variants(force_config=config).items() ): if rv: rv.append("-" * 74) rv.append("%s:" % key) _dump_variant(value, rv, 1) return "\n".join(rv)