Example #1
0
    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
                )
Example #2
0
    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
                )