| Index: client/site_tests/logging_LogVolume/logging_LogVolume.py
|
| diff --git a/client/site_tests/logging_LogVolume/logging_LogVolume.py b/client/site_tests/logging_LogVolume/logging_LogVolume.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6d66538dc6c5fab678446d782b2bc7801bdd74a7
|
| --- /dev/null
|
| +++ b/client/site_tests/logging_LogVolume/logging_LogVolume.py
|
| @@ -0,0 +1,79 @@
|
| +# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import logging, os, re, subprocess, utils
|
| +from autotest_lib.client.bin import site_login, site_ui_test, test
|
| +from autotest_lib.client.common_lib import error
|
| +
|
| +
|
| +class logging_LogVolume(site_ui_test.UITest):
|
| + version = 1
|
| +
|
| +
|
| + def log_stateful_used(self):
|
| + output = utils.system_output('df /mnt/stateful_partition/')
|
| + matches = re.search('(\d+)%', output)
|
| + if matches is None:
|
| + error.TestError('df failed')
|
| + self._perf['percent_stateful_used'] = int(matches.group(1))
|
| +
|
| +
|
| + def run_once(self):
|
| + if not site_login.wait_for_cryptohome():
|
| + raise error.TestFail('Could not wait for crytohome')
|
| +
|
| + self._perf = {}
|
| + self.log_stateful_used()
|
| + whitelist = open(os.path.join(self.bindir,
|
| + 'stateful_whitelist.txt'))
|
| + patterns = {}
|
| + for pattern in whitelist.readlines():
|
| + pattern = pattern.strip()
|
| + if pattern == '' or pattern[0] == '#':
|
| + continue
|
| + if pattern in patterns:
|
| + logging.error('Duplicate pattern in file: %s' % pattern)
|
| + patterns[pattern] = {
|
| + 'regexp': re.compile(pattern + '$'),
|
| + 'count': 0
|
| + }
|
| +
|
| + find_handle = subprocess.Popen(['find',
|
| + '/mnt/stateful_partition'],
|
| + stdout=subprocess.PIPE)
|
| + stateful_files = 0
|
| + # Count number of files that were found but were not whitelisted.
|
| + unexpected_files = 0
|
| + for filename in find_handle.stdout.readlines():
|
| + filename = filename.strip()[len('/mnt/stateful_partition'):]
|
| + if filename == '':
|
| + continue
|
| + stateful_files += 1
|
| + match = False
|
| + for pattern in patterns:
|
| + regexp = patterns[pattern]['regexp']
|
| + if regexp.match(filename):
|
| + match = True
|
| + patterns[pattern]['count'] += 1
|
| + break
|
| + if not match:
|
| + logging.error('Unexpected file %s' % filename)
|
| + unexpected_files += 1
|
| +
|
| + unmatched_patterns = 0
|
| + for pattern in patterns:
|
| + if patterns[pattern]['count'] == 0:
|
| + logging.warn('No files matched: %s' % pattern)
|
| + unmatched_patterns += 1
|
| +
|
| + self._perf['percent_unused_patterns'] = \
|
| + int(100 * unmatched_patterns / len(patterns))
|
| +
|
| + self._perf['files_in_stateful_partition'] = stateful_files
|
| +
|
| + self.write_perf_keyval(self._perf)
|
| +
|
| + if unexpected_files > 0:
|
| + raise error.TestError('There were %d unexpected files' %
|
| + unexpected_files)
|
|
|