コード例 #1
0
 def testFilterTestName(self):
     master_flake_analysis_query = MasterFlakeAnalysis.query()
     query = _GetFlakeAnalysisFilterQuery(master_flake_analysis_query,
                                          test_name=self.test_name2)
     result = query.fetch()
     self.assertEqual(len(result), 1)
     self.assertTrue(result == [self.master_flake_analysis2])
コード例 #2
0
 def testFilterStartDate(self):
     master_flake_analysis_query = MasterFlakeAnalysis.query()
     query = _GetFlakeAnalysisFilterQuery(master_flake_analysis_query,
                                          start_date=self.request_time2)
     result = query.fetch()
     self.assertEqual(len(result), 1)
     self.assertTrue(result == [self.master_flake_analysis2])
コード例 #3
0
 def testFilterStepName(self):
     master_flake_analysis_query = MasterFlakeAnalysis.query()
     query = _GetFlakeAnalysisFilterQuery(master_flake_analysis_query,
                                          step_name=self.step_name1)
     result = query.fetch()
     self.assertEqual(len(result), 1)
     self.assertTrue(result == [self.master_flake_analysis1])
コード例 #4
0
 def testFilterResultStatus(self):
     master_flake_analysis_query = MasterFlakeAnalysis.query()
     query = _GetFlakeAnalysisFilterQuery(
         master_flake_analysis_query,
         status_code=result_status.FOUND_UNTRIAGED)
     result = query.fetch()
     self.assertEqual(len(result), 1)
     self.assertTrue(result == [self.master_flake_analysis1])
コード例 #5
0
 def testFetchPreviousPages(self):
     query = _GetFlakeAnalysisFilterQuery(MasterFlakeAnalysis.query())
     result2, _, _ = dashboard_util.GetPagedResults(
         query,
         MasterFlakeAnalysis.request_time,
         cursor=self.cursor,
         direction='previous')
     self.assertEqual(len(result2), 1)
     self.assertEqual(self.results, result2)
コード例 #6
0
 def testFilterMultipleTestName(self):
     self.mock(list_flakes, 'PAGE_SIZE', 10)
     master_flake_analysis_query = MasterFlakeAnalysis.query()
     query = _GetFlakeAnalysisFilterQuery(master_flake_analysis_query,
                                          test_name=self.test_name1)
     result = query.fetch()
     self.assertEqual(len(result), 2)
     self.assertEqual(
         sorted(result),
         sorted([self.master_flake_analysis3, self.master_flake_analysis1]))
コード例 #7
0
 def testFilterEndDate(self):
     self.mock(list_flakes, 'PAGE_SIZE', 10)
     master_flake_analysis_query = MasterFlakeAnalysis.query()
     query = _GetFlakeAnalysisFilterQuery(master_flake_analysis_query,
                                          end_date=self.request_time2)
     result = query.fetch()
     self.assertEqual(len(result), 2)
     self.assertEqual(
         sorted(result),
         sorted([self.master_flake_analysis1, self.master_flake_analysis3]))
コード例 #8
0
def _ObscureMasterFlakeAnalysis():
    """Obscures the user email in MasterFlakeAnalysis."""
    count = 0
    time_limit = _TimeBeforeNow(days=_REQUEST_RECORD_RENTENSION_DAYS)
    query = MasterFlakeAnalysis.query(
        MasterFlakeAnalysis.triggering_user_email_obscured == False,
        MasterFlakeAnalysis.request_time < time_limit)
    more = True
    cursor = None
    while more:
        entities, cursor, more = query.fetch_page(_PAGE_SIZE,
                                                  start_cursor=cursor)
        for entity in entities:
            entity.triggering_user_email = email_util.ObscureEmails(
                [entity.triggering_user_email], ['google.com'])[0]
            entity.triggering_user_email_obscured = True
        ndb.put_multi(entities)
        count += len(entities)
    return count
コード例 #9
0
def _ObscureTriageRecordsInMasterFlakeAnalysis():
    """Obscures the user names in MasterFlakeAnalysis triage history."""
    count = 0
    time_limit = _TimeBeforeNow(days=_TRIAGE_RECORD_RENTENSION_DAYS)
    query = MasterFlakeAnalysis.query(
        MasterFlakeAnalysis.triage_email_obscured == False,
        MasterFlakeAnalysis.triage_record_last_add < time_limit)
    more = True
    cursor = None
    while more:
        entities, cursor, more = query.fetch_page(_PAGE_SIZE,
                                                  start_cursor=cursor)
        for entity in entities:
            for triage_record in entity.triage_history:
                triage_record.user_name = email_util.ObscureEmails(
                    [triage_record.user_name], ['google.com'])[0]
            entity.triage_email_obscured = True
        ndb.put_multi(entities)
        count += len(entities)
    return count
コード例 #10
0
 def _MockCursor(self):
     results, prev_cursor, cursor = dashboard_util.GetPagedResults(
         MasterFlakeAnalysis.query(),
         MasterFlakeAnalysis.request_time,
         page_size=1)
     return results, prev_cursor, cursor
コード例 #11
0
    def HandleGet(self):
        status_code = int(
            self.request.get('result_status', result_status.UNSPECIFIED))
        step_name = self.request.get('step_name').strip()
        test_name = self.request.get('test_name').strip()
        triage = self.request.get('triage') == '1'

        # Only allow querying by start/end dates for admins during triage to avoid
        # overcomplicating the UI for other users.
        start_date, end_date = self._GetStartAndEndDates(triage)

        master_flake_analysis_query = _GetFlakeAnalysisFilterQuery(
            MasterFlakeAnalysis.query(), step_name, test_name, start_date,
            end_date, status_code)

        # If filters by step_name and/or test_name, don't do paging.
        if step_name or test_name:
            analyses = master_flake_analysis_query.order(
                -MasterFlakeAnalysis.request_time).fetch()
            prev_cursor = ''
            cursor = ''
        else:
            analyses, prev_cursor, cursor = dashboard_util.GetPagedResults(
                master_flake_analysis_query,
                MasterFlakeAnalysis.request_time,
                self.request.get('cursor'),
                self.request.get('direction').strip(),
                page_size=PAGE_SIZE)

        data = {
            'master_flake_analyses': [],
            'result_status_filter': status_code,
            'step_name_filter': step_name,
            'test_name_filter': test_name,
            'prev_cursor': prev_cursor,
            'cursor': cursor,
        }

        if triage:  # pragma: no cover
            data['triage'] = triage
            data['start_date'] = start_date
            data['end_date'] = end_date

        for master_flake_analysis in analyses:
            data['master_flake_analyses'].append({
                'build_analysis_status':
                master_flake_analysis.status_description,
                'build_number':
                master_flake_analysis.build_number,
                'builder_name':
                master_flake_analysis.builder_name,
                'confidence_in_suspected_build':
                (master_flake_analysis.confidence_in_suspected_build),
                'culprit': (master_flake_analysis.culprit.ToDict()
                            if master_flake_analysis.culprit else {}),
                'key':
                master_flake_analysis.key.urlsafe(),
                'master_name':
                master_flake_analysis.master_name,
                'request_time':
                time_util.FormatDatetime(master_flake_analysis.request_time),
                'result_status':
                result_status.RESULT_STATUS_TO_DESCRIPTION.get(
                    master_flake_analysis.result_status),
                'step_name':
                master_flake_analysis.step_name,
                'suspected_build':
                master_flake_analysis.suspected_flake_build_number,
                'test_name':
                master_flake_analysis.test_name,
                'try_job_status':
                analysis_status.STATUS_TO_DESCRIPTION.get(
                    master_flake_analysis.try_job_status),
            })

        return {'template': 'flake/dashboard.html', 'data': data}