1cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Copyright 2014 The Chromium Authors. All rights reserved.
2cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Use of this source code is governed by a BSD-style license that can be
3cef7893435aa41160dd1255c43cb8498279738ccChris Craik# found in the LICENSE file.
4cef7893435aa41160dd1255c43cb8498279738ccChris Craik
5cef7893435aa41160dd1255c43cb8498279738ccChris Craik
6cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass OutputFormatter(object):
7cef7893435aa41160dd1255c43cb8498279738ccChris Craik  """A formatter for PageTestResults.
8cef7893435aa41160dd1255c43cb8498279738ccChris Craik
9cef7893435aa41160dd1255c43cb8498279738ccChris Craik  An OutputFormatter takes PageTestResults, formats the results
10cef7893435aa41160dd1255c43cb8498279738ccChris Craik  (telemetry.value.Value instances), and output the formatted results
11cef7893435aa41160dd1255c43cb8498279738ccChris Craik  in the given output stream.
12cef7893435aa41160dd1255c43cb8498279738ccChris Craik
13cef7893435aa41160dd1255c43cb8498279738ccChris Craik  Examples of output formatter: CsvOutputFormatter produces results in
14cef7893435aa41160dd1255c43cb8498279738ccChris Craik  CSV format."""
15cef7893435aa41160dd1255c43cb8498279738ccChris Craik
16cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def __init__(self, output_stream):
17cef7893435aa41160dd1255c43cb8498279738ccChris Craik    """Constructs a new formatter that writes to the output_stream.
18cef7893435aa41160dd1255c43cb8498279738ccChris Craik
19cef7893435aa41160dd1255c43cb8498279738ccChris Craik    Args:
20cef7893435aa41160dd1255c43cb8498279738ccChris Craik      output_stream: The stream to write the formatted output to.
21cef7893435aa41160dd1255c43cb8498279738ccChris Craik    """
22cef7893435aa41160dd1255c43cb8498279738ccChris Craik    self._output_stream = output_stream
23cef7893435aa41160dd1255c43cb8498279738ccChris Craik
24cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def Format(self, page_test_results):
25cef7893435aa41160dd1255c43cb8498279738ccChris Craik    """Formats the given PageTestResults into the output stream.
26cef7893435aa41160dd1255c43cb8498279738ccChris Craik
27cef7893435aa41160dd1255c43cb8498279738ccChris Craik    This will be called once at the end of a benchmark.
28cef7893435aa41160dd1255c43cb8498279738ccChris Craik
29cef7893435aa41160dd1255c43cb8498279738ccChris Craik    Args:
30cef7893435aa41160dd1255c43cb8498279738ccChris Craik      page_test_results: A PageTestResults object containing all results
31cef7893435aa41160dd1255c43cb8498279738ccChris Craik         from the current benchmark run.
32cef7893435aa41160dd1255c43cb8498279738ccChris Craik    """
33cef7893435aa41160dd1255c43cb8498279738ccChris Craik    raise NotImplementedError()
34cef7893435aa41160dd1255c43cb8498279738ccChris Craik
35cef7893435aa41160dd1255c43cb8498279738ccChris Craik  @property
36cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def output_stream(self):
37cef7893435aa41160dd1255c43cb8498279738ccChris Craik    return self._output_stream
38