Index: tools/telemetry/telemetry/value/profiler.py |
diff --git a/tools/telemetry/telemetry/value/trace.py b/tools/telemetry/telemetry/value/profiler.py |
similarity index 53% |
copy from tools/telemetry/telemetry/value/trace.py |
copy to tools/telemetry/telemetry/value/profiler.py |
index 643f51578fd0bd02bd99b1eeaaba4144f112a63e..1e0c1d9561cdec29976b544a13f71365087b5c7b 100644 |
--- a/tools/telemetry/telemetry/value/trace.py |
+++ b/tools/telemetry/telemetry/value/profiler.py |
@@ -6,38 +6,21 @@ import datetime |
import logging |
import random |
import sys |
-import tempfile |
from telemetry import value as value_module |
from telemetry.util import cloud_storage |
-from telemetry.util import file_handle |
-import telemetry.web_components # pylint: disable=W0611 |
-from trace_viewer.build import trace2html |
-class TraceValue(value_module.Value): |
- def __init__(self, page, tracing_timeline_data, important=False, |
+class ProfilerValue(value_module.Value): |
+ def __init__(self, page, profiler_name, file_handle, important=False, |
description=None): |
- """A value that contains a TracingTimelineData object and knows how to |
- output it. |
- |
- Adding TraceValues and outputting as JSON will produce a directory full of |
- HTML files called trace_files. Outputting as chart JSON will also produce |
- an index, files.html, linking to each of these files. |
- """ |
- super(TraceValue, self).__init__( |
- page, name='trace', units='', important=important, |
- description=description) |
+ """A value that contains a profiler information.""" |
- tf = tempfile.NamedTemporaryFile(delete=False, suffix='.html') |
- if page: |
- title = page.display_name |
- else: |
- title = '' |
- trace2html.WriteHTMLForTraceDataToFile( |
- [tracing_timeline_data.EventData()], title, tf) |
- tf.close() |
+ super(ProfilerValue, self).__init__( |
+ page, name='profiler', units='', important=important, |
+ description=description) |
- self._file_handle = file_handle.FromTempFile(tf) |
+ self._profiler_name = profiler_name |
+ self._file_handle = file_handle |
self._cloud_url = None |
def GetAssociatedFileHandle(self): |
@@ -48,7 +31,15 @@ class TraceValue(value_module.Value): |
page_name = self.page.url |
else: |
page_name = None |
- return 'TraceValue(%s, %s)' % (page_name, self.name) |
+ return 'ProfilerValue(%s, %s)' % (page_name, self.name) |
+ |
+ @property |
+ def profiler_name(self): |
+ return self._profiler_name |
+ |
+ @property |
+ def cloud_url(self): |
+ return self._cloud_url |
def GetBuildbotDataType(self, output_context): |
return None |
@@ -64,13 +55,10 @@ class TraceValue(value_module.Value): |
@staticmethod |
def GetJSONTypeName(): |
- return 'trace' |
+ return 'profiler' |
@classmethod |
def MergeLikeValuesFromSamePage(cls, values): |
- # TODO(eakuefner): Implement a MultiTraceValue: a Polymer-based, |
- # componentized, MultiTraceViwer-backed representation of more than one |
- # trace. |
assert len(values) > 0 |
return values[0] |
@@ -80,13 +68,15 @@ class TraceValue(value_module.Value): |
return None |
def AsDict(self): |
- d = super(TraceValue, self).AsDict() |
- d['file_id'] = self._file_handle.id |
+ d = super(ProfilerValue, self).AsDict() |
+ d['profiler_name'] = self._profiler_name |
+ if self._cloud_url: |
+ d['cloud_url'] = self._cloud_url |
return d |
def UploadToCloud(self, bucket): |
try: |
- remote_path = ('trace-file-id_%s-%s-%d%s' % ( |
+ remote_path = ('profiler-file-id_%s-%s-%d%s' % ( |
self._file_handle.id, |
datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'), |
random.randint(1, 100000), |
@@ -95,8 +85,9 @@ class TraceValue(value_module.Value): |
bucket, remote_path, |
self._file_handle.GetAbsPath()) |
sys.stderr.write( |
- 'View generated trace files online at %s for page %s\n' % |
+ 'View generated profiler files online at %s for page %s\n' % |
(self._cloud_url, self.page.url if self.page else 'unknown')) |
except cloud_storage.PermissionError as e: |
- logging.error('Cannot upload trace files to cloud storage due to ' |
+ logging.error('Cannot upload profiler files to cloud storage due to ' |
' permission error: %s' % e.message) |
+ self._cloud_url = 'error' |