| Index: systrace/systrace/systrace_runner.py
|
| diff --git a/systrace/systrace/systrace_runner.py b/systrace/systrace/systrace_runner.py
|
| index a7ad9fa2b796b05d5c805ae4f9c4b3852bf2e41f..6fe8fa63aa20c09c6eaed4e6e8ad88611f359ea5 100644
|
| --- a/systrace/systrace/systrace_runner.py
|
| +++ b/systrace/systrace/systrace_runner.py
|
| @@ -9,6 +9,7 @@ necessary tracing agents for systrace, runs them, and outputs the results
|
| as an HTML or JSON file.'''
|
|
|
| from systrace import output_generator
|
| +from systrace import tracing_agents
|
| from systrace import tracing_controller
|
| from systrace.tracing_agents import atrace_agent
|
| from systrace.tracing_agents import atrace_from_file_agent
|
| @@ -21,24 +22,23 @@ AGENT_MODULES_ = [atrace_agent, atrace_from_file_agent,
|
|
|
|
|
| class SystraceRunner(object):
|
| - def __init__(self, script_dir, options, categories):
|
| + def __init__(self, script_dir, options):
|
| """Constructor.
|
|
|
| Args:
|
| script_dir: Directory containing the trace viewer script
|
| (systrace_trace_viewer.html)
|
| - options: List of command line options.
|
| - categories: List of trace categories to capture.
|
| + options: Object containing command line options.
|
| """
|
| # Parse command line arguments and create agents.
|
| self._script_dir = script_dir
|
| self._out_filename = options.output_file
|
| - agents = CreateAgents(options)
|
| + agents_with_config = _CreateAgentsWithConfig(options)
|
| + controller_config = _GetControllerConfig(options)
|
|
|
| # Set up tracing controller.
|
| - self._tracing_controller = tracing_controller.TracingController(options,
|
| - categories,
|
| - agents)
|
| + self._tracing_controller = tracing_controller.TracingController(
|
| + agents_with_config, controller_config)
|
|
|
| def StartTracing(self):
|
| self._tracing_controller.StartTracing()
|
| @@ -68,15 +68,54 @@ class SystraceRunner(object):
|
| print '\nWrote trace %s file: file://%s\n' % (('JSON' if write_json
|
| else 'HTML'), result)
|
|
|
| -def CreateAgents(options):
|
| +
|
| +class AgentWithConfig(object):
|
| + def __init__(self, agent, config):
|
| + self.agent = agent
|
| + self.config = config
|
| +
|
| +
|
| +def _CreateAgentsWithConfig(options):
|
| """Create tracing agents.
|
|
|
| This function will determine which tracing agents are valid given the
|
| - options and create those agents.
|
| + options and create those agents along with their corresponding configuration
|
| + object.
|
| Args:
|
| options: The command-line options.
|
| Returns:
|
| - The list of systrace agents.
|
| + A list of AgentWithConfig options containing agents and their corresponding
|
| + configuration object.
|
| """
|
| - result = [module.try_create_agent(options) for module in AGENT_MODULES_]
|
| - return [x for x in result if x]
|
| + result = []
|
| + for module in AGENT_MODULES_:
|
| + config = module.get_config(options)
|
| + agent = module.try_create_agent(config)
|
| + if agent and config:
|
| + result.append(AgentWithConfig(agent, config))
|
| + return [x for x in result if x and x.agent]
|
| +
|
| +
|
| +class TracingControllerConfig(tracing_agents.TracingConfig):
|
| + def __init__(self, output_file, trace_time, list_categories, write_json,
|
| + link_assets, asset_dir, timeout, collection_timeout,
|
| + device_serial_number, target):
|
| + tracing_agents.TracingConfig.__init__(self)
|
| + self.output_file = output_file
|
| + self.trace_time = trace_time
|
| + self.list_categories = list_categories
|
| + self.write_json = write_json
|
| + self.link_assets = link_assets
|
| + self.asset_dir = asset_dir
|
| + self.timeout = timeout
|
| + self.collection_timeout = collection_timeout
|
| + self.device_serial_number = device_serial_number
|
| + self.target = target
|
| +
|
| +
|
| +def _GetControllerConfig(options):
|
| + return TracingControllerConfig(options.output_file, options.trace_time,
|
| + options.list_categories, options.write_json,
|
| + options.link_assets, options.asset_dir,
|
| + options.timeout, options.collection_timeout,
|
| + options.device_serial_number, options.target)
|
|
|