def test_api_context(): error = {"type": "unknown_error", "foo": "bar"} assert EventError(error).get_api_context() == { "type": "unknown_error", "message": "Unknown error", "data": {"foo": "bar"}, }
def serialize(self, obj, attrs, user): errors = [ EventError(error).get_api_context() for error in get_path(obj.data, 'errors', filter=True, default=()) ] (message, message_meta) = self._get_legacy_message_with_meta(obj) (tags, tags_meta) = self._get_tags_with_meta(obj) (context, context_meta) = self._get_attr_with_meta(obj, 'extra', {}) (packages, packages_meta) = self._get_attr_with_meta(obj, 'modules', {}) received = obj.data.get('received') if received: # Sentry at one point attempted to record invalid types here. # Remove after June 2 2016 try: received = datetime.utcfromtimestamp(received).replace( tzinfo=timezone.utc, ) except TypeError: received = None # TODO(dcramer): move release serialization here d = { 'id': six.text_type(obj.id), 'groupID': six.text_type(obj.group_id), 'eventID': six.text_type(obj.event_id), 'size': obj.size, 'entries': attrs['entries'], 'dist': obj.dist, # See GH-3248 'message': message, 'user': attrs['user'], 'contexts': attrs['contexts'], 'crashFile': attrs['crash_file'], 'sdk': attrs['sdk'], # TODO(dcramer): move into contexts['extra'] 'context': context, 'packages': packages, 'type': obj.get_event_type(), 'metadata': obj.get_event_metadata(), 'tags': tags, 'platform': obj.platform, 'dateCreated': obj.datetime, 'dateReceived': received, 'errors': errors, 'fingerprints': obj.get_hashes(), '_meta': { 'entries': attrs['_meta']['entries'], 'message': message_meta, 'user': attrs['_meta']['user'], 'contexts': attrs['_meta']['contexts'], 'sdk': attrs['_meta']['sdk'], 'context': context_meta, 'packages': packages_meta, 'tags': tags_meta, }, } return d
def test_api_context(): error = {'type': 'unknown_error', 'foo': 'bar'} assert EventError(error).get_api_context() == { 'type': 'unknown_error', 'message': 'Unknown error', 'data': { 'foo': 'bar' } }
def summarize_issues(issues: Iterable[Any]) -> Iterable[Mapping[str, str]]: rv = [] for issue in issues: extra_info = None msg_d = dict(issue["data"]) msg_d["type"] = issue["type"] if "image_path" in issue["data"]: extra_info = issue["data"]["image_path"].rsplit("/", 1)[-1] if "image_arch" in issue["data"]: extra_info = "{} ({})".format(extra_info, issue["data"]["image_arch"]) rv.append({"message": EventError(msg_d).message, "extra_info": extra_info}) return rv
def summarize_issues(issues): rv = [] for issue in issues: extra_info = None msg_d = dict(issue['data']) msg_d['type'] = issue['type'] if 'image_path' in issue['data']: extra_info = issue['data']['image_path'].rsplit('/', 1)[-1] if 'image_arch' in issue['data']: extra_info = '%s (%s)' % (extra_info, issue['data']['image_arch'], ) rv.append({ 'message': EventError(msg_d).message, 'extra_info': extra_info, }) return rv
def summarize_issues(issues): rv = [] for issue in issues: extra_info = None msg_d = dict(issue["data"]) msg_d["type"] = issue["type"] if "image_path" in issue["data"]: extra_info = issue["data"]["image_path"].rsplit("/", 1)[-1] if "image_arch" in issue["data"]: extra_info = "%s (%s)" % (extra_info, issue["data"]["image_arch"]) rv.append({ "message": EventError(msg_d).message, "extra_info": extra_info }) return rv
def serialize(self, obj, attrs, user): errors = [ EventError(error).get_api_context() for error in get_path(obj.data, "errors", filter=True, default=()) # TODO(ja): Temporary workaround to hide certain normalization errors. # Remove this and the test in tests/sentry/api/serializers/test_event.py if self.should_display_error(error) ] (message, message_meta) = self._get_legacy_message_with_meta(obj) (tags, tags_meta) = get_tags_with_meta(obj) (context, context_meta) = self._get_attr_with_meta(obj, "extra", {}) (packages, packages_meta) = self._get_attr_with_meta(obj, "modules", {}) received = obj.data.get("received") if received: # Sentry at one point attempted to record invalid types here. # Remove after June 2 2016 try: received = datetime.utcfromtimestamp(received).replace( tzinfo=timezone.utc) except TypeError: received = None d = { "id": obj.event_id, "groupID": str(obj.group_id) if obj.group_id else None, "eventID": obj.event_id, "projectID": str(obj.project_id), "size": obj.size, "entries": attrs["entries"], "dist": obj.dist, # See GH-3248 "message": message, "title": obj.title, "location": obj.location, "user": attrs["user"], "contexts": attrs["contexts"], "sdk": attrs["sdk"], # TODO(dcramer): move into contexts['extra'] "context": context, "packages": packages, "type": obj.get_event_type(), "metadata": obj.get_event_metadata(), "tags": tags, "platform": obj.platform, "dateReceived": received, "errors": errors, "_meta": { "entries": attrs["_meta"]["entries"], "message": message_meta, "user": attrs["_meta"]["user"], "contexts": attrs["_meta"]["contexts"], "sdk": attrs["_meta"]["sdk"], "context": context_meta, "packages": packages_meta, "tags": tags_meta, }, } # Serialize attributes that are specific to different types of events. if obj.get_event_type() == "transaction": d.update(self.__serialize_transaction_attrs(attrs, obj)) else: d.update(self.__serialize_error_attrs(attrs, obj)) return d
def test_event_error(error, type, message, data): assert EventError.get_message(error) == message assert EventError(error).type == type assert EventError(error).message == message assert EventError(error).data == data
def serialize(self, obj, attrs, user): errors = [ EventError(error).get_api_context() for error in get_path(obj.data, 'errors', filter=True, default=()) # TODO(ja): Temporary workaround to hide certain normalization errors. # Remove this and the test in tests/sentry/api/serializers/test_event.py if self.should_display_error(error) ] (message, message_meta) = self._get_legacy_message_with_meta(obj) (tags, tags_meta) = self._get_tags_with_meta(obj) (context, context_meta) = self._get_attr_with_meta(obj, 'extra', {}) (packages, packages_meta) = self._get_attr_with_meta(obj, 'modules', {}) received = obj.data.get('received') if received: # Sentry at one point attempted to record invalid types here. # Remove after June 2 2016 try: received = datetime.utcfromtimestamp(received).replace( tzinfo=timezone.utc, ) except TypeError: received = None d = { 'id': six.text_type(obj.id), 'groupID': six.text_type(obj.group_id), 'eventID': six.text_type(obj.event_id), 'projectID': six.text_type(obj.project_id), 'size': obj.size, 'entries': attrs['entries'], 'dist': obj.dist, # See GH-3248 'message': message, 'title': obj.title, 'location': obj.location, 'culprit': obj.culprit, 'user': attrs['user'], 'contexts': attrs['contexts'], 'crashFile': attrs['crash_file'], 'sdk': attrs['sdk'], # TODO(dcramer): move into contexts['extra'] 'context': context, 'packages': packages, 'type': obj.get_event_type(), 'metadata': obj.get_event_metadata(), 'tags': tags, 'platform': obj.platform, 'dateCreated': obj.datetime, 'dateReceived': received, 'errors': errors, 'fingerprints': obj.get_hashes(), 'groupingConfig': obj.get_grouping_config(), '_meta': { 'entries': attrs['_meta']['entries'], 'message': message_meta, 'user': attrs['_meta']['user'], 'contexts': attrs['_meta']['contexts'], 'sdk': attrs['_meta']['sdk'], 'context': context_meta, 'packages': packages_meta, 'tags': tags_meta, }, } return d