test_processing.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. """
  2. This file is intended for unit tests that don't require fixtures or a live
  3. service. Most tests live in tests/symbolicator/
  4. """
  5. from __future__ import absolute_import
  6. import pytest
  7. from sentry.models.eventerror import EventError
  8. from sentry.lang.native.processing import _merge_image
  9. def test_merge_symbolicator_image_empty():
  10. errors = []
  11. _merge_image({}, {}, None, errors.append)
  12. assert not errors
  13. def test_merge_symbolicator_image_basic():
  14. raw_image = {"instruction_addr": 0xFEEBEE, "other": "foo"}
  15. sdk_info = {"sdk_name": "linux"}
  16. complete_image = {
  17. "debug_status": "found",
  18. "unwind_status": "found",
  19. "other2": "bar",
  20. "arch": "unknown",
  21. }
  22. errors = []
  23. _merge_image(raw_image, complete_image, sdk_info, errors.append)
  24. assert not errors
  25. assert raw_image == {
  26. "debug_status": "found",
  27. "unwind_status": "found",
  28. "instruction_addr": 0xFEEBEE,
  29. "other": "foo",
  30. "other2": "bar",
  31. }
  32. def test_merge_symbolicator_image_basic_success():
  33. raw_image = {"instruction_addr": 0xFEEBEE, "other": "foo"}
  34. sdk_info = {"sdk_name": "linux"}
  35. complete_image = {
  36. "debug_status": "found",
  37. "unwind_status": "found",
  38. "other2": "bar",
  39. "arch": "foo",
  40. }
  41. errors = []
  42. _merge_image(raw_image, complete_image, sdk_info, errors.append)
  43. assert not errors
  44. assert raw_image == {
  45. "debug_status": "found",
  46. "unwind_status": "found",
  47. "instruction_addr": 0xFEEBEE,
  48. "other": "foo",
  49. "other2": "bar",
  50. "arch": "foo",
  51. }
  52. def test_merge_symbolicator_image_remove_unknown_arch():
  53. raw_image = {"instruction_addr": 0xFEEBEE}
  54. sdk_info = {"sdk_name": "linux"}
  55. complete_image = {"debug_status": "found", "unwind_status": "found", "arch": "unknown"}
  56. errors = []
  57. _merge_image(raw_image, complete_image, sdk_info, errors.append)
  58. assert not errors
  59. assert raw_image == {
  60. "debug_status": "found",
  61. "unwind_status": "found",
  62. "instruction_addr": 0xFEEBEE,
  63. }
  64. @pytest.mark.parametrize(
  65. "code_file,error",
  66. [
  67. ("/var/containers/Bundle/Application/asdf/foo", EventError.NATIVE_MISSING_DSYM),
  68. (
  69. "/var/containers/Bundle/Application/asdf/Frameworks/foo",
  70. EventError.NATIVE_MISSING_OPTIONALLY_BUNDLED_DSYM,
  71. ),
  72. ],
  73. )
  74. def test_merge_symbolicator_image_errors(code_file, error):
  75. raw_image = {"instruction_addr": 0xFEEBEE, "other": "foo", "code_file": code_file}
  76. sdk_info = {"sdk_name": "macos"}
  77. complete_image = {
  78. "debug_status": "found",
  79. "unwind_status": "missing",
  80. "other2": "bar",
  81. "arch": "unknown",
  82. }
  83. errors = []
  84. _merge_image(raw_image, complete_image, sdk_info, errors.append)
  85. e, = errors
  86. assert e.image_name == "foo"
  87. assert e.type == error
  88. assert raw_image == {
  89. "debug_status": "found",
  90. "unwind_status": "missing",
  91. "instruction_addr": 0xFEEBEE,
  92. "other": "foo",
  93. "other2": "bar",
  94. "code_file": code_file,
  95. }