def test_convert_raw_crash_to_processed_crash_basic(self): config = setup_config_with_mocks() mocked_transform_rules_str = \ 'socorro.processor.hybrid_processor.TransformRuleSystem' with mock.patch(mocked_transform_rules_str) as m_transform_class: m_transform = mock.Mock() m_transform_class.return_value = m_transform m_transform.attach_mock(mock.Mock(), 'apply_all_rules') utc_now_str = 'socorro.processor.hybrid_processor.utc_now' with mock.patch(utc_now_str) as m_utc_now: m_utc_now.return_value = datetime(2012, 5, 4, 15, 11, tzinfo=UTC) raw_crash = DotDict() raw_crash.uuid = '3bc4bcaa-b61d-4d1f-85ae-30cb32120504' raw_crash.submitted_timestamp = '2012-05-04T15:33:33' raw_dump = {'upload_file_minidump': '/some/path/%s.dump' % raw_crash.uuid, 'aux_dump_001': '/some/path/aux_001.%s.dump' % raw_crash.uuid, } leg_proc = HybridCrashProcessor(config, config.mock_quit_fn) started_timestamp = datetime(2012, 5, 4, 15, 10, tzinfo=UTC) leg_proc._log_job_start = mock.Mock( return_value=started_timestamp ) basic_processed_crash = DotDict() basic_processed_crash.uuid = raw_crash.uuid basic_processed_crash.hang_type = 0 basic_processed_crash.java_stack_trace = None leg_proc._create_basic_processed_crash = mock.Mock( return_value=basic_processed_crash) leg_proc._log_job_end = mock.Mock() processed_crash_update_dict = DotDict() processed_crash_update_dict.success = True leg_proc._do_breakpad_stack_dump_analysis = mock.Mock( return_value=processed_crash_update_dict ) leg_proc._cleanup_temp_file = mock.Mock() # Here's the call being tested processed_crash = \ leg_proc.convert_raw_crash_to_processed_crash( raw_crash, raw_dump ) # test the result self.assertEqual(1, leg_proc._log_job_start.call_count) leg_proc._log_job_start.assert_called_with(raw_crash.uuid) self.assertEqual(1, m_transform.apply_all_rules.call_count) m_transform.apply_all_rules.has_calls( mock.call(raw_crash, leg_proc), ) self.assertEqual( 2, m_transform.apply_until_action_succeeds.call_count ) m_transform.apply_all_rules.has_calls( mock.call(raw_crash, processed_crash, leg_proc) ) self.assertEqual( 1, leg_proc._create_basic_processed_crash.call_count ) leg_proc._create_basic_processed_crash.assert_called_with( raw_crash.uuid, raw_crash, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), started_timestamp, [ 'testing_processor:2012', 'HybridCrashProcessor' ] ) self.assertEqual( 2, leg_proc._do_breakpad_stack_dump_analysis.call_count ) first_call, second_call = \ leg_proc._do_breakpad_stack_dump_analysis.call_args_list self.assertEqual( first_call, ((raw_crash.uuid, '/some/path/%s.dump' % raw_crash.uuid, 0, None, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), [ 'testing_processor:2012', 'HybridCrashProcessor' ]),) ) self.assertEqual( second_call, ((raw_crash.uuid, '/some/path/aux_001.%s.dump' % raw_crash.uuid, 0, None, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), [ 'testing_processor:2012', 'HybridCrashProcessor' ]),) ) self.assertEqual(1, leg_proc._log_job_end.call_count) leg_proc._log_job_end.assert_called_with( datetime(2012, 5, 4, 15, 11, tzinfo=UTC), True, raw_crash.uuid ) epc = DotDict() epc.uuid = raw_crash.uuid epc.topmost_filenames = '' epc.processor_notes = \ "testing_processor:2012; HybridCrashProcessor" epc.success = True epc.completeddatetime = datetime(2012, 5, 4, 15, 11, tzinfo=UTC) epc.hang_type = 0 epc.java_stack_trace = None epc.Winsock_LSP = None epc.additional_minidumps = ['aux_dump_001'] epc.aux_dump_001 = {'success': True} self.assertEqual( processed_crash, dict(epc) ) leg_proc._statistics.assert_has_calls( [ mock.call.incr('jobs'), mock.call.incr('restarts') ], any_order=True )
def test_convert_raw_crash_to_processed_crash_basic(self): config = setup_config_with_mocks() mocked_transform_rules_str = \ 'socorro.processor.hybrid_processor.TransformRuleSystem' with mock.patch(mocked_transform_rules_str) as m_transform_class: m_transform = mock.Mock() m_transform_class.return_value = m_transform m_transform.attach_mock(mock.Mock(), 'apply_all_rules') utc_now_str = 'socorro.processor.hybrid_processor.utc_now' with mock.patch(utc_now_str) as m_utc_now: m_utc_now.return_value = datetime(2012, 5, 4, 15, 11, tzinfo=UTC) raw_crash = DotDict() raw_crash.uuid = '3bc4bcaa-b61d-4d1f-85ae-30cb32120504' raw_crash.submitted_timestamp = '2012-05-04T15:33:33' raw_dump = { 'upload_file_minidump': '/some/path/%s.dump' % raw_crash.uuid, 'aux_dump_001': '/some/path/aux_001.%s.dump' % raw_crash.uuid, } leg_proc = HybridCrashProcessor(config, config.mock_quit_fn) started_timestamp = datetime(2012, 5, 4, 15, 10, tzinfo=UTC) leg_proc._log_job_start = mock.Mock( return_value=started_timestamp) basic_processed_crash = DotDict() basic_processed_crash.uuid = raw_crash.uuid basic_processed_crash.hang_type = 0 basic_processed_crash.java_stack_trace = None leg_proc._create_basic_processed_crash = mock.Mock( return_value=basic_processed_crash) leg_proc._log_job_end = mock.Mock() processed_crash_update_dict = DotDict() processed_crash_update_dict.success = True leg_proc._do_breakpad_stack_dump_analysis = mock.Mock( return_value=processed_crash_update_dict) leg_proc._cleanup_temp_file = mock.Mock() # Here's the call being tested processed_crash = \ leg_proc.convert_raw_crash_to_processed_crash( raw_crash, raw_dump ) # test the result self.assertEqual(1, leg_proc._log_job_start.call_count) leg_proc._log_job_start.assert_called_with(raw_crash.uuid) self.assertEqual(1, m_transform.apply_all_rules.call_count) m_transform.apply_all_rules.has_calls( mock.call(raw_crash, leg_proc), ) self.assertEqual( 2, m_transform.apply_until_action_succeeds.call_count) m_transform.apply_all_rules.has_calls( mock.call(raw_crash, processed_crash, leg_proc)) self.assertEqual( 1, leg_proc._create_basic_processed_crash.call_count) leg_proc._create_basic_processed_crash.assert_called_with( raw_crash.uuid, raw_crash, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), started_timestamp, ['testing_processor:2012', 'HybridCrashProcessor']) self.assertEqual( 2, leg_proc._do_breakpad_stack_dump_analysis.call_count) first_call, second_call = \ leg_proc._do_breakpad_stack_dump_analysis.call_args_list self.assertEqual( first_call, ((raw_crash.uuid, '/some/path/%s.dump' % raw_crash.uuid, 0, None, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), ['testing_processor:2012', 'HybridCrashProcessor']), )) self.assertEqual( second_call, ((raw_crash.uuid, '/some/path/aux_001.%s.dump' % raw_crash.uuid, 0, None, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), ['testing_processor:2012', 'HybridCrashProcessor']), )) self.assertEqual(1, leg_proc._log_job_end.call_count) leg_proc._log_job_end.assert_called_with( datetime(2012, 5, 4, 15, 11, tzinfo=UTC), True, raw_crash.uuid) epc = DotDict() epc.uuid = raw_crash.uuid epc.topmost_filenames = '' epc.processor_notes = \ "testing_processor:2012; HybridCrashProcessor" epc.success = True epc.completeddatetime = datetime(2012, 5, 4, 15, 11, tzinfo=UTC) epc.hang_type = 0 epc.java_stack_trace = None epc.Winsock_LSP = None epc.additional_minidumps = ['aux_dump_001'] epc.aux_dump_001 = {'success': True} self.assertEqual(processed_crash, dict(epc)) leg_proc._statistics.assert_has_calls( [mock.call.incr('jobs'), mock.call.incr('restarts')], any_order=True)
def test_convert_raw_crash_to_processed_crash_basic(self): config = setup_config_with_mocks() mocked_transform_rules_str = "socorro.processor.legacy_processor.TransformRuleSystem" with mock.patch(mocked_transform_rules_str) as m_transform_class: m_transform = mock.Mock() m_transform_class.return_value = m_transform m_transform.attach_mock(mock.Mock(), "apply_all_rules") utc_now_str = "socorro.processor.legacy_processor.utc_now" with mock.patch(utc_now_str) as m_utc_now: m_utc_now.return_value = datetime(2012, 5, 4, 15, 11, tzinfo=UTC) raw_crash = DotDict() raw_crash.uuid = "3bc4bcaa-b61d-4d1f-85ae-30cb32120504" raw_crash.submitted_timestamp = "2012-05-04T15:33:33" raw_dump = { "upload_file_minidump": "/some/path/%s.dump" % raw_crash.uuid, "aux_dump_001": "/some/path/aux_001.%s.dump" % raw_crash.uuid, } leg_proc = LegacyCrashProcessor(config, config.mock_quit_fn) started_timestamp = datetime(2012, 5, 4, 15, 10, tzinfo=UTC) leg_proc._log_job_start = mock.Mock(return_value=started_timestamp) basic_processed_crash = DotDict() basic_processed_crash.uuid = raw_crash.uuid basic_processed_crash.hang_type = 0 basic_processed_crash.java_stack_trace = None leg_proc._create_basic_processed_crash = mock.Mock(return_value=basic_processed_crash) leg_proc._log_job_end = mock.Mock() processed_crash_update_dict = DotDict() processed_crash_update_dict.success = True leg_proc._do_breakpad_stack_dump_analysis = mock.Mock(return_value=processed_crash_update_dict) leg_proc._cleanup_temp_file = mock.Mock() # Here's the call being tested processed_crash = leg_proc.convert_raw_crash_to_processed_crash(raw_crash, raw_dump) # test the result self.assertEqual(1, leg_proc._log_job_start.call_count) leg_proc._log_job_start.assert_called_with(raw_crash.uuid) self.assertEqual(1, m_transform.apply_all_rules.call_count) m_transform.apply_all_rules.assert_called_with(raw_crash, leg_proc) self.assertEqual(1, leg_proc._create_basic_processed_crash.call_count) leg_proc._create_basic_processed_crash.assert_called_with( raw_crash.uuid, raw_crash, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), started_timestamp, ["testing_processor:2012"], ) self.assertEqual(2, leg_proc._do_breakpad_stack_dump_analysis.call_count) first_call, second_call = leg_proc._do_breakpad_stack_dump_analysis.call_args_list self.assertEqual( first_call, ( ( raw_crash.uuid, "/some/path/%s.dump" % raw_crash.uuid, 0, None, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), ["testing_processor:2012"], ), ), ) self.assertEqual( second_call, ( ( raw_crash.uuid, "/some/path/aux_001.%s.dump" % raw_crash.uuid, 0, None, datetime(2012, 5, 4, 15, 33, 33, tzinfo=UTC), ["testing_processor:2012"], ), ), ) self.assertEqual(1, leg_proc._log_job_end.call_count) leg_proc._log_job_end.assert_called_with(datetime(2012, 5, 4, 15, 11, tzinfo=UTC), True, raw_crash.uuid) epc = DotDict() epc.uuid = raw_crash.uuid epc.topmost_filenames = "" epc.processor_notes = "testing_processor:2012" epc.success = True epc.completeddatetime = datetime(2012, 5, 4, 15, 11, tzinfo=UTC) epc.hang_type = 0 epc.java_stack_trace = None epc.Winsock_LSP = None epc.additional_minidumps = ["aux_dump_001"] epc.aux_dump_001 = {"success": True} self.assertEqual(processed_crash, dict(epc)) leg_proc._statistics.assert_has_calls( [mock.call.incr("jobs"), mock.call.incr("restarts")], any_order=True )