__init__.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from __future__ import absolute_import
  2. import os
  3. from sentry.utils.safe import get_path
  4. def get_fixture_path(name):
  5. return os.path.join(os.path.dirname(__file__), os.pardir, "fixtures", "native", name)
  6. def strip_frame(frame):
  7. if frame:
  8. frame = {
  9. "data": {
  10. "symbolicator_status": get_path(frame, "data", "symbolicator_status"),
  11. "orig_in_app": get_path(frame, "data", "orig_in_app"),
  12. },
  13. "function": frame.get("function"),
  14. "instruction_addr": frame.get("instruction_addr"),
  15. "symbol": frame.get("symbol"),
  16. "package": frame.get("package"),
  17. "lineno": frame.get("lineno"),
  18. "in_app": frame.get("in_app"),
  19. "trust": frame.get("trust"),
  20. }
  21. return frame
  22. def strip_stacktrace(stacktrace):
  23. if stacktrace:
  24. stacktrace = dict(stacktrace)
  25. stacktrace["frames"] = [strip_frame(x) for x in stacktrace.get("frames") or ()]
  26. return stacktrace
  27. def strip_stacktrace_container(container):
  28. if container:
  29. container = dict(container)
  30. container["stacktrace"] = strip_stacktrace(container.get("stacktrace"))
  31. container["raw_stacktrace"] = strip_stacktrace(container.get("raw_stacktrace"))
  32. return container
  33. def insta_snapshot_stacktrace_data(self, event):
  34. # limit amount of data going into a snapshot so that they don't break all
  35. # the time due to unrelated changes.
  36. self.insta_snapshot(
  37. {
  38. "stacktrace": strip_stacktrace(event.get("stacktrace")),
  39. "exception": {
  40. "values": [
  41. strip_stacktrace_container(x)
  42. for x in get_path(event, "exception", "values") or ()
  43. ]
  44. },
  45. "threads": {
  46. "values": [
  47. strip_stacktrace_container(x)
  48. for x in get_path(event, "threads", "values") or ()
  49. ]
  50. },
  51. "debug_meta": event.get("debug_meta"),
  52. "contexts": event.get("contexts"),
  53. "errors": event.get("errors"),
  54. }
  55. )