Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Unified Diff: telemetry/telemetry/value/trace.py

Issue 2661573003: Refactor TraceData to encapsulate internal traces' representation (Closed)
Patch Set: Address Charlie's comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « telemetry/telemetry/timeline/trace_event_importer.py ('k') | telemetry/telemetry/value/trace_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: telemetry/telemetry/value/trace.py
diff --git a/telemetry/telemetry/value/trace.py b/telemetry/telemetry/value/trace.py
index d4b18a85dd8913bd761c74a76a41f5e6bf61f7b6..b50309af2251a70c752512e7390dbee0fca2e90f 100644
--- a/telemetry/telemetry/value/trace.py
+++ b/telemetry/telemetry/value/trace.py
@@ -3,12 +3,10 @@
# found in the LICENSE file.
import datetime
-import json
import logging
import os
import random
import shutil
-import subprocess
import sys
import tempfile
@@ -18,9 +16,6 @@ from telemetry.internal.util import file_handle
from telemetry.timeline import trace_data as trace_data_module
from telemetry import value as value_module
-_TRACE2HTML_PATH = os.path.join(os.path.dirname(__file__), '..', '..', '..',
- 'tracing', 'bin', 'trace2html')
-
class TraceValue(value_module.Value):
def __init__(self, page, trace_data, important=False, description=None):
@@ -50,48 +45,14 @@ class TraceValue(value_module.Value):
for p in trace_data_module.ALL_TRACE_PARTS
if trace_data.HasTracesFor(p)]
- @staticmethod
- def _DumpTraceToFile(trace, path):
- with open(path, 'w') as fp:
- if isinstance(trace, basestring):
- fp.write(trace)
- elif isinstance(trace, dict) or isinstance(trace, list):
- json.dump(trace, fp)
- else:
- raise TypeError('Trace is of unknown type.')
-
def _GetTempFileHandle(self, trace_data):
- temp_dir = tempfile.mkdtemp()
- trace_files = []
- counter = 0
- try:
- trace_size_data = {}
- for traces_list, part in self._GetTraceParts(trace_data):
- for trace in traces_list:
- if isinstance(trace, trace_data_module.TraceFileHandle):
- file_path = trace.file_path
- else:
- file_path = os.path.join(temp_dir, '%s.trace' % counter)
- self._DumpTraceToFile(trace, file_path)
- trace_size_data.setdefault(part, 0)
- trace_size_data[part] += os.path.getsize(file_path)
- trace_files.append(file_path)
- counter += 1
- logging.info('Trace sizes in bytes: %s', trace_size_data)
- tf = tempfile.NamedTemporaryFile(delete=False, suffix='.html')
- tf.close()
- if trace_files:
- title = ''
- if self.page:
- title = self.page.display_name
- cmd = (['python', _TRACE2HTML_PATH] + trace_files +
- ['--output', tf.name] + ['--title', title])
- subprocess.check_output(cmd)
- else:
- logging.warning('No traces to convert to html.')
- return file_handle.FromTempFile(tf)
- finally:
- shutil.rmtree(temp_dir)
+ tf = tempfile.NamedTemporaryFile(delete=False, suffix='.html')
+ tf.close()
+ title = ''
+ if self.page:
+ title = self.page.display_name
+ trace_data.Serialize(tf.name, trace_title=title)
+ return file_handle.FromFilePath(tf.name)
def __repr__(self):
if self.page:
« no previous file with comments | « telemetry/telemetry/timeline/trace_event_importer.py ('k') | telemetry/telemetry/value/trace_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698