Exemple #1
0
    def HandleGet(self):
        """Shows crash analysis results in an HTML page."""
        start_date, end_date = dashboard_util.GetStartAndEndDates(
            self.request.get('start_date'), self.request.get('end_date'))

        query = self.Filter(self.crash_analysis_cls.query(), start_date,
                            end_date)

        page_size = self.request.get('n') or _PAGE_SIZE
        # TODO(katesonia): Add pagination here.
        crash_list = query.order(
            -self.crash_analysis_cls.requested_time).fetch(int(page_size))

        crashes = []
        for crash in crash_list:
            display_data = {
                'signature':
                crash.signature,
                'version':
                crash.crashed_version,
                'channel':
                crash.channel,
                'platform':
                crash.platform,
                'regression_range': ('' if not crash.has_regression_range else
                                     crash.result['regression_range']),
                'suspected_cls': (crash.result.get('suspected_cls', [])
                                  if crash.result else []),
                'suspected_project': (crash.result.get('suspected_project', '')
                                      if crash.result else ''),
                'suspected_components': (crash.result.get(
                    'suspected_components', []) if crash.result else []),
                'key':
                crash.key.urlsafe()
            }
            crashes.append(display_data)

        data = {
            'start_date':
            time_util.FormatDatetime(start_date),
            'end_date':
            time_util.FormatDatetime(end_date),
            'found_suspects':
            self.request.get('found_suspects', '-1'),
            'has_regression_range':
            self.request.get('has_regression_range', '-1'),
            'suspected_cls_triage_status':
            self.request.get('suspected_cls_triage_status', '-1'),
            'regression_range_triage_status':
            self.request.get('regression_range_triage_status', '-1'),
            'client':
            self.client,
            'crashes':
            crashes,
            'signature':
            self.request.get('signature')
        }

        return {'template': 'dashboard.html', 'data': data}
 def testGetStartAndEndDates(self, mock_fn):
     """Tests getting start_date and end_date."""
     mock_now = datetime.datetime(2016, 10, 21, 1, 0, 0, 0)
     mock_midnight_yesterday = datetime.datetime(2016, 10, 20, 0, 0, 0, 0)
     mock_midnight_tomorrow = datetime.datetime(2016, 10, 22, 0, 0, 0, 0)
     mock_fn.return_value = mock_now
     start_date, end_date = dashboard_util.GetStartAndEndDates()
     self.assertEqual(start_date, mock_midnight_yesterday)
     self.assertEqual(end_date, mock_midnight_tomorrow)
Exemple #3
0
  def HandleGet(self):
    """Shows crash analysis results in an HTML page."""
    start_date, end_date = dashboard_util.GetStartAndEndDates(
        self.request.get('start_date'), self.request.get('end_date'))

    query = self.Filter(start_date, end_date)

    try:
      page_size = int(self.request.get('n'))
    except (ValueError, TypeError):
      page_size = _PAGE_SIZE

    crash_analyses, top_cusor, bottom_cursor = dashboard_util.GetPagedResults(
        query,
        [(self.crash_analysis_cls.requested_time, dashboard_util.DESC)],
        cursor=self.request.get('cursor'),
        direction=self.request.get('direction', 'next'), page_size=page_size)

    # TODO(katesonia): An optimization is to index analysis.status.
    crash_analyses = [analysis for analysis in crash_analyses
                      if analysis.completed]
    data = {
        'start_date': time_util.FormatDatetime(start_date),
        'end_date': time_util.FormatDatetime(end_date),
        'found_suspects': self.request.get('found_suspects', '-1'),
        'has_regression_range': self.request.get('has_regression_range', '-1'),
        'suspected_cls_triage_status': self.request.get(
            'suspected_cls_triage_status', '-1'),
        'regression_range_triage_status': self.request.get(
            'regression_range_triage_status', '-1'),
        'client': self.client,
        'crashes': self.CrashDataToDisplay(crash_analyses),
        'signature': self.request.get('signature'),
        'top_cursor': top_cusor,
        'bottom_cursor': bottom_cursor,
    }

    return {
        'template': self.template,
        'data': data
    }
    def _GetStartAndEndDates(self, triage):
        if not triage:
            return None, None

        return dashboard_util.GetStartAndEndDates(
            self.request.get('start_date'), self.request.get('end_date'))