def testTypeDispatch_LegacyHistogramExecution(self, mock_json, mock_render): job = _JobStub( None, '123', _JobStateFake({ 'f00c0de': [{ 'executions': [ read_value._ReadHistogramsJsonValueExecution( 'fake_filename', 'fake_metric', 'fake_grouping', 'fake_trace_or_story', 'avg', 'https://isolate_server', 'deadc0decafef00d') ] }] })) histograms = [] def TraverseHistograms(hists, *unused_args, **unused_kw_args): for histogram in hists: histograms.append(histogram) mock_render.side_effect = TraverseHistograms histogram = histogram_module.Histogram('histogram', 'count') histogram.AddSample(0) histogram.AddSample(1) histogram.AddSample(2) expected_histogram_set = histogram_set.HistogramSet([histogram]) mock_json.return_value = expected_histogram_set.AsDicts() results2.GenerateResults2(job) mock_render.assert_called_with(mock.ANY, mock.ANY, reset_results=True, vulcanized_html='fake_viewer') results = results2.CachedResults2.query().fetch() self.assertEqual(1, len(results)) self.assertEqual(expected_histogram_set.AsDicts(), histograms)
def post(self, job_id): try: job = job_module.JobFromId(job_id) if not job: raise results2.Results2Error('Error: Unknown job %s' % job_id) results2.GenerateResults2(job) except results2.Results2Error as e: self.response.out.write(e.message)
def testPost_Renders(self, mock_render): job = _JobStub(_JOB_NO_DIFFERENCES, '123') results2.GenerateResults2(job) mock_render.assert_called_with( ['a', 'b'], mock.ANY, reset_results=True, vulcanized_html='fake_viewer') results = results2.CachedResults2.query().fetch() self.assertEqual(1, len(results))
def testTypeDispatch_ReadValueExecution_MultipleChanges( self, mock_json, mock_render): job = _JobStub( None, '123', _JobStateFake({ 'f00c0de': [{ 'executions': [ read_value.ReadValueExecution( 'fake_filename', ['fake_filename'], 'fake_metric', 'fake_grouping_label', 'fake_trace_or_story', 'avg', 'fake_chart', 'https://isolate_server', 'deadc0decafef00d') ] }], 'badc0de': [{ 'executions': [ read_value.ReadValueExecution( 'fake_filename', ['fake_filename'], 'fake_metric', 'fake_grouping_label', 'fake_trace_or_story', 'avg', 'fake_chart', 'https://isolate_server', 'deadc0decafef00d') ] }] })) histograms = [] def TraverseHistograms(hists, *args, **kw_args): del args del kw_args for histogram in hists: histograms.append(histogram) mock_render.side_effect = TraverseHistograms histogram_a = histogram_module.Histogram('histogram', 'count') histogram_a.AddSample(0) histogram_a.AddSample(1) histogram_a.AddSample(2) expected_histogram_set_a = histogram_set.HistogramSet([histogram_a]) histogram_b = histogram_module.Histogram('histogram', 'count') histogram_b.AddSample(0) histogram_b.AddSample(1) histogram_b.AddSample(2) expected_histogram_set_b = histogram_set.HistogramSet([histogram_b]) mock_json.side_effect = (expected_histogram_set_a.AsDicts(), expected_histogram_set_b.AsDicts()) results2.GenerateResults2(job) mock_render.assert_called_with(mock.ANY, mock.ANY, reset_results=True, vulcanized_html='fake_viewer') results = results2.CachedResults2.query().fetch() self.assertEqual(1, len(results)) self.assertEqual( expected_histogram_set_a.AsDicts() + expected_histogram_set_b.AsDicts(), histograms)
def testTypeDispatch_LegacyGraphJsonExecution(self, mock_json, mock_render): job = _JobStub( None, '123', _JobStateFake({ 'f00c0de': [{ 'executions': [ read_value._ReadGraphJsonValueExecution( 'fake_filename', 'fake_chart', 'fake_trace', 'https://isolate_server', 'deadc0decafef00d') ] }] })) histograms = [] def TraverseHistograms(hists, *unused_args, **unused_kw_args): for histogram in hists: histograms.append(histogram) mock_render.side_effect = TraverseHistograms mock_json.return_value = { 'fake_chart': { 'traces': { 'fake_trace': ['12345.6789', '0.0'] } } } results2.GenerateResults2(job) mock_render.assert_called_with(mock.ANY, mock.ANY, reset_results=True, vulcanized_html='fake_viewer') results = results2.CachedResults2.query().fetch() self.assertEqual(1, len(results)) # TODO(dberris): check more precisely the contents of the histograms. self.assertEqual([mock.ANY, mock.ANY], histograms)