244 lines
5.4 KiB
Bash
Executable File
244 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
DEBUG="$1"
|
|
VERSION="2.65"
|
|
TMP_DIR="ppss"
|
|
PPSS=./ppss
|
|
PPSS_DIR=ppss_dir
|
|
export PPSSDEBUG=1
|
|
|
|
cleanup () {
|
|
|
|
for x in $REMOVEFILES
|
|
do
|
|
if [ -e ./$x ]
|
|
then
|
|
rm -r ./$x
|
|
fi
|
|
done
|
|
}
|
|
|
|
parseJobStatus () {
|
|
|
|
TMP_FILE="$1"
|
|
|
|
RES=`grep "Status:" "$JOBLOG/$TMP_FILE"`
|
|
STATUS=`echo "$RES" | awk '{ print $2 }'`
|
|
echo "$STATUS"
|
|
|
|
}
|
|
|
|
oneTimeSetUp () {
|
|
|
|
JOBLOG=./$PPSS_DIR/job_log
|
|
INPUTFILENORMAL=test-normal.input
|
|
INPUTFILESPECIAL=test-special.input
|
|
LOCALOUTPUT=ppss_dir/PPSS_LOCAL_OUTPUT
|
|
|
|
REMOVEFILES="$PPSS_DIR test-ppss-*"
|
|
|
|
cleanup
|
|
}
|
|
|
|
testVersion () {
|
|
|
|
RES=`$PPSS -v`
|
|
|
|
for x in $RES
|
|
do
|
|
echo "$x" | grep [0-9] >> /dev/null
|
|
if [ "$?" == "0" ]
|
|
then
|
|
assertEquals "Version mismatch!" "$VERSION" "$x"
|
|
fi
|
|
done
|
|
}
|
|
|
|
rename-ppss-dir () {
|
|
|
|
TEST="$1"
|
|
|
|
if [ -e "$PPSS_DIR" ] && [ -d "$PPSS_DIR" ] && [ ! -z "$TEST" ]
|
|
then
|
|
mv "$PPSS_DIR" test-ppss-"$TEST"
|
|
fi
|
|
}
|
|
|
|
oneTimeTearDown () {
|
|
|
|
if [ ! "$DEBUG" == "debug" ]
|
|
then
|
|
cleanup
|
|
fi
|
|
}
|
|
|
|
createDirectoryWithSomeFiles () {
|
|
|
|
A="File with Spaces"
|
|
B="File\With\Slashes"
|
|
c="symnlink1"
|
|
d="symnlink2"
|
|
|
|
TMP_FILE="/tmp/$TMP_DIR"
|
|
if [ ! -e "$TMP_FILE" ]
|
|
then
|
|
mkdir "$TMP_FILE"
|
|
fi
|
|
|
|
touch "$A"
|
|
touch "$B"
|
|
ln -s /etc/resolve.conf "$TMP_FILE"/
|
|
ln -s /etc/hosts "$TMP_FILE"/
|
|
}
|
|
|
|
testRecursion () {
|
|
|
|
createDirectoryWithSomeFiles
|
|
|
|
#Execution of PPSS with recursion disabled.
|
|
RES=$( { $PPSS -d /tmp/$TMP_DIR -c 'ls -alh ' -r >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
|
|
NUMBER=`find /tmp/$TMP_DIR ! -type d | wc -l`
|
|
LOGS=`ls -1 $JOBLOG/* | wc -l`
|
|
assertEquals "Did not find equal files and joblogs $TMP_FILE" "$NUMBER" "$LOGS"
|
|
|
|
rm -rf "/tmp/$TMP_DIR"
|
|
rename-ppss-dir $FUNCNAME
|
|
|
|
}
|
|
|
|
testSpacesInFilenames () {
|
|
|
|
createDirectoryWithSomeFiles
|
|
#Regular execution of PPSS
|
|
RES=$( { $PPSS -d /tmp/$TMP_DIR -c 'ls -alh ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
if [ ! "$?" == "0" ]
|
|
then
|
|
echo "RES IS $RES"
|
|
fi
|
|
|
|
grep "SUCCESS" $JOBLOG/* >> /dev/null 2>&1
|
|
assertEquals "Found error with space in filename $TMP_FILE" "0" "$?"
|
|
|
|
NUMBER=`find /tmp/$TMP_DIR ! -type d | wc -l`
|
|
LOGS=`ls -1 $JOBLOG/* | wc -l`
|
|
assertEquals "Did not find equal files and joblogs $TMP_FILE" "$NUMBER" "$LOGS"
|
|
|
|
rm -rf "/tmp/$TMP_DIR"
|
|
rename-ppss-dir $FUNCNAME
|
|
}
|
|
|
|
testSpecialCharacterHandling () {
|
|
|
|
RES=$( { $PPSS -f "$INPUTFILESPECIAL" -c 'echo ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
if [ ! "$?" == "0" ]
|
|
then
|
|
echo "RES IS $RES"
|
|
fi
|
|
|
|
RES=$( { cat "$INPUTFILESPECIAL" | $PPSS -f - -c 'echo ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
|
|
RES=`find ppss_dir/PPSS_LOCAL_OUTPUT | wc -l | sed 's/\ //g'`
|
|
LINES=`wc -l "$INPUTFILESPECIAL" | awk '{ print $1 }'`
|
|
assertEquals "To many lock files..." "$((LINES+1))" "$RES"
|
|
|
|
RES1=`ls -1 $JOBLOG`
|
|
RES2=`ls -1 $LOCALOUTPUT`
|
|
|
|
assertEquals "RES1 $RES1 is not the same as RES2 $RES2" "$RES1" "$RES2"
|
|
|
|
rename-ppss-dir $FUNCNAME
|
|
}
|
|
|
|
testSkippingOfProcessedItems () {
|
|
|
|
createDirectoryWithSomeFiles
|
|
|
|
RES=$( { $PPSS -d /tmp/$TMP_DIR -c 'echo ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
|
|
RES=$( { $PPSS -d /tmp/$TMP_DIR -c 'echo ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
|
|
RES=`grep -c -i locked ./$PPSS_DIR/ppss-log* | tail -n 1 | cut -d ":" -f 2`
|
|
assertEquals "Skipping of items went wrong." 2 "$RES"
|
|
|
|
rename-ppss-dir $FUNCNAME-1
|
|
|
|
RES=$( { $PPSS -f $INPUTFILESPECIAL -c 'echo ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
|
|
RES=$( { $PPSS -f $INPUTFILESPECIAL -c 'echo ' >> /dev/null ; } 2>&1 )
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
assertNull "PPSS retured some errors..." "$RES"
|
|
|
|
RES=`grep -c -i locked ./$PPSS_DIR/ppss-log* | tail -n 1 | cut -d ":" -f 2`
|
|
assertEquals "Skipping of items went wrong." 8 "$RES"
|
|
|
|
rm -rf "/tmp/$TMP_DIR"
|
|
rename-ppss-dir $FUNCNAME-2
|
|
}
|
|
|
|
testExistLogFiles () {
|
|
|
|
$PPSS -f "$INPUTFILENORMAL" -c 'echo "$ITEM"' >> /dev/null
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
|
|
for x in $NORMALTESTFILES
|
|
do
|
|
assertTrue "[ -e $JOBLOG/$x ]"
|
|
done
|
|
|
|
rename-ppss-dir $FUNCNAME
|
|
}
|
|
|
|
getStatusOfJob () {
|
|
|
|
EXPECTED="$1"
|
|
|
|
if [ "$EXPECTED" == "SUCCESS" ]
|
|
then
|
|
$PPSS -f "$INPUTFILENORMAL" -c 'echo ' >> /dev/null
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
elif [ "$EXPECTED" == "FAILURE" ]
|
|
then
|
|
$PPSS -f "$INPUTFILENORMAL" -c 'thiscommandfails ' >> /dev/null
|
|
assertEquals "PPSS did not execute properly." 0 "$?"
|
|
fi
|
|
|
|
for x in $NORMALTESTFILES
|
|
do
|
|
STATUS=`parseJobStatus "$x"`
|
|
assertEquals "FAILED WITH STATUS $STATUS." "$EXPECTED" "$STATUS"
|
|
done
|
|
|
|
rename-ppss-dir "$FUNCNAME-$EXPECTED"
|
|
}
|
|
|
|
|
|
testErrorHandlingOK () {
|
|
|
|
getStatusOfJob SUCCESS
|
|
}
|
|
|
|
testErrorHandlingFAIL () {
|
|
|
|
getStatusOfJob FAILURE
|
|
}
|
|
|
|
|
|
|
|
|
|
. ./shunit2
|