Bug 8146

Summary: ptest - some test cases are failing for acl
Product: [QA/Testing] Runtime Testing Reporter: Ajay Kumar <ajay.gju>
Component: generalAssignee: Ajay Kumar <ajay.gju>
Status: RESOLVED DUPLICATE QA Contact: Ross Burton <ross.burton>
Severity: normal    
Priority: Medium CC: jose.perez.carranza, mhalstead, randy.macleod
Version: 1.8   
Target Milestone: 2.2   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: Yes (doc changes required)

Description Ajay Kumar 2015-08-11 10:02:27 UTC
I tried to run ptest for "acl" and encountered the below error:

root@qemux86:/usr/lib/acl/ptest# ./run-ptest 
./run-ptest: line 3: gpasswd: command not found
make: Entering directory '/usr/lib/acl/ptest/test'
*** malformed-restore.test ***
PASS: $ cp malformed-restore-double-owner.acl tmp.acl
PASS: $ sed -i "s/USER/root/g" tmp.acl
PASS: $ sed -i "s/GROUP/root/g" tmp.acl
PASS: $ touch tmp
PASS: $ setfacl --restore tmp.acl
PASS: $ rm tmp.acl tmp
PASS: $ mkdir tmp
PASS: $ chmod 1777 tmp
PASS: $ getfacl tmp > tmp.acl
PASS: $ sed -i 's/--t/--x/g' tmp.acl
PASS: $ setfacl --restore tmp.acl
PASS: $ rmdir tmp
PASS: $ rm tmp.acl
13 commands (13 passed, 0 failed)
*** sbits-restore.test ***
PASS: $ umask 022
PASS: $ mkdir d
PASS: $ touch d/g
PASS: $ touch d/u
PASS: $ chmod u+s d/u
PASS: $ chmod g+s d/g
PASS: $ chmod +t d
PASS: $ getfacl -R d > d.acl
PASS: $ rm -R d
PASS: $ mkdir d
PASS: $ touch d/g
PASS: $ touch d/u
PASS: $ setfacl --restore d.acl
FAIL: $ ls -dl d | awk '{print $1}' | sed 's/.$//g'
drwxr-xr-                             != drwxr-xr-t
FAIL: $ ls -dl d/u | awk '{print $1}' | sed 's/.$//g'
-rwSr--r-                             != -rwSr--r--
FAIL: $ ls -dl d/g | awk '{print $1}' | sed 's/.$//g'
-rw-r-Sr-                             != -rw-r-Sr--
PASS: $ rm -Rf d
17 commands (14 passed, 3 failed)
make: *** [sbits-restore.test] Error 3
Makefile:39: recipe for target 'sbits-restore.test' failed
*** utf8-filenames.test ***
PASS: $ export UPATH="官官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話官話話官話官話官話>官話官話話官話官"
PASS: $ mkdir -p $UPATH/$UPATH/$UPATH
PASS: $ touch $UPATH/$UPATH/$UPATH/$UPATH
PASS: $ getfacl $UPATH/$UPATH/$UPATH/$UPATH > utf8-filenames.acl
PASS: $ setfacl --restore=utf8-filenames.acl
PASS: $ rm -R $UPATH
PASS: $ rm utf8-filenames.acl
7 commands (7 passed, 0 failed)
*** setfacl-X.test ***
PASS: $ umask 022
PASS: $ mkdir d
PASS: $ cd d
PASS: $ setfacl -dm u:bin:rwx .
PASS: $ touch f g
PASS: $ chmod ugo+x f
PASS: $ setfacl -m u:bin:rw,g::r g
PASS: $ setfacl -m u:root:rwX f g
PASS: $ getfacl --omit-header --no-effective f g
PASS: $ rm f g
PASS: $ touch f g
PASS: $ mkdir d e
PASS: $ setfacl -n -m u:root:rwX d f e g
PASS: $ getfacl --omit-header --no-effective d e f g
PASS: $ rm f g
PASS: $ rmdir d e
PASS: $ touch f g
PASS: $ mkdir d e
PASS: $ setfacl -n -m u:root:rwX f d g e
PASS: $ getfacl --omit-header --no-effective d e f g
PASS: $ rm f g
PASS: $ rmdir d e
PASS: $ cd ..
PASS: $ rm -rf d
24 commands (24 passed, 0 failed)
*** getfacl-noacl.test ***
PASS: $ mkdir test
PASS: $ cd test
PASS: $ umask 027
PASS: $ touch x
PASS: $ getfacl --omit-header x
PASS: $ getfacl --omit-header --access x
PASS: $ getfacl --omit-header -d x
PASS: $ getfacl --omit-header -d .
PASS: $ getfacl --omit-header -d /
PASS: $ getfacl --skip-base x
PASS: $ getfacl --omit-header --all-effective x
PASS: $ getfacl --omit-header --no-effective x
PASS: $ mkdir d
PASS: $ touch d/y
PASS: $ ln -s d l
PASS: $ getfacl -dR . | grep file | sort
PASS: $ ln -s l ll
PASS: $ getfacl -dLR ll | grep file | sort
PASS: $ rm l ll x
PASS: $ rm -rf d
PASS: $ cd ..
PASS: $ rmdir test
22 commands (22 passed, 0 failed)
*** getfacl-recursive.test ***
PASS: $ umask 022
PASS: $ mkdir -p 1/2/3
PASS: $ mkdir 1/link
PASS: $ touch 1/link/file
PASS: $ ln -s `pwd`/1/link 1/2/link
PASS: $ getfacl -P -R 1/2 | ./sort-getfacl-output
PASS: $ getfacl -R 1/2 | ./sort-getfacl-output
PASS: $ getfacl -R -L 1/2 | ./sort-getfacl-output
PASS: $ getfacl -P -R 1 | ./sort-getfacl-output
PASS: $ getfacl -R 1 | ./sort-getfacl-output
PASS: $ getfacl -R -L 1 | ./sort-getfacl-output
PASS: $ rm -R 1/
12 commands (12 passed, 0 failed)
*** cp.test ***
PASS: $ umask 022
PASS: $ mkdir d
PASS: $ cd d
PASS: $ touch f
PASS: $ setfacl -m u:bin:rw f
FAIL: $ ls -l f | awk -- '{ print $1 }'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ cp f g
FAIL: $ ls -l g | awk -- '{ print $1 }' | sed 's/.$//g'
-rw-r--r-                             != -rw-r--r--
PASS: $ rm g
PASS: $ cp -p f g
FAIL: $ ls -l f | awk -- '{ print $1 }'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ mkdir h
PASS: $ echo blubb > h/x
PASS: $ cp -rp h i
PASS: $ cat i/x
PASS: $ rm -r i
PASS: $ setfacl -R -m u:bin:rwx h
PASS: $ getfacl --omit-header h/x
PASS: $ cp -rp h i
FAIL: $ getfacl --omit-header i/x
user::rw-                             == user::rw-
group::rwx                            != user:bin:rwx
other::r--                            != group::r--
                                      != mask::rwx
