• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2016 the V8 project authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import bytecode_dispatches_report as bdr
6import unittest
7
8
9class BytecodeDispatchesReportTest(unittest.TestCase):
10  def test_find_top_counters(self):
11    top_counters = bdr.find_top_bytecode_dispatch_pairs({
12      "a": {"a": 10, "b": 8, "c": 99},
13      "b": {"a":  1, "b": 4, "c":  1},
14      "c": {"a": 42, "b": 3, "c":  7}}, 5)
15    self.assertListEqual(top_counters, [
16      ('a', 'c', 99),
17      ('c', 'a', 42),
18      ('a', 'a', 10),
19      ('a', 'b',  8),
20      ('c', 'c',  7)])
21
22  def test_build_counters_matrix(self):
23    counters_matrix, xlabels, ylabels = bdr.build_counters_matrix({
24      "a": {"a": 10, "b":  8, "c":  7},
25      "b": {"a":  1, "c":  4},
26      "c": {"a": 42, "b": 12, "c": 99}})
27    self.assertTrue((counters_matrix == [[42, 12, 99],
28                                         [ 1,  0,  4],
29                                         [10,  8,  7]]).all())
30    self.assertListEqual(xlabels, ['a', 'b', 'c'])
31    self.assertListEqual(ylabels, ['c', 'b', 'a'])
32
33  def test_find_top_bytecodes(self):
34    top_dispatch_sources = bdr.find_top_bytecodes({
35      "a": {"a": 10, "b":  8, "c":  7},
36      "b": {"a":  1, "c":  4},
37      "c": {"a": 42, "b": 12, "c": 99}
38    })
39    self.assertListEqual(top_dispatch_sources, [
40      ('c', 153),
41      ('a',  25),
42      ('b',   5)
43    ])
44
45  def test_find_top_dispatch_sources_and_destinations(self):
46    d = {
47      "a": {"a":  4, "b":  2, "c":  4},
48      "b": {"a":  1, "c":  4},
49      "c": {"a": 40, "b": 10, "c": 50}
50    }
51    top_sources, top_dests = bdr.find_top_dispatch_sources_and_destinations(
52      d, "b", 10, False)
53    self.assertListEqual(top_sources, [
54      ("c", 10, 0.1),
55      ("a", 2, 0.2)
56    ])
57    top_sources, top_dests = bdr.find_top_dispatch_sources_and_destinations(
58      d, "b", 10, True)
59    self.assertListEqual(top_sources, [
60      ("a", 2, 0.2),
61      ("c", 10, 0.1)
62    ])
63