Regression tests for the new and legacy process accounting formats.

This commit is contained in:
Diomidis Spinellis 2007-05-22 06:21:20 +00:00
parent 38354c989f
commit eeec998a23
21 changed files with 361 additions and 1 deletions

View file

@ -1,5 +1,5 @@
# $FreeBSD$
SUBDIR= file2c join jot m4 printf sed uudecode uuencode xargs
SUBDIR= file2c join jot m4 printf sed uudecode uuencode xargs lastcomm
.include <bsd.subdir.mk>

View file

@ -0,0 +1,6 @@
# $FreeBSD$
all: regress
regress: regress.t
./regress.t

View file

@ -0,0 +1,9 @@
$FreeBSD$
To create the files for regression testing do the following.
1. Run values.sh for a given architecture and accounting version.
2. Unpack the generated file and rename acct into VERSION-ARCH.acct.
3. Run lastcomm -cuseS -f VERSION-ARCH-acct.in >VERSION-ARCH.out.
4. Compare the reported values in VERSION-ARCH.out against the
*.time values found in the file that values.sh generated.

View file

@ -0,0 +1,39 @@
#!/bin/sh
#
# $FreeBSD$
#
DIR=`dirname $0`
ARCH=`uname -m`
check()
{
NUM=$1
shift
# Remove tty field, which varies between systems.
awk '{$4 = ""; print}' |
if diff -q - $DIR/$1
then
echo "ok $NUM"
else
echo "not ok $NUM"
fi
}
cat $DIR/v1-$ARCH-acct.in $DIR/v2-$ARCH-acct.in >$DIR/v1v2-$ARCH-acct.in
cat $DIR/v2-$ARCH.out $DIR/v1-$ARCH.out >$DIR/v1v2-$ARCH.out
echo 1..6
lastcomm -cesuS -f $DIR/v1-$ARCH-acct.in | check 1 v1-$ARCH.out
lastcomm -cesuS -f - <$DIR/v1-$ARCH-acct.in | tail -r | check 2 v1-$ARCH.out
lastcomm -cesuS -f $DIR/v2-$ARCH-acct.in | check 3 v2-$ARCH.out
lastcomm -cesuS -f - <$DIR/v2-$ARCH-acct.in | tail -r | check 4 v2-$ARCH.out
lastcomm -cesuS -f $DIR/v1v2-$ARCH-acct.in | check 5 v1v2-$ARCH.out
lastcomm -cesuS -f - <$DIR/v1v2-$ARCH-acct.in | tail -r | check 6 v1v2-$ARCH.out
rm $DIR/v1v2-$ARCH-acct.in
rm $DIR/v1v2-$ARCH.out
exit 0

Binary file not shown.

View file

@ -0,0 +1,28 @@
core -FDX root 0.000 secs 0.000 us 0.000 sy 0.031 es Fri May 18 11:34
core -DX root 0.000 secs 0.000 us 0.000 sy 0.031 es Fri May 18 11:34
cc - root 0.000 secs 0.000 us 0.000 sy 0.469 es Fri May 18 11:34
ld - root 0.000 secs 0.000 us 0.000 sy 0.109 es Fri May 18 11:34
as - root 0.000 secs 0.000 us 0.000 sy 0.047 es Fri May 18 11:34
cc1 - root 0.016 secs 0.016 us 0.000 sy 0.203 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
123456789012345 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 0.359 es Fri May 18 11:34
diff - root 0.312 secs 0.297 us 0.016 sy 0.359 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 0.031 es Fri May 18 11:34
dd - root 0.016 secs 0.000 us 0.016 sy 0.031 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 3.000 es Fri May 18 11:34
sleep - root 0.000 secs 0.000 us 0.000 sy 3.000 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 3.406 es Fri May 18 11:34
find - root 0.266 secs 0.062 us 0.203 sy 3.406 es Fri May 18 11:34
time - root 0.000 secs 0.000 us 0.000 sy 5.047 es Fri May 18 11:33
egrep - root 4.984 secs 4.984 us 0.000 sy 5.047 es Fri May 18 11:33
time - root 0.000 secs 0.000 us 0.000 sy 0.484 es Fri May 18 11:33
awk - root 0.453 secs 0.453 us 0.000 sy 0.453 es Fri May 18 11:33
accton - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:33

