| Index: client/bin/site_crash_test.py
|
| diff --git a/client/bin/site_crash_test.py b/client/bin/site_crash_test.py
|
| index 8a556b2291f7c559bd8777995104b4c196359c23..b1bb134020a94b2a0f37bed815d6923dea395b77 100644
|
| --- a/client/bin/site_crash_test.py
|
| +++ b/client/bin/site_crash_test.py
|
| @@ -92,14 +92,21 @@ class CrashTest(test.test):
|
| utils.system('%s --init --nounclean_check' % self._CRASH_REPORTER_PATH)
|
|
|
|
|
| - def create_fake_crash_dir_entry(self, name):
|
| + def write_crash_dir_entry(self, name, contents):
|
| entry = os.path.join(self._SYSTEM_CRASH_DIR, name)
|
| if not os.path.exists(self._SYSTEM_CRASH_DIR):
|
| os.makedirs(self._SYSTEM_CRASH_DIR)
|
| - utils.system('touch ' + entry)
|
| + utils.open_write_close(entry, contents)
|
| return entry
|
|
|
|
|
| + def write_fake_meta(self, name, exec_name):
|
| + return self.write_crash_dir_entry(name,
|
| + 'exec_name=%s\n'
|
| + 'ver=my_ver\n'
|
| + 'done=1\n' % exec_name)
|
| +
|
| +
|
| def _prepare_sender_one_crash(self,
|
| send_success,
|
| reports_enabled,
|
| @@ -108,7 +115,8 @@ class CrashTest(test.test):
|
| self._set_sending_mock(mock_enabled=True, send_success=send_success)
|
| self._set_consent(reports_enabled)
|
| if report is None:
|
| - report = self.create_fake_crash_dir_entry('fake.dmp')
|
| + self.write_crash_dir_entry('fake.dmp', '')
|
| + report = self.write_fake_meta('fake.meta', 'fake')
|
| return report
|
|
|
|
|
| @@ -124,13 +132,13 @@ class CrashTest(test.test):
|
| Returns:
|
| A dictionary with these values:
|
| exec_name: name of executable which crashed
|
| + meta_path: path to the report metadata file
|
| + output: the output from the script, copied
|
| report_kind: kind of report sent (minidump vs kernel)
|
| - report_name: name of the report sent
|
| send_attempt: did the script attempt to send a crash.
|
| send_success: if it attempted, was the crash send successful.
|
| sleep_time: if it attempted, how long did it sleep before
|
| sending (if mocked, how long would it have slept)
|
| - output: the output from the script, copied
|
| """
|
| sleep_match = re.search('Scheduled to send in (\d+)s', output)
|
| send_attempt = sleep_match is not None
|
| @@ -138,13 +146,18 @@ class CrashTest(test.test):
|
| sleep_time = int(sleep_match.group(1))
|
| else:
|
| sleep_time = None
|
| - report_kind_match = re.search('Report: (\S+) \((\S+)\)', output)
|
| - if report_kind_match:
|
| - report_name = report_kind_match.group(1)
|
| - report_kind = report_kind_match.group(2)
|
| + meta_match = re.search('Metadata: (\S+) \((\S+)\)', output)
|
| + if meta_match:
|
| + meta_path = meta_match.group(1)
|
| + report_kind = meta_match.group(2)
|
| else:
|
| - report_name = None
|
| + meta_path = None
|
| report_kind = None
|
| + payload_match = re.search('Payload: (\S+)', output)
|
| + if payload_match:
|
| + report_payload = payload_match.group(1)
|
| + else:
|
| + report_payload = None
|
| exec_name_match = re.search('Exec name: (\S+)', output)
|
| if exec_name_match:
|
| exec_name = exec_name_match.group(1)
|
| @@ -153,7 +166,8 @@ class CrashTest(test.test):
|
| send_success = 'Mocking successful send' in output
|
| return {'exec_name': exec_name,
|
| 'report_kind': report_kind,
|
| - 'report_name': report_name,
|
| + 'meta_path': meta_path,
|
| + 'report_payload': report_payload,
|
| 'send_attempt': send_attempt,
|
| 'send_success': send_success,
|
| 'sleep_time': sleep_time,
|
| @@ -232,6 +246,7 @@ class CrashTest(test.test):
|
| test.test.initialize(self)
|
| self._log_reader = site_log_reader.LogReader()
|
| self._leave_crash_sending = True
|
| + self._automatic_consent_saving = True
|
|
|
|
|
| def cleanup(self):
|
| @@ -239,7 +254,8 @@ class CrashTest(test.test):
|
| self._clear_spooled_crashes()
|
| self._set_sending(self._leave_crash_sending)
|
| self._set_sending_mock(mock_enabled=False)
|
| - self._pop_consent()
|
| + if self._automatic_consent_saving:
|
| + self._pop_consent()
|
| test.test.cleanup(self)
|
|
|
|
|
| @@ -256,7 +272,8 @@ class CrashTest(test.test):
|
| must_run_all: should make sure every test in this class is mentioned
|
| in test_names
|
| """
|
| - self._push_consent()
|
| + if self._automatic_consent_saving:
|
| + self._push_consent()
|
|
|
| if must_run_all:
|
| # Sanity check test_names is complete
|
| @@ -270,6 +287,8 @@ class CrashTest(test.test):
|
| logging.info(('=' * 20) + ('Running %s' % test_name) + ('=' * 20))
|
| if initialize_crash_reporter:
|
| self._initialize_crash_reporter()
|
| + # Disable crash_sender and kill off any running ones.
|
| + self._set_sending(False)
|
| self._kill_running_sender()
|
| self._reset_rate_limiting()
|
| if clear_spool_first:
|
|
|