def test_event_stats(self): for _ in range(2): self.store_event( data={ "event_id": uuid4().hex, "fingerprint": ["group1"], "timestamp": iso_format(before_now(seconds=1)), }, project_id=self.project.id, ) incident = self.create_incident( date_started=timezone.now() - timedelta(hours=2), projects=[self.project], query="" ) snapshot = create_initial_event_stats_snapshot(incident) activity = create_incident_activity( incident=incident, activity_type=IncidentActivityType.COMMENT, user=self.user, comment="hello", event_stats_snapshot=snapshot, ) result = serialize(activity) assert result["id"] == six.text_type(activity.id) assert result["incidentIdentifier"] == six.text_type(activity.incident.identifier) assert result["user"] == serialize(activity.user) assert result["type"] == activity.type assert result["value"] is None assert result["previousValue"] is None assert result["comment"] == activity.comment event_stats = result["eventStats"]["data"] assert [stat[1] for stat in event_stats[:-1]] == [[]] * len(event_stats[:-1]) assert event_stats[-1][1] == [{"count": 2}] assert result["dateCreated"] == activity.date_added
def test_simple(self): incident = self.create_incident(date_started=timezone.now() - timedelta(hours=2), projects=[self.project], query="") snapshot = create_initial_event_stats_snapshot(incident) activities = [ create_incident_activity( incident=incident, activity_type=IncidentActivityType.CREATED, user=self.user, comment="hello", event_stats_snapshot=snapshot, ), create_incident_activity( incident=incident, activity_type=IncidentActivityType.COMMENT, user=self.user, comment="goodbye", ), ] expected = serialize(activities, user=self.user) with self.feature("organizations:incidents"): resp = self.get_valid_response(incident.organization.slug, incident.identifier, desc=0) assert resp.data == expected expected.reverse() with self.feature("organizations:incidents"): resp = self.get_valid_response(incident.organization.slug, incident.identifier) assert resp.data == expected
def test_snapshot(self): self.create_event(self.now - timedelta(minutes=2)) self.create_event(self.now - timedelta(minutes=2)) self.create_event(self.now - timedelta(minutes=1)) # Define events outside incident range. Should be included in the # snapshot self.create_event(self.now - timedelta(minutes=20)) self.create_event(self.now - timedelta(minutes=30)) # Too far out, should be excluded self.create_event(self.now - timedelta(minutes=100)) incident = self.create_incident(date_started=self.now - timedelta(minutes=5), query='', projects=[self.project]) event_stats_snapshot = create_initial_event_stats_snapshot(incident) activity = create_incident_activity( incident, IncidentActivityType.CREATED, event_stats_snapshot=event_stats_snapshot, ) assert activity.incident == incident assert activity.type == IncidentActivityType.CREATED.value assert activity.value is None assert activity.previous_value is None assert event_stats_snapshot == activity.event_stats_snapshot self.assert_notifications_sent(activity)
def test_snapshot(self): self.create_event(self.now - timedelta(minutes=2)) self.create_event(self.now - timedelta(minutes=2)) self.create_event(self.now - timedelta(minutes=1)) # Define events outside incident range. Should be included in the # snapshot self.create_event(self.now - timedelta(minutes=20)) self.create_event(self.now - timedelta(minutes=30)) # Too far out, should be excluded self.create_event(self.now - timedelta(minutes=100)) incident = self.create_incident(date_started=self.now - timedelta(minutes=5), query='', projects=[self.project]) event_stat_snapshot = create_initial_event_stats_snapshot(incident) assert event_stat_snapshot.start == self.now - timedelta(minutes=40) assert [row[1] for row in event_stat_snapshot.values] == [1, 1, 2, 1]
def test_event_stats(self): for _ in range(2): self.store_event( data={ 'event_id': uuid4().hex, 'fingerprint': ['group1'], 'timestamp': (timezone.now() - timedelta(seconds=1)).isoformat()[:19] }, project_id=self.project.id, ) incident = self.create_incident( date_started=timezone.now() - timedelta(hours=2), projects=[self.project], query='', ) snapshot = create_initial_event_stats_snapshot(incident) activity = create_incident_activity( incident=incident, activity_type=IncidentActivityType.COMMENT, user=self.user, comment='hello', event_stats_snapshot=snapshot, ) result = serialize(activity) assert result['id'] == six.text_type(activity.id) assert result['incidentIdentifier'] == six.text_type( activity.incident.identifier) assert result['user'] == serialize(activity.user) assert result['type'] == activity.type assert result['value'] is None assert result['previousValue'] is None assert result['comment'] == activity.comment event_stats = result['eventStats']['data'] assert [stat[1] for stat in event_stats[:-1]] == [[]] * len(event_stats[:-1]) assert event_stats[-1][1] == [{'count': 2}] assert result['dateCreated'] == activity.date_added