Exemplo n.º 1
0
    def testGetGraphJson_WithSelectedTrace(self):
        self._AddTestColumns(start_rev=15000, end_rev=15050)
        rows = graph_data.Row.query(
            graph_data.Row.parent_test == utils.OldStyleTestKey(
                'ChromiumGPU/win7/dromaeo/jslib')).fetch()
        for row in rows:
            row.error = 1 + ((row.revision - 15000) * 0.25)
        ndb.put_multi(rows)

        flot_json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/jslib': ['jslib'],
            },
            rev=15000,
            num_points=8,
            is_selected=True)
        flot = json.loads(flot_json_str)

        self.assertEqual(1, len(flot['data']))
        self.assertEqual(5, len(flot['data']['0']['data']))
        self.assertEqual(1, len(flot['annotations']['series']))
        self.assertEqual(5, len(flot['annotations'].get('0').keys()))
        self.assertEqual(5, len(flot['error_bars']['0'][0]['data']))
        self.assertEqual(5, len(flot['error_bars']['0'][1]['data']))
Exemplo n.º 2
0
    def testGetGraphJsonError(self):
        self._AddTestColumns(start_rev=15000, end_rev=15015)

        rows = graph_data.Row.query(graph_data.Row.parent_test == ndb.Key(
            'Master', 'ChromiumGPU', 'Bot', 'win7', 'Test', 'dromaeo', 'Test',
            'dom')).fetch()
        for row in rows:
            row.error = 1 + ((row.revision - 15000) * 0.25)
        ndb.put_multi(rows)
        flot_json_str = graph_json.GetGraphJson({
            'ChromiumGPU/win7/dromaeo/dom': [],
        })
        flot = json.loads(flot_json_str)
        self.assertEqual(1, len(flot['error_bars'].keys()))
        rev = 0
        for col_dom, col_top, col_bottom in zip(
                flot['data']['0']['data'], flot['error_bars']['0'][1]['data'],
                flot['error_bars']['0'][0]['data']):
            error = 1 + (rev * 0.25)
            self.assertEqual(rev + 15000, col_top[0])
            self.assertEqual(col_dom[1] + error, col_top[1])
            self.assertEqual(rev + 15000, col_bottom[0])
            self.assertEqual(col_dom[1] - error, col_bottom[1])
            rev += 3
Exemplo n.º 3
0
    def testGetGraphJson_WithAnomalies_ReturnsCorrectAnomalyAnnotations(self):
        self._AddTestColumns()

        anomaly1 = anomaly.Anomaly(
            start_revision=14999,
            end_revision=15000,
            test=utils.TestKey('ChromiumGPU/win7/dromaeo/dom'),
            median_before_anomaly=100,
            median_after_anomaly=200)
        anomaly1.SetIsImprovement()
        key1 = anomaly1.put()

        anomaly2 = anomaly.Anomaly(
            start_revision=15004,
            end_revision=15006,
            test=utils.TestKey('ChromiumGPU/win7/dromaeo/dom'),
            median_before_anomaly=200,
            median_after_anomaly=100,
            bug_id=12345)
        anomaly2.SetIsImprovement()
        key2 = anomaly2.put()

        old_style_test_key = ndb.Key('Master', 'ChromiumGPU', 'Bot', 'win7',
                                     'Test', 'dromaeo', 'Test', 'dom')
        anomaly3 = anomaly.Anomaly(start_revision=15008,
                                   end_revision=15009,
                                   test=old_style_test_key,
                                   median_before_anomaly=100,
                                   median_after_anomaly=200)
        key3 = anomaly3.put()

        test = utils.TestKey('ChromiumGPU/win7/dromaeo/dom').get()
        test.description = 'About this test'
        test.units = 'ms'
        test.buildername = 'Windows 7 (1)'
        test.UpdateSheriff()
        test.put()

        flot_json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/dom': [],
            }, rev=15000, num_points=8)

        flot = json.loads(flot_json_str)
        annotations = flot['annotations']
        self.assertEqual(5, len(annotations['0']))

        # Verify key fields of the annotation dictionary for the first anomaly.
        anomaly_one_annotation = annotations['0']['0']['g_anomaly']
        self.assertEqual(14999, anomaly_one_annotation['start_revision'])
        self.assertEqual(15000, anomaly_one_annotation['end_revision'])
        self.assertEqual('100.0%', anomaly_one_annotation['percent_changed'])
        self.assertIsNone(anomaly_one_annotation['bug_id'])
        self.assertEqual(key1.urlsafe(), anomaly_one_annotation['key'])
        self.assertTrue(anomaly_one_annotation['improvement'])

        # Verify key fields of the annotation dictionary for the second anomaly.
        anomaly_two_annotation = annotations['0']['2']['g_anomaly']
        self.assertEqual(15004, anomaly_two_annotation['start_revision'])
        self.assertEqual(15006, anomaly_two_annotation['end_revision'])
        self.assertEqual('50.0%', anomaly_two_annotation['percent_changed'])
        self.assertEqual(12345, anomaly_two_annotation['bug_id'])
        self.assertEqual(key2.urlsafe(), anomaly_two_annotation['key'])
        self.assertFalse(anomaly_two_annotation['improvement'])

        # Verify the key for the third anomaly.
        anomaly_three_annotation = annotations['0']['3']['g_anomaly']
        self.assertEqual(key3.urlsafe(), anomaly_three_annotation['key'])

        # Verify the tracing link annotations
        self.assertEqual('http://trace/15000',
                         annotations['0']['0']['a_tracing_uri'])
        self.assertEqual('http://trace/15012',
                         annotations['0']['4']['a_tracing_uri'])

        # Verify the series annotations.
        self.assertEqual(
            {
                '0': {
                    'name': 'dom',
                    'path': 'ChromiumGPU/win7/dromaeo/dom',
                    'units': 'ms',
                    'better': 'Higher',
                    'description': 'About this test',
                    'can_bisect': True,
                }
            }, annotations['series'])
Exemplo n.º 4
0
    def testGetGraphJson_ClampsRevisions(self):
        self._AddTestColumns(end_rev=15500)
        # No revision specified, clamps to the last 9 rows.
        json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/dom': [],
                'ChromiumGPU/mac/dromaeo/dom': [],
            },
            num_points=8)
        flot = json.loads(json_str)

        data = flot.get('data')
        win7_index = self._GetSeriesIndex(flot, 'ChromiumGPU/win7/dromaeo/dom')
        mac_index = self._GetSeriesIndex(flot, 'ChromiumGPU/mac/dromaeo/dom')

        # Two columns
        self.assertEqual(2, len(data))
        # Clamped from 15487-15499 by 3 steps.  First row doesn't contain 15487.
        self.assertEqual([[15489, 30978.0], [15492, 30984.0], [15495, 30990.0],
                          [15498, 30996.0]], data[win7_index].get('data'))
        self.assertEqual([[15487, 30972.0], [15490, 30978.0], [15493, 30984.0],
                          [15496, 30990.0], [15499, 30996.0]],
                         data[mac_index].get('data'))

        # Revision 100 (way before data starts) specified, clamp to the first 8 rows
        json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/dom': [],
                'ChromiumGPU/mac/dromaeo/dom': [],
            },
            rev=100,
            num_points=8)
        flot = json.loads(json_str)
        data = flot.get('data')
        win7_index = self._GetSeriesIndex(flot, 'ChromiumGPU/win7/dromaeo/dom')
        mac_index = self._GetSeriesIndex(flot, 'ChromiumGPU/mac/dromaeo/dom')

        # Two columns
        self.assertEqual(2, len(data))
        # 15000-15012.
        self.assertEqual([[15000, 30000.0], [15003, 30006.0], [15006, 30012.0],
                          [15009, 30018.0]], data[win7_index].get('data'))
        self.assertEqual([[15001, 30000.0], [15004, 30006.0], [15007, 30012.0],
                          [15010, 30018.0]], data[mac_index].get('data'))

        # Revision 15530 (valid) specified, clamp 4 rows before/after
        json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/dom': [],
                'ChromiumGPU/mac/dromaeo/dom': [],
            },
            rev=15030,
            num_points=8)
        flot = json.loads(json_str)
        data = flot.get('data')
        win7_index = self._GetSeriesIndex(flot, 'ChromiumGPU/win7/dromaeo/dom')
        mac_index = self._GetSeriesIndex(flot, 'ChromiumGPU/mac/dromaeo/dom')

        # Two columns
        self.assertEqual(2, len(data))
        # 15524-15536.
        self.assertEqual([[15024, 30048.0], [15027, 30054.0], [15030, 30060.0],
                          [15033, 30066.0], [15036, 30072.0]],
                         data[win7_index].get('data'))
        self.assertEqual([[15025, 30048.0], [15028, 30054.0], [15031, 30060.0],
                          [15034, 30066.0]], data[mac_index].get('data'))

        # Revision 15498 specified, clamp 4 rows before and after is cut off
        json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/dom': [],
                'ChromiumGPU/mac/dromaeo/dom': [],
            },
            rev=15498,
            num_points=7)
        flot = json.loads(json_str)
        data = flot.get('data')
        win7_index = self._GetSeriesIndex(flot, 'ChromiumGPU/win7/dromaeo/dom')
        mac_index = self._GetSeriesIndex(flot, 'ChromiumGPU/mac/dromaeo/dom')

        # Two columns
        self.assertEqual(2, len(data))

        # 15493-15499.
        self.assertEqual([[15495, 30990.0], [15498, 30996.0]],
                         data[win7_index].get('data'))
        self.assertEqual(
            [[15493, 30984.0], [15496, 30990.0], [15499, 30996.0]],
            data[mac_index].get('data'))

        # Revision 15001 specified, before is cut off and clamp 4 rows after
        json_str = graph_json.GetGraphJson(
            {
                'ChromiumGPU/win7/dromaeo/dom': [],
                'ChromiumGPU/mac/dromaeo/dom': [],
            },
            rev=15001,
            num_points=8)
        flot = json.loads(json_str)
        data = flot.get('data')
        win7_index = self._GetSeriesIndex(flot, 'ChromiumGPU/win7/dromaeo/dom')
        mac_index = self._GetSeriesIndex(flot, 'ChromiumGPU/mac/dromaeo/dom')

        # Two columns
        self.assertEqual(2, len(data))

        # 15493-15499.
        self.assertEqual(
            [[15000, 30000.0], [15003, 30006.0], [15006, 30012.0]],
            data[win7_index].get('data'))
        self.assertEqual(
            [[15001, 30000.0], [15004, 30006.0], [15007, 30012.0]],
            data[mac_index].get('data'))