~                                     != other::r--
~                                     != 
PASS: $ cd ..
PASS: $ rm -r d
22 commands (18 passed, 4 failed)
make: *** [cp.test] Error 4
Makefile:39: recipe for target 'cp.test' failed
*** misc.test ***
PASS: $ rm -f f
PASS: $ umask 027
PASS: $ touch f
PASS: $ setfacl -m u::r f
PASS: $ setfacl -m u::rw,u:bin:rw f
FAIL: $ ls -dl f | awk '{print $1}'
-rw-rw----                            != -rw-rw----+
PASS: $ getfacl --omit-header f
PASS: $ rm f
PASS: $ umask 022
PASS: $ touch f
PASS: $ setfacl -m u:bin:rw f
FAIL: $ ls -dl f | awk '{print $1}'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ getfacl --omit-header f
PASS: $ rm f
PASS: $ umask 027
PASS: $ mkdir d
PASS: $ setfacl -m u:bin:rwx d
FAIL: $ ls -dl d | awk '{print $1}'
drwxrwx---                            != drwxrwx---+
PASS: $ getfacl --omit-header d
PASS: $ rmdir d
PASS: $ umask 022
PASS: $ mkdir d
PASS: $ setfacl -m u:bin:rwx d
FAIL: $ ls -dl d | awk '{print $1}'
drwxrwxr-x                            != drwxrwxr-x+
PASS: $ getfacl --omit-header d
PASS: $ rmdir d
PASS: $ umask 022
PASS: $ touch f
PASS: $ setfacl -m u:bin:rw,u:daemon:r f
FAIL: $ ls -dl f | awk '{print $1}'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ getfacl --omit-header f
PASS: $ setfacl -m g:users:rw,g:daemon:r f
FAIL: $ ls -dl f | awk '{print $1}'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ getfacl --omit-header f
PASS: $ setfacl -x g:users f
FAIL: $ ls -dl f | awk '{print $1}'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ getfacl --omit-header f
PASS: $ setfacl -x u:daemon f
FAIL: $ ls -dl f | awk '{print $1}'
-rw-rw-r--                            != -rw-rw-r--+
PASS: $ getfacl --omit-header f
PASS: $ rm f
PASS: $ umask 027
PASS: $ mkdir d
PASS: $ setfacl -m u:bin:rwx,u:daemon:rw,d:u:bin:rwx,d:m:rx d
FAIL: $ ls -dl d | awk '{print $1}'
drwxrwx---                            != drwxrwx---+
PASS: $ getfacl --omit-header d
PASS: $ umask 027
PASS: $ touch d/f
FAIL: $ ls -dl d/f | awk '{print $1}'
-rw-r-----                            != -rw-r-----+
PASS: $ getfacl --omit-header d/f
PASS: $ rm d/f
PASS: $ umask 022
PASS: $ touch d/f
FAIL: $ ls -dl d/f | awk '{print $1}'
-rw-r-----                            != -rw-r-----+
PASS: $ getfacl --omit-header d/f
PASS: $ rm d/f
PASS: $ umask 000
PASS: $ mkdir d/d
FAIL: $ ls -dl d/d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d/d
PASS: $ rmdir d/d
PASS: $ umask 022
PASS: $ mkdir d/d
FAIL: $ ls -dl d/d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d/d
PASS: $ setfacl -nm u:daemon:rx,d:u:daemon:rx,g:users:rx,g:daemon:rwx d/d
FAIL: $ ls -dl d/d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d/d
PASS: $ ln -s d d/l
FAIL: $ ls -dl d/l | awk '{print $1}' | sed 's/.$//g'
lrwxrwxrw                             != lrwxrwxrwx
FAIL: $ ls -dl -L d/l | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d/l
PASS: $ rm d/l
PASS: $ setfacl -m g:daemon:rx,u:bin:rx d/d
FAIL: $ ls -dl d/d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d/d
PASS: $ setfacl -m d:u:bin:rwx d/d
FAIL: $ ls -dl d/d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d/d
PASS: $ rmdir d/d
PASS: $ setfacl -k d
FAIL: $ ls -dl d | awk '{print $1}'
drwxrwx---                            != drwxrwx---+
PASS: $ getfacl --omit-header d
PASS: $ setfacl -b d
FAIL: $ ls -dl d | awk '{print $1}' | sed 's/.$//g'
drwxr-x--                             != drwxr-x---
PASS: $ getfacl --omit-header d
PASS: $ chmod 775 d
FAIL: $ ls -dl d | awk '{print $1}' | sed 's/.$//g'
drwxrwxr-                             != drwxrwxr-x
PASS: $ getfacl --omit-header d
PASS: $ rmdir d
PASS: $ umask 002
PASS: $ mkdir d
PASS: $ setfacl -m u:daemon:rwx,u:bin:rx,d:u:daemon:rwx,d:u:bin:rx d
FAIL: $ ls -dl d | awk '{print $1}'
drwxrwxr-x                            != drwxrwxr-x+
PASS: $ getfacl --omit-header d
PASS: $ chmod 750 d
FAIL: $ ls -dl d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d
PASS: $ chmod 750 d
FAIL: $ ls -dl d | awk '{print $1}'
drwxr-x---                            != drwxr-x---+
PASS: $ getfacl --omit-header d
PASS: $ rmdir d
PASS: $ mkdir d
PASS: $ ln -s d/a d/b
PASS: $ getfacl -R d
PASS: $ setfacl -R -m u:bin:rw d
PASS: $ getfacl -RL d
PASS: $ setfacl -RL -m u:bin:rw d
PASS: $ rm -R d
PASS: $ echo "# owner: root" > f
PASS: $ setfacl --restore=f 2>&1
111 commands (87 passed, 24 failed)
make: *** [misc.test] Error 24
make: Target 'tests' not remade because of errors.
Makefile:39: recipe for target 'misc.test' failed
Note: Tests must run as root
*** root/restore.test ***
PASS: $ touch passwd
PASS: $ chmod 755 passwd
PASS: $ chmod u+s passwd
PASS: $ getfacl passwd > passwd.acl
PASS: $ cat passwd.acl
PASS: $ chown bin passwd
PASS: $ chmod u+s passwd
PASS: $ setfacl --restore passwd.acl
PASS: $ ls -dl passwd | awk '{print $1 " " $3 " " $4}'
PASS: $ rm passwd passwd.acl
10 commands (10 passed, 0 failed)
Note: Tests must run as root
*** root/setfacl.test ***
PASS: $ mkdir d
PASS: $ chown bin:bin d
PASS: $ cd d
PASS: $ su bin
[(2,0)(2 2,2 2)]PASS: $ sg bin
PASS: $ umask 027
PASS: $ touch g
PASS: $ ls -dl g | awk '{print $1}'
PASS: $ setfacl -m m:- g
FAIL: $ ls -dl g | awk '{print $1}'
-rw-------                            != -rw-------+
PASS: $ getfacl g
PASS: $ setfacl -x m g
PASS: $ getfacl g
PASS: $ setfacl -m u:daemon:rw g
PASS: $ getfacl g
PASS: $ setfacl -m u::rwx,g::r-x,o:- g
PASS: $ getfacl g
PASS: $ setfacl -m u::rwx,g::r-x,o:-,m:- g
PASS: $ getfacl g
PASS: $ setfacl -m u::rwx,g::r-x,o:-,u:root:-,m:- g
PASS: $ getfacl g
PASS: $ setfacl -m u::rwx,g::r-x,o:-,u:root:-,m:- g
PASS: $ getfacl g
PASS: $ setfacl -m u::rwx,g::r-x,o:-,u:root:- g
PASS: $ getfacl g
PASS: $ setfacl --test -x u: g
PASS: $ setfacl --test -x u:x
PASS: $ setfacl -m d:u:root:rwx g
PASS: $ setfacl -x m g
PASS: $ mkdir d
PASS: $ setfacl --test -m u::rwx,u:bin:rwx,g::r-x,o::--- d
PASS: $ setfacl --test -m u::rwx,u:bin:rwx,g::r-x,m::---,o::--- d
PASS: $ setfacl --test -d -m u::rwx,u:bin:rwx,g::r-x,o::--- d
PASS: $ setfacl --test -d -m u::rwx,u:bin:rwx,g::r-x,m::---,o::--- d
PASS: $ su
PASS: $ cd ..
PASS: $ rm -r d
37 commands (36 passed, 1 failed)
make: *** [root/setfacl.test] Error 1
Makefile:45: recipe for target 'root/setfacl.test' failed
Note: Tests must run as root
*** root/permissions.test ***
PASS: $ id -u
PASS: $ mkdir d
PASS: $ cd d
PASS: $ umask 027
PASS: $ touch f
PASS: $ ls -l f | awk -- '{ print $1, $3, $4 }'
PASS: $ echo root > f
PASS: $ su daemon
PASS: $ echo daemon >> f
PASS: $ su
PASS: $ chown bin:bin f
PASS: $ ls -l f | awk -- '{ print $1, $3, $4 }'
PASS: $ su bin
PASS: $ echo bin >> f
PASS: $ su daemon
FAIL: $ cat f
cat: f: Permission denied             != root
~                                     != bin
PASS: $ echo daemon >> f
PASS: $ su bin
PASS: $ setfacl -m u:daemon:rw f
PASS: $ getfacl --omit-header f
PASS: $ su daemon
PASS: $ echo daemon >> f
PASS: $ cat f
PASS: $ su bin
PASS: $ chmod g-w f
PASS: $ getfacl --omit-header f
PASS: $ su daemon
PASS: $ echo daemon >> f
PASS: $ su bin
PASS: $ setfacl -m u:daemon:r,g:daemon:rw-,o::rw- f
PASS: $ su daemon
PASS: $ echo daemon >> f
PASS: $ su bin
PASS: $ setfacl -x u:daemon f
PASS: $ su daemon
PASS: $ echo daemon2 >> f
PASS: $ cat f
PASS: $ su bin
PASS: $ setfacl -m g:daemon:r f
PASS: $ su daemon
PASS: $ echo daemon3 >> f
PASS: $ su bin
PASS: $ setfacl -x g:daemon f
PASS: $ su daemon
FAIL: $ echo daemon4 >> f
~                                     !~ .*f: Permission denied$
PASS: $ su
PASS: $ chgrp root f
PASS: $ su daemon
PASS: $ echo daemon5 >> f
FAIL: $ cat f
root                                  == root
bin                                   == bin
daemon                                == daemon
daemon2                               == daemon2
daemon4                               != daemon5
daemon5                               != ~
PASS: $ su
PASS: $ setfacl -m g:bin:r,g:daemon:w f
PASS: $ su daemon
FAIL: $ : < f
/bin/sh: f: Permission denied         != ~
PASS: $ : > f
PASS: $ : <> f
PASS: $ su
PASS: $ mkdir -m 750 e
PASS: $ touch e/h
PASS: $ su bin
PASS: $ shopt -s nullglob ; echo e/*
PASS: $ echo i > e/i
PASS: $ su
PASS: $ setfacl -m u:bin:rx e
PASS: $ su bin
PASS: $ echo e/*
PASS: $ echo i > e/i
PASS: $ su
PASS: $ setfacl -m u:bin:rwx e
PASS: $ su bin
PASS: $ echo i > e/i
PASS: $ su
PASS: $ touch g
PASS: $ ln -s g l
PASS: $ setfacl -m u:bin:rw l
FAIL: $ ls -l g | awk -- '{ print $1, $3, $4 }'
-rw-rw---- root root                  != -rw-rw----+ root root
PASS: $ mknod -m 0660 hdt b 91 64
PASS: $ mknod -m 0660 null c 1 3
PASS: $ mkfifo -m 0660 fifo
PASS: $ su bin
PASS: $ : < hdt
PASS: $ : < null
PASS: $ : < fifo
PASS: $ su
PASS: $ setfacl -m u:bin:rw hdt null fifo
PASS: $ su bin
PASS: $ : < hdt
PASS: $ : < null
PASS: $ ( echo blah > fifo & ) ; cat fifo
PASS: $ su
PASS: $ mkdir -m 600 x
PASS: $ chown daemon:daemon x
PASS: $ echo j > x/j
PASS: $ ls -l x/j | awk -- '{ print $1, $3, $4 }'
PASS: $ setfacl -m u:daemon:r x
PASS: $ ls -l x/j | awk -- '{ print $1, $3, $4 }'
PASS: $ echo k > x/k
PASS: $ chmod 750 x
PASS: $ su
PASS: $ cd ..
PASS: $ rm -rf d
101 commands (96 passed, 5 failed)
make: *** [root/permissions.test] Error 5
make: Target 'root-tests' not remade because of errors.
Makefile:45: recipe for target 'root/permissions.test' failed
make: Leaving directory '/usr/lib/acl/ptest/test'
./run-ptest: line 7: gpasswd: command not found
root@qemux86:/usr/lib/acl/ptest#
Comment 1 Ajay Kumar 2015-08-11 10:03:39 UTC
There could some problem with permissions.test but still that failure needs more debugging.
Comment 2 Francisco Pedraza 2016-10-04 20:18:24 UTC
https://wiki.yoctoproject.org/wiki/Ptest_2679a347c576f5411fbe802d2f6201c94036ecb2
I just validated in comparison with the status in the latest execution for ptest. 

Tests that failed now: 9
$ ls -l g | awk -- '{ print $1 $3 $4 }'
$ ls -dl d | awk '{print $1}'
$ getfacl --omit-header i/x
$ ls -dl f | awk '{print $1}'
$ ls -dl d/d | awk '{print $1}'
$ ls -dl -L d/l | awk '{print $1}'
$ ls -dl d/f | awk '{print $1}'
$ ls -l f | awk -- '{ print $1 }'
$ ls -dl g | awk '{print $1}'

The first one " $ ls -l g | awk -- '{ print $1 $3 $4 }' " did not fail, the remaining test cases failed.
Regards
Paco
Comment 3 Jose Perez C 2016-10-20 19:57:09 UTC
Some failures still appearing on 2.2 rc4 commit : 4b94b498e21aeba945fe7e72a6b7c4bb0314fb83

https://wiki.yoctoproject.org/wiki/Ptest_4b94b498e21aeba945fe7e72a6b7c4bb0314fb83

******** Failures *****************************************

FAIL:$ ls -l f | awk -- '{ print $1 }'
FAIL:$ ls -l f | awk -- '{ print $1 }'
FAIL:$ getfacl --omit-header i/x
FAIL:$ ls -dl f | awk '{print $1}'
FAIL:$ ls -dl f | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl f | awk '{print $1}'
FAIL:$ ls -dl f | awk '{print $1}'
FAIL:$ ls -dl f | awk '{print $1}'
FAIL:$ ls -dl f | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl d/f | awk '{print $1}'
FAIL:$ ls -dl d/f | awk '{print $1}'
FAIL:$ ls -dl d/d | awk '{print $1}'
FAIL:$ ls -dl d/d | awk '{print $1}'
FAIL:$ ls -dl d/d | awk '{print $1}'
FAIL:$ ls -dl -L d/l | awk '{print $1}'
FAIL:$ ls -dl d/d | awk '{print $1}'
FAIL:$ ls -dl d/d | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl d | awk '{print $1}'
FAIL:$ ls -dl g | awk '{print $1}'
FAIL:$ ls -l g | awk -- '{ print $1, $3, $4 }

**************************************************************
Comment 4 Francisco Pedraza 2016-11-03 14:56:09 UTC
Assigned to Ajay in order to get more info.
Comment 5 Jose Perez C 2016-11-03 15:13:06 UTC
Bug 9055 has updated information on this issue, closing as duplicate.

*** This bug has been marked as a duplicate of bug 9055 ***
Comment 6 Ajay Kumar 2016-11-08 02:18:59 UTC
(In reply to comment #4)
> Assigned to Ajay in order to get more info.

Sorry for delay in response. I will get back to this