|
6 | 6 | from sentry import eventstore, nodestore
|
7 | 7 | from sentry.db.models.fields.node import NodeData, NodeIntegrityFailure
|
8 | 8 | from sentry.eventstore.models import Event, GroupEvent
|
9 |
| -from sentry.grouping.api import GroupingConfig |
| 9 | +from sentry.grouping.api import GroupingConfig, get_grouping_variants_for_event |
10 | 10 | from sentry.grouping.enhancer import Enhancements
|
| 11 | +from sentry.grouping.result import CalculatedHashes |
| 12 | +from sentry.grouping.utils import hash_from_values |
11 | 13 | from sentry.interfaces.user import User
|
12 | 14 | from sentry.issues.issue_occurrence import IssueOccurrence
|
13 | 15 | from sentry.models.environment import Environment
|
|
21 | 23 |
|
22 | 24 | pytestmark = [requires_snuba]
|
23 | 25 |
|
| 26 | +NEWSTYLE_GROUPING_CONFIG = "newstyle:2023-01-11" |
| 27 | + |
24 | 28 |
|
25 | 29 | class EventTest(TestCase, PerformanceIssueTestCase):
|
26 | 30 | def test_pickling_compat(self):
|
@@ -394,6 +398,65 @@ def test_grouping_reset(self):
|
394 | 398 | v.as_dict()["hash"] for v in variants2.values()
|
395 | 399 | )
|
396 | 400 |
|
| 401 | + def test_get_hashes_pulls_existing_hashes(self): |
| 402 | + hashes = ["04e89719410791836f0a0bbf03bf0d2e"] |
| 403 | + event = Event( |
| 404 | + event_id="11212012123120120415201309082013", |
| 405 | + data={ |
| 406 | + "message": "Dogs are great!", |
| 407 | + "hashes": hashes, |
| 408 | + }, |
| 409 | + project_id=self.project.id, |
| 410 | + ) |
| 411 | + |
| 412 | + assert event.get_hashes() == CalculatedHashes(hashes, [], [], None) |
| 413 | + |
| 414 | + def test_get_hashes_gets_hashes_and_variants_if_none_on_event(self): |
| 415 | + self.project.update_option("sentry:grouping_config", NEWSTYLE_GROUPING_CONFIG) |
| 416 | + event = Event( |
| 417 | + event_id="11212012123120120415201309082013", |
| 418 | + data={"message": "Dogs are great!"}, |
| 419 | + project_id=self.project.id, |
| 420 | + ) |
| 421 | + |
| 422 | + calculated_hashes = event.get_hashes() |
| 423 | + expected_hash_values = [hash_from_values(["Dogs are great!"])] |
| 424 | + expected_variants = list(get_grouping_variants_for_event(event).items()) |
| 425 | + |
| 426 | + assert calculated_hashes.hashes == expected_hash_values |
| 427 | + assert ( |
| 428 | + calculated_hashes.variants is not None |
| 429 | + and len(calculated_hashes.variants) == len(expected_variants) == 1 |
| 430 | + ) |
| 431 | + |
| 432 | + variant_key, variant = calculated_hashes.variants[0] |
| 433 | + expected_variant_key, expected_variant = expected_variants[0] |
| 434 | + variant_dict = variant._get_metadata_as_dict() |
| 435 | + expected_variant_dict = expected_variant._get_metadata_as_dict() |
| 436 | + |
| 437 | + assert variant_key == expected_variant_key == "default" |
| 438 | + assert ( |
| 439 | + variant_dict["config"]["id"] |
| 440 | + == expected_variant_dict["config"]["id"] |
| 441 | + == NEWSTYLE_GROUPING_CONFIG |
| 442 | + ) |
| 443 | + assert ( |
| 444 | + variant_dict["component"]["id"] == expected_variant_dict["component"]["id"] == "default" |
| 445 | + ) |
| 446 | + assert ( |
| 447 | + len(variant_dict["component"]["values"]) |
| 448 | + == len(expected_variant_dict["component"]["values"]) |
| 449 | + == 1 |
| 450 | + ) |
| 451 | + |
| 452 | + component_value = variant_dict["component"]["values"][0] |
| 453 | + expected_component_value = expected_variant_dict["component"]["values"][0] |
| 454 | + |
| 455 | + assert component_value["id"] == expected_component_value["id"] == "message" |
| 456 | + assert ( |
| 457 | + component_value["values"] == expected_component_value["values"] == ["Dogs are great!"] |
| 458 | + ) |
| 459 | + |
397 | 460 |
|
398 | 461 | class EventGroupsTest(TestCase):
|
399 | 462 | def test_none(self):
|
|
0 commit comments