Binary file not shown.

View file

@ -0,0 +1,28 @@
core -FDX root 0.000 secs 0.000 us 0.000 sy 0.005 es Fri May 18 15:13
core -DX root 0.002 secs 0.000 us 0.002 sy 0.005 es Fri May 18 15:13
cc - root 0.002 secs 0.000 us 0.002 sy 0.048 es Fri May 18 15:13
ld - root 0.028 secs 0.019 us 0.009 sy 0.028 es Fri May 18 15:13
as - root 0.002 secs 0.002 us 0.000 sy 0.002 es Fri May 18 15:13
cc1 - root 0.016 secs 0.016 us 0.000 sy 0.016 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 0.002 es Fri May 18 15:13
1234567890123456 - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
ln - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
time - root 0.001 secs 0.001 us 0.000 sy 0.002 es Fri May 18 15:13
1234567890123456 - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
ln - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 0.002 es Fri May 18 15:13
123456789012345 - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
ln - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 0.425 es Fri May 18 15:13
diff - root 0.423 secs 0.392 us 0.031 sy 0.424 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 0.028 es Fri May 18 15:13
dd - root 0.025 secs 0.000 us 0.025 sy 0.026 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 3.002 es Fri May 18 15:13
sleep - root 0.001 secs 0.000 us 0.001 sy 3.001 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 0.250 es Fri May 18 15:13
find - root 0.248 secs 0.078 us 0.171 sy 0.249 es Fri May 18 15:13
time - root 0.001 secs 0.000 us 0.001 sy 6.724 es Fri May 18 15:12
egrep - root 6.680 secs 6.680 us 0.000 sy 6.722 es Fri May 18 15:12
time - root 0.001 secs 0.000 us 0.001 sy 0.450 es Fri May 18 15:12
awk - root 0.448 secs 0.448 us 0.000 sy 0.449 es Fri May 18 15:12
accton - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:12

View file

@ -0,0 +1,77 @@
#!/bin/sh
#
# $FreeBSD$
#
ACCT=acct
RESULTS=acct.`uname -m`.tar.gz
TMPDIR=$$.tmp
run()
{
/usr/bin/time -l -o $1.time "$@"
}
echo Redirecting accounting.
mkdir $TMPDIR
cd $TMPDIR
:>$ACCT
accton $ACCT
echo Running commands. This should not take more than 30s.
# User time
run awk 'BEGIN {for (i = 0; i < 1000000; i++) cos(.3)}' /dev/null
run egrep '(.)(.)(.)(.)(.)(.)(.)(.)(.)\9\8\7\6\5\4\3\2\1' /usr/share/dict/words
# System time
run find /usr/src -name xyzzy
# Elapsed time
run sleep 3
# IO
run dd if=/dev/zero bs=512 count=4096 of=zero 2>/dev/null
# Memory
run diff /usr/share/dict/words /dev/null >/dev/null
# AC_COMM_LEN - 1
ln /usr/bin/true 123456789012345
run ./123456789012345
# AC_COMM_LEN
ln /usr/bin/true 1234567890123456
run ./1234567890123456
# AC_COMM_LEN + 1
ln /usr/bin/true 12345678901234567
run ./12345678901234567
# Flags: core, fork, signal
echo 'main(){volatile int s; fork(); s = *(int *)0;}' >core.c
cc -o core core.c
echo Generating segmentation fault.
./core
echo Turning off redirected accounting.
accton
echo Packing the results.
sa -u $ACCT >sa.u
lastcomm -cesuS -f $ACCT >lastcomm.cesuS
tar -cf - acct sa.u lastcomm.cesuS *.time |
gzip -c |
uuencode $RESULTS >../$RESULTS.uue
echo Cleaning up.
cd ..
rm -rf $TMPDIR
echo "Done! Please send your reply, enclosing the file $RESULTS.uue"
echo If your system runs with accounting enabled you probably need to run:
echo accton /var/account/acct

