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.
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
):
16 self
._raw
_display
_frame
_rate
_measurements
= []
17 self
._surface
_stats
_collector
= None
20 def surface_stats_collector(self
):
21 return self
._surface
_stats
_collector
23 def IsDisplayTracingSupported(self
):
27 class DisplayTracingAgentTest(unittest
.TestCase
):
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())
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, [])
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, [])
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):
62 # Tracing is stopped even if there is exception. And the agent can start
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, [])