Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: client/site_tests/logging_UserCrash/logging_UserCrash.py

Issue 3119046: Test crash report enqueue limit (Closed) Base URL: http://git.chromium.org/git/autotest.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/site_tests/logging_UserCrash/logging_UserCrash.py
diff --git a/client/site_tests/logging_UserCrash/logging_UserCrash.py b/client/site_tests/logging_UserCrash/logging_UserCrash.py
index e976bf7f697cbd3c4832412195eb33f5f6858252..89edd657168cc13f56818cc1b0eaaa165b0e1264 100644
--- a/client/site_tests/logging_UserCrash/logging_UserCrash.py
+++ b/client/site_tests/logging_UserCrash/logging_UserCrash.py
@@ -9,6 +9,7 @@ from autotest_lib.client.common_lib import error, utils
_CORE_PATTERN = '/proc/sys/kernel/core_pattern'
_LEAVE_CORE_PATH = '/root/.leave_core'
+_MAX_CRASH_DIRECTORY_SIZE = 8
class logging_UserCrash(site_crash_test.CrashTest):
@@ -180,6 +181,7 @@ class logging_UserCrash(site_crash_test.CrashTest):
'Timeout waiting for crash_reporter to finish: ' +
self._log_reader.get_logs()))
+ logging.debug('crash_reporter_caught message: ' + expected_message)
crash_reporter_caught = self._log_reader.can_find(expected_message)
result = {'crashed': crasher.returncode == expected_result,
@@ -359,6 +361,48 @@ class logging_UserCrash(site_crash_test.CrashTest):
self._check_crashing_process('root', False)
+ def _test_max_enqueued_crashes(self):
+ """Test that _MAX_CRASH_DIRECTORY_SIZE is enforced."""
+ self._log_reader.set_start_by_current()
+ username = 'root'
+
+ crash_dir = self._get_crash_dir(username)
+ full_message = ('Crash directory %s already full with %d pending '
+ 'reports' % (crash_dir, _MAX_CRASH_DIRECTORY_SIZE))
+
+ # Fill up the queue.
+ for i in range(0, _MAX_CRASH_DIRECTORY_SIZE):
+ result = self._run_crasher_process(username, with_breakpad=False)
+ if not result['crashed']:
+ raise error.TestFail('failure while setting up queue: %d' %
+ result['returncode'])
+ if self._log_reader.can_find(full_message):
+ raise error.TestFail('unexpected full message: ' + full_message)
+
+ crash_dir_size = len(os.listdir(crash_dir))
+ # For debugging
+ utils.system('ls -l %s' % crash_dir)
+ logging.info('Crash directory had %d entries' % crash_dir_size)
+
+ # Crash a bunch more times, but make sure no new reports
+ # are enqueued.
+ for i in range(0, 10):
+ self._log_reader.set_start_by_current()
+ result = self._run_crasher_process(username, with_breakpad=False)
+ logging.info('New log messages: %s' % self._log_reader.get_logs())
+ if not result['crashed']:
+ raise error.TestFail('failure after setting up queue: %d' %
+ result['returncode'])
+ if not self._log_reader.can_find(full_message):
+ raise error.TestFail('expected full message: ' + full_message)
+
+ if crash_dir_size != len(os.listdir(crash_dir)):
+ utils.system('ls -l %s' % crash_dir)
+ raise error.TestFail('expected no new files (now %d were %d)',
+ len(os.listdir(crash_dir)),
+ crash_dir_size)
+
+
def _check_core_file_persisting(self, expect_persist):
self._log_reader.set_start_by_current()
@@ -430,6 +474,7 @@ class logging_UserCrash(site_crash_test.CrashTest):
'chronos_nobreakpad_crasher',
'root_breakpad_crasher',
'root_nobreakpad_crasher',
+ 'max_enqueued_crashes',
'core_file_persists_in_debug',
'core_file_removed_in_production'],
initialize_crash_reporter = True)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698