def testParseStacktraceReturnsCache(self):
     """Tests that ``stacktrace`` returns cached ``_stacktrace`` value."""
     crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData())
     stack = CallStack(1)
     stacktrace = Stacktrace([stack], stack)
     crash_data._stacktrace = stacktrace
     self._VerifyTwoStacktracesEqual(crash_data.stacktrace, stacktrace)
Exemple #2
0
    def testProperties(self):
        """Tests ``ClusterfuzzData`` specific properties."""
        regression_range = {
            'repo_url': 'http://repo',
            'repo_path': 'src',
            'old_revision': 'rev2',
            'new_revision': 'rev7'
        }
        raw_crash_data = self.GetDummyClusterfuzzData(
            sanitizer='ASAN', regression_range=regression_range)
        crash_data = ClusterfuzzData(raw_crash_data, self.GetMockRepoFactory())
        self.assertEqual(crash_data.crash_address,
                         raw_crash_data['customized_data']['crash_address'])
        self.assertEqual(crash_data.crash_type,
                         raw_crash_data['customized_data']['crash_type'])
        self.assertEqual(crash_data.sanitizer, SanitizerType.ADDRESS_SANITIZER)
        self.assertEqual(crash_data.job_type,
                         raw_crash_data['customized_data']['job_type'])
        self.assertEqual(crash_data.regression_range, ('rev2', 'rev7'))
        self.assertEqual(crash_data.testcase_id,
                         raw_crash_data['customized_data']['testcase_id'])
        self.assertEqual(crash_data.security_flag,
                         raw_crash_data['customized_data']['security_flag'])

        raw_crash_data['customized_data']['regression_range'] = None
        crash_data = ClusterfuzzData(raw_crash_data, self.GetMockRepoFactory())
        self.assertIsNone(crash_data.regression_range)
 def testDependencyRollsReturnsCache(self):
     """Tests that ``dependency_rolls`` returns cached ``_dependency_rolls``."""
     crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData())
     dep_roll = {
         'src/': DependencyRoll('src/', 'https://repo', 'rev0', 'rev3')
     }
     crash_data._dependency_rolls = dep_roll
     self.assertEqual(crash_data.dependency_rolls, dep_roll)
 def testParseStacktraceSucceeded(self):
     """Tests parsing ``stacktrace``."""
     crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData())
     stack = CallStack(0)
     stacktrace = Stacktrace([stack], stack)
     with mock.patch('analysis.clusterfuzz_parser.ClusterfuzzParser.Parse'
                     ) as mock_parse:
         mock_parse.return_value = stacktrace
         self._VerifyTwoStacktracesEqual(crash_data.stacktrace, stacktrace)
Exemple #5
0
    def testCommitCountInRegressionRangeReturns0ForEmptyRegressionRange(self):
        """Tests ``commit_count_in_regression_range`` property."""
        regression_range = {
            'dep_path': 'src',
            'repo_url': 'https://repo',
            'old_revision': None,
            'new_revision': None
        }
        crash_data = ClusterfuzzData(
            self.GetDummyClusterfuzzData(regression_range=regression_range),
            self.GetMockRepoFactory())

        self.assertEqual(crash_data.commit_count_in_regression_range, 0)
Exemple #6
0
    def testCommitCountInRegressionRangeProperty(self, mock_get_commits):
        """Tests ``commit_count_in_regression_range`` property."""
        mock_get_commits.return_value = 6
        regression_range = {
            'dep_path': 'src',
            'repo_url': 'https://repo',
            'old_revision': 'rev0',
            'new_revision': 'rev3'
        }
        crash_data = ClusterfuzzData(
            self.GetDummyClusterfuzzData(regression_range=regression_range),
            self.GetMockRepoFactory())

        self.assertEqual(crash_data.commit_count_in_regression_range, 6)
 def testProperties(self):
     """Tests ``ClusterfuzzData`` specific properties."""
     raw_crash_data = self.GetDummyClusterfuzzData(sanitizer='ASAN')
     crash_data = ClusterfuzzData(raw_crash_data)
     self.assertEqual(crash_data.crashed_address,
                      raw_crash_data['customized_data']['crashed_address'])
     self.assertEqual(crash_data.crashed_type,
                      raw_crash_data['customized_data']['crashed_type'])
     self.assertEqual(crash_data.sanitizer, SanitizerType.ADDRESS_SANITIZER)
     self.assertEqual(crash_data.job_type,
                      raw_crash_data['customized_data']['job_type'])
     self.assertEqual(crash_data.regression_range,
                      raw_crash_data['customized_data']['regression_range'])
     self.assertEqual(crash_data.testcase,
                      raw_crash_data['customized_data']['testcase'])
