def test_reproducible_invalid_regression_range(self): """Test reproducible with invalid regression range.""" testcase = test_utils.create_generic_testcase() testcase.one_time_crasher_flag = False testcase.regression = 'BAD' testcase.put() expected_result = { 'result': { 'error_message': 'Invalid regression range BAD.', 'feedback_url': '', 'found': False, 'project': '', 'suspected_components': '', 'suspected_cls': '', } } self.assertIsNone(blame_task._prepare_predator_message(testcase)) testcase = data_handler.get_testcase_by_id(testcase.key.id()) actual_result = testcase.get_metadata('predator_result') self.assertEqual(actual_result, expected_result)
def test_custom_binary(self): """Test custom binary.""" environment.set_value('CUSTOM_BINARY', True) testcase = test_utils.create_generic_testcase() expected_result = { 'result': { 'error_message': 'Not applicable to custom binaries.', 'feedback_url': '', 'found': False, 'project': '', 'suspected_components': '', 'suspected_cls': '', } } self.assertIsNone(blame_task._prepare_predator_message(testcase)) testcase = data_handler.get_testcase_by_id(testcase.key.id()) actual_result = testcase.get_metadata('predator_result') self.assertEqual(actual_result, expected_result) environment.remove_key('CUSTOM_BINARY')
def test_unreproducible(self): """Test unreproducible.""" testcase = test_utils.create_generic_testcase() testcase.one_time_crasher_flag = True testcase.crash_revision = 399171 testcase.regression = 'NA' testcase.put() expected_message = { 'stack_trace': 'crashy_function()', 'customized_data': { 'crash_address': '0xdeadbeef', 'job_type': 'test_content_shell_drt', 'dependencies': [{ 'dep_path': 'src/v8', 'repo_url': 'https://chromium.googlesource.com/v8/v8', 'revision': '3a590058de9b3640f73741b1e95f815f5c089988' }, { 'dep_path': 'src/third_party/gperf', 'repo_url': 'https://chromium.googlesource.com/chromium/deps/gperf', 'revision': '97f2aa645b74c28c57eca56992235c79850fa9e0' }, { 'dep_path': 'src/third_party/skia', 'repo_url': 'https://skia.googlesource.com/skia', 'revision': '4772bd537d153922cd772020e4ad4820090be51a' }, { 'dep_path': 'src/third_party/pdfium', 'repo_url': 'https://pdfium.googlesource.com/pdfium', 'revision': '855665d4889853f8ac71519de8ff004dba8eb056' }, { 'dep_path': 'src', 'repo_url': 'https://chromium.googlesource.com/chromium/src', 'revision': '52523d4e58d99cdb768791bf9ac532c917522460' }], 'dependency_rolls': [], 'regression_range': { 'old_revision': None, 'new_revision': None, 'dep_path': 'src', 'repo_url': 'https://chromium.googlesource.com/chromium/src' }, 'security_flag': False, 'testcase_id': 1, 'sanitizer': 'ASAN', 'crash_type': 'fake type' }, 'crash_revision': '52523d4e58d99cdb768791bf9ac532c917522460', 'platform': 'linux', 'client_id': 'clusterfuzz', 'signature': 'crashy_function()' } actual_message = blame_task._prepare_predator_message(testcase) actual_message = json.loads(actual_message.data) self.assertDictEqual(actual_message, expected_message)
def test_reproducible_regression_range(self): """Test reproducible with regression range.""" testcase = test_utils.create_generic_testcase() testcase.crash_revision = 398287 testcase.regression = '398287:399171' testcase.put() expected_message = { 'stack_trace': 'crashy_function()', 'customized_data': { 'crash_address': '0xdeadbeef', 'job_type': 'test_content_shell_drt', 'dependencies': [{ 'dep_path': 'src/third_party/skia', 'repo_url': 'https://skia.googlesource.com/skia', 'revision': 'ee295645bd91fcbe1714847c5fe5341759037cc5' }, { 'dep_path': 'src/third_party/pdfium', 'repo_url': 'https://pdfium.googlesource.com/pdfium', 'revision': 'f7e108b2d0c2f67a143e99693df084bfff7037ec' }, { 'dep_path': 'src/third_party/bidichecker', 'repo_url': 'https://chromium.googlesource.com/' 'external/bidichecker/lib', 'revision': '97f2aa645b74c28c57eca56992235c79850fa9e0' }, { 'dep_path': 'src/v8', 'repo_url': 'https://chromium.googlesource.com/v8/v8', 'revision': 'cba1fdd4d72e7c5b874f9eeb07901792f26c871a' }, { 'dep_path': 'src', 'repo_url': 'https://chromium.googlesource.com/chromium/src', 'revision': 'e4eb2a57c8667ab31903237e3c316fcaf4afe718' }], 'dependency_rolls': [{ 'old_revision': 'cba1fdd4d72e7c5b874f9eeb07901792f26c871a', 'new_revision': '3a590058de9b3640f73741b1e95f815f5c089988', 'dep_path': 'src/v8', 'repo_url': 'https://chromium.googlesource.com/v8/v8' }, { 'new_revision': '97f2aa645b74c28c57eca56992235c79850fa9e0', 'dep_path': 'src/third_party/gperf', 'repo_url': 'https://chromium.googlesource.com/chromium/deps/gperf' }, { 'old_revision': 'ee295645bd91fcbe1714847c5fe5341759037cc5', 'new_revision': '4772bd537d153922cd772020e4ad4820090be51a', 'dep_path': 'src/third_party/skia', 'repo_url': 'https://skia.googlesource.com/skia' }, { 'old_revision': 'f7e108b2d0c2f67a143e99693df084bfff7037ec', 'new_revision': '855665d4889853f8ac71519de8ff004dba8eb056', 'dep_path': 'src/third_party/pdfium', 'repo_url': 'https://pdfium.googlesource.com/pdfium' }, { 'old_revision': 'e4eb2a57c8667ab31903237e3c316fcaf4afe718', 'new_revision': '52523d4e58d99cdb768791bf9ac532c917522460', 'dep_path': 'src', 'repo_url': 'https://chromium.googlesource.com/chromium/src' }], 'regression_range': { 'old_revision': 'e4eb2a57c8667ab31903237e3c316fcaf4afe718', 'new_revision': '52523d4e58d99cdb768791bf9ac532c917522460', 'dep_path': 'src', 'repo_url': 'https://chromium.googlesource.com/chromium/src' }, 'security_flag': False, 'testcase_id': 1, 'sanitizer': 'ASAN', 'crash_type': 'fake type' }, 'crash_revision': 'e4eb2a57c8667ab31903237e3c316fcaf4afe718', 'platform': 'linux', 'client_id': 'clusterfuzz', 'signature': 'crashy_function()' } actual_message = blame_task._prepare_predator_message(testcase) actual_message = json.loads(actual_message.data) self.assertDictEqual(actual_message, expected_message)