Commit d538141a authored by nduca@chromium.org's avatar nduca@chromium.org

Sanitize event names before adding to results object

Event names can have . characters in them. But, the telemetry results system
does not allow trace names to contain . characters for various reasons.

R=epenner
TBR=ernstm
CC=achuith

Review URL: https://codereview.chromium.org/140653003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245363 0039d316-1c4b-4281-b951-d872f2087c98
parent d1cfb7ed
......@@ -60,6 +60,10 @@ class TimelineMetric(Metric):
def renderer_process(self):
return self._renderer_process
@renderer_process.setter
def renderer_process(self, p):
self._renderer_process = p
def AddResults(self, tab, results):
return
......@@ -95,7 +99,11 @@ class LoadTimesTimelineMetric(TimelineMetric):
times = [event.self_time for event in event_group]
total = sum(times)
biggest_jank = max(times)
full_name = thread_name + '|' + event_name
# Results objects cannot contain the '.' character, so remove that here.
sanitized_event_name = event_name.replace('.', '_')
full_name = thread_name + '|' + sanitized_event_name
results.Add(full_name, 'ms', total)
results.Add(full_name + '_max', 'ms', biggest_jank)
results.Add(full_name + '_avg', 'ms', total / len(times))
......
......@@ -33,6 +33,36 @@ class TestPageMeasurementResults(
def __str__(self):
return '\n'.join([repr(x) for x in self.all_page_specific_values])
class LoadTimesTimelineMetric(unittest.TestCase):
def GetResultsForModel(self, metric, model):
metric.model = model
results = TestPageMeasurementResults(self)
tab = None
metric.AddResults(tab, results)
return results
def testSanitizing(self):
model = model_module.TimelineModel()
renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
renderer_main.name = 'CrRendererMain'
# [ X ]
# [ Y ]
renderer_main.BeginSlice('cat1', 'x.y', 10, 0)
renderer_main.EndSlice(20, 20)
model.FinalizeImport()
metric = timeline.LoadTimesTimelineMetric(timeline.TRACING_MODE)
metric.renderer_process = renderer_main.parent
results = self.GetResultsForModel(metric, model)
results.AssertHasPageSpecificScalarValue(
'CrRendererMain|x_y', 'ms', 10)
results.AssertHasPageSpecificScalarValue(
'CrRendererMain|x_y_max', 'ms', 10)
results.AssertHasPageSpecificScalarValue(
'CrRendererMain|x_y_avg', 'ms', 10)
class ThreadTimesTimelineMetricUnittest(unittest.TestCase):
def GetResultsForModel(self, metric, model):
metric.model = model
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment