Пример #1
0
    def testInitializeByCrashData(self):
        """Tests initializing ``CrashAnalysis`` from ``CrashData``."""
        chrome_version = '50.2500.0.0'
        signature = 'signature/here'
        channel = 'canary'
        platform = 'mac'
        raw_crash_data = self.GetDummyChromeCrashData(
            client_id=CrashClient.FRACAS,
            channel=channel,
            platform=platform,
            signature=signature,
            version=chrome_version,
            process_type='renderer')
        predator = self.GetMockPredatorApp(client_id=CrashClient.FRACAS)
        crash_data = predator.GetCrashData(raw_crash_data)
        analysis = CrashAnalysis()
        analysis.Initialize(crash_data)

        self.assertEqual(analysis.stack_trace, crash_data.raw_stacktrace)
        self.assertEqual(analysis.signature, crash_data.signature)
        self.assertEqual(analysis.platform, crash_data.platform)
        self.assertEqual(analysis.regression_range,
                         crash_data.regression_range)
        self.assertEqual(analysis.dependencies, crash_data.dependencies)
        self.assertEqual(analysis.dependency_rolls,
                         crash_data.dependency_rolls)
Пример #2
0
    def testStackTraceWriteBigStackTraceToStorage(self):
        """Tests ``stack_trace`` setter writes big stacktrace to cloud storage."""
        identifiers = {'signature': 'sig'}
        analysis = CrashAnalysis.Create(identifiers)
        big_stacktrace = 'a' * 2048487
        analysis.stack_trace = big_stacktrace
        analysis.put()

        self.assertEqual(
            CrashAnalysis.Get(identifiers).stack_trace, big_stacktrace)
Пример #3
0
 def testLogProperty(self):
     """Tests ``log`` property."""
     ids = {'id': '123'}
     log = Log.Create(ids)
     log.Log('DummyInfo', 'This is a dummy info.', 'info')
     analysis = CrashAnalysis.Create(ids)
     analysis.identifiers = ids
     self.assertEqual(log, analysis.log)
Пример #4
0
    def testToCrashReport(self):
        """Tests converting ``CrashAnalysis`` to ``CrashReport``."""
        signature = 'signature/here'
        channel = 'canary'
        platform = 'mac'
        regression_range = ('50.2450.0.2', '50.2982.0.0')
        raw_crash_data = self.GetDummyChromeCrashData(
            client_id=CrashClient.FRACAS,
            channel=channel,
            platform=platform,
            signature=signature,
            version=None,
            regression_range=regression_range,
            process_type='renderer')
        predator = self.GetMockPredatorApp(client_id=CrashClient.FRACAS)
        crash_data = predator.GetCrashData(raw_crash_data)
        analysis = CrashAnalysis()
        analysis.Initialize(crash_data)

        expected_crash_report = CrashReport(None, signature, platform, None,
                                            regression_range, {}, {},
                                            CHROMIUM_REPO_URL,
                                            CHROMIUM_ROOT_PATH)
        self.assertTupleEqual(analysis.ToCrashReport(), expected_crash_report)
Пример #5
0
    def testToCrashReport(self):
        """Tests converting ``CrashAnalysis`` to ``CrashReport``."""
        chrome_version = '50.2500.0.0'
        signature = 'signature/here'
        channel = 'canary'
        platform = 'mac'
        regression_range = ('50.2450.0.2', '50.2982.0.0')
        raw_crash_data = self.GetDummyChromeCrashData(
            client_id=CrashClient.FRACAS,
            channel=channel,
            platform=platform,
            signature=signature,
            version=chrome_version,
            regression_range=regression_range,
            process_type='renderer')
        findit = self.GetMockFindit(client_id=CrashClient.FRACAS)
        crash_data = findit.GetCrashData(raw_crash_data)
        analysis = CrashAnalysis()
        analysis.Initialize(crash_data)

        expected_crash_report = CrashReport(chrome_version, signature,
                                            platform, None, regression_range,
                                            {}, {})
        self.assertTupleEqual(analysis.ToCrashReport(), expected_crash_report)
