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

Unified Diff: dashboard/dashboard/add_histograms.py

Issue 3000853002: Make add_histograms use reserved GenericSet names. (Closed)
Patch Set: rebase Created 3 years, 4 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 | « no previous file | dashboard/dashboard/add_histograms_queue_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dashboard/dashboard/add_histograms.py
diff --git a/dashboard/dashboard/add_histograms.py b/dashboard/dashboard/add_histograms.py
index abf5e7fcfbe8d25c1286c9b48db7a9d0ce10f332..a0a87318f94ff22f6cc9dddf71553d9eb3b56c89 100644
--- a/dashboard/dashboard/add_histograms.py
+++ b/dashboard/dashboard/add_histograms.py
@@ -15,28 +15,37 @@ from dashboard.api import api_request_handler
from dashboard.common import datastore_hooks
from dashboard.common import stored_object
from dashboard.models import histogram
-from tracing.value import histogram as histogram_module
from tracing.value import histogram_set
from tracing.value.diagnostics import diagnostic
from tracing.value.diagnostics import reserved_infos
-SUITE_LEVEL_SPARSE_DIAGNOSTIC_NAMES = set(
- [reserved_infos.ARCHITECTURES.name,
- reserved_infos.BUG_COMPONENTS.name,
- reserved_infos.GPUS.name,
- reserved_infos.MEMORY_AMOUNTS.name,
- reserved_infos.OS_NAMES.name,
- reserved_infos.OS_VERSIONS.name,
- reserved_infos.OWNERS.name,
- reserved_infos.PRODUCT_VERSIONS.name])
-# TODO(#3507): Make BuildbotInfo into GenericSet diagnostics and remove all
-# logic regarding picking diagnostics by type.
-SUITE_LEVEL_SPARSE_DIAGNOSTIC_TYPES = set(
- [histogram_module.BuildbotInfo])
-HISTOGRAM_LEVEL_SPARSE_DIAGNOSTIC_TYPES = set(
- [histogram_module.TelemetryInfo])
-SPARSE_DIAGNOSTIC_TYPES = SUITE_LEVEL_SPARSE_DIAGNOSTIC_TYPES.union(
- HISTOGRAM_LEVEL_SPARSE_DIAGNOSTIC_TYPES)
+SUITE_LEVEL_SPARSE_DIAGNOSTIC_NAMES = set([
+ reserved_infos.ARCHITECTURES.name,
+ reserved_infos.BENCHMARKS.name,
+ reserved_infos.BOTS.name,
+ reserved_infos.BUG_COMPONENTS.name,
+ reserved_infos.GPUS.name,
+ reserved_infos.MASTERS.name,
+ reserved_infos.MEMORY_AMOUNTS.name,
+ reserved_infos.OS_NAMES.name,
+ reserved_infos.OS_VERSIONS.name,
+ reserved_infos.OWNERS.name,
+ reserved_infos.PRODUCT_VERSIONS.name,
+ reserved_infos.TAG_MAP.name,
+])
+
+HISTOGRAM_LEVEL_SPARSE_DIAGNOSTIC_NAMES = set([
+ reserved_infos.GPUS.name,
+ reserved_infos.MEMORY_AMOUNTS.name,
+ reserved_infos.PRODUCT_VERSIONS.name,
+ reserved_infos.RELATED_NAMES.name,
+ reserved_infos.STORIES.name,
+ reserved_infos.STORYSET_REPEATS.name,
+ reserved_infos.STORY_TAGS.name,
+])
+
+SPARSE_DIAGNOSTIC_NAMES = SUITE_LEVEL_SPARSE_DIAGNOSTIC_NAMES.union(
+ HISTOGRAM_LEVEL_SPARSE_DIAGNOSTIC_NAMES)
TASK_QUEUE_NAME = 'histograms-queue'
@@ -91,8 +100,7 @@ def ProcessHistogramSet(histogram_dicts):
raise ValueError(
name + ' diagnostics must be the same for all histograms')
- if (name in SUITE_LEVEL_SPARSE_DIAGNOSTIC_NAMES or
- type(diag) in SUITE_LEVEL_SPARSE_DIAGNOSTIC_TYPES):
+ if name in SUITE_LEVEL_SPARSE_DIAGNOSTIC_NAMES:
suite_level_sparse_diagnostic_entities.append(
histogram.SparseDiagnostic(
id=diag.guid, data=diag.AsDict(), test=suite_key,
@@ -175,8 +183,8 @@ def _IsDifferent(diagnostic_a, diagnostic_b):
def FindHistogramLevelSparseDiagnostics(guid, histograms):
hist = histograms.LookupHistogram(guid)
diagnostics = []
- for diag in hist.diagnostics.itervalues():
- if type(diag) in HISTOGRAM_LEVEL_SPARSE_DIAGNOSTIC_TYPES:
+ for name, diag in hist.diagnostics.iteritems():
+ if name in HISTOGRAM_LEVEL_SPARSE_DIAGNOSTIC_NAMES:
diagnostics.append(diag)
return diagnostics
@@ -196,29 +204,42 @@ def GetSuiteKey(histograms):
def ComputeTestPath(guid, histograms):
hist = histograms.LookupHistogram(guid)
suite_path = '%s/%s/%s' % _GetMasterBotBenchmarkFromHistogram(hist)
- telemetry_info = hist.diagnostics[reserved_infos.TELEMETRY.name]
- story_display_name = telemetry_info.story_display_name
-
path = '%s/%s' % (suite_path, hist.name)
- if story_display_name != '':
- path += '/%s' % story_display_name
+ story_name = hist.diagnostics.get(reserved_infos.STORIES.name)
+ if story_name and len(story_name) == 1:
+ path += '/' + list(story_name)[0]
return path
def _GetMasterBotBenchmarkFromHistogram(hist):
- _CheckRequest(reserved_infos.BUILDBOT.name in hist.diagnostics,
- 'Histograms must have BuildbotInfo attached')
- buildbot_info = hist.diagnostics[reserved_infos.BUILDBOT.name]
_CheckRequest(
- reserved_infos.TELEMETRY.name in hist.diagnostics,
- 'Histograms must have TelemetryInfo attached')
- telemetry_info = hist.diagnostics[reserved_infos.TELEMETRY.name]
+ reserved_infos.MASTERS.name in hist.diagnostics,
+ 'Histograms must have "%s" diagnostic' % reserved_infos.MASTERS.name)
+ master = hist.diagnostics[reserved_infos.MASTERS.name]
+ _CheckRequest(
+ len(master) == 1,
+ 'Histograms must have exactly 1 "%s"' % reserved_infos.MASTERS.name)
+ master = list(master)[0]
+
+ _CheckRequest(
+ reserved_infos.BOTS.name in hist.diagnostics,
+ 'Histograms must have "%s" diagnostic' % reserved_infos.BOTS.name)
+ bot = hist.diagnostics[reserved_infos.BOTS.name]
+ _CheckRequest(
+ len(bot) == 1,
+ 'Histograms must have exactly 1 "%s"' % reserved_infos.BOTS.name)
+ bot = list(bot)[0]
- master = buildbot_info.display_master_name
- bot = buildbot_info.display_bot_name
- benchmark = telemetry_info.benchmark_name
+ _CheckRequest(
+ reserved_infos.BENCHMARKS.name in hist.diagnostics,
+ 'Histograms must have "%s" diagnostic' % reserved_infos.BENCHMARKS.name)
+ benchmark = hist.diagnostics[reserved_infos.BENCHMARKS.name]
+ _CheckRequest(
+ len(benchmark) == 1,
+ 'Histograms must have exactly 1 "%s"' % reserved_infos.BENCHMARKS.name)
+ benchmark = list(benchmark)[0]
return master, bot, benchmark
@@ -245,6 +266,5 @@ def InlineDenseSharedDiagnostics(histograms):
for hist in histograms:
diagnostics = hist.diagnostics
for name, diag in diagnostics.iteritems():
- if (type(diag) not in SPARSE_DIAGNOSTIC_TYPES and
- name not in SUITE_LEVEL_SPARSE_DIAGNOSTIC_NAMES):
+ if name not in SPARSE_DIAGNOSTIC_NAMES:
diag.Inline()
« no previous file with comments | « no previous file | dashboard/dashboard/add_histograms_queue_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698