| # Copyright 2014 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. |
| |
| import os |
| import unittest |
| import zipfile |
| |
| from profile_chrome import profiler |
| from profile_chrome import ui |
| from profile_chrome import fake_agent_1 |
| from profile_chrome import fake_agent_2 |
| from systrace import decorators |
| from systrace import tracing_controller |
| |
| |
| class ProfilerTest(unittest.TestCase): |
| def setUp(self): |
| ui.EnableTestMode() |
| self._tracing_options = tracing_controller.TracingControllerConfig(None, |
| None, None, None, None, None, None, None, None, None) |
| |
| @decorators.ClientOnlyTest |
| def testCaptureBasicProfile(self): |
| result = profiler.CaptureProfile(self._tracing_options, 1, [fake_agent_1]) |
| |
| try: |
| self.assertTrue(os.path.exists(result)) |
| self.assertTrue(result.endswith('.html')) |
| finally: |
| if os.path.exists(result): |
| os.remove(result) |
| |
| @decorators.ClientOnlyTest |
| def testCaptureJsonProfile(self): |
| result = profiler.CaptureProfile(self._tracing_options, 1, |
| [fake_agent_2], write_json=True) |
| |
| try: |
| self.assertFalse(result.endswith('.html')) |
| with open(result) as f: |
| self.assertEquals(f.read(), 'fake-contents') |
| finally: |
| if os.path.exists(result): |
| os.remove(result) |
| |
| @decorators.ClientOnlyTest |
| def testCaptureMultipleProfiles(self): |
| result = profiler.CaptureProfile(self._tracing_options, 1, |
| [fake_agent_1, fake_agent_2], |
| write_json=True) |
| |
| try: |
| self.assertTrue(result.endswith('.zip')) |
| self.assertTrue(zipfile.is_zipfile(result)) |
| finally: |
| if os.path.exists(result): |
| os.remove(result) |