17332cdb42368a904cbf7418de329868989e592daChris Craik# Copyright 2016 The Chromium Authors. All rights reserved.
27332cdb42368a904cbf7418de329868989e592daChris Craik# Use of this source code is governed by a BSD-style license that can be
37332cdb42368a904cbf7418de329868989e592daChris Craik# found in the LICENSE file.
47332cdb42368a904cbf7418de329868989e592daChris Craik
57332cdb42368a904cbf7418de329868989e592daChris Craikimport optparse
67332cdb42368a904cbf7418de329868989e592daChris Craikimport tempfile
77332cdb42368a904cbf7418de329868989e592daChris Craik
87332cdb42368a904cbf7418de329868989e592daChris Craikfrom systrace import trace_result
97332cdb42368a904cbf7418de329868989e592daChris Craikfrom systrace import tracing_agents
107332cdb42368a904cbf7418de329868989e592daChris Craik
117332cdb42368a904cbf7418de329868989e592daChris Craik
127332cdb42368a904cbf7418de329868989e592daChris Craikclass FakeAgent2(object):
137332cdb42368a904cbf7418de329868989e592daChris Craik  def __init__(self, contents='fake-contents'):
147332cdb42368a904cbf7418de329868989e592daChris Craik    self.contents = contents
157332cdb42368a904cbf7418de329868989e592daChris Craik    self.stopped = False
167332cdb42368a904cbf7418de329868989e592daChris Craik    self.config = None
177332cdb42368a904cbf7418de329868989e592daChris Craik    self.filename = None
187332cdb42368a904cbf7418de329868989e592daChris Craik
197332cdb42368a904cbf7418de329868989e592daChris Craik  # pylint: disable=unused-argument
207332cdb42368a904cbf7418de329868989e592daChris Craik  def StartAgentTracing(self, config, timeout=None):
217332cdb42368a904cbf7418de329868989e592daChris Craik    self.config = config
227332cdb42368a904cbf7418de329868989e592daChris Craik    return True
237332cdb42368a904cbf7418de329868989e592daChris Craik
247332cdb42368a904cbf7418de329868989e592daChris Craik  # pylint: disable=unused-argument
257332cdb42368a904cbf7418de329868989e592daChris Craik  def StopAgentTracing(self, timeout=None):
267332cdb42368a904cbf7418de329868989e592daChris Craik    self.stopped = True
277332cdb42368a904cbf7418de329868989e592daChris Craik    return True
287332cdb42368a904cbf7418de329868989e592daChris Craik
297332cdb42368a904cbf7418de329868989e592daChris Craik  # pylint: disable=unused-argument
307332cdb42368a904cbf7418de329868989e592daChris Craik  def GetResults(self, timeout=None):
317332cdb42368a904cbf7418de329868989e592daChris Craik    trace_data = open(self._PullTrace()).read()
327332cdb42368a904cbf7418de329868989e592daChris Craik    return trace_result.TraceResult('fakeDataTwo', trace_data)
337332cdb42368a904cbf7418de329868989e592daChris Craik
347332cdb42368a904cbf7418de329868989e592daChris Craik  def _PullTrace(self):
357332cdb42368a904cbf7418de329868989e592daChris Craik    with tempfile.NamedTemporaryFile(delete=False) as f:
367332cdb42368a904cbf7418de329868989e592daChris Craik      self.filename = f.name
377332cdb42368a904cbf7418de329868989e592daChris Craik      f.write(self.contents)
387332cdb42368a904cbf7418de329868989e592daChris Craik      return f.name
397332cdb42368a904cbf7418de329868989e592daChris Craik
407332cdb42368a904cbf7418de329868989e592daChris Craik  # pylint: disable=no-self-use
417332cdb42368a904cbf7418de329868989e592daChris Craik  def SupportsExplicitClockSync(self):
427332cdb42368a904cbf7418de329868989e592daChris Craik    return False
437332cdb42368a904cbf7418de329868989e592daChris Craik
447332cdb42368a904cbf7418de329868989e592daChris Craik  # pylint: disable=unused-argument, no-self-use
457332cdb42368a904cbf7418de329868989e592daChris Craik  def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback):
467332cdb42368a904cbf7418de329868989e592daChris Craik    print ('Clock sync marker cannot be recorded since explicit clock sync '
477332cdb42368a904cbf7418de329868989e592daChris Craik           'is not supported.')
487332cdb42368a904cbf7418de329868989e592daChris Craik
497332cdb42368a904cbf7418de329868989e592daChris Craik  def __repr__(self):
507332cdb42368a904cbf7418de329868989e592daChris Craik    return 'faketracetwo'
517332cdb42368a904cbf7418de329868989e592daChris Craik
527332cdb42368a904cbf7418de329868989e592daChris Craik
537332cdb42368a904cbf7418de329868989e592daChris Craikclass FakeConfig(tracing_agents.TracingConfig):
547332cdb42368a904cbf7418de329868989e592daChris Craik  def __init__(self):
557332cdb42368a904cbf7418de329868989e592daChris Craik    tracing_agents.TracingConfig.__init__(self)
567332cdb42368a904cbf7418de329868989e592daChris Craik
577332cdb42368a904cbf7418de329868989e592daChris Craik
587332cdb42368a904cbf7418de329868989e592daChris Craik# pylint: disable=unused-argument
597332cdb42368a904cbf7418de329868989e592daChris Craikdef try_create_agent(config):
607332cdb42368a904cbf7418de329868989e592daChris Craik  return FakeAgent2()
617332cdb42368a904cbf7418de329868989e592daChris Craik
627332cdb42368a904cbf7418de329868989e592daChris Craikdef add_options(parser):
637332cdb42368a904cbf7418de329868989e592daChris Craik  options = optparse.OptionGroup(parser, 'Fake options.')
647332cdb42368a904cbf7418de329868989e592daChris Craik  return options
657332cdb42368a904cbf7418de329868989e592daChris Craik
667332cdb42368a904cbf7418de329868989e592daChris Craik# pylint: disable=unused-argument
677332cdb42368a904cbf7418de329868989e592daChris Craikdef get_config(options):
687332cdb42368a904cbf7418de329868989e592daChris Craik  return FakeConfig()
69