View file

@ -0,0 +1,5 @@
# $FreeBSD$
SUBDIR= sa
.include <bsd.subdir.mk>

View file

@ -0,0 +1,6 @@
# $FreeBSD$
all: regress
regress: regress.t
./regress.t

View file

@ -0,0 +1,26 @@
#!/bin/sh
#
# Configure and run this script to create the files for regression testing
# for a new architecture/configuration.
#
# $FreeBSD$
#
# Set this to the path of the current sa command
SANEW=/usr/obj/usr/src/usr.sbin/sa/sa
# Set this to the path of the RELENG_6_2 sa
SA62=/usr/sbin/sa
# Machine architecture
ARCH=`uname -m`
# Location of lastcomm regression files
LCDIR=../../usr.bin/lastcomm
$SANEW -u $LCDIR/v1-$ARCH-acct.in >v1-$ARCH-u.out
$SANEW -u $LCDIR/v2-$ARCH-acct.in >v2-$ARCH-u.out
$SANEW -i $LCDIR/v1-$ARCH-acct.in >v1-$ARCH-sav.out
$SANEW -im $LCDIR/v1-$ARCH-acct.in >v1-$ARCH-usr.out
$SA62 -P v1-$ARCH-sav.in -U v1-$ARCH.usr $LCDIR/v1-$ARCH-acct.in >/dev/null
$SANEW -P v2-$ARCH-sav.in -U v2-$ARCH-usr.in $LCDIR/v1-$ARCH-acct.in >/dev/null

View file

@ -0,0 +1,74 @@
#!/bin/sh
#
# $FreeBSD$
#
DIR=`dirname $0`
LCDIR=`dirname $0`/../../usr.bin/lastcomm
ARCH=`uname -m`
check()
{
NUM=$1
shift
if diff -q - $1
then
echo "ok $NUM"
else
echo "not ok $NUM"
fi
}
cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
cp $LCDIR/v2-$ARCH-acct.in $DIR/v2-$ARCH-acct.in
echo 1..13
# Command listings of the two acct versions
sa -u $DIR/v1-$ARCH-acct.in | check 1 $DIR/v1-$ARCH-u.out
sa -u $DIR/v2-$ARCH-acct.in | check 2 $DIR/v2-$ARCH-u.out
# Plain summaries of user/process
sa -i $DIR/v1-$ARCH-acct.in | check 3 $DIR/v1-$ARCH-sav.out
sa -im $DIR/v1-$ARCH-acct.in | check 4 $DIR/v1-$ARCH-usr.out
# Backward compatibility of v1 summary files
sa -P $DIR/v1-$ARCH-sav.in -U $DIR/v1-$ARCH-usr.in /dev/null |
check 5 $DIR/v1-$ARCH-sav.out
sa -m -P $DIR/v1-$ARCH-sav.in -U $DIR/v1-$ARCH-usr.in /dev/null |
check 6 $DIR/v1-$ARCH-usr.out
# Convert old summary format to new
cp $DIR/v1-$ARCH-sav.in $DIR/v2c-$ARCH-sav.in
cp $DIR/v1-$ARCH-usr.in $DIR/v2c-$ARCH-usr.in
sa -s -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null >/dev/null
sa -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
check 7 $DIR/v1-$ARCH-sav.out
sa -m -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
check 8 $DIR/v1-$ARCH-usr.out
# Reading v2 summary files
sa -P $DIR/v2-$ARCH-sav.in -U $DIR/v2-$ARCH-usr.in /dev/null |
check 9 $DIR/v1-$ARCH-sav.out
sa -m -P $DIR/v2-$ARCH-sav.in -U $DIR/v2-$ARCH-usr.in /dev/null |
check 10 $DIR/v1-$ARCH-usr.out
# Summarize
sa -is -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in $DIR/v1-$ARCH-acct.in >/dev/null
sa -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
check 11 $DIR/v1-$ARCH-sav.out
sa -m -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
check 12 $DIR/v1-$ARCH-usr.out
# Accumulate
cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
sa -is -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in $DIR/v1-$ARCH-acct.in >/dev/null
cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
sa -s -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in $DIR/v1-$ARCH-acct.in >$DIR/double
cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
sa -i $DIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in | check 13 $DIR/double
# Clean up
rm $DIR/double $DIR/v2c-$ARCH-usr.in $DIR/v2c-$ARCH-sav.in $DIR/v1-$ARCH-acct.in $DIR/v2-$ARCH-acct.in
exit 0

