def testBasic(self): formatter = html_output_formatter.HtmlOutputFormatter( self._output, self._benchmark_metadata, False) results = page_test_results.PageTestResults( benchmark_metadata=self._benchmark_metadata) results.telemetry_info.benchmark_start_epoch = 1501773200 results.WillRunPage(self._story_set[0]) v0 = scalar.ScalarValue( results.current_page, 'foo', 'seconds', 3, improvement_direction=improvement_direction.DOWN) results.AddValue(v0) results.DidRunPage(self._story_set[0]) results.PopulateHistogramSet() formatter.Format(results) html = self._output.getvalue() dicts = render_histograms_viewer.ReadExistingResults(html) histograms = histogram_set.HistogramSet() histograms.ImportDicts(dicts) self.assertEqual(len(histograms), 1) self.assertEqual(histograms.GetFirstHistogram().name, 'foo')
def testHtmlOutputAppendResults(self): self.SerializeIntermediateResults([]) processor.main([ '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label1', ]) processor.main([ '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label2', ]) with open(os.path.join( self.output_dir, html_output.OUTPUT_FILENAME)) as f: results = render_histograms_viewer.ReadExistingResults(f.read()) out_histograms = histogram_set.HistogramSet() out_histograms.ImportDicts(results) diag_values = [list(v) for v in out_histograms.shared_diagnostics] self.assertIn(['label1'], diag_values) self.assertIn(['label2'], diag_values)
def testBasic(self): value0 = {'foo': 0} value0_json = json.dumps(value0, separators=(',', ':')) render_histograms_viewer.RenderHistogramsViewer([], self.output_stream, False) self.output_stream.seek(0) self.assertCountEqual([], render_histograms_viewer.ReadExistingResults( self.output_stream.read())) render_histograms_viewer.RenderHistogramsViewer([value0], self.output_stream, False) self.output_stream.seek(0) self.assertCountEqual([value0], render_histograms_viewer.ReadExistingResults( self.output_stream.read())) self.assertIn(value0_json, self.GetOutputFileContent())
def testBasicWithSeparatorOften(self): data_list = [{'foo': i} for i in range(11)] render_histograms_viewer.RenderHistogramsViewer([], self.output_stream, False) self.output_stream.seek(0) self.assertCountEqual([], render_histograms_viewer.ReadExistingResults( self.output_stream.read())) # Write payload, forcing a new chunk after ever single item render_histograms_viewer.RenderHistogramsViewer( data_list, self.output_stream, False, max_chunk_size_hint_bytes=1) self.output_stream.seek(0) self.assertCountEqual( data_list, render_histograms_viewer.ReadExistingResults( self.output_stream.read())) for data in data_list: data_json = json.dumps(data, separators=(',', ':')) self.assertIn(data_json, self.GetOutputFileContent())
def testHtmlOutput(self): hist_file = os.path.join(self.output_dir, compute_metrics.HISTOGRAM_DICTS_FILE) with open(hist_file, 'w') as f: json.dump([histogram.Histogram('a', 'unitless').AsDict()], f) self.SerializeIntermediateResults( test_results=[ testing.TestResult( 'benchmark/story', output_artifacts={ 'histogram_dicts.json': testing.Artifact(hist_file) }, ), ], diagnostics={ 'benchmarks': ['benchmark'], 'osNames': ['linux'], 'documentationUrls': [['documentation', 'url']], }, start_time='2009-02-13T23:31:30.987000Z', ) processor.main([ '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label', ]) with open(os.path.join(self.output_dir, html_output.OUTPUT_FILENAME)) as f: results = render_histograms_viewer.ReadExistingResults(f.read()) out_histograms = histogram_set.HistogramSet() out_histograms.ImportDicts(results) self.assertEqual(len(out_histograms), 1) self.assertEqual(out_histograms.GetFirstHistogram().name, 'a') self.assertEqual(out_histograms.GetFirstHistogram().unit, 'unitless') diag_values = [list(v) for v in out_histograms.shared_diagnostics] self.assertEqual(len(diag_values), 4) self.assertIn(['benchmark'], diag_values) self.assertIn(['linux'], diag_values) self.assertIn([['documentation', 'url']], diag_values) self.assertIn(['label'], diag_values)
def testHtmlOutput(self): self.SerializeIntermediateResults( testing.TestResult( 'benchmark/story', output_artifacts=[ self.CreateHistogramsArtifact( histogram.Histogram('a', 'unitless')), self.CreateDiagnosticsArtifact( benchmarks=['benchmark'], osNames=['linux'], documentationUrls=[['documentation', 'url']]), ], start_time='2009-02-13T23:31:30.987000Z', ), ) processor.main([ '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label', ]) with open(os.path.join(self.output_dir, html_output.OUTPUT_FILENAME)) as f: results = render_histograms_viewer.ReadExistingResults(f.read()) out_histograms = histogram_set.HistogramSet() out_histograms.ImportDicts(results) self.assertEqual(len(out_histograms), 1) hist = out_histograms.GetFirstHistogram() self.assertEqual(hist.name, 'a') self.assertEqual(hist.unit, 'unitless') self.assertEqual(hist.diagnostics['benchmarks'], generic_set.GenericSet(['benchmark'])) self.assertEqual(hist.diagnostics['osNames'], generic_set.GenericSet(['linux'])) self.assertEqual(hist.diagnostics['documentationUrls'], generic_set.GenericSet([['documentation', 'url']])) self.assertEqual(hist.diagnostics['labels'], generic_set.GenericSet(['label'])) self.assertEqual(hist.diagnostics['benchmarkStart'], date_range.DateRange(1234567890987))
def testHtmlOutputAppendResults(self): self.SerializeIntermediateResults( testing.TestResult( 'benchmark/story', output_artifacts=[ self.CreateHtmlTraceArtifact(), ], tags=['tbmv2:sampleMetric'], ), ) processor.main([ '--is-unittest', '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label1', ]) processor.main([ '--is-unittest', '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label2', ]) with open(os.path.join(self.output_dir, html_output.OUTPUT_FILENAME)) as f: results = render_histograms_viewer.ReadExistingResults(f.read()) out_histograms = histogram_set.HistogramSet() out_histograms.ImportDicts(results) sample_histograms = out_histograms.GetHistogramsNamed( SAMPLE_HISTOGRAM_NAME) self.assertEqual(len(sample_histograms), 2) expected_labels = set(['label1', 'label2']) observed_labels = set(label for hist in sample_histograms for label in hist.diagnostics['labels']) self.assertEqual(observed_labels, expected_labels)
def testBasic(self): formatter = html_output_formatter.HtmlOutputFormatter( self._output, reset_results=False) results = page_test_results.PageTestResults() results.WillRunPage(self._story_set[0]) results.AddMeasurement('foo', 'seconds', 3) results.DidRunPage(self._story_set[0]) results.PopulateHistogramSet() formatter.Format(results) html = self._output.getvalue() dicts = render_histograms_viewer.ReadExistingResults(html) histograms = histogram_set.HistogramSet() histograms.ImportDicts(dicts) self.assertEqual(len(histograms), 1) self.assertEqual(histograms.GetFirstHistogram().name, 'foo')
def testHtmlOutputAppendResults(self): self.SerializeIntermediateResults( testing.TestResult( 'benchmark/story', output_artifacts=[ self.CreateHistogramsArtifact( histogram.Histogram('a', 'unitless')), ], ), ) processor.main([ '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label1', ]) processor.main([ '--output-format', 'html', '--output-dir', self.output_dir, '--intermediate-dir', self.intermediate_dir, '--results-label', 'label2', ]) with open(os.path.join(self.output_dir, html_output.OUTPUT_FILENAME)) as f: results = render_histograms_viewer.ReadExistingResults(f.read()) out_histograms = histogram_set.HistogramSet() out_histograms.ImportDicts(results) self.assertEqual(len(out_histograms), 2) expected_labels = set(['label1', 'label2']) observed_labels = set(label for hist in out_histograms for label in hist.diagnostics['labels']) self.assertEqual(observed_labels, expected_labels)
def testExistingResultsReset(self): value0 = {'foo': 0} value0_json = json.dumps(value0, separators=(',', ':')) value1 = {'bar': 1} value1_json = json.dumps(value1, separators=(',', ':')) render_histograms_viewer.RenderHistogramsViewer([value0], self.output_stream, False) render_histograms_viewer.RenderHistogramsViewer([value1], self.output_stream, True) self.output_stream.seek(0) self.assertEquals( sorted([value1]), sorted( render_histograms_viewer.ReadExistingResults( self.output_stream.read()))) self.assertNotIn(value0_json, self.GetOutputFileContent()) self.assertIn(value1_json, self.GetOutputFileContent())