Exemplo n.º 5
0
 def testGetGraphJsonNumPoints(self):
     self._AddTestColumns(end_rev=15500)
     flot_json_str = graph_json.GetGraphJson(
         {'ChromiumGPU/win7/dromaeo/dom': []}, rev=15300, num_points=8)
     self.CheckFlotJson(flot_json_str, 9, 1, 15288, 15315)
Exemplo n.º 6
0
 def testGetGraphJsonRevisionMiddle(self):
     self._AddTestColumns(end_rev=15600)
     flot_json_str = graph_json.GetGraphJson(
         {'ChromiumGPU/win7/dromaeo/dom': []}, rev=15300)
     self.CheckFlotJson(flot_json_str, 151, 1, 15075, 15525)
Exemplo n.º 7
0
 def testGetGraphJsonRevisionStart(self):
     self._AddTestColumns(end_rev=15500)
     flot_json_str = graph_json.GetGraphJson(
         {'ChromiumGPU/win7/dromaeo/dom': []}, rev=15000)
     self.CheckFlotJson(flot_json_str, 76, 1, 15000, 15228)
Exemplo n.º 8
0
 def testGetGraphJsonNoArgs(self):
     self._AddTestColumns(start_rev=16047)
     flot_json_str = graph_json.GetGraphJson(
         {'ChromiumGPU/win7/dromaeo/dom': []})
     self.CheckFlotJson(flot_json_str, 150, 1, 16050, 16500)
Exemplo n.º 9
0
 def testGetGraphJsonStartEndRev(self):
   self._AddTestColumns(start_rev=15991)
   flot_json_str = graph_json.GetGraphJson(
       {'ChromiumGPU/win7/dromaeo/dom': []}, start_rev=16000,
       end_rev=16030)
   self.CheckFlotJson(flot_json_str, 11, 1, 16000, 16030)