From 84129d18cbe558cfac88aa2a374cdfe09558e447 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 10:38:37 -0400 Subject: [PATCH 1/9] WIP minor refactor --- .../event_manager/test_hierarchical_hashes.py | 98 ++++++------------- 1 file changed, 32 insertions(+), 66 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index 588137b51d0cbe..3e642dd3d82614 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -202,6 +202,32 @@ def test_partial_move(default_project, fast_save): class EventManagerGroupingTest(TestCase): + def save_event(self, timestamp, ts_offset): + ts = timestamp + ts_offset + manager = EventManager( + make_event( + message="foo 123", + event_id=hex(2**127 + int(ts))[-32:], + timestamp=ts, + exception={ + "values": [ + { + "type": "Hello", + "stacktrace": { + "frames": [ + {"function": "not_in_app_function"}, + {"function": "in_app_function"}, + ] + }, + } + ] + }, + ) + ) + manager.normalize() + with self.tasks(): + return manager.save(self.project.id) + def test_applies_secondary_grouping_hierarchical(self): project = self.project project.update_option("sentry:grouping_config", "legacy:2019-03-12") @@ -209,44 +235,14 @@ def test_applies_secondary_grouping_hierarchical(self): timestamp = time.time() - 300 - def save_event(ts_offset): - ts = timestamp + ts_offset - manager = EventManager( - make_event( - message="foo 123", - event_id=hex(2**127 + int(ts))[-32:], - timestamp=ts, - exception={ - "values": [ - { - "type": "Hello", - "stacktrace": { - "frames": [ - { - "function": "not_in_app_function", - }, - { - "function": "in_app_function", - }, - ] - }, - } - ] - }, - ) - ) - manager.normalize() - with self.tasks(): - return manager.save(project.id) - - event = save_event(0) + event = self.save_event(timestamp, 0) project.update_option("sentry:grouping_config", "mobile:2021-02-12") project.update_option("sentry:secondary_grouping_config", "legacy:2019-03-12") project.update_option("sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600)) # Switching to newstyle grouping changes hashes as 123 will be removed - event2 = save_event(2) + event2 = self.save_event(timestamp, 2) # make sure that events did get into same group because of fallback grouping, not because of hashes which come from primary grouping only assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) @@ -259,7 +255,7 @@ def save_event(ts_offset): # After expiry, new events are still assigned to the same group: project.update_option("sentry:secondary_grouping_expiry", 0) - event3 = save_event(4) + event3 = self.save_event(timestamp, 4) assert event3.group_id == event2.group_id def test_applies_downgrade_hierarchical(self): @@ -269,44 +265,14 @@ def test_applies_downgrade_hierarchical(self): timestamp = time.time() - 300 - def save_event(ts_offset): - ts = timestamp + ts_offset - manager = EventManager( - make_event( - message="foo 123", - event_id=hex(2**127 + int(ts))[-32:], - timestamp=ts, - exception={ - "values": [ - { - "type": "Hello", - "stacktrace": { - "frames": [ - { - "function": "not_in_app_function", - }, - { - "function": "in_app_function", - }, - ] - }, - } - ] - }, - ) - ) - manager.normalize() - with self.tasks(): - return manager.save(project.id) - - event = save_event(0) + event = self.save_event(timestamp, 0) project.update_option("sentry:grouping_config", "legacy:2019-03-12") project.update_option("sentry:secondary_grouping_config", "mobile:2021-02-12") project.update_option("sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600)) # Switching to newstyle grouping changes hashes as 123 will be removed - event2 = save_event(2) + event2 = self.save_event(timestamp, 2) # make sure that events did get into same group because of fallback grouping, not because of hashes which come from primary grouping only assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) @@ -326,5 +292,5 @@ def save_event(ts_offset): # After expiry, new events are still assigned to the same group: project.update_option("sentry:secondary_grouping_expiry", 0) - event3 = save_event(4) + event3 = self.save_event(timestamp, 4) assert event3.group_id == event2.group_id From 10e593af0de2c3c5f2393fe0eec895b56e145380 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 10:57:56 -0400 Subject: [PATCH 2/9] More changes --- .../event_manager/test_hierarchical_hashes.py | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index 3e642dd3d82614..df3e0e6261135b 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -228,18 +228,25 @@ def save_event(self, timestamp, ts_offset): with self.tasks(): return manager.save(self.project.id) + def set_options(self, primary_config): + self.project.update_option("sentry:grouping_config", primary_config) + self.project.update_option("sentry:secondary_grouping_expiry", 0) + + def change_configuration(self, new_config): + original_config = self.project.get_option("sentry:grouping_config") + self.project.update_option("sentry:grouping_config", new_config) + self.project.update_option("sentry:secondary_grouping_config", original_config) + self.project.update_option( + "sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600) + ) + def test_applies_secondary_grouping_hierarchical(self): - project = self.project - project.update_option("sentry:grouping_config", "legacy:2019-03-12") - project.update_option("sentry:secondary_grouping_expiry", 0) + self.set_options("legacy:2019-03-12") timestamp = time.time() - 300 - event = self.save_event(timestamp, 0) - project.update_option("sentry:grouping_config", "mobile:2021-02-12") - project.update_option("sentry:secondary_grouping_config", "legacy:2019-03-12") - project.update_option("sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600)) + self.change_configuration("mobile:2021-02-12") # Switching to newstyle grouping changes hashes as 123 will be removed event2 = self.save_event(timestamp, 2) @@ -254,22 +261,18 @@ def test_applies_secondary_grouping_hierarchical(self): assert group.last_seen == event2.datetime # After expiry, new events are still assigned to the same group: - project.update_option("sentry:secondary_grouping_expiry", 0) + self.project.update_option("sentry:secondary_grouping_expiry", 0) event3 = self.save_event(timestamp, 4) assert event3.group_id == event2.group_id def test_applies_downgrade_hierarchical(self): - project = self.project - project.update_option("sentry:grouping_config", "mobile:2021-02-12") - project.update_option("sentry:secondary_grouping_expiry", 0) + self.set_options("mobile:2021-02-12") timestamp = time.time() - 300 event = self.save_event(timestamp, 0) - project.update_option("sentry:grouping_config", "legacy:2019-03-12") - project.update_option("sentry:secondary_grouping_config", "mobile:2021-02-12") - project.update_option("sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600)) + self.change_configuration("mobile:2021-02-12") # Switching to newstyle grouping changes hashes as 123 will be removed event2 = self.save_event(timestamp, 2) @@ -291,6 +294,6 @@ def test_applies_downgrade_hierarchical(self): assert group.last_seen == event2.datetime # After expiry, new events are still assigned to the same group: - project.update_option("sentry:secondary_grouping_expiry", 0) + self.project.update_option("sentry:secondary_grouping_expiry", 0) event3 = self.save_event(timestamp, 4) assert event3.group_id == event2.group_id From eec5fc2116a196562ad9907fac4c2411c6d10f33 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 11:30:30 -0400 Subject: [PATCH 3/9] Refactor --- .../event_manager/test_hierarchical_hashes.py | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index df3e0e6261135b..324a3efeaac7bf 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -202,13 +202,14 @@ def test_partial_move(default_project, fast_save): class EventManagerGroupingTest(TestCase): - def save_event(self, timestamp, ts_offset): - ts = timestamp + ts_offset + def setUp(self): + super().setUp() + + def save_event(self): manager = EventManager( make_event( message="foo 123", - event_id=hex(2**127 + int(ts))[-32:], - timestamp=ts, + event_id=hex(2**127)[-32:], exception={ "values": [ { @@ -232,7 +233,7 @@ def set_options(self, primary_config): self.project.update_option("sentry:grouping_config", primary_config) self.project.update_option("sentry:secondary_grouping_expiry", 0) - def change_configuration(self, new_config): + def transition_to_new_config(self, new_config): original_config = self.project.get_option("sentry:grouping_config") self.project.update_option("sentry:grouping_config", new_config) self.project.update_option("sentry:secondary_grouping_config", original_config) @@ -241,18 +242,24 @@ def change_configuration(self, new_config): ) def test_applies_secondary_grouping_hierarchical(self): - self.set_options("legacy:2019-03-12") - - timestamp = time.time() - 300 - event = self.save_event(timestamp, 0) - - self.change_configuration("mobile:2021-02-12") - - # Switching to newstyle grouping changes hashes as 123 will be removed - event2 = self.save_event(timestamp, 2) - - # make sure that events did get into same group because of fallback grouping, not because of hashes which come from primary grouping only + self.set_options("legacy:2019-03-12") # Starting configuration + event = self.save_event() + assert event.get_hashes().hashes == ["8b1a9953c4611296a827abf8c47804d7"] + assert event.get_hashes().hierarchical_hashes == [] + + self.transition_to_new_config("mobile:2021-02-12") + # This event will have two sets of hashes + event2 = self.save_event() + hierarchical_hashes = [ + "be778d6d6543432ae89b3e0f94ebff80", + "4e536cc423da0e1e2101b30688aab6b1", + ] + # The hashes propery gets the last hierarchical hash assigned + assert event2.get_hashes().hashes == [hierarchical_hashes[-1]] + assert event2.get_hashes().hierarchical_hashes == hierarchical_hashes + # The hashes property between the two events do not intersect assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) + # They both belong to the same group be assert event.group_id == event2.group_id group = Group.objects.get(id=event.group_id) @@ -262,20 +269,15 @@ def test_applies_secondary_grouping_hierarchical(self): # After expiry, new events are still assigned to the same group: self.project.update_option("sentry:secondary_grouping_expiry", 0) - event3 = self.save_event(timestamp, 4) + event3 = self.save_event() assert event3.group_id == event2.group_id def test_applies_downgrade_hierarchical(self): self.set_options("mobile:2021-02-12") - - timestamp = time.time() - 300 - - event = self.save_event(timestamp, 0) - - self.change_configuration("mobile:2021-02-12") - + event = self.save_event() + self.transition_to_new_config("legacy:2019-03-12") # Switching to newstyle grouping changes hashes as 123 will be removed - event2 = self.save_event(timestamp, 2) + event2 = self.save_event() # make sure that events did get into same group because of fallback grouping, not because of hashes which come from primary grouping only assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) @@ -295,5 +297,5 @@ def test_applies_downgrade_hierarchical(self): # After expiry, new events are still assigned to the same group: self.project.update_option("sentry:secondary_grouping_expiry", 0) - event3 = self.save_event(timestamp, 4) + event3 = self.save_event() assert event3.group_id == event2.group_id From fdf97ec868d7616c4dd9f90798d073d8a0cf3424 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 11:36:28 -0400 Subject: [PATCH 4/9] Add hashes logic --- .../event_manager/test_hierarchical_hashes.py | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index 324a3efeaac7bf..d5325b1e5cfea1 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -241,7 +241,11 @@ def transition_to_new_config(self, new_config): "sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600) ) - def test_applies_secondary_grouping_hierarchical(self): + def test_can_upgrade_to_hierarchical_config(self): + hierarchical_hashes = [ + "be778d6d6543432ae89b3e0f94ebff80", + "4e536cc423da0e1e2101b30688aab6b1", + ] self.set_options("legacy:2019-03-12") # Starting configuration event = self.save_event() assert event.get_hashes().hashes == ["8b1a9953c4611296a827abf8c47804d7"] @@ -250,10 +254,6 @@ def test_applies_secondary_grouping_hierarchical(self): self.transition_to_new_config("mobile:2021-02-12") # This event will have two sets of hashes event2 = self.save_event() - hierarchical_hashes = [ - "be778d6d6543432ae89b3e0f94ebff80", - "4e536cc423da0e1e2101b30688aab6b1", - ] # The hashes propery gets the last hierarchical hash assigned assert event2.get_hashes().hashes == [hierarchical_hashes[-1]] assert event2.get_hashes().hierarchical_hashes == hierarchical_hashes @@ -272,15 +272,26 @@ def test_applies_secondary_grouping_hierarchical(self): event3 = self.save_event() assert event3.group_id == event2.group_id - def test_applies_downgrade_hierarchical(self): - self.set_options("mobile:2021-02-12") + def test_can_downgrade_from_hierarchical_config(self): + hierarchical_hashes = [ + "be778d6d6543432ae89b3e0f94ebff80", + "4e536cc423da0e1e2101b30688aab6b1", + ] + self.set_options("mobile:2021-02-12") # Starting configuration event = self.save_event() + assert event.get_hashes().hashes == ["4e536cc423da0e1e2101b30688aab6b1"] + assert event.get_hashes().hierarchical_hashes == hierarchical_hashes + self.transition_to_new_config("legacy:2019-03-12") - # Switching to newstyle grouping changes hashes as 123 will be removed + # This event will have two sets of hashes event2 = self.save_event() - # make sure that events did get into same group because of fallback grouping, not because of hashes which come from primary grouping only + # The hashes propery gets the last hierarchical hash assigned + assert event2.get_hashes().hashes == ["8b1a9953c4611296a827abf8c47804d7"] + assert event2.get_hashes().hierarchical_hashes == [] + # The hashes property between the two events do not intersect assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) + # They both belong to the same group be assert event.group_id == event2.group_id group = Group.objects.get(id=event.group_id) From b90de5813538fb640dd035a39b2b7decd44bef0e Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 11:37:19 -0400 Subject: [PATCH 5/9] Minor change --- tests/sentry/event_manager/test_hierarchical_hashes.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index d5325b1e5cfea1..69a5aa243b1715 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -202,9 +202,6 @@ def test_partial_move(default_project, fast_save): class EventManagerGroupingTest(TestCase): - def setUp(self): - super().setUp() - def save_event(self): manager = EventManager( make_event( From 740fa2a05b8c4222a559805ce37801ef9d4ec643 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 13:31:59 -0400 Subject: [PATCH 6/9] Re-order functions --- .../event_manager/test_hierarchical_hashes.py | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index 69a5aa243b1715..e190c58fd62289 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -202,42 +202,6 @@ def test_partial_move(default_project, fast_save): class EventManagerGroupingTest(TestCase): - def save_event(self): - manager = EventManager( - make_event( - message="foo 123", - event_id=hex(2**127)[-32:], - exception={ - "values": [ - { - "type": "Hello", - "stacktrace": { - "frames": [ - {"function": "not_in_app_function"}, - {"function": "in_app_function"}, - ] - }, - } - ] - }, - ) - ) - manager.normalize() - with self.tasks(): - return manager.save(self.project.id) - - def set_options(self, primary_config): - self.project.update_option("sentry:grouping_config", primary_config) - self.project.update_option("sentry:secondary_grouping_expiry", 0) - - def transition_to_new_config(self, new_config): - original_config = self.project.get_option("sentry:grouping_config") - self.project.update_option("sentry:grouping_config", new_config) - self.project.update_option("sentry:secondary_grouping_config", original_config) - self.project.update_option( - "sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600) - ) - def test_can_upgrade_to_hierarchical_config(self): hierarchical_hashes = [ "be778d6d6543432ae89b3e0f94ebff80", @@ -307,3 +271,39 @@ def test_can_downgrade_from_hierarchical_config(self): self.project.update_option("sentry:secondary_grouping_expiry", 0) event3 = self.save_event() assert event3.group_id == event2.group_id + + def save_event(self): + manager = EventManager( + make_event( + message="foo 123", + event_id=hex(2**127)[-32:], + exception={ + "values": [ + { + "type": "Hello", + "stacktrace": { + "frames": [ + {"function": "not_in_app_function"}, + {"function": "in_app_function"}, + ] + }, + } + ] + }, + ) + ) + manager.normalize() + with self.tasks(): + return manager.save(self.project.id) + + def set_options(self, primary_config): + self.project.update_option("sentry:grouping_config", primary_config) + self.project.update_option("sentry:secondary_grouping_expiry", 0) + + def transition_to_new_config(self, new_config): + original_config = self.project.get_option("sentry:grouping_config") + self.project.update_option("sentry:grouping_config", new_config) + self.project.update_option("sentry:secondary_grouping_config", original_config) + self.project.update_option( + "sentry:secondary_grouping_expiry", time.time() + (24 * 90 * 3600) + ) From 5b5959100f1dfe3f8bc612c04d5ef0b88246b1dc Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 13:34:00 -0400 Subject: [PATCH 7/9] Reduce the diff --- .../event_manager/test_hierarchical_hashes.py | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index e190c58fd62289..0e9722e628a40f 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -203,21 +203,13 @@ def test_partial_move(default_project, fast_save): class EventManagerGroupingTest(TestCase): def test_can_upgrade_to_hierarchical_config(self): - hierarchical_hashes = [ - "be778d6d6543432ae89b3e0f94ebff80", - "4e536cc423da0e1e2101b30688aab6b1", - ] self.set_options("legacy:2019-03-12") # Starting configuration event = self.save_event() - assert event.get_hashes().hashes == ["8b1a9953c4611296a827abf8c47804d7"] - assert event.get_hashes().hierarchical_hashes == [] self.transition_to_new_config("mobile:2021-02-12") # This event will have two sets of hashes event2 = self.save_event() - # The hashes propery gets the last hierarchical hash assigned - assert event2.get_hashes().hashes == [hierarchical_hashes[-1]] - assert event2.get_hashes().hierarchical_hashes == hierarchical_hashes + # The hashes property between the two events do not intersect assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) # They both belong to the same group be @@ -234,22 +226,14 @@ def test_can_upgrade_to_hierarchical_config(self): assert event3.group_id == event2.group_id def test_can_downgrade_from_hierarchical_config(self): - hierarchical_hashes = [ - "be778d6d6543432ae89b3e0f94ebff80", - "4e536cc423da0e1e2101b30688aab6b1", - ] self.set_options("mobile:2021-02-12") # Starting configuration + event = self.save_event() - assert event.get_hashes().hashes == ["4e536cc423da0e1e2101b30688aab6b1"] - assert event.get_hashes().hierarchical_hashes == hierarchical_hashes self.transition_to_new_config("legacy:2019-03-12") # This event will have two sets of hashes event2 = self.save_event() - # The hashes propery gets the last hierarchical hash assigned - assert event2.get_hashes().hashes == ["8b1a9953c4611296a827abf8c47804d7"] - assert event2.get_hashes().hierarchical_hashes == [] # The hashes property between the two events do not intersect assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) # They both belong to the same group be From 6b932c179eaabb7866ffe247912520ccef35be29 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 13:35:11 -0400 Subject: [PATCH 8/9] Reduce the diff --- tests/sentry/event_manager/test_hierarchical_hashes.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index 0e9722e628a40f..cedf3b0d756249 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -204,6 +204,7 @@ def test_partial_move(default_project, fast_save): class EventManagerGroupingTest(TestCase): def test_can_upgrade_to_hierarchical_config(self): self.set_options("legacy:2019-03-12") # Starting configuration + event = self.save_event() self.transition_to_new_config("mobile:2021-02-12") From 91c244c9039b118eec6092825e44d6d960eb9827 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Thu, 11 Jul 2024 13:40:32 -0400 Subject: [PATCH 9/9] Reduce the diff --- tests/sentry/event_manager/test_hierarchical_hashes.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/sentry/event_manager/test_hierarchical_hashes.py b/tests/sentry/event_manager/test_hierarchical_hashes.py index cedf3b0d756249..b6f2d74a7cb845 100644 --- a/tests/sentry/event_manager/test_hierarchical_hashes.py +++ b/tests/sentry/event_manager/test_hierarchical_hashes.py @@ -208,12 +208,13 @@ def test_can_upgrade_to_hierarchical_config(self): event = self.save_event() self.transition_to_new_config("mobile:2021-02-12") + # This event will have two sets of hashes event2 = self.save_event() # The hashes property between the two events do not intersect assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) - # They both belong to the same group be + # They are both grouped together assert event.group_id == event2.group_id group = Group.objects.get(id=event.group_id) @@ -232,12 +233,13 @@ def test_can_downgrade_from_hierarchical_config(self): event = self.save_event() self.transition_to_new_config("legacy:2019-03-12") + # This event will have two sets of hashes event2 = self.save_event() # The hashes property between the two events do not intersect assert not set(event.get_hashes().hashes) & set(event2.get_hashes().hashes) - # They both belong to the same group be + # They are both grouped together assert event.group_id == event2.group_id group = Group.objects.get(id=event.group_id)