def testAddTracesForSameStory(self):
   with self.CreateResults() as results:
     with results.CreateStoryRun(self.stories[0]):
       results.AddTraces(trace_data.CreateTestTrace(1))
       results.AddTraces(trace_data.CreateTestTrace(2))
   runs = list(results.IterRunsWithTraces())
   self.assertEqual(1, len(runs))
    def testAddTracesForSamePage(self):
        with self.CreateResults() as results:
            results.WillRunPage(self.pages[0])
            results.AddTraces(trace_data.CreateTestTrace(1))
            results.AddTraces(trace_data.CreateTestTrace(2))
            results.DidRunPage(self.pages[0])

        runs = list(results.IterRunsWithTraces())
        self.assertEqual(1, len(runs))
    def testAddTracesForSamePage(self):
        with tempfile_ext.NamedTemporaryDirectory() as tempdir:
            results = page_test_results.PageTestResults(output_dir=tempdir)
            results.WillRunPage(self.pages[0])
            results.AddTraces(trace_data.CreateTestTrace(1))
            results.AddTraces(trace_data.CreateTestTrace(2))
            results.DidRunPage(self.pages[0])

            runs = list(results.IterRunsWithTraces())
            self.assertEquals(1, len(runs))
    def testAddTracesForSameStory(self):
        with self.CreateResults() as results:
            with results.CreateStoryRun(self.stories[0]):
                results.AddTraces(trace_data.CreateTestTrace(1))
                results.AddTraces(trace_data.CreateTestTrace(2))

        test_results = self.ReadTestResults()
        self.assertEqual(len(test_results), 1)
        for test_result in test_results:
            trace_names = [
                name for name in test_result['outputArtifacts']
                if name.startswith('trace/')
            ]
            self.assertTrue(len(trace_names), 2)
예제 #5
0
  def testNoTracesLeftAfterCleanUp(self):
    results = self.getPageTestResults()
    try:
      results.WillRunPage(self.pages[0])
      results.AddTraces(trace_data.CreateTestTrace(1))
      results.DidRunPage(self.pages[0])

      results.WillRunPage(self.pages[1])
      results.AddTraces(trace_data.CreateTestTrace(2))
      results.DidRunPage(self.pages[1])
    finally:
      results.CleanUp()

    self.assertFalse(results.FindAllTraceValues())
예제 #6
0
 def testRepr(self):
     with trace.TraceValue(page.Page('http://www.bar.com/',
                                     name='load:story:bar'),
                           trace_data.CreateTestTrace(),
                           important=True,
                           description='desc') as v:
         self.assertEquals("TraceValue('load:story:bar', 'trace')", str(v))
예제 #7
0
  def testMultiplePagesAndValues(self):
    self.SimulateBenchmarkRun([
        (self._story_set[0], [
            scalar.ScalarValue(
                None, 'foo', 'seconds', 4,
                improvement_direction=improvement_direction.DOWN)]),
        (self._story_set[1], [
            scalar.ScalarValue(
                None, 'foo', 'seconds', 3.4,
                improvement_direction=improvement_direction.DOWN),
            trace_data.CreateTestTrace(),
            scalar.ScalarValue(
                None, 'bar', 'km', 10,
                improvement_direction=improvement_direction.DOWN),
            scalar.ScalarValue(
                None, 'baz', 'count', 5,
                improvement_direction=improvement_direction.DOWN)])])

    # Parse CSV output into list of lists.
    csv_string = self.Format()
    lines = csv_string.split('\r\n')
    values = [s.split(',') for s in lines[1:-1]]
    values.sort()

    self.assertEquals(len(values), 4)
    self.assertEquals(len(set((v[1] for v in values))), 2)  # 2 pages.
    self.assertEquals(len(set((v[2] for v in values))), 4)  # 4 value names.
    sample_row = values[2]
    trace_url = sample_row.pop()
    self.assertEquals(sample_row, [
        'foo', 'ms', '3400', '1', '3400', '3400', '0', '3400', '', 'benchmark',
        '2017-07-14 02:40:00', '', '', '', 'benchmark 2017-07-14 02:40:00', '',
        '', '', '', '', 'http://www.bar.com/', '', ''])
    self.assertRegexpMatches(trace_url, r'^https://.*fake_bucket')
    def testMultiplePagesAndValues(self, cloud_storage_insert_patch):
        cloud_storage_insert_patch.return_value = 'fake_url'

        self._results.WillRunPage(self._story_set[0])
        self._results.AddMeasurement('foo', 'seconds', 4)
        self._results.DidRunPage(self._story_set[0])

        self._results.WillRunPage(self._story_set[1])
        self._results.AddMeasurement('foo', 'seconds', 3.4)
        self._results.AddTraces(trace_data.CreateTestTrace())
        self._results.AddMeasurement('bar', 'km', 10)
        self._results.AddMeasurement('baz', 'count', 5)
        self._results.DidRunPage(self._story_set[1])

        # Parse CSV output into list of lists.
        values = list(csv.reader(self.Format().splitlines()))[1:]
        values.sort()

        self.assertEquals(len(values), 4)
        self.assertEquals(len(set((v[1] for v in values))), 2)  # 2 pages.
        self.assertEquals(len(set((v[2] for v in values))),
                          4)  # 4 value names.
        sample_row = values[2]
        self.assertEquals(sample_row, [
            'foo', 'ms', '3400', '1', '3400', '3400', '0', '3400', '',
            'benchmark', '2017-07-14 02:40:00', '', '', '',
            'benchmark 2017-07-14 02:40:00', '', '', '', '', '',
            'http://www.bar.com/', '', '', 'fake_url'
        ])