Пример #6
0
 def testCrashAnalysisReset(self):
     analysis = CrashAnalysis()
     analysis.pipeline_status_path = ''
     analysis.status = analysis_status.COMPLETED
     analysis.requested_time = datetime.utcnow()
     analysis.started_time = datetime.utcnow()
     analysis.predator_version = ''
     analysis.has_regression_range = True
     analysis.found_suspects = True
     analysis.solution = ''
     analysis.Reset()
     self.assertIsNone(analysis.pipeline_status_path)
     self.assertEqual(analysis_status.PENDING, analysis.status)
     self.assertIsNone(analysis.started_time)
     self.assertIsNone(analysis.predator_version)
     self.assertIsNone(analysis.has_regression_range)
     self.assertIsNone(analysis.found_suspects)
     self.assertIsNone(analysis.solution)
     self.assertEqual(analysis.result, None)
     self.assertEqual(analysis.regression_range_triage_status,
                      triage_status.UNTRIAGED)
     self.assertEqual(analysis.suspected_cls_triage_status,
                      triage_status.UNTRIAGED)
     self.assertEqual(analysis.suspected_project_triage_status,
                      triage_status.UNTRIAGED)
     self.assertEqual(analysis.suspected_components_triage_status,
                      triage_status.UNTRIAGED)
Пример #7
0
 def testCrashAnalysisStatusIsNotFailed(self):
     for status in (analysis_status.PENDING, analysis_status.RUNNING,
                    analysis_status.COMPLETED):
         analysis = CrashAnalysis()
         analysis.status = status
         self.assertFalse(analysis.failed)
Пример #8
0
 def testCrashAnalysisStatusIsFailed(self):
     analysis = CrashAnalysis()
     analysis.status = analysis_status.ERROR
     self.assertTrue(analysis.failed)
Пример #9
0
 def testCrashAnalysisDurationWhenStartTimeNotSet(self):
     analysis = CrashAnalysis()
     analysis.status = analysis_status.COMPLETED
     analysis.started_time = datetime(2015, 07, 30, 21, 15, 30, 40)
     analysis.completed_time = datetime(2015, 07, 30, 21, 16, 15, 50)
     self.assertEqual(45, analysis.duration)
Пример #10
0
 def testCrashAnalysisDurationWhenNotCompleted(self):
     analysis = CrashAnalysis()
     analysis.status = analysis_status.RUNNING
     self.assertIsNone(analysis.duration)
Пример #11
0
 def testCrashAnalysisStatusIsNotCompleted(self):
     for status in (analysis_status.PENDING, analysis_status.RUNNING):
         analysis = CrashAnalysis()
         analysis.status = status
         self.assertFalse(analysis.completed)
Пример #12
0
 def testUpdateCrashAnalysis(self):
     update = {'note': 'dummy'}
     analysis = CrashAnalysis()
     analysis.Update(update)
     self.assertEqual(analysis.note, update['note'])
Пример #13
0
 def testCreateCrashAnalysis(self):
     crash_identifiers = {'signature': 'sig'}
     analysis = CrashAnalysis.Create(crash_identifiers)
     analysis.put()
     self.assertIsNotNone(analysis)
     self.assertEqual(CrashAnalysis.Get(crash_identifiers), analysis)
Пример #14
0
 def testUpdateCrashAnalysisWithNonExistentProperty(self):
     update = {'dummy': 'dummy_content'}
     analysis = CrashAnalysis()
     analysis.Update(update)
     self.assertFalse(hasattr(analysis, 'dummy'))
Пример #15
0
 def GetAnalysis(self, crash_identifiers):
     return CrashAnalysis.Get(crash_identifiers)
Пример #16
0
 def CreateAnalysis(self, crash_identifiers):
     return CrashAnalysis.Create(crash_identifiers)
Пример #17
0
 def testCrashAnalysisStatusIsCompleted(self):
     for status in (analysis_status.COMPLETED, analysis_status.ERROR):
         analysis = CrashAnalysis()
         analysis.status = status
         self.assertTrue(analysis.completed)