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

Side by Side Diff: server/site_tests/logging_KernelCrashServer/logging_KernelCrashServer.py

Issue 3454023: autotest: Test new meta files in crash directory (Closed) Base URL: http://git.chromium.org/git/autotest.git
Patch Set: Fix bug Created 10 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « server/site_host_attributes.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging, os, shutil, time 5 import logging, os, shutil, time
6 from autotest_lib.client.common_lib import error 6 from autotest_lib.client.common_lib import error
7 from autotest_lib.server import autotest, site_host_attributes, test 7 from autotest_lib.server import autotest, site_host_attributes, test
8 8
9 _CONSENT_FILE = '/home/chronos/Consent To Send Stats'
10 _STOWED_CONSENT_FILE = '/var/lib/kernel-crash-server.consent'
11
9 12
10 class logging_KernelCrashServer(test.test): 13 class logging_KernelCrashServer(test.test):
11 version = 1 14 version = 1
12 15
13 16
17 def _exact_copy(self, source, dest):
18 """Copy remote source to dest removing dest if source does not exist."""
petkov 2010/09/30 05:29:27 I don't quite understand the comment -- you always
19 self._host.run('rm -f "%s"; cp "%s" "%s" 2>/dev/null; true' %
20 (dest, source, dest))
21
22
23 def cleanup(self):
24 self._exact_copy(_STOWED_CONSENT_FILE, _CONSENT_FILE)
25 test.test.cleanup(self)
26
27
28 def _can_disable_consent(self):
29 """Returns whether or not host can have consent disabled.
30
31 Presence of /etc/send_metrics causes ui.conf job (which starts
32 after chromeos_startup) to regenerate a consent file if one
33 does not exist. Therefore, we cannot guarantee that
34 crash-reporter.conf will start with the file gone if we
35 removed it before causing a crash.
36 """
37 status = self._host.run('[ -r /etc/send_metrics ]', ignore_status=True)
38 return status.exit_status != 0
39
40
41 def _crash_it(self, consent):
42 """Crash the host after setting the consent as given."""
43 if consent:
44 self._host.run('echo test-consent > "%s"' % _CONSENT_FILE)
45 else:
46 self._host.run('rm -f "%s"' % _CONSENT_FILE)
47 logging.info('KernelCrashServer: crashing %s' % self._host.hostname)
48 boot_id = self._host.get_boot_id()
49 self._host.run(
50 'sh -c "sync; sleep 1; echo bug > /proc/breakme" >/dev/null 2>&1 &')
51 self._host.wait_for_restart(old_boot_id=boot_id)
52
53
14 def run_once(self, host=None): 54 def run_once(self, host=None):
55 self._host = host
56 client_attributes = site_host_attributes.HostAttributes(host.hostname)
15 client_at = autotest.Autotest(host) 57 client_at = autotest.Autotest(host)
58 self._exact_copy(_CONSENT_FILE, _STOWED_CONSENT_FILE)
59
16 client_at.run_test('logging_KernelCrash', 60 client_at.run_test('logging_KernelCrash',
17 tag='before-crash', 61 tag='before-crash',
18 is_before=True) 62 is_before=True,
63 consent=True)
19 64
20 client_attributes = site_host_attributes.HostAttributes(host.hostname)
21 if not client_attributes.has_working_kcrash: 65 if not client_attributes.has_working_kcrash:
22 raise error.TestNAError( 66 raise error.TestNAError(
23 'This device is unable to report kernel crashes') 67 'This device is unable to report kernel crashes')
24 # Crash the client
25 logging.info('KernelCrashServer: crashing %s' % host.hostname)
26 boot_id = host.get_boot_id()
27 host.run('sh -c "sleep 1; echo bug > /proc/breakme" >/dev/null 2>&1 &')
28 host.wait_for_restart(old_boot_id=boot_id)
29 68
30 # Check for crash handling 69 self._crash_it(True)
70
71 # Check for crash handling with consent.
31 client_at.run_test('logging_KernelCrash', 72 client_at.run_test('logging_KernelCrash',
32 tag='after-crash', 73 tag='after-crash-consent',
33 is_before=False) 74 is_before=False,
75 consent=True)
76
77 if not self._can_disable_consent():
78 logging.info('This device always has metrics enabled, '
79 'skipping test of metrics disabled mode.')
80 else:
81 self._crash_it(False)
82
83 # Check for crash handling without consent.
84 client_at.run_test('logging_KernelCrash',
85 tag='after-crash-no-consent',
86 is_before=False,
87 consent=False)
OLDNEW
« no previous file with comments | « server/site_host_attributes.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698