예제 #9
0
  def testTraceValue(self):
    results = self.getPageTestResults()
    try:
      results.WillRunPage(self.pages[0])
      results.AddTraces(trace_data.CreateTestTrace(1))
      results.DidRunPage(self.pages[0])

      results.WillRunPage(self.pages[1])
      results.AddTraces(trace_data.CreateTestTrace(2))
      results.DidRunPage(self.pages[1])

      results.PrintSummary()

      values = results.FindAllTraceValues()
      self.assertEquals(2, len(values))
    finally:
      results.CleanUp()
예제 #10
0
    def testNoLeakedTempFiles(self):
        with tempfile_ext.NamedTemporaryDirectory() as tempdir:
            with mock.patch('tempfile.tempdir', new=tempdir):
                with trace.TraceValue(None, trace_data.CreateTestTrace()) as v:
                    v.SerializeTraceData()

            self.assertTrue(os.path.exists(tempdir))
            self.assertFalse(os.listdir(tempdir))
예제 #11
0
    def testMultiplePagesAndValues(self, cs_insert_mock):
        cs_insert_mock.return_value = 'https://cloud_storage_url/foo'
        trace_value = trace.TraceValue(None,
                                       trace_data.CreateTestTrace(),
                                       remote_path='rp',
                                       upload_bucket='foo',
                                       cloud_url='http://google.com')
        trace_value.SerializeTraceData()
        trace_value.UploadToCloud()
        self.SimulateBenchmarkRun([
            (self._story_set[0], [
                scalar.ScalarValue(
                    None,
                    'foo',
                    'seconds',
                    4,
                    improvement_direction=improvement_direction.DOWN)
            ]),
            (self._story_set[1], [
                scalar.ScalarValue(
                    None,
                    'foo',
                    'seconds',
                    3.4,
                    improvement_direction=improvement_direction.DOWN),
                trace_value,
                scalar.ScalarValue(
                    None,
                    'bar',
                    'km',
                    10,
                    improvement_direction=improvement_direction.DOWN),
                scalar.ScalarValue(
                    None,
                    'baz',
                    'count',
                    5,
                    improvement_direction=improvement_direction.DOWN)
            ])
        ])

        # Parse CSV output into list of lists.
        csv_string = self.Format()
        lines = csv_string.split('\r\n')
        values = [s.split(',') for s in lines[1:-1]]
        values.sort()

        self.assertEquals(len(values), 4)
        self.assertEquals(len(set((v[1] for v in values))), 2)  # 2 pages.
        self.assertEquals(len(set((v[2] for v in values))),
                          4)  # 4 value names.
        self.assertEquals(values[2], [
            'foo', 'ms', '3400', '1', '3400', '3400', '0', '3400', '',
            'benchmark', '2017-07-14 02:40:00', '', '', '',
            'benchmark 2017-07-14 02:40:00', '', '', '', '', '',
            'http://www.bar.com/', '', '', 'http://google.com'
        ])
  def testCleanUpCleansUpTraceValues(self):
    results = self.getPageTestResults()
    try:
      v0 = trace.TraceValue(None, trace_data.CreateTestTrace(1))
      v1 = trace.TraceValue(None, trace_data.CreateTestTrace(2))

      results.WillRunPage(self.pages[0])
      results.AddValue(v0)
      results.DidRunPage(self.pages[0])

      results.WillRunPage(self.pages[1])
      results.AddValue(v1)
      results.DidRunPage(self.pages[1])
    finally:
      results.CleanUp()

    self.assertTrue(v0.cleaned_up)
    self.assertTrue(v1.cleaned_up)
예제 #13
0
    def testAsChartDictWithTraceValues(self):
        with _MakePageTestResults() as results:
            results.WillRunPage(self._story_set[0])
            results.AddTraces(trace_data.CreateTestTrace())
            results.DidRunPage(self._story_set[0])

            d = chart_json_output_formatter.ResultsAsChartDict(results)

            self.assertIn('trace', d['charts'])
            self.assertIn('http://www.foo.com/', d['charts']['trace'])
            self.assertTrue(d['enabled'])
