[apparmor] [PATCH 1/2] parser: Run caching tests even when apparmorfs is not mounted
Tyler Hicks
tyhicks at canonical.com
Wed Aug 12 17:17:43 UTC 2015
The contents of the policy cache files varies based on kernel feature
support found in apparmorfs but the caching tests are mostly about
whether or not a cache file was generated and with the right timestamps.
This patch makes it so that the tests are not entirely skipped when
apparmorfs is not available. Instead, a flat features file will be used
in most cases and only the specific tests that require apparmorfs will
be skipped.
Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
---
parser/tst/caching.py | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/parser/tst/caching.py b/parser/tst/caching.py
index df854d7..d72f4f0 100755
--- a/parser/tst/caching.py
+++ b/parser/tst/caching.py
@@ -56,11 +56,6 @@ class AAParserCachingCommon(testlib.AATestTemplate):
# REPORT ALL THE OUTPUT
self.maxDiff = None
- # skip all the things if apparmor securityfs isn't mounted
- if not os.path.exists("/sys/kernel/security/apparmor"):
- raise unittest.SkipTest("WARNING: /sys/kernel/security/apparmor does not exist. "
- "Skipping tests")
-
self.tmp_dir = tempfile.mkdtemp(prefix='aa-caching-')
os.chmod(self.tmp_dir, 0o755)
@@ -81,6 +76,9 @@ class AAParserCachingCommon(testlib.AATestTemplate):
self.cmd_prefix = [config.parser, '--base', self.tmp_dir, '--skip-kernel-load']
+ if not self.is_apparmorfs_mounted():
+ self.cmd_prefix += ['-M', './features_files/features.all']
+
def tearDown(self):
'''teardown for each test'''
@@ -98,7 +96,17 @@ class AAParserCachingCommon(testlib.AATestTemplate):
self.assertFalse(os.path.exists(path),
'test created file %s, when it was not expected to do so' % path)
+ def is_apparmorfs_mounted(self):
+ return os.path.exists("/sys/kernel/security/apparmor")
+
+ def require_apparmorfs(self):
+ # skip the test if apparmor securityfs isn't mounted
+ if not self.is_apparmorfs_mounted():
+ raise unittest.SkipTest("WARNING: /sys/kernel/security/apparmor does not exist. Skipping test.")
+
def compare_features_file(self, features_path, expected=True):
+ # tests that need this function should call require_apparmorfs() early
+
# compare features contents
expected_output = testlib.read_features_dir('/sys/kernel/security/apparmor/features')
with open(features_path) as f:
@@ -152,6 +160,8 @@ class AAParserBasicCachingTests(AAParserCachingCommon):
def test_features_match_when_caching(self):
'''test features file is written when caching'''
+ self.require_apparmorfs()
+
cmd = list(self.cmd_prefix)
cmd.extend(['-q', '--write-cache', '-r', self.profile])
self.run_cmd_check(cmd)
@@ -268,6 +278,8 @@ class AAParserCachingTests(AAParserCachingCommon):
def test_cache_writing_does_not_overwrite_features_when_features_differ(self):
'''test cache writing does not overwrite the features files when it differs and --skip-bad-cache is given'''
+ self.require_apparmorfs()
+
features_file = testlib.write_file(self.cache_dir, '.features', 'monkey\n')
cmd = list(self.cmd_prefix)
@@ -290,6 +302,8 @@ class AAParserCachingTests(AAParserCachingCommon):
def test_cache_writing_updates_features(self):
'''test cache writing updates features'''
+ self.require_apparmorfs()
+
features_file = testlib.write_file(self.cache_dir, '.features', 'monkey\n')
cmd = list(self.cmd_prefix)
--
2.1.4
More information about the AppArmor
mailing list