blob: 352643e413e6e558cfe8d3f2f29af6e93f02edf7 [file] [log] [blame]
# Copyright 2017 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 process_profiles.py."""
import collections
import unittest
import process_profiles
SymbolInfo = collections.namedtuple('SymbolInfo', ['name', 'offset', 'size'])
class ProcessProfilesTestCase(unittest.TestCase):
def setUp(self):
self.symbol_0 = SymbolInfo('0', 0, 0)
self.symbol_1 = SymbolInfo('1', 8, 16)
self.symbol_2 = SymbolInfo('2', 32, 8)
self.symbol_3 = SymbolInfo('3', 40, 12)
self.offset_to_symbol_info = (
[None, None] + [self.symbol_1] * 4 + [None] * 2 + [self.symbol_2] * 2
+ [self.symbol_3] * 3)
def testGetOffsetToSymbolInfo(self):
symbol_infos = [self.symbol_0, self.symbol_1, self.symbol_2, self.symbol_3]
offset_to_symbol_info = process_profiles.GetOffsetToSymbolInfo(symbol_infos)
self.assertListEqual(self.offset_to_symbol_info, offset_to_symbol_info)
def testGetReachedSymbolsFromDump(self):
# 2 hits for symbol_1, 0 for symbol_2, 1 for symbol_3
dump = [8, 12, 48]
reached = process_profiles.GetReachedSymbolsFromDump(
dump, self.offset_to_symbol_info)
self.assertListEqual([self.symbol_1, self.symbol_3], reached)
# Ordering matters, no repetitions
dump = [48, 12, 8, 12, 8, 16]
reached = process_profiles.GetReachedSymbolsFromDump(
dump, self.offset_to_symbol_info)
self.assertListEqual([self.symbol_3, self.symbol_1], reached)
def testSymbolNameToPrimary(self):
symbol_infos = [SymbolInfo('1', 8, 16),
SymbolInfo('AnAlias', 8, 16),
SymbolInfo('Another', 40, 16)]
symbol_name_to_primary = process_profiles.SymbolNameToPrimary(symbol_infos)
self.assertDictEqual({'1': symbol_infos[0],
'AnAlias': symbol_infos[0],
'Another': symbol_infos[2]}, symbol_name_to_primary)
def testSortedFilenames(self):
filenames = ['second-1234-456.txt', 'first-345345-123.txt',
'third.bar.-789.txt']
sorted_filenames = process_profiles._SortedFilenames(filenames)
self.assertListEqual(
['first-345345-123.txt', 'second-1234-456.txt', 'third.bar.-789.txt'],
sorted_filenames)
if __name__ == '__main__':
unittest.main()