예제 #14
0
 def testAsDictWhenTraceIsNotSerializedAndUploaded(self, insert_mock):
     with trace.TraceValue(None,
                           trace_data.CreateTestTrace(),
                           upload_bucket=trace.cloud_storage.PUBLIC_BUCKET,
                           remote_path='a.html',
                           cloud_url='http://example.com/a.html') as v:
         v.SerializeTraceData()
         cloud_url = v.UploadToCloud()
         d = v.AsDict()
         self.assertEqual(d['cloud_url'], cloud_url)
         insert_mock.assert_called_with(trace.cloud_storage.PUBLIC_BUCKET,
                                        'a.html', v.filename)
예제 #15
0
    def testMultiplePagesAndValues(self, cloud_storage_insert_patch):
        cloud_storage_insert_patch.return_value = 'fake_url'
        self.SimulateBenchmarkRun([
            (self._story_set[0], [
                scalar.ScalarValue(
                    None,
                    'foo',
                    'seconds',
                    4,
                    improvement_direction=improvement_direction.DOWN)
            ]),
            (self._story_set[1], [
                scalar.ScalarValue(
                    None,
                    'foo',
                    'seconds',
                    3.4,
                    improvement_direction=improvement_direction.DOWN),
                trace_data.CreateTestTrace(),
                scalar.ScalarValue(
                    None,
                    'bar',
                    'km',
                    10,
                    improvement_direction=improvement_direction.DOWN),
                scalar.ScalarValue(
                    None,
                    'baz',
                    'count',
                    5,
                    improvement_direction=improvement_direction.DOWN)
            ])
        ])

        # Parse CSV output into list of lists.
        values = list(csv.reader(self.Format().splitlines()))[1:]
        values.sort()

        self.assertEquals(len(values), 4)
        self.assertEquals(len(set((v[1] for v in values))), 2)  # 2 pages.
        self.assertEquals(len(set((v[2] for v in values))),
                          4)  # 4 value names.
        sample_row = values[2]
        self.assertEquals(sample_row, [
            'foo', 'ms', '3400', '1', '3400', '3400', '0', '3400', '',
            'benchmark', '2017-07-14 02:40:00', '', '', '',
            'benchmark 2017-07-14 02:40:00', '', '', '', '', '',
            'http://www.bar.com/', '', '', 'fake_url'
        ])
예제 #16
0
    def testAsChartDictWithTraceValues(self):
        results = _MakePageTestResults()
        try:
            results.WillRunPage(self._story_set[0])
            results.AddTraces(trace_data.CreateTestTrace())
            results.DidRunPage(self._story_set[0])

            d = chart_json_output_formatter.ResultsAsChartDict(results)

            self.assertTrue('trace' in d['charts'])
            self.assertTrue('http://www.foo.com/' in d['charts']['trace'],
                            msg=d['charts']['trace'])
            self.assertTrue(d['enabled'])
        finally:
            results.CleanUp()
예제 #17
0
 def testAsDictWhenTraceSerializedAndUploaded(self, insert_mock):
     with tempfile_ext.TemporaryFileName('test.html') as file_path:
         with trace.TraceValue(
                 None,
                 trace_data.CreateTestTrace(),
                 file_path=file_path,
                 upload_bucket=trace.cloud_storage.PUBLIC_BUCKET,
                 remote_path='a.html',
                 cloud_url='http://example.com/a.html') as v:
             v.SerializeTraceData()
             fh = v.Serialize()
             cloud_url = v.UploadToCloud()
             d = v.AsDict()
             self.assertTrue(os.path.exists(file_path))
             self.assertEqual(d['file_id'], fh.id)
             self.assertEqual(d['cloud_url'], cloud_url)
             insert_mock.assert_called_with(
                 trace.cloud_storage.PUBLIC_BUCKET, 'a.html', file_path)
    def testAsChartDictWithTraceValuesThatHasTirLabel(self):
        results = _MakePageTestResults()
        try:
            results.WillRunPage(self._story_set[0])
            v = trace.TraceValue(self._story_set[0],
                                 trace_data.CreateTestTrace())
            v.SerializeTraceData()
            v.tir_label = 'background'
            results.AddValue(v)
            results.DidRunPage(self._story_set[0])

            d = chart_json_output_formatter.ResultsAsChartDict(
                self._benchmark_metadata, results)

            self.assertTrue('trace' in d['charts'])
            self.assertTrue('http://www.foo.com/' in d['charts']['trace'],
                            msg=d['charts']['trace'])
            self.assertTrue(d['enabled'])
        finally:
            results.CleanUp()