| OLD | NEW |
| 1 # Copyright (C) 2012 Google Inc. All rights reserved. | 1 # Copyright (C) 2012 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 import unittest | 29 import unittest |
| 30 | 30 |
| 31 from webkitpy.common.system.platforminfo_mock import MockPlatformInfo | 31 from webkitpy.common.system.platforminfo_mock import MockPlatformInfo |
| 32 from webkitpy.common.system.systemhost_mock import MockSystemHost | 32 from webkitpy.common.system.systemhost_mock import MockSystemHost |
| 33 | 33 |
| 34 from .profiler import ProfilerFactory, GooglePProf | 34 from .profiler import ProfilerFactory, GooglePProf |
| 35 | 35 |
| 36 | 36 |
| 37 class ProfilerFactoryTest(unittest.TestCase): | 37 class ProfilerFactoryTest(unittest.TestCase): |
| 38 |
| 38 def _assert_default_profiler_name(self, os_name, expected_profiler_name): | 39 def _assert_default_profiler_name(self, os_name, expected_profiler_name): |
| 39 profiler_name = ProfilerFactory.default_profiler_name(MockPlatformInfo(o
s_name)) | 40 profiler_name = ProfilerFactory.default_profiler_name(MockPlatformInfo(o
s_name)) |
| 40 self.assertEqual(profiler_name, expected_profiler_name) | 41 self.assertEqual(profiler_name, expected_profiler_name) |
| 41 | 42 |
| 42 def test_default_profilers(self): | 43 def test_default_profilers(self): |
| 43 self._assert_default_profiler_name('mac', 'iprofiler') | 44 self._assert_default_profiler_name('mac', 'iprofiler') |
| 44 self._assert_default_profiler_name('linux', 'perf') | 45 self._assert_default_profiler_name('linux', 'perf') |
| 45 self._assert_default_profiler_name('win32', None) | 46 self._assert_default_profiler_name('win32', None) |
| 46 self._assert_default_profiler_name('freebsd', None) | 47 self._assert_default_profiler_name('freebsd', None) |
| 47 | 48 |
| 48 def test_default_profiler_output(self): | 49 def test_default_profiler_output(self): |
| 49 host = MockSystemHost() | 50 host = MockSystemHost() |
| 50 self.assertFalse(host.filesystem.exists("/tmp/output")) | 51 self.assertFalse(host.filesystem.exists("/tmp/output")) |
| 51 | 52 |
| 52 # Default mocks are Mac, so iprofile should be default. | 53 # Default mocks are Mac, so iprofile should be default. |
| 53 profiler = ProfilerFactory.create_profiler(host, '/bin/executable', '/tm
p/output') | 54 profiler = ProfilerFactory.create_profiler(host, '/bin/executable', '/tm
p/output') |
| 54 self.assertTrue(host.filesystem.exists("/tmp/output")) | 55 self.assertTrue(host.filesystem.exists("/tmp/output")) |
| 55 self.assertEqual(profiler._output_path, "/tmp/output/test.dtps") | 56 self.assertEqual(profiler._output_path, "/tmp/output/test.dtps") |
| 56 | 57 |
| 57 # Linux defaults to perf. | 58 # Linux defaults to perf. |
| 58 host.platform.os_name = 'linux' | 59 host.platform.os_name = 'linux' |
| 59 profiler = ProfilerFactory.create_profiler(host, '/bin/executable', '/tm
p/output') | 60 profiler = ProfilerFactory.create_profiler(host, '/bin/executable', '/tm
p/output') |
| 60 self.assertEqual(profiler._output_path, "/tmp/output/test.data") | 61 self.assertEqual(profiler._output_path, "/tmp/output/test.data") |
| 61 | 62 |
| 62 | 63 |
| 63 class GooglePProfTest(unittest.TestCase): | 64 class GooglePProfTest(unittest.TestCase): |
| 65 |
| 64 def test_pprof_output_regexp(self): | 66 def test_pprof_output_regexp(self): |
| 65 pprof_output = """ | 67 pprof_output = """ |
| 66 sometimes | 68 sometimes |
| 67 there | 69 there |
| 68 is | 70 is |
| 69 junk before the total line | 71 junk before the total line |
| 70 | 72 |
| 71 | 73 |
| 72 Total: 3770 samples | 74 Total: 3770 samples |
| 73 76 2.0% 2.0% 104 2.8% lookup (inline) | 75 76 2.0% 2.0% 104 2.8% lookup (inline) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 94 42 1.1% 7.6% 47 1.2% WTF::Vector::shrinkCapacity | 96 42 1.1% 7.6% 47 1.2% WTF::Vector::shrinkCapacity |
| 95 35 0.9% 8.5% 35 0.9% WTF::RefPtr::get (inline) | 97 35 0.9% 8.5% 35 0.9% WTF::RefPtr::get (inline) |
| 96 33 0.9% 9.4% 43 1.1% append (inline) | 98 33 0.9% 9.4% 43 1.1% append (inline) |
| 97 29 0.8% 10.1% 67 1.8% WTF::StringImpl::deref (inline) | 99 29 0.8% 10.1% 67 1.8% WTF::StringImpl::deref (inline) |
| 98 29 0.8% 10.9% 100 2.7% add (inline) | 100 29 0.8% 10.9% 100 2.7% add (inline) |
| 99 28 0.7% 11.6% 28 0.7% WebCore::QualifiedName::localName (inline
) | 101 28 0.7% 11.6% 28 0.7% WebCore::QualifiedName::localName (inline
) |
| 100 """ | 102 """ |
| 101 host = MockSystemHost() | 103 host = MockSystemHost() |
| 102 profiler = GooglePProf(host, '/bin/executable', '/tmp/output') | 104 profiler = GooglePProf(host, '/bin/executable', '/tmp/output') |
| 103 self.assertEqual(profiler._first_ten_lines_of_profile(pprof_output), exp
ected_first_ten_lines) | 105 self.assertEqual(profiler._first_ten_lines_of_profile(pprof_output), exp
ected_first_ten_lines) |
| OLD | NEW |