This patch modifies the parser's caching test to more accurately detect
whether or not the filesystem has a fine enough timestamp resolution.
Occasionally even on filesystems like ext3, the two files' creation
dates would differ when created less than a second apart, which would
typically cause the 'Cache is used when cache is newer' test to fail
because the cached file would have the same timestamp as the profile.

The fix creates 10 files 0.1 seconds apart and ensures that all ten
have distinct timestamps.

(The occasional failure was caught in testing runs like
 https://bugs.launchpad.net/qa-regression-testing/+bug/1087061/ )

=== modified file 'parser/tst/caching.sh'
--- parser/tst/caching.sh       2012-11-06 01:22:37 +0000
+++ parser/tst/caching.sh       2012-12-08 00:03:55 +0000
@@ -24,15 +24,17 @@
 
 # Detect and slow down cache test when filesystem can't represent nanosecond 
delays.
 timeout=0.1
-touch $basedir/test1
-sleep $timeout
-touch $basedir/test2
-TIMES=$(stat $basedir/test1 $basedir/test2 -c %z | cut -d" " -f2 | cut -d. -f2 
| sort -u | wc -l)
-if [ $TIMES -ne 2 ]; then
+_count=10
+for ((i = 0; i < ${_count} ; i++)) ; do
+       touch $basedir/test${i}
+       sleep $timeout
+done
+TIMES=$(stat $basedir/test* -c %z | cut -d" " -f2 | cut -d: -f3 | sort -u | wc 
-l)
+if [ $TIMES -ne ${_count} ]; then
     echo "WARNING: $basedir lacks nanosecond timestamp resolution, falling 
back to slower test"
     timeout=1
 fi
-rm -f $basedir/test1 $basedir/test2
+rm -f $basedir/test*
 
 echo -n "Profiles are not cached by default: "
 ${APPARMOR_PARSER} $ARGS -q -r $basedir/$profile

-- 
Steve Beattie
<[email protected]>
http://NxNW.org/~steve/

Attachment: signature.asc
Description: Digital signature

-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to