| Index: tools/telemetry/telemetry/value/summary.py
|
| diff --git a/tools/telemetry/telemetry/value/summary.py b/tools/telemetry/telemetry/value/summary.py
|
| deleted file mode 100644
|
| index 5dde5c9b9a2a7bb0ca5bc47df825563b59a7aeeb..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/value/summary.py
|
| +++ /dev/null
|
| @@ -1,150 +0,0 @@
|
| -# Copyright 2014 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -from collections import defaultdict
|
| -
|
| -from telemetry.value import failure
|
| -from telemetry.value import merge_values
|
| -from telemetry.value import skip
|
| -
|
| -
|
| -class Summary(object):
|
| - """Computes summary values from the per-page-run values produced by a test.
|
| -
|
| - Some telemetry benchmark repeat a number of times in order to get a reliable
|
| - measurement. The test does not have to handle merging of these runs:
|
| - summarizer does it for you.
|
| -
|
| - For instance, if two pages run, 3 and 1 time respectively:
|
| - ScalarValue(page1, 'foo', units='ms', 1)
|
| - ScalarValue(page1, 'foo', units='ms', 1)
|
| - ScalarValue(page1, 'foo', units='ms', 1)
|
| - ScalarValue(page2, 'foo', units='ms', 2)
|
| -
|
| - Then summarizer will produce two sets of values. First,
|
| - computed_per_page_values:
|
| - [
|
| - ListOfScalarValues(page1, 'foo', units='ms', [1,1,1])],
|
| - ListOfScalarValues(page2, 'foo', units='ms', [2])]
|
| - ]
|
| -
|
| - In addition, it will produce a summary value:
|
| - [
|
| - ListOfScalarValues(page=None, 'foo', units='ms', [1,1,1,2])]
|
| - ]
|
| -
|
| - """
|
| - def __init__(self, all_page_specific_values,
|
| - key_func=merge_values.DefaultKeyFunc):
|
| - had_failures = any(isinstance(v, failure.FailureValue) for v in
|
| - all_page_specific_values)
|
| - self.had_failures = had_failures
|
| - self._computed_per_page_values = []
|
| - self._computed_summary_values = []
|
| - self._interleaved_computed_per_page_values_and_summaries = []
|
| - self._key_func = key_func
|
| - self._ComputePerPageValues(all_page_specific_values)
|
| -
|
| - @property
|
| - def computed_per_page_values(self):
|
| - return self._computed_per_page_values
|
| -
|
| - @property
|
| - def computed_summary_values(self):
|
| - return self._computed_summary_values
|
| -
|
| - @property
|
| - def interleaved_computed_per_page_values_and_summaries(self):
|
| - """Returns the computed per page values and summary values interleaved.
|
| -
|
| - All the results for a given name are printed together. First per page
|
| - values, then summary values.
|
| -
|
| - """
|
| - return self._interleaved_computed_per_page_values_and_summaries
|
| -
|
| - def _ComputePerPageValues(self, all_page_specific_values):
|
| - all_successful_page_values = [
|
| - v for v in all_page_specific_values if not (isinstance(
|
| - v, failure.FailureValue) or isinstance(v, skip.SkipValue))]
|
| -
|
| - # We will later need to determine how many values were originally created
|
| - # for each value name, to apply a workaround meant to clean up the printf
|
| - # output.
|
| - num_successful_pages_for_key = defaultdict(int)
|
| - for v in all_successful_page_values:
|
| - num_successful_pages_for_key[self._key_func(v)] += 1
|
| -
|
| - # By here, due to page repeat options, all_values_from_successful_pages
|
| - # contains values of the same name not only from mulitple pages, but also
|
| - # from the same name. So even if, for instance, only one page ran, it may
|
| - # have run twice, producing two 'x' values.
|
| - #
|
| - # So, get rid of the repeated pages by merging.
|
| - merged_page_values = merge_values.MergeLikeValuesFromSamePage(
|
| - all_successful_page_values, self._key_func)
|
| -
|
| - # Now we have a bunch of values, but there is only one value_name per page.
|
| - # Suppose page1 and page2 ran, producing values x and y. We want to print
|
| - # x for page1
|
| - # x for page2
|
| - # x for page1, page2 combined
|
| - #
|
| - # y for page1
|
| - # y for page2
|
| - # y for page1, page2 combined
|
| - #
|
| - # We already have the x values in the values array. But, we will need
|
| - # them indexable by summary key.
|
| - #
|
| - # The following dict maps summary_key -> list of pages that have values of
|
| - # that name.
|
| - per_page_values_by_key = defaultdict(list)
|
| - for value in merged_page_values:
|
| - per_page_values_by_key[self._key_func(value)].append(value)
|
| -
|
| - # We already have the x values in the values array. But, we also need
|
| - # the values merged across the pages. And, we will need them indexed by
|
| - # summary key so that we can find them when printing out value names in
|
| - # alphabetical order.
|
| - merged_pages_value_by_key = {}
|
| - if not self.had_failures:
|
| - for value in merge_values.MergeLikeValuesFromDifferentPages(
|
| - all_successful_page_values, self._key_func):
|
| - value_key = self._key_func(value)
|
| - assert value_key not in merged_pages_value_by_key
|
| - merged_pages_value_by_key[value_key] = value
|
| -
|
| - keys = sorted(set([self._key_func(v) for v in merged_page_values]))
|
| -
|
| - # Time to walk through the values by key, printing first the page-specific
|
| - # values and then the merged_site value.
|
| - for key in keys:
|
| - per_page_values = per_page_values_by_key.get(key, [])
|
| -
|
| - # Sort the values by their URL.
|
| - sorted_per_page_values = list(per_page_values)
|
| - sorted_per_page_values.sort(
|
| - key=lambda per_page_values: per_page_values.page.display_name)
|
| -
|
| - # Output the page-specific results.
|
| - num_successful_pages_for_this_key = (
|
| - num_successful_pages_for_key[key])
|
| - for per_page_value in sorted_per_page_values:
|
| - self._ComputePerPageValue(per_page_value,
|
| - num_successful_pages_for_this_key)
|
| -
|
| - # Output the combined values.
|
| - merged_pages_value = merged_pages_value_by_key.get(key, None)
|
| - if merged_pages_value:
|
| - self._computed_summary_values.append(merged_pages_value)
|
| - self._interleaved_computed_per_page_values_and_summaries.append(
|
| - merged_pages_value)
|
| -
|
| - def _ComputePerPageValue(
|
| - self, value, num_successful_pages_for_this_value_name):
|
| - if num_successful_pages_for_this_value_name >= 1:
|
| - # Save the result.
|
| - self._computed_per_page_values.append(value)
|
| - self._interleaved_computed_per_page_values_and_summaries.append(value)
|
|
|