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