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 5 import bytecode_dispatches_report as bdr 6 import unittest 7 8 9 class 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