| Index: tools/cygprofile/patch_orderfile_unittest.py
|
| diff --git a/tools/cygprofile/patch_orderfile_unittest.py b/tools/cygprofile/patch_orderfile_unittest.py
|
| index 207ff57c37942ef3b464fc5594054182c7079ca4..5d6c1d28c2af2cb9e4e266b0756e69f3513de911 100755
|
| --- a/tools/cygprofile/patch_orderfile_unittest.py
|
| +++ b/tools/cygprofile/patch_orderfile_unittest.py
|
| @@ -3,9 +3,11 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -import patch_orderfile
|
| import unittest
|
|
|
| +import patch_orderfile
|
| +import symbol_extractor
|
| +
|
|
|
| class TestPatchOrderFile(unittest.TestCase):
|
| def testRemoveClone(self):
|
| @@ -15,78 +17,46 @@ class TestPatchOrderFile(unittest.TestCase):
|
| self.assertEquals(
|
| "this.does.contain", patch_orderfile._RemoveClone(with_clone))
|
|
|
| - def testGetSymbolInfosFromStreamWithSize(self):
|
| - lines = [
|
| - "00210d59 00000002 t _ZN34BrowserPluginHostMsg_Attach_ParamsD2Ev"]
|
| - test_name = "_ZN34BrowserPluginHostMsg_Attach_ParamsD2Ev"
|
| - test_offset = 0x210d59
|
| + def testAliasClonedSymbols(self):
|
| + symbol_infos = [
|
| + symbol_extractor.SymbolInfo(name='aSymbol', offset=0x42, size=0x12,
|
| + section='.text'),
|
| + symbol_extractor.SymbolInfo(name='aSymbol.clone.', offset=8, size=1,
|
| + section='.text')]
|
| (offset_to_symbol_infos, name_to_symbol_infos) = \
|
| - patch_orderfile._GetSymbolInfosFromStream(lines)
|
| - self.assertEquals(len(offset_to_symbol_infos), 1)
|
| + patch_orderfile._GroupSymbolInfos(symbol_infos)
|
| + self.assertEquals(len(offset_to_symbol_infos), 2)
|
| + for i in range(2):
|
| + s = symbol_infos[i]
|
| + matching = offset_to_symbol_infos[s.offset][0]
|
| + self.assertEquals(matching.offset, s.offset)
|
| + self.assertEquals(matching.size, s.size)
|
| self.assertEquals(len(name_to_symbol_infos), 1)
|
| - self.assertIn(test_name, name_to_symbol_infos)
|
| - self.assertIn(test_offset, offset_to_symbol_infos)
|
| + self.assertEquals(len(name_to_symbol_infos['aSymbol']), 2)
|
|
|
| - self.assertEquals(len(name_to_symbol_infos[test_name]), 1)
|
| - s = name_to_symbol_infos[test_name][0]
|
| - self.assertEquals(test_offset, s.offset)
|
| - self.assertEquals(2, s.size)
|
| - self.assertEquals(test_name, s.name)
|
| -
|
| - self.assertEquals(len(offset_to_symbol_infos[test_offset]), 1)
|
| - s = offset_to_symbol_infos[test_offset][0]
|
| - self.assertEquals(test_offset, s.offset)
|
| - self.assertEquals(2, s.size)
|
| - self.assertEquals(test_name, s.name)
|
| -
|
| - def testGetSymbolInfosFromStreamWithoutSize(self):
|
| - lines = [
|
| - "0070ee8c T WebRtcSpl_ComplexBitReverse"]
|
| - test_name = "WebRtcSpl_ComplexBitReverse"
|
| - test_offset = 0x70ee8c
|
| - (offset_to_symbol_infos, name_to_symbol_infos) = \
|
| - patch_orderfile._GetSymbolInfosFromStream(lines)
|
| + def testGroupSymbolsByOffset(self):
|
| + symbol_infos = (
|
| + symbol_extractor.SymbolInfo(name='aSymbol', offset=0x42, size=0x12,
|
| + section='.text'),
|
| + symbol_extractor.SymbolInfo(name='anotherSymbol', offset=0x42, size=1,
|
| + section='.text'))
|
| + (offset_to_symbol_infos, _) = \
|
| + patch_orderfile._GroupSymbolInfos(symbol_infos)
|
| self.assertEquals(len(offset_to_symbol_infos), 1)
|
| - self.assertEquals(len(name_to_symbol_infos), 1)
|
| - self.assertIn(test_name, name_to_symbol_infos)
|
| - self.assertIn(test_offset, offset_to_symbol_infos)
|
| -
|
| - self.assertEquals(len(name_to_symbol_infos[test_name]), 1)
|
| - s = name_to_symbol_infos[test_name][0]
|
| - self.assertEquals(test_offset, s.offset)
|
| - self.assertEquals(-1, s.size)
|
| - self.assertEquals(test_name, s.name)
|
| -
|
| - self.assertEquals(len(offset_to_symbol_infos[test_offset]), 1)
|
| - s = offset_to_symbol_infos[test_offset][0]
|
| - self.assertEquals(test_offset, s.offset)
|
| - self.assertEquals(-1, s.size)
|
| - self.assertEquals(test_name, s.name)
|
| -
|
| - def testGetSymbolsFromStream(self):
|
| - lines = [".text.startup.",
|
| - ".text.with.a.prefix",
|
| - "",
|
| - "_ZN2v88internal33HEnvironmentLivenessAnalysisPhase3RunEv",
|
| - ".text",
|
| - ".text.*"]
|
| - names = patch_orderfile._GetSymbolsFromStream(lines)
|
| - self.assertEquals(len(names), 2)
|
| - self.assertEquals(
|
| - names[0], "with.a.prefix")
|
| - self.assertEquals(
|
| - names[1], "_ZN2v88internal33HEnvironmentLivenessAnalysisPhase3RunEv")
|
| -
|
| + self.assertEquals(tuple(offset_to_symbol_infos[0x42]), symbol_infos)
|
|
|
| def testExpandSymbols(self):
|
| symbol_name = "dummySymbol"
|
| symbol_name2 = "other"
|
| profiled_symbol_names = [symbol_name, "symbolThatShouldntMatch"]
|
| name_to_symbol_infos = {symbol_name: [
|
| - patch_orderfile.SymbolInfo(0x42, 0x12, symbol_name)]}
|
| + symbol_extractor.SymbolInfo(symbol_name, 0x42, 0x12,
|
| + section='.text')]}
|
| offset_to_symbol_infos = {
|
| - 0x42: [patch_orderfile.SymbolInfo(0x42, 0x12, symbol_name),
|
| - patch_orderfile.SymbolInfo(0x42, 0x12, symbol_name2)]}
|
| + 0x42: [symbol_extractor.SymbolInfo(symbol_name, 0x42, 0x12,
|
| + section='.text'),
|
| + symbol_extractor.SymbolInfo(symbol_name2, 0x42, 0x12,
|
| + section='.text')]}
|
| symbol_names = patch_orderfile._ExpandSymbols(
|
| profiled_symbol_names, name_to_symbol_infos, offset_to_symbol_infos)
|
| self.assertEquals(len(symbol_names), 3)
|
|
|