Binary file not shown.

View file

@ -0,0 +1,5 @@
28 0.425re 0.10cp 143avio 477k
14 0.220re 0.10cp 286avio 411k ***other
2 0.000re 0.00cp 0avio 0k 1234567890123456
3 0.000re 0.00cp 0avio 0k ln
9 0.205re 0.00cp 0avio 40400k time

View file

@ -0,0 +1,28 @@
0 0.000 cpu 264k mem 0 io accton
0 0.453 cpu 41k mem 0 io awk
0 0.000 cpu 0k mem 0 io time
0 4.984 cpu 41k mem 28 io egrep
0 0.000 cpu 140k mem 0 io time
0 0.266 cpu 36k mem 3921 io find
0 0.000 cpu 0k mem 0 io time
0 0.000 cpu 0k mem 0 io sleep
0 0.000 cpu 0k mem 0 io time
0 0.016 cpu 25k mem 16 io dd
0 0.000 cpu 0k mem 0 io time
0 0.312 cpu 1361k mem 0 io diff
0 0.000 cpu 0k mem 0 io time
0 0.000 cpu 0k mem 0 io ln
0 0.000 cpu 0k mem 0 io 123456789012345
0 0.000 cpu 0k mem 0 io time
0 0.000 cpu 0k mem 0 io ln
0 0.000 cpu 0k mem 0 io 1234567890123456
0 0.000 cpu 264k mem 0 io time
0 0.000 cpu 0k mem 0 io ln
0 0.000 cpu 0k mem 0 io 1234567890123456
0 0.000 cpu 0k mem 0 io time
0 0.016 cpu 233k mem 1 io cc1
0 0.000 cpu 482k mem 1 io as
0 0.000 cpu 0k mem 11 io ld
0 0.000 cpu 0k mem 6 io cc
0 0.000 cpu 0k mem 12 io core
0 0.000 cpu 0k mem 7 io core*

Binary file not shown.

View file

@ -0,0 +1 @@
root 28 0.10cpu 4003tio 2887k*sec

Binary file not shown.

View file

@ -0,0 +1,28 @@
0 0.001 cpu 0k mem 0 io accton
0 0.448 cpu 112k mem 0 io awk
0 0.001 cpu 0k mem 0 io time
0 6.680 cpu 110k mem 0 io egrep
0 0.001 cpu 0k mem 0 io time
0 0.248 cpu 108k mem 0 io find
0 0.001 cpu 0k mem 0 io time
0 0.001 cpu 0k mem 0 io sleep
0 0.001 cpu 0k mem 0 io time
0 0.025 cpu 103k mem 16 io dd
0 0.001 cpu 0k mem 0 io time
0 0.423 cpu 110k mem 0 io diff
0 0.001 cpu 0k mem 0 io time
0 0.001 cpu 0k mem 0 io ln
0 0.001 cpu 0k mem 0 io 123456789012345
0 0.001 cpu 0k mem 0 io time
0 0.001 cpu 0k mem 0 io ln
0 0.001 cpu 0k mem 0 io 1234567890123456
0 0.001 cpu 140k mem 0 io time
0 0.001 cpu 0k mem 0 io ln
0 0.001 cpu 0k mem 0 io 1234567890123456
0 0.001 cpu 0k mem 0 io time
0 0.016 cpu 620k mem 0 io cc1
0 0.002 cpu 432k mem 0 io as
0 0.028 cpu 96k mem 0 io ld
0 0.002 cpu 0k mem 0 io cc
0 0.002 cpu 68k mem 12 io core
0 0.000 cpu 0k mem 7 io core*

Binary file not shown.