Exemple #8
0
    def testRegressionRangeProperty(self):
        regression_range = {
            'dep_path': 'src',
            'repo_url': 'https://repo',
            'old_revision': 'rev0',
            'new_revision': 'rev3'
        }
        crash_data = ClusterfuzzData(
            self.GetDummyClusterfuzzData(regression_range=regression_range),
            self.GetMockRepoFactory())

        self.assertEqual(crash_data.regression_range,
                         (regression_range['old_revision'],
                          regression_range['new_revision']))

        self.assertEqual(crash_data.regression_repository, regression_range)
    def testDependencies(self):
        """Tests ``dependencies`` property."""
        dep = Dependency('src/', 'https://repo', 'rev1')
        crash_data = ClusterfuzzData(
            self.GetDummyClusterfuzzData(dependencies=[{
                'dep_path': dep.path,
                'repo_url': dep.repo_url,
                'revision': dep.revision
            }]))

        self.assertEqual(len(crash_data.dependencies), 1)
        self.assertTrue(dep.path in crash_data.dependencies)
        self.assertEqual(crash_data.dependencies[dep.path].path, dep.path)
        self.assertEqual(crash_data.dependencies[dep.path].repo_url,
                         dep.repo_url)
        self.assertEqual(crash_data.dependencies[dep.path].revision,
                         dep.revision)
    def testDependencyRolls(self):
        """Tests ``regression_rolls`` property."""
        dep_roll = DependencyRoll('src/', 'https://repo', 'rev1', 'rev6')
        crash_data = ClusterfuzzData(
            self.GetDummyClusterfuzzData(
                dependency_rolls=[{
                    'dep_path': dep_roll.path,
                    'repo_url': dep_roll.repo_url,
                    'old_revision': dep_roll.old_revision,
                    'new_revision': dep_roll.new_revision
                }]))

        self.assertEqual(len(crash_data.dependency_rolls), 1)
        self.assertTrue(dep_roll.path in crash_data.dependency_rolls)
        self.assertEqual(crash_data.dependency_rolls[dep_roll.path].path,
                         dep_roll.path)
        self.assertEqual(crash_data.dependency_rolls[dep_roll.path].repo_url,
                         dep_roll.repo_url)
        self.assertEqual(
            crash_data.dependency_rolls[dep_roll.path].old_revision,
            dep_roll.old_revision)
        self.assertEqual(
            crash_data.dependency_rolls[dep_roll.path].new_revision,
            dep_roll.new_revision)
 def testDependenciesReturnsCache(self):
     """Tests that ``dependencies`` returns cached ``_dependencies`` value."""
     crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData())
     deps = {'src/': Dependency('src/', 'https://repo', 'rev')}
     crash_data._dependencies = deps
     self.assertEqual(crash_data.dependencies, deps)
 def testParseStacktraceFailed(self, mock_parse):
     """Tests that ``stacktrace`` is None when failed to pars stacktrace."""
     mock_parse.return_value = None
     crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData())
     self.assertIsNone(crash_data.stacktrace)
 def GetCrashData(self, raw_crash_data):
     """Gets ``ClusterfuzzData`` from ``raw_crash_data``."""
     return ClusterfuzzData(raw_crash_data)
Exemple #14
0
 def GetCrashData(self, raw_crash_data):
     """Gets ``ClusterfuzzData`` from ``raw_crash_data``."""
     return ClusterfuzzData(raw_crash_data,
                            self._get_repository,
                            top_n_frames=self.client_config['top_n'])
Exemple #15
0
 def testAlwaysRedoClusterfuzzAnalysis(self):
     """Tests the redo of ClusterfuzzData is always True."""
     crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData(),
                                  self.GetMockRepoFactory())
     self.assertTrue(crash_data.redo)
Exemple #16
0
    def testIdentifiers(self):
        crash_data = ClusterfuzzData(self.GetDummyClusterfuzzData(),
                                     self.GetMockRepoFactory())

        self.assertEqual(crash_data.identifiers, crash_data.testcase_id)