Update sdk/platform-tools to version 26.0.0.
[android_tools.git] / sdk / platform-tools / systrace / catapult / telemetry / telemetry / internal / platform / tracing_agent / display_tracing_agent_unittest.py
blob62b5b08426d8ef49717cc3802d330b60960a0670
1 # Copyright 2014 The Chromium 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 import mock
5 import unittest
7 from telemetry.internal.platform import android_platform_backend
8 from telemetry.internal.platform.tracing_agent import display_tracing_agent
9 from telemetry.timeline import tracing_config
11 # pylint: disable=super-init-not-called, abstract-method, unused-argument
12 class FakeAndroidPlatformBackend(
13 android_platform_backend.AndroidPlatformBackend):
14 def __init__(self):
15 self._device = 0
16 self._raw_display_frame_rate_measurements = []
17 self._surface_stats_collector = None
19 @property
20 def surface_stats_collector(self):
21 return self._surface_stats_collector
23 def IsDisplayTracingSupported(self):
24 return True
27 class DisplayTracingAgentTest(unittest.TestCase):
28 def setUp(self):
29 self._config = tracing_config.TracingConfig()
30 self._config.enable_platform_display_trace = True
31 self._platform_backend = FakeAndroidPlatformBackend()
32 self._agent = display_tracing_agent.DisplayTracingAgent(
33 self._platform_backend)
35 def stopAndCollect(self):
36 self._agent.StopAgentTracing()
37 self._agent.CollectAgentTraceData(mock.MagicMock())
39 @mock.patch(
40 'devil.android.perf.surface_stats_collector.SurfaceStatsCollector')
41 def testStartAndStopTracing(self, MockSurfaceStatsCollector):
42 self._agent.StartAgentTracing(self._config, 10)
43 # Second start tracing will raise error.
44 with self.assertRaises(AssertionError):
45 self._agent.StartAgentTracing(self._config, 10)
46 self._platform_backend.surface_stats_collector.Stop.return_value = (0, [])
47 self.stopAndCollect()
49 # Can start and stop tracing multiple times.
50 self._agent.StartAgentTracing(self._config, 10)
51 self._platform_backend.surface_stats_collector.Stop.return_value = (0, [])
52 self.stopAndCollect()
54 @mock.patch(
55 'devil.android.perf.surface_stats_collector.SurfaceStatsCollector')
56 def testExceptionRaisedInStopTracing(self, MockSurfaceStatsCollector):
57 self._agent.StartAgentTracing(self._config, 10)
58 self._platform_backend.surface_stats_collector.Stop.side_effect = Exception(
59 'Raise error when stopping tracing.')
60 with self.assertRaises(Exception):
61 self.stopAndCollect()
62 # Tracing is stopped even if there is exception. And the agent can start
63 # tracing again.
64 self._agent.StartAgentTracing(self._config, 10)
65 self._platform_backend.surface_stats_collector.Stop.side_effect = None
66 self._platform_backend.surface_stats_collector.Stop.return_value = (0, [])
67 self.stopAndCollect()