Index: client/site_tests/logging_CrashSender/logging_CrashSender.py |
diff --git a/client/site_tests/logging_CrashSender/logging_CrashSender.py b/client/site_tests/logging_CrashSender/logging_CrashSender.py |
index 9e50ba274393fa15af6b5d6d869150413e1372fc..d6a754f0fcdbe7f99d52e4a5601470ccb3e51a9f 100644 |
--- a/client/site_tests/logging_CrashSender/logging_CrashSender.py |
+++ b/client/site_tests/logging_CrashSender/logging_CrashSender.py |
@@ -17,17 +17,36 @@ class logging_CrashSender(site_crash_test.CrashTest): |
version = 1 |
- def _test_sender_simple(self): |
- """Test sending a single crash.""" |
+ def _test_sender_simple_minidump(self): |
+ """Test sending a single minidump crash report.""" |
self._set_sending(True) |
result = self._call_sender_one_crash() |
- if (result['minidump_exists'] or |
+ if (result['report_exists'] or |
result['rate_count'] != 1 or |
not result['send_attempt'] or |
not result['send_success'] or |
result['sleep_time'] < 0 or |
- result['sleep_time'] >= _SECONDS_SEND_SPREAD): |
- raise error.TestFail('Simple send failed') |
+ result['sleep_time'] >= _SECONDS_SEND_SPREAD or |
+ result['report_kind'] != 'minidump' or |
+ result['exec_name'] != 'fake'): |
+ raise error.TestFail('Simple minidump send failed') |
+ |
+ |
+ def _test_sender_simple_kernel_crash(self): |
+ """Test sending a single kcrash report.""" |
+ self._set_sending(True) |
+ kcrash_fake_report = self.create_fake_crash_dir_entry( |
+ 'kernel.today.kcrash') |
+ result = self._call_sender_one_crash(report=kcrash_fake_report) |
+ if (result['report_exists'] or |
+ result['rate_count'] != 1 or |
+ not result['send_attempt'] or |
+ not result['send_success'] or |
+ result['sleep_time'] < 0 or |
+ result['sleep_time'] >= _SECONDS_SEND_SPREAD or |
+ result['report_kind'] != 'kcrash' or |
+ result['exec_name'] != 'kernel'): |
+ raise error.TestFail('Simple kcrash send failed') |
def _test_sender_pausing(self): |
@@ -38,7 +57,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
asynchronously to these tests.""" |
self._set_sending(False) |
result = self._call_sender_one_crash() |
- if (not result['minidump_exists'] or |
+ if (not result['report_exists'] or |
not 'Exiting early due to' in result['output'] or |
result['send_attempt']): |
raise error.TestFail('Sender did not pause') |
@@ -48,7 +67,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
"""Test that when reporting is disabled, we don't send.""" |
self._set_sending(True) |
result = self._call_sender_one_crash(reports_enabled=False) |
- if (result['minidump_exists'] or |
+ if (result['report_exists'] or |
not 'Uploading is disabled' in result['output'] or |
result['send_attempt']): |
raise error.TestFail('Sender did not handle reports disabled') |
@@ -74,7 +93,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
_MIN_UNIQUE_TIMES, sleep_times) |
# Now the _DAILY_RATE_LIMIT ^ th send request should fail. |
result = self._call_sender_one_crash() |
- if (not result['minidump_exists'] or |
+ if (not result['report_exists'] or |
not 'Cannot send more crashes' in result['output'] or |
result['rate_count'] != _DAILY_RATE_LIMIT): |
raise error.TestFail('Crash rate limiting did not take effect') |
@@ -103,7 +122,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
utils.open_write_close(_CRASH_SENDER_RUN_PATH, str(os.getpid())) |
result = self._call_sender_one_crash() |
if (not 'Already running.' in result['output'] or |
- result['send_attempt'] or not result['minidump_exists']): |
+ result['send_attempt'] or not result['report_exists']): |
raise error.TestFail('Allowed multiple instances to run') |
os.remove(_CRASH_SENDER_RUN_PATH) |
@@ -117,7 +136,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
if result['rate_count'] != 1: |
raise error.TestFail('Did not count a failed send against rate ' |
'limiting') |
- if not result['minidump_exists']: |
+ if not result['report_exists']: |
raise error.TestFail('Expected minidump to be saved for later ' |
'sending') |
@@ -130,7 +149,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
self._set_sending(True) |
# Call prepare function to make sure the directory exists. |
core_name = 'something.ending.with.core' |
- core_path = self._create_fake_crash_dir_entry(core_name) |
+ core_path = self.create_fake_crash_dir_entry(core_name) |
result = self._call_sender_one_crash() |
if not 'Ignoring core file.' in result['output']: |
raise error.TestFail('Expected ignoring core file message') |
@@ -138,6 +157,18 @@ class logging_CrashSender(site_crash_test.CrashTest): |
raise error.TestFail('Core file was removed') |
+ def _test_sender_unknown_report_kind(self): |
+ self._set_sending(True) |
+ bad_report = self.create_fake_crash_dir_entry('fake.bad') |
+ result = self._call_sender_one_crash(report=bad_report) |
+ if (result['report_exists'] or |
+ result['rate_count'] != 0 or |
+ result['send_attempt'] or |
+ result['send_success'] or |
+ not 'Unknown report' in result['output']): |
+ raise error.TestFail('Error handling of unknown report kind failed') |
+ |
+ |
def _test_cron_runs(self): |
"""Test sender runs successfully as part of the hourly cron job. |
@@ -149,7 +180,7 @@ class logging_CrashSender(site_crash_test.CrashTest): |
minidump = self._prepare_sender_one_crash(send_success=True, |
reports_enabled=True, |
username='root', |
- minidump=None) |
+ report=None) |
if not os.path.exists(minidump): |
raise error.TestError('minidump not created') |
utils.system(_CRASH_SENDER_CRON_PATH) |
@@ -166,11 +197,13 @@ class logging_CrashSender(site_crash_test.CrashTest): |
def run_once(self): |
self.run_crash_tests([ |
- 'sender_simple', |
+ 'sender_simple_minidump', |
+ 'sender_simple_kernel_crash', |
'sender_pausing', |
'sender_reports_disabled', |
'sender_rate_limiting', |
'sender_single_instance', |
'sender_send_fails', |
'sender_leaves_core_files', |
+ 'sender_unknown_report_kind', |
'cron_runs']) |