Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1454)

Unified Diff: systrace/systrace/tracing_controller.py

Issue 3018533002: Implementing a Monsoon power monitor trace agent, utilizing the UI infrastructure that the BattOr a…
Patch Set: Fixing test failures. Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: systrace/systrace/tracing_controller.py
diff --git a/systrace/systrace/tracing_controller.py b/systrace/systrace/tracing_controller.py
index d0d2d7c3735988f4b4904a0a980ae87baeee86c7..cf3764e09a9868668f1b67af78c89320c39682dc 100644
--- a/systrace/systrace/tracing_controller.py
+++ b/systrace/systrace/tracing_controller.py
@@ -18,6 +18,7 @@ import uuid
from systrace import trace_result
from systrace import tracing_agents
+from systrace.tracing_agents import monsoon_agent
from py_trace_event import trace_event
@@ -117,9 +118,28 @@ class TracingController(object):
self._child_agents_with_config = agents_with_config
self._controller_agent = TracingControllerAgent()
self._controller_config = controller_config
+ self._monsoon_agent = None
self._trace_in_progress = False
self.all_results = None
+ # If we have a monsoon power monitor controller in the group, make an
Chris Craik 2017/09/19 18:47:02 I'm not especially happy with this, but I don't ha
Zhen Wang 2017/09/19 23:53:50 I see --usbpassthrough is set to off for monsoon.
+ # explicit reference to it. We need to collect data from it before any
+ # other collectors as it re-enables USB for the subsequent collectors to
+ # collect their data.
+ # In addition, move this agent to the end of the list so it is the last
+ # to start (it disables USB).
+ monsoon_agent_with_config = None
+ sorted_agents_with_config = []
+ for agent_with_config in self._child_agents_with_config:
+ if isinstance(agent_with_config.agent, monsoon_agent.MonsoonTracingAgent):
+ monsoon_agent_with_config = agent_with_config
+ else:
+ sorted_agents_with_config.append(agent_with_config)
+ if monsoon_agent_with_config:
+ sorted_agents_with_config.append(monsoon_agent_with_config)
+ self._monsoon_agent = monsoon_agent_with_config.agent
+ self._child_agents_with_config = sorted_agents_with_config
+
@property
def get_child_agents(self):
return self._child_agents
@@ -163,6 +183,7 @@ class TracingController(object):
if ns < na:
print 'Warning: Only %d of %d tracing agents started.' % (ns, na)
self._child_agents = succ_agents
+
return True
def StopTracing(self):
@@ -179,6 +200,13 @@ class TracingController(object):
assert self._trace_in_progress, 'No trace in progress.'
self._trace_in_progress = False
+ # Explicity stop Monsoon tracing first, as it re-enables USB.
+ if self._monsoon_agent:
+ sync_id = GetUniqueSyncID()
+ if not self._monsoon_agent.StopCollectionWithClockSync(sync_id,
+ ControllerAgentClockSync):
+ print 'Monsoon agent failed to stop collection.'
+
# Issue the clock sync marker and stop the child tracing agents.
self._IssueClockSyncMarker()
succ_agents = []

Powered by Google App Engine
This is Rietveld 408576698