1# Copyright 2016 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.
4
5import datetime
6import logging
7import os
8
9from py_utils import cloud_storage
10
11from telemetry.internal.results import output_formatter
12
13from tracing import results_renderer
14
15
16class Html2OutputFormatter(output_formatter.OutputFormatter):
17  _JSON_TAG = '<div id="value-set-json">%s</div>'
18
19  def __init__(self, output_stream, reset_results, upload_results):
20    super(Html2OutputFormatter, self).__init__(output_stream)
21    self._upload_results = upload_results
22    self._reset_results = reset_results
23
24  def Format(self, page_test_results):
25    results_renderer.RenderHTMLView(page_test_results.value_set,
26                                    self._output_stream, self._reset_results)
27    file_path = os.path.abspath(self._output_stream.name)
28    if self._upload_results:
29      remote_path = ('html-results/results-%s' %
30                     datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
31      try:
32        cloud_storage.Insert(
33            cloud_storage.PUBLIC_BUCKET, remote_path, file_path)
34        print 'View online at',
35        print 'http://storage.googleapis.com/chromium-telemetry/' + remote_path
36      except cloud_storage.PermissionError as e:
37        logging.error('Cannot upload profiling files to cloud storage due ' +
38                      'to permission error: ' + e.message)
39    print 'View result at file://' + file_path
40