Beispiel #1
0
def Classify(nativeheap, rule_tree):
    """Create aggregated results of native heaps using the provided rules.

  Args:
    nativeheap: the heap dump being processed (a |NativeHeap| instance).
    rule_tree: the user-defined rules that define the filtering categories.

  Returns:
    An instance of |AggreatedResults|.
  """
    assert (isinstance(nativeheap, native_heap.NativeHeap))
    assert (isinstance(rule_tree, rules.Rule))

    res = results.AggreatedResults(rule_tree, _RESULT_KEYS)
    for allocation in nativeheap.allocations:
        res.AddToMatchingNodes(allocation, [allocation.total_size])
    return res
Beispiel #2
0
    def runTest(self):
        rules_dict = [
            {
                'name': 'a*',
                'regex': '^a.*',
                'children': [{
                    'name': 'az*',
                    'regex': '^az.*'
                }]
            },
            {
                'name': 'b*',
                'regex': '^b.*',
            },
        ]

        rule = rules.Load(str(rules_dict), MockRegexMatchingRule)
        result = results.AggreatedResults(rule, keys=['X', 'Y'])
        self.assertEqual(result.total.name, 'Total')
        self.assertEqual(len(result.total.children), 3)
        self.assertEqual(result.total.children[0].name, 'a*')
        self.assertEqual(result.total.children[1].name, 'b*')
        self.assertEqual(result.total.children[2].name, 'Total-other')
        self.assertEqual(result.total.children[0].children[0].name, 'az*')
        self.assertEqual(result.total.children[0].children[1].name, 'a*-other')

        result.AddToMatchingNodes('aa1', [1, 2])  # -> a*
        result.AddToMatchingNodes('aa2', [3, 4])  # -> a*
        result.AddToMatchingNodes('az', [5, 6])  # -> a*/az*
        result.AddToMatchingNodes('z1', [7, 8])  # -> T-other
        result.AddToMatchingNodes('b1', [9, 10])  # -> b*
        result.AddToMatchingNodes('b2', [11, 12])  # -> b*
        result.AddToMatchingNodes('z2', [13, 14])  # -> T-other

        self.assertEqual(result.total.values, [49, 56])
        self.assertEqual(result.total.children[0].values, [9, 12])
        self.assertEqual(result.total.children[1].values, [20, 22])
        self.assertEqual(result.total.children[0].children[0].values, [5, 6])
        self.assertEqual(result.total.children[0].children[1].values, [4, 6])
        self.assertEqual(result.total.children[2].values, [20, 22])
def Classify(mmap, rule_tree):
    """Create aggregated results of memory maps using the provided rules.

  Args:
    mmap: the memory map dump being processed (a |memory_map.Map| instance).
    rule_tree: the user-defined rules that define the filtering categories.

  Returns:
    An instance of |AggreatedResults|.
  """
    assert (isinstance(mmap, memory_map.Map))
    assert (isinstance(rule_tree, rules.Rule))

    res = results.AggreatedResults(rule_tree, _RESULT_KEYS)
    for map_entry in mmap.entries:
        values = [
            0, map_entry.priv_dirty_bytes, map_entry.priv_clean_bytes,
            map_entry.shared_dirty_bytes, map_entry.shared_clean_bytes
        ]
        values[0] = values[1] + values[2] + values[3] + values[4]
        res.AddToMatchingNodes(map_entry, values)
    return res