Skip to content
Snippets Groups Projects
Commit ede05cbf authored by Jan Trávníček's avatar Jan Trávníček
Browse files

make tests run in parallel

parent 07ffb497
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,13 @@ APPPATH = /usr/bin ...@@ -4,6 +4,13 @@ APPPATH = /usr/bin
LIBPATH = /usr/lib LIBPATH = /usr/lib
BINFOLDER = bin BINFOLDER = bin
   
MAKE_PID := $(shell echo $$PPID)
JOB_FLAG := $(filter -j%, $(subst -j ,-j,$(shell ps T | grep "^\s*$(MAKE_PID).*$(MAKE)")))
JOBS := $(subst -j,,$(JOB_FLAG))
ifndef JOBS
JOBS := 1
endif
STD_LIB = alib2std STD_LIB = alib2std
DATA_LIB = alib2data DATA_LIB = alib2data
COMMON_LIB = alib2common COMMON_LIB = alib2common
...@@ -104,13 +111,13 @@ debug: all-debug ...@@ -104,13 +111,13 @@ debug: all-debug
for dir in $(SUBDIRS_BINS); do \ for dir in $(SUBDIRS_BINS); do \
cp $$dir/bin-debug/* $(addsuffix -debug, $(BINFOLDER)); \ cp $$dir/bin-debug/* $(addsuffix -debug, $(BINFOLDER)); \
done done
./tests.examples.sh debug ./tests.examples.sh debug $(JOBS)
./tests.adeterminize.sh debug ./tests.adeterminize.sh debug $(JOBS)
./tests.aconversion.sh debug ./tests.aconversion.sh debug $(JOBS)
./tests.aderivation.aintegral.sh debug ./tests.aderivation.aintegral.sh debug $(JOBS)
./tests.astringology.sh debug ./tests.astringology.sh debug $(JOBS)
./tests.anormalize.sh debug ./tests.anormalize.sh debug $(JOBS)
./tests.aarbology.sh debug ./tests.aarbology.sh debug $(JOBS)
   
release: all-release release: all-release
if [ ! -w $(addsuffix -release, $(BINFOLDER)) ] && [ $(USE_RAMDISK) -eq 1 ]; then\ if [ ! -w $(addsuffix -release, $(BINFOLDER)) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
...@@ -128,13 +135,13 @@ release: all-release ...@@ -128,13 +135,13 @@ release: all-release
for dir in $(SUBDIRS_BINS); do \ for dir in $(SUBDIRS_BINS); do \
cp $$dir/bin-release/* $(addsuffix -release, $(BINFOLDER)); \ cp $$dir/bin-release/* $(addsuffix -release, $(BINFOLDER)); \
done done
./tests.examples.sh release ./tests.examples.sh release $(JOBS)
./tests.adeterminize.sh release ./tests.adeterminize.sh release $(JOBS)
./tests.aconversion.sh release ./tests.aconversion.sh release $(JOBS)
./tests.aderivation.aintegral.sh release ./tests.aderivation.aintegral.sh release $(JOBS)
./tests.astringology.sh release ./tests.astringology.sh release $(JOBS)
./tests.anormalize.sh release ./tests.anormalize.sh release $(JOBS)
./tests.aarbology.sh release ./tests.aarbology.sh release $(JOBS)
   
clean : clean-debug clean-release clean : clean-debug clean-release
$(RM) -r bin-debug bin-release $(RM) -r bin-debug bin-release
......
...@@ -36,6 +36,8 @@ done ...@@ -36,6 +36,8 @@ done
cd bin-$1/ cd bin-$1/
rm -f $LOGFILE rm -f $LOGFILE
   
JOBS=$2
# ---------------------------- # ----------------------------
   
# $1 = conv command # $1 = conv command
...@@ -82,16 +84,21 @@ function runTest2 { ...@@ -82,16 +84,21 @@ function runTest2 {
log "$2" $RET "$3" "$4" "$OUT" log "$2" $RET "$3" "$4" "$OUT"
fi fi
   
rm $3
rm $4
if [ $RET == 124 ]; then # timeout if [ $RET == 124 ]; then # timeout
registerResult 2
return 2 return 2
elif [ $RET -ge 124 ]; then #segv elif [ $RET -ge 124 ]; then #segv
registerResult 3
return 3 return 3
fi elif [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
registerResult 1
if [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
return 1 return 1
else else
MATCHES=$(($MATCHES + $OUT2)) MATCHES=$(($MATCHES + $OUT2))
registerResult 0
return 0 return 0
fi fi
} }
...@@ -147,32 +154,36 @@ function runTestSubtree { ...@@ -147,32 +154,36 @@ function runTestSubtree {
# predefined tests first # predefined tests first
for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.subtree.xml PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.subtree.xml
if [ -f ]; then if [ -f $PATTERN_FILE ]; then
Occs=`./aarbology2 -a exactSubtreeMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set` SUBJECT_FILE_COPY=$(mktemp)
PATTERN_FILE_COPY=$(mktemp)
cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
cat $PATTERN_FILE > $PATTERN_FILE_COPY
Occs=`./aarbology2 -a exactSubtreeMatch -s "$SUBJECT_FILE_COPY" -p "$PATTERN_FILE_COPY" | ./astat2 -p size --set`
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
registerResult $?
fi fi
done done
   
echo -n " | " echo -n " | "
   
# random tests # random tests
SUBJECT_FILE=s.xml
PATTERN_FILE=p.xml
for i in $(seq 1 $TESTCASE_ITERATIONS ); for i in $(seq 1 $TESTCASE_ITERATIONS );
do do
SUBJECT_FILE=$(mktemp)
PATTERN_FILE=$(mktemp)
cat <(generateSubject) > $SUBJECT_FILE cat <(generateSubject) > $SUBJECT_FILE
cat <(generateSubtree) > $PATTERN_FILE cat <(generateSubtree) > $PATTERN_FILE
   
Occs=`./aarbology2 -a exactSubtreeMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set` Occs=`./aarbology2 -a exactSubtreeMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set`
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" & (( i%JOBS==0 )) && wait
registerResult $?
done done
   
rm $SUBJECT_FILE wait
rm $PATTERN_FILE
   
outputResults outputResults
} }
...@@ -187,32 +198,36 @@ function runTestPattern { ...@@ -187,32 +198,36 @@ function runTestPattern {
# predefined tests first # predefined tests first
for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml
if [ -f ]; then if [ -f $PATTERN_FILE ]; then
Occs=`./aarbology2 -a exactPatternMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set` SUBJECT_FILE_COPY=$(mktemp)
PATTERN_FILE_COPY=$(mktemp)
cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
cat $PATTERN_FILE > $PATTERN_FILE_COPY
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" Occs=`./aarbology2 -a exactPatternMatch -s "$SUBJECT_FILE_COPY" -p "$PATTERN_FILE_COPY" | ./astat2 -p size --set`
registerResult $?
runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
fi fi
done done
   
echo -n " | " echo -n " | "
   
# random tests # random tests
SUBJECT_FILE=s.xml
PATTERN_FILE=p.xml
for i in $(seq 1 $TESTCASE_ITERATIONS ); for i in $(seq 1 $TESTCASE_ITERATIONS );
do do
SUBJECT_FILE=$(mktemp)
PATTERN_FILE=$(mktemp)
cat <(generateSubject) > $SUBJECT_FILE cat <(generateSubject) > $SUBJECT_FILE
cat <(generatePattern) > $PATTERN_FILE cat <(generatePattern) > $PATTERN_FILE
   
Occs=`./aarbology2 -a exactPatternMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set` Occs=`./aarbology2 -a exactPatternMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set`
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" & (( i%JOBS==0 )) && wait
registerResult $?
done done
   
rm $SUBJECT_FILE wait
rm $PATTERN_FILE
   
outputResults outputResults
} }
...@@ -227,32 +242,36 @@ function runTestPatternEnds { ...@@ -227,32 +242,36 @@ function runTestPatternEnds {
# predefined tests first # predefined tests first
for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml
if [ -f ]; then if [ -f $PATTERN_FILE ]; then
Occs=`./aarbology2 -e -a exactPatternMatch -s <(./acast2 -t PrefixRankedTree -i "$SUBJECT_FILE" ) -p <(./acast2 -t PrefixRankedPattern -i "$PATTERN_FILE" ) | ./astat2 -p size --set` SUBJECT_FILE_COPY=$(mktemp)
PATTERN_FILE_COPY=$(mktemp)
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
registerResult $? cat $PATTERN_FILE > $PATTERN_FILE_COPY
Occs=`./aarbology2 -e -a exactPatternMatch -s <(./acast2 -t PrefixRankedTree -i "$SUBJECT_FILE_COPY" ) -p <(./acast2 -t PrefixRankedPattern -i "$PATTERN_FILE_COPY" ) | ./astat2 -p size --set`
runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
fi fi
done done
   
echo -n " | " echo -n " | "
   
# random tests # random tests
SUBJECT_FILE=s.xml
PATTERN_FILE=p.xml
for i in $(seq 1 $TESTCASE_ITERATIONS ); for i in $(seq 1 $TESTCASE_ITERATIONS );
do do
SUBJECT_FILE=$(mktemp)
PATTERN_FILE=$(mktemp)
cat <(generateSubject) > $SUBJECT_FILE cat <(generateSubject) > $SUBJECT_FILE
cat <(generatePattern) > $PATTERN_FILE cat <(generatePattern) > $PATTERN_FILE
   
Occs=`./aarbology2 -e -a exactPatternMatch -s <(./acast2 -t PrefixRankedTree -i "$SUBJECT_FILE" ) -p <(./acast2 -t PrefixRankedPattern -i "$PATTERN_FILE" ) | ./astat2 -p size --set` Occs=`./aarbology2 -e -a exactPatternMatch -s <(./acast2 -t PrefixRankedTree -i "$SUBJECT_FILE" ) -p <(./acast2 -t PrefixRankedPattern -i "$PATTERN_FILE" ) | ./astat2 -p size --set`
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" & (( i%JOBS==0 )) && wait
registerResult $?
done done
   
rm $SUBJECT_FILE wait
rm $PATTERN_FILE
   
outputResults outputResults
} }
......
...@@ -33,6 +33,8 @@ done ...@@ -33,6 +33,8 @@ done
cd bin-$1/ cd bin-$1/
rm -f $LOGFILE rm -f $LOGFILE
   
JOBS=$2
# ---------------------------- # ----------------------------
   
# $1 = conv command # $1 = conv command
...@@ -61,18 +63,24 @@ function runTest2 { ...@@ -61,18 +63,24 @@ function runTest2 {
OUT=`timeout $TESTCASE_TIMEOUT bash -c "./acompare2 <(cat $2 | $1 | $MDFA ) <(cat $2 | $MDFA)"` OUT=`timeout $TESTCASE_TIMEOUT bash -c "./acompare2 <(cat $2 | $1 | $MDFA ) <(cat $2 | $MDFA)"`
RET=$? RET=$?
   
if [ $RET == 0 ]; then # ok if [ $RET != 0 ]; then # fail
return 0 log "$1" $RET "$2" "$OUT"
fi fi
   
log "$1" $RET "$2" "$OUT" rm $2
   
if [ $RET == 124 ]; then # timeout if [ $RET == 124 ]; then # timeout
registerResult 2
return 2 return 2
elif [ $RET -ge 124 ]; then #segv elif [ $RET -ge 124 ]; then #segv
registerResult 3
return 3 return 3
else elif [ $RET != 0 ]; then # fail
registerResult 1
return 1 return 1
else
registerResult 0
return 0
fi fi
} }
   
...@@ -125,23 +133,26 @@ function runTest { ...@@ -125,23 +133,26 @@ function runTest {
   
# predefined tests first # predefined tests first
for FILE in `ls $TESTS_DIR/aconversion.test*`; do for FILE in `ls $TESTS_DIR/aconversion.test*`; do
runTest2 "$1" "$FILE" FILE_COPY=$(mktemp)
registerResult $?
cat $FILE > $FILE_COPY
runTest2 "$1" "$FILE_COPY"
done done
   
echo -n " | " echo -n " | "
   
# random tests # random tests
NFA_FILE=nfa.xml
for i in $(seq 1 $TESTCASE_ITERATIONS ); for i in $(seq 1 $TESTCASE_ITERATIONS );
do do
NFA_FILE=$(mktemp)
cat <(generateNFA) > $NFA_FILE cat <(generateNFA) > $NFA_FILE
   
runTest2 "$1" "$NFA_FILE" runTest2 "$1" "$NFA_FILE" & (( i%JOBS==0 )) && wait
registerResult $?
done done
   
rm $NFA_FILE wait
   
outputResults outputResults
} }
......
...@@ -34,6 +34,8 @@ done ...@@ -34,6 +34,8 @@ done
cd bin-$1/ cd bin-$1/
rm -f $LOGFILE rm -f $LOGFILE
   
JOBS=$2
# ---------------------------- # ----------------------------
   
# $1 = conv command # $1 = conv command
...@@ -62,18 +64,24 @@ function runTest2 { ...@@ -62,18 +64,24 @@ function runTest2 {
OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff <(cat $2 | $1 | $GENERATED_STRINGS ) <(cat $2 | $GENERATED_STRINGS)"` OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff <(cat $2 | $1 | $GENERATED_STRINGS ) <(cat $2 | $GENERATED_STRINGS)"`
RET=$? RET=$?
   
if [ $RET == 0 ]; then # ok if [ $RET != 0 ]; then # fail
return 0 log "$1" $RET "$2" "$OUT"
fi fi
   
log "$1" $RET "$2" "$OUT" rm $2
   
if [ $RET == 124 ]; then # timeout if [ $RET == 124 ]; then # timeout
registerResult 2
return 2 return 2
elif [ $RET -ge 124 ]; then #segv elif [ $RET -ge 124 ]; then #segv
registerResult 3
return 3 return 3
else elif [ $RET != 0 ]; then # fail
registerResult 1
return 1 return 1
else
registerResult 0
return 0
fi fi
} }
   
...@@ -126,23 +134,26 @@ function runTest { ...@@ -126,23 +134,26 @@ function runTest {
   
# predefined tests first # predefined tests first
for FILE in `ls $TESTS_DIR/anormalization.test*`; do for FILE in `ls $TESTS_DIR/anormalization.test*`; do
runTest2 "$1" "$FILE" FILE_COPY=$(mktemp)
registerResult $?
cat $FILE > $FILE_COPY
runTest2 "$1" "$FILE_COPY"
done done
   
echo -n " | " echo -n " | "
   
# random tests # random tests
CFG_FILE=cfg.xml
for i in $(seq 1 $TESTCASE_ITERATIONS ); for i in $(seq 1 $TESTCASE_ITERATIONS );
do do
CFG_FILE=$(mktemp)
cat <(generateCFG) > $CFG_FILE cat <(generateCFG) > $CFG_FILE
   
runTest2 "$1" "$CFG_FILE" runTest2 "$1" "$CFG_FILE" & (( i%JOBS==0 )) && wait
registerResult $?
done done
   
rm $CFG_FILE wait
   
outputResults outputResults
} }
......
...@@ -34,6 +34,8 @@ done ...@@ -34,6 +34,8 @@ done
cd bin-$1/ cd bin-$1/
rm -f $LOGFILE rm -f $LOGFILE
   
JOBS=$2
# ---------------------------- # ----------------------------
   
# $1 = conv command # $1 = conv command
...@@ -76,16 +78,21 @@ function runTest2 { ...@@ -76,16 +78,21 @@ function runTest2 {
log "$2" $RET "$3" "$4" "$OUT" log "$2" $RET "$3" "$4" "$OUT"
fi fi
   
rm $3
rm $4
if [ $RET == 124 ]; then # timeout if [ $RET == 124 ]; then # timeout
registerResult 2
return 2 return 2
elif [ $RET -ge 124 ]; then #segv elif [ $RET -ge 124 ]; then #segv
registerResult 3
return 3 return 3
fi elif [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
registerResult 1
if [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
return 1 return 1
else else
MATCHES=$(($MATCHES + $OUT2)) MATCHES=$(($MATCHES + $OUT2))
registerResult 0
return 0 return 0
fi fi
} }
...@@ -141,32 +148,36 @@ function runTest { ...@@ -141,32 +148,36 @@ function runTest {
# predefined tests first # predefined tests first
for SUBJECT_FILE in `ls $TESTS_DIR/astringology.test*.subject.xml`; do for SUBJECT_FILE in `ls $TESTS_DIR/astringology.test*.subject.xml`; do
PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml
if [ -f ]; then if [ -f $PATTERN_FILE ]; then
Occs=`./astringology2 -a exactFactorMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set` SUBJECT_FILE_COPY=$(mktemp)
PATTERN_FILE_COPY=$(mktemp)
cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
cat $PATTERN_FILE > $PATTERN_FILE_COPY
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" Occs=`./astringology2 -a exactFactorMatch -s "$SUBJECT_FILE_COPY" -p "$PATTERN_FILE_COPY" | ./astat2 -p size --set`
registerResult $?
runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
fi fi
done done
   
echo -n " | " echo -n " | "
   
# random tests # random tests
SUBJECT_FILE=s.xml
PATTERN_FILE=p.xml
for i in $(seq 1 $TESTCASE_ITERATIONS ); for i in $(seq 1 $TESTCASE_ITERATIONS );
do do
SUBJECT_FILE=$(mktemp)
PATTERN_FILE=$(mktemp)
cat <(generateSubject) > $SUBJECT_FILE cat <(generateSubject) > $SUBJECT_FILE
cat <(generatePattern) > $PATTERN_FILE cat <(generatePattern) > $PATTERN_FILE
   
Occs=`./astringology2 -a exactFactorMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set` Occs=`./astringology2 -a exactFactorMatch -s "$SUBJECT_FILE" -p "$PATTERN_FILE" | ./astat2 -p size --set`
   
runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE" & (( i%JOBS==0 )) && wait
registerResult $?
done done
   
rm $SUBJECT_FILE wait
rm $PATTERN_FILE
   
outputResults outputResults
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment