def testReadGraphJsonValueFromCAS(self): self.SetOutputCASContents( ['base_perftests', 'perf_resultst.json'], {'chart': { 'traces': { 'trace': ['126444.869721', '0.0'] } }}) quest = read_value.ReadValue( results_filename='base_perftests/perf_results.json', results_path=['base_perftests', 'perf_resultst.json'], chart='chart', trace_or_story='trace') execution = quest.Start( None, None, None, { 'cas_instance': 'cas instance', 'digest': { 'hash': 'root hash', 'size_bytes': 123, }, }) execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, (126444.869721, ))
def testReadHistogramsJsonValueSummaryNoHistName(self): samples = [] hists = [] for i in range(10): hist = histogram_module.Histogram('hist', 'count') hist.AddSample(0) hist.AddSample(1) hist.AddSample(2) hist.diagnostics[reserved_infos.STORIES.name] = ( generic_set.GenericSet(['story%d' % i])) hist.diagnostics[reserved_infos.STORY_TAGS.name] = ( generic_set.GenericSet(['group:label1'])) hists.append(hist) samples.extend(hist.sample_values) histograms = histogram_set.HistogramSet(hists) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORY_TAGS.name, generic_set.GenericSet(['group:label'])) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, ()) self.assertRetrievedOutputJson()
def testReadHistogramsJsonValueMultipleHistograms(self): hist = histogram_module.Histogram('hist', 'count') hist.AddSample(0) hist.AddSample(1) hist.AddSample(2) hist2 = histogram_module.Histogram('hist', 'count') hist2.AddSample(0) hist2.AddSample(1) hist2.AddSample(2) hist3 = histogram_module.Histogram('some_other_histogram', 'count') hist3.AddSample(3) hist3.AddSample(4) hist3.AddSample(5) histograms = histogram_set.HistogramSet([hist, hist2, hist3]) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORY_TAGS.name, generic_set.GenericSet(['group:label'])) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORIES.name, generic_set.GenericSet(['story'])) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric=hist.name, grouping_label='label', trace_or_story='story') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, (0, 1, 2, 0, 1, 2)) self.assertRetrievedOutputJson()
def testWindows(self): arguments = dict(_BASE_ARGUMENTS_HISTOGRAMS) arguments['dimensions'] = [{'key': 'os', 'value': 'Windows-10'}] quest = read_value.ReadValue.FromDict(arguments) expected = read_value.ReadValue( results_filename='speedometer\\perf_results.json') self.assertEqual(quest, expected)
def testReadHistogramsJsonValueWithMissingFile(self): self.SetOutputFileContentsRaw('{"files": {}}') quest = read_value.ReadValue(results_filename='chartjson-output.json', metric='metric', grouping_label='test') execution = quest.Start(None, 'server', 'output hash') execution.Poll()
def testScalar(self, retrieve): retrieve.side_effect = ( { 'files': { 'chartjson-output.json': { 'h': 'chartjson hash' } } }, json.dumps({ 'charts': { 'metric': { 'test': { 'type': 'scalar', 'value': 2.5, } } } }), ) execution = read_value.ReadValue('metric', 'test').Start('output hash') execution.Poll() self.assertEqual(execution.result_values, (2.5, ))
def testReadValueWithNoTest(self, retrieve): retrieve.side_effect = ( { 'files': { 'chartjson-output.json': { 'h': 'chartjson hash' } } }, json.dumps({ 'charts': { 'metric': { 'summary': { 'type': 'list_of_scalar_values', 'values': [0, 1, 2], } } } }), ) execution = read_value.ReadValue('metric', None).Start('output hash') execution.Poll() self.assertTrue(execution.completed) self.assertFalse(execution.failed) self.assertEqual(execution.result_values, (0, 1, 2)) self.assertEqual(execution.result_arguments, {}) expected_calls = [ mock.call('output hash'), mock.call('chartjson hash') ] self.assertEqual(retrieve.mock_calls, expected_calls)
def testReadGraphJsonValueWithMissingTrace(self): self.SetOutputFileContents({'chart': {'traces': {}}}) quest = read_value.ReadValue(results_filename='chartjson-output.json', chart='chart', trace_or_story='test') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueError(execution, 'ReadValueTraceNotFound')
def testReadHistogramsJsonValueEmptyHistogramSet(self): self.SetOutputFileContents([]) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric='metric', grouping_label='test') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueError(execution, 'ReadValueNotFound')
def testReadHistogramsJsonValueWithNoValues(self): hist = histogram_module.Histogram('hist', 'count') histograms = histogram_set.HistogramSet([hist]) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric='chart') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueError(execution, 'ReadValueNotFound')
def testReadHistogramsProtoValueEmptyHistogramSet(self): hist_set = histogram_proto.Pb2().HistogramSet() self.SetOutputFileContentsProto(hist_set.SerializeToString()) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric='metric', grouping_label='test') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueError(execution, 'ReadValueNotFound')
def testReadGraphJsonValueWithMissingFile(self): self.SetOutputFileContentsRaw('{"files": {}}') quest = read_value.ReadValue( results_filename='base_perftests/perf_results.json', chart='metric', trace_or_story='test') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueError(execution, 'ReadValueNoFile')
def testGraphJsonMissingChart(self): arguments = dict(_BASE_ARGUMENTS_GRAPH_JSON) del arguments['chart'] quest = read_value.ReadValue.FromDict(arguments) expected = read_value.ReadValue( results_filename='base_perftests/perf_results.json', chart=None, trace_or_story='trace_name') self.assertEqual(quest, expected)
def testArgumentsWithNoChart(self): arguments = dict(_BASE_ARGUMENTS_HISTOGRAMS) arguments['story'] = 'trace_name' quest = read_value.ReadValue.FromDict(arguments) expected = read_value.ReadValue( results_filename='speedometer/perf_results.json', metric=None, grouping_label=None, trace_or_story='trace_name', statistic=None) self.assertEqual(quest, expected)
def testGraphJsonMissingTrace(self): arguments = dict(_BASE_ARGUMENTS_GRAPH_JSON) del arguments['trace'] quest = read_value.ReadValue.FromDict(arguments) expected = read_value.ReadValue( results_filename='base_perftests/perf_results.json', results_path=['base_perftests', 'perf_results.json'], chart='chart_name', metric='chart_name', trace_or_story=None) self.assertEqual(quest, expected)
def testArgumentsWithStoryInsteadOfTrace(self): arguments = dict(_BASE_ARGUMENTS_HISTOGRAMS) arguments['chart'] = 'timeToFirst' arguments['grouping_label'] = 'pcv1-cold' arguments['story'] = 'trace_name' arguments['statistic'] = 'avg' quest = read_value.ReadValue.FromDict(arguments) expected = read_value.ReadValue( results_filename='speedometer/perf_results.json', metric='timeToFirst', grouping_label='pcv1-cold', trace_or_story='trace_name', statistic='avg', chart='timeToFirst') self.assertEqual(quest, expected)
def testReadHistogramsProtoValue(self): hist_set = histogram_proto.Pb2().HistogramSet() hist = hist_set.histograms.add() hist.name = 'hist' hist.unit.unit = histogram_proto.Pb2().COUNT hist.all_bins[0].bin_count = 1 map1 = hist.all_bins[0].diagnostic_maps.add().diagnostic_map map1['test'].generic_set.values.append('metric') self.SetOutputFileContentsProto(hist_set.SerializeToString()) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric='metric', grouping_label='test') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution)
def testReadHistogramsTraceUrls(self): hist = histogram_module.Histogram('hist', 'count') hist.AddSample(0) hist.diagnostics[reserved_infos.TRACE_URLS.name] = ( generic_set.GenericSet(['trace_url1', 'trace_url2'])) hist2 = histogram_module.Histogram('hist2', 'count') hist2.diagnostics[reserved_infos.TRACE_URLS.name] = ( generic_set.GenericSet(['trace_url3'])) hist3 = histogram_module.Histogram('hist3', 'count') hist3.diagnostics[reserved_infos.TRACE_URLS.name] = ( generic_set.GenericSet(['trace_url2'])) histograms = histogram_set.HistogramSet([hist, hist2, hist3]) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORIES.name, generic_set.GenericSet(['story'])) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json', results_path=['chartjson-output.json'], metric=hist.name) execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, (0, )) self.assertEqual( { 'completed': True, 'exception': None, 'details': [ { 'key': 'trace', 'value': 'story', 'url': 'trace_url1', }, { 'key': 'trace', 'value': 'story', 'url': 'trace_url2', }, { 'key': 'trace', 'value': 'story', 'url': 'trace_url3', }, ], }, execution.AsDict()) self.assertRetrievedOutputJson()
def testReadGraphJsonValue(self): self.SetOutputFileContents( {'chart': { 'traces': { 'trace': ['126444.869721', '0.0'] } }}) quest = read_value.ReadValue(results_filename='chartjson-output.json', chart='chart', trace_or_story='trace') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, (126444.869721, )) self.assertRetrievedOutputJson()
def testReadHistogramsJsonValueWithNoStory(self): hist = histogram_module.Histogram('hist', 'count') hist.AddSample(0) hist.AddSample(1) hist.AddSample(2) histograms = histogram_set.HistogramSet([hist]) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORIES.name, generic_set.GenericSet(['story'])) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric=hist.name, trace_or_story='story') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, (0, 1, 2)) self.assertRetrievedOutputJson()
def testReadGraphJsonValueWithMissingFileFromCAS(self): self.SetOutputFileContentsRaw('{"files": {}}') self.SetOutputCASContents(['base_perftests', 'missing.json'], {}) quest = read_value.ReadValue( results_filename='base_perftests/perf_results.json', results_path=['base_perftests', 'chartjson-output.json'], chart='metric', trace_or_story='test') execution = quest.Start( None, None, None, { 'cas_instance': 'cas instance', 'digest': { 'hash': 'root hash', 'size_bytes': 123, }, }) execution.Poll() self.assertReadValueError(execution, 'ReadValueNoFile')
def testReadHistogramsJsonValueStatisticNoSamples(self): hist = histogram_module.Histogram('hist', 'count') histograms = histogram_set.HistogramSet([hist]) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORY_TAGS.name, generic_set.GenericSet(['group:label'])) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORIES.name, generic_set.GenericSet(['story'])) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json', metric=hist.name, grouping_label='label', trace_or_story='story', statistic='avg') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueError(execution, 'ReadValueNoValues')
def testReadHistogramsJsonValueHistogramNameNeedsEscape(self): hist = histogram_module.Histogram('hist:name:has:colons', 'count') hist.AddSample(0) hist.AddSample(1) hist.AddSample(2) histograms = histogram_set.HistogramSet([hist]) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORY_TAGS.name, generic_set.GenericSet(['group:label'])) histograms.AddSharedDiagnosticToAllHistograms( reserved_infos.STORIES.name, generic_set.GenericSet(['story:has:colons:too'])) self.SetOutputFileContents(histograms.AsDicts()) quest = read_value.ReadValue(results_filename='chartjson-output.json', results_path=['chartjson-output.json'], metric=hist.name, grouping_label='label', trace_or_story='story:has:colons:too') execution = quest.Start(None, 'server', 'output hash') execution.Poll() self.assertReadValueSuccess(execution) self.assertEqual(execution.result_values, (0, 1, 2)) self.assertRetrievedOutputJson()
def testHistogramWithLargeSample(self, retrieve): retrieve.side_effect = ( { 'files': { 'chartjson-output.json': { 'h': 'chartjson hash' } } }, json.dumps({ 'charts': { 'metric': { 'test': { 'type': 'histogram', 'buckets': [ { 'low': 0, 'count': 20000 }, { 'low': 0, 'high': 2, 'count': 30000 }, ], } } } }), ) execution = read_value.ReadValue('metric', 'test').Start('output hash') execution.Poll() self.assertEqual(execution.result_values, tuple([0] * 4000 + [1] * 6000))
def testHistogram(self, retrieve): retrieve.side_effect = ( { 'files': { 'chartjson-output.json': { 'h': 'chartjson hash' } } }, json.dumps({ 'charts': { 'metric': { 'test': { 'type': 'histogram', 'buckets': [ { 'low': 0, 'count': 2 }, { 'low': 0, 'high': 2, 'count': 3 }, ], } } } }), ) execution = read_value.ReadValue('metric', 'test').Start('output hash') execution.Poll() self.assertEqual(execution.result_values, (0, 0, 1, 1, 1))
def testMinimumArguments(self): quest = read_value.ReadValue.FromDict(_BASE_ARGUMENTS_HISTOGRAMS) expected = read_value.ReadValue( results_filename='speedometer/perf_results.json') self.assertEqual(quest, expected)
def testMetricPropertyReturnsChart(self): quest = read_value.ReadValue(results_filename='somefile.json', chart='somechart', trace_or_story='trace') self.assertEqual(quest.metric, 'somechart')