blob: 6329aa6b8721e2c95b6a68431a276584bdcb0961 [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests for the native crash dump symbolizer utility functions."""
import unittest
import stack_utils
class StackUtilsTest(unittest.TestCase):
"""Tests the native crash dump symbolizer utility functions."""
def test_GetSymbolMapping_no_match(self):
"""Verifies that, if no mapping is on the input, no mapping is on the
output.
"""
lines = ["This is a test case\n", "Caching all mojo apps", ""]
self.assertDictEqual({}, stack_utils.GetSymbolMapping(lines))
def test_GetSymbolMapping_simple_match(self):
"""Verifies a simple symbol mapping."""
lines = ["This is a test case\n", "Caching all mojo apps",
"I/mojo(2): [INFO:somefile.cc(85)] Caching mojo app "
"https://apps.mojo/myapp.mojo at /path/to/myapp.mojo/.lM03ws"]
golden_dict = {
"/path/to/myapp.mojo/.lM03ws": "libmyapp_library.so"
}
actual_dict = stack_utils.GetSymbolMapping(lines)
self.assertDictEqual(golden_dict, actual_dict)
def test_GetSymbolMapping_multiple_match(self):
"""Verifies mapping of multiple symbol files."""
lines = ["This is a test case\n", "Caching all mojo apps",
"I/mojo(2): [INFO:somefile.cc(85)] Caching mojo app "
"https://apps.mojo/myapp.mojo at /path/to/myapp.mojo/.lM03ws",
"I/mojo(2): [INFO:somefile.cc(85)] Caching mojo app "
"https://apps.mojo/otherapp.mojo at /path/to/otherapp.mojo/.kW07s"]
golden_dict = {
"/path/to/myapp.mojo/.lM03ws": "libmyapp_library.so",
"/path/to/otherapp.mojo/.kW07s": "libotherapp_library.so"
}
actual_dict = stack_utils.GetSymbolMapping(lines)
self.assertDictEqual(golden_dict, actual_dict)
def test_GetSymbolMapping_parameter_match(self):
"""Verifies parameters are stripped from mappings."""
lines = ["This is a test case\n", "Caching all mojo apps",
"I/mojo(2): [INFO:somefile.cc(85)] Caching mojo app "
"https://apps.mojo/myapp.mojo?q=hello at /path/to/myapp.mojo/.lM03ws"]
golden_dict = {
"/path/to/myapp.mojo/.lM03ws": "libmyapp_library.so"
}
actual_dict = stack_utils.GetSymbolMapping(lines)
self.assertDictEqual(golden_dict, actual_dict)
def test_GetSymbolMapping_normalize(self):
"""Verifies paths are normalized in mappings."""
lines = ["This is a test case\n", "Caching all mojo apps",
"I/mojo(2): [INFO:somefile.cc(85)] Caching mojo app "
"https://apps.mojo/myapp.mojo at /path/to/.//myapp.mojo/.lM03ws"]
golden_dict = {
"/path/to/myapp.mojo/.lM03ws": "libmyapp_library.so"
}
actual_dict = stack_utils.GetSymbolMapping(lines)
self.assertDictEqual(golden_dict, actual_dict)
if __name__ == "__main__":
unittest.main()