X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/bcf069c6a726e219bc40224653268d87776e54aa..a5b73a1a47bed348098dc116950a01b77c04c208:/tools/crunchstat-summary/crunchstat_summary/dygraphs.py diff --git a/tools/crunchstat-summary/crunchstat_summary/dygraphs.py b/tools/crunchstat-summary/crunchstat_summary/dygraphs.py index 1314e9df35..10f1f26f46 100644 --- a/tools/crunchstat-summary/crunchstat_summary/dygraphs.py +++ b/tools/crunchstat-summary/crunchstat_summary/dygraphs.py @@ -13,21 +13,34 @@ class DygraphsChart(crunchstat_summary.webchart.WebChart): def headHTML(self): return '\n'.format(self.CSS) - def chartdata(self, label, tasks, stat): + def chartdata(self, label, tasks, stats): + '''For Crunch2, label is the name of container request, + tasks is the top level container and + stats is index by a tuple of (category, metric). + ''' return { - 'data': self._collate_data(tasks, stat), + 'data': self._collate_data(tasks, stats), 'options': { + 'legend': 'always', 'connectSeparatedPoints': True, - 'labels': ['elapsed']+[uuid for uuid, _ in tasks.iteritems()], - 'title': '{}: {} {}'.format(label, stat[0], stat[1]), + 'labels': ['elapsed'] + stats[1], + 'title': '{}: {}'.format(label, stats[0]), }, } - def _collate_data(self, tasks, stat): + def _collate_data(self, tasks, stats): data = [] nulls = [] - for uuid, task in tasks.iteritems(): - for pt in task.series[stat]: - data.append([pt[0].total_seconds()] + nulls + [pt[1]]) + # uuid is category for crunch2 + for uuid, task in tasks.items(): + # All stats in a category are assumed to have the same time base and same number of samples + category = stats[0] + series_names = stats[1] + sn0 = series_names[0] + series = task.series[(category,sn0)] + for i in range(len(series)): + pt = series[i] + vals = [task.series[(category,stat)][i][1] for stat in series_names[1:]] + data.append([pt[0].total_seconds()] + nulls + [pt[1]] + vals) nulls.append(None) return sorted(data)