Skip to content

Commit

Permalink
update tests to use both flows
Browse files Browse the repository at this point in the history
  • Loading branch information
lobsterkatie committed Jul 30, 2024
1 parent 7b0bbb0 commit d660610
Showing 1 changed file with 104 additions and 55 deletions.
159 changes: 104 additions & 55 deletions tests/sentry/event_manager/grouping/test_seer_grouping.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,74 +86,123 @@ def test_obeys_seer_similarity_flags(self):
@patch("sentry.grouping.ingest.seer.should_call_seer_for_grouping", return_value=True)
@patch("sentry.grouping.ingest.seer.get_seer_similar_issues", return_value=({}, None))
def test_calls_seer_if_no_group_found(self, mock_get_seer_similar_issues: MagicMock, _):
save_new_event({"message": "Dogs are great!"}, self.project)
assert mock_get_seer_similar_issues.call_count == 1
for use_optimized_grouping, event_message in [
(True, "Dogs are great!"),
(False, "Adopt don't shop"),
]:
with patch(
"sentry.event_manager.project_uses_optimized_grouping",
return_value=use_optimized_grouping,
):
save_new_event({"message": event_message}, self.project)
assert (
mock_get_seer_similar_issues.call_count == 1
), f"Case {use_optimized_grouping} failed"
mock_get_seer_similar_issues.reset_mock()

@patch("sentry.grouping.ingest.seer.should_call_seer_for_grouping", return_value=True)
@patch("sentry.grouping.ingest.seer.get_seer_similar_issues", return_value=({}, None))
def test_bypasses_seer_if_group_found(self, mock_get_seer_similar_issues: MagicMock, _):
existing_event = save_new_event({"message": "Dogs are great!"}, self.project)
assert mock_get_seer_similar_issues.call_count == 1

new_event = save_new_event({"message": "Dogs are great!"}, self.project)
assert existing_event.group_id == new_event.group_id
assert mock_get_seer_similar_issues.call_count == 1 # didn't get called again
for use_optimized_grouping, event_message in [
(True, "Dogs are great!"),
(False, "Adopt don't shop"),
]:
with patch(
"sentry.event_manager.project_uses_optimized_grouping",
return_value=use_optimized_grouping,
):
existing_event = save_new_event({"message": event_message}, self.project)
assert mock_get_seer_similar_issues.call_count == 1

new_event = save_new_event({"message": event_message}, self.project)
assert existing_event.group_id == new_event.group_id
assert mock_get_seer_similar_issues.call_count == 1 # didn't get called again

mock_get_seer_similar_issues.reset_mock()

@patch("sentry.grouping.ingest.seer.should_call_seer_for_grouping", return_value=True)
def test_stores_seer_results_in_metadata(self, _):
existing_event = save_new_event({"message": "Dogs are great!"}, self.project)

seer_result_data = SeerSimilarIssueData(
parent_hash=NonNone(existing_event.get_primary_hash()),
parent_group_id=NonNone(existing_event.group_id),
stacktrace_distance=0.01,
message_distance=0.05,
should_group=True,
)
for use_optimized_grouping, existing_event_message, new_event_message in [
(True, "Dogs are great!", "Adopt don't shop"),
(False, "Maisey is silly", "Charlie is goofy"),
]:
with patch(
"sentry.event_manager.project_uses_optimized_grouping",
return_value=use_optimized_grouping,
):
existing_event = save_new_event({"message": existing_event_message}, self.project)

seer_result_data = SeerSimilarIssueData(
parent_hash=NonNone(existing_event.get_primary_hash()),
parent_group_id=NonNone(existing_event.group_id),
stacktrace_distance=0.01,
message_distance=0.05,
should_group=True,
)

with patch(
"sentry.grouping.ingest.seer.get_similarity_data_from_seer",
return_value=[seer_result_data],
):
new_event = save_new_event({"message": new_event_message}, self.project)
expected_metadata = {
"similarity_model_version": SEER_SIMILARITY_MODEL_VERSION,
"results": [asdict(seer_result_data)],
}

with patch(
"sentry.grouping.ingest.seer.get_similarity_data_from_seer",
return_value=[seer_result_data],
):
new_event = save_new_event({"message": "Adopt don't shop"}, self.project)
expected_metadata = {
"similarity_model_version": SEER_SIMILARITY_MODEL_VERSION,
"results": [asdict(seer_result_data)],
}

assert new_event.data["seer_similarity"] == expected_metadata
assert new_event.data["seer_similarity"] == expected_metadata

@with_feature("projects:similarity-embeddings-grouping")
@patch("sentry.grouping.ingest.seer.should_call_seer_for_grouping", return_value=True)
def test_assigns_event_to_neighbor_group_if_found(self, _):
existing_event = save_new_event({"message": "Dogs are great!"}, self.project)

seer_result_data = SeerSimilarIssueData(
parent_hash=NonNone(existing_event.get_primary_hash()),
parent_group_id=NonNone(existing_event.group_id),
stacktrace_distance=0.01,
message_distance=0.05,
should_group=True,
)

with patch(
"sentry.grouping.ingest.seer.get_similarity_data_from_seer",
return_value=[seer_result_data],
) as mock_get_similarity_data:
new_event = save_new_event({"message": "Adopt don't shop"}, self.project)

assert mock_get_similarity_data.call_count == 1
assert existing_event.group_id == new_event.group_id
for use_optimized_grouping, existing_event_message, new_event_message in [
(True, "Dogs are great!", "Adopt don't shop"),
(False, "Maisey is silly", "Charlie is goofy"),
]:
with patch(
"sentry.event_manager.project_uses_optimized_grouping",
return_value=use_optimized_grouping,
):
existing_event = save_new_event({"message": existing_event_message}, self.project)

seer_result_data = SeerSimilarIssueData(
parent_hash=NonNone(existing_event.get_primary_hash()),
parent_group_id=NonNone(existing_event.group_id),
stacktrace_distance=0.01,
message_distance=0.05,
should_group=True,
)

with patch(
"sentry.grouping.ingest.seer.get_similarity_data_from_seer",
return_value=[seer_result_data],
) as mock_get_similarity_data:
new_event = save_new_event({"message": new_event_message}, self.project)

assert mock_get_similarity_data.call_count == 1
assert existing_event.group_id == new_event.group_id

mock_get_similarity_data.reset_mock()

@with_feature("projects:similarity-embeddings-grouping")
@patch("sentry.grouping.ingest.seer.should_call_seer_for_grouping", return_value=True)
def test_creates_new_group_if_no_neighbor_found(self, _):
existing_event = save_new_event({"message": "Dogs are great!"}, self.project)

with patch(
"sentry.grouping.ingest.seer.get_similarity_data_from_seer", return_value=[]
) as mock_get_similarity_data:
new_event = save_new_event({"message": "Adopt don't shop"}, self.project)

assert mock_get_similarity_data.call_count == 1
assert existing_event.group_id != new_event.group_id
for use_optimized_grouping, existing_event_message, new_event_message in [
(True, "Dogs are great!", "Adopt don't shop"),
(False, "Maisey is silly", "Charlie is goofy"),
]:
with patch(
"sentry.event_manager.project_uses_optimized_grouping",
return_value=use_optimized_grouping,
):
existing_event = save_new_event({"message": existing_event_message}, self.project)

with patch(
"sentry.grouping.ingest.seer.get_similarity_data_from_seer", return_value=[]
) as mock_get_similarity_data:
new_event = save_new_event({"message": new_event_message}, self.project)

assert mock_get_similarity_data.call_count == 1
assert existing_event.group_id != new_event.group_id

mock_get_similarity_data.reset_mock()

0 comments on commit d660610

Please sign in to comment.