ltlcross, autcross, ltldo: support --fail-on-timeout

Suggested by Tobias Meggendorfer.  Fixes #294.

* bin/autcross.cc, bin/ltlcross.cc, bin/ltldo.cc: Add the option.
* tests/core/autcross3.test, tests/core/ltlcross3.test,
tests/core/ltldo.test: Test it.
* tests/Makefile.am: Add autcross3.test.
* NEWS, doc/org/autcross.org, doc/org/ltlcross.org, doc/org/ltldo.org:
Mention the option.
* THANKS: Add Tobias.
This commit is contained in:
Alexandre Duret-Lutz 2017-10-15 10:44:26 +02:00
parent 0a2bca1377
commit 183ec1fb4e
12 changed files with 147 additions and 21 deletions

49
tests/core/autcross3.test Executable file
View file

@ -0,0 +1,49 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2017 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test the timeout handling of autcross.
. ./defs
set -e
check_csv()
{
# Make sure all lines in $1 have the same number of comas
sed 's/[^,]//g' < "$1" |
( read first
while read l; do
test "x$first" = "x$l" || exit 1
done)
}
randaut -Q4 2 |
autcross --language-preserve 'autfilt' 'sleep 5; autfilt %H > %O' \
--timeout=2 --csv=out.csv 2>stderr
cat stderr
test `grep 'warning:.*timeout' stderr | wc -l` -eq 1
test `wc -l < out.csv` -eq 3
check_csv out.csv
randaut -Q4 2 |
autcross --language-preserve 'autfilt' 'sleep 5; autfilt %H > %O' \
--timeout=2 --fail-on-timeout --csv=out.csv 2>stderr && exit 1
cat stderr
test `grep 'error:.*timeout' stderr | wc -l` -eq 1
test `wc -l < out.csv` -eq 3
check_csv out.csv

View file

@ -124,6 +124,20 @@ test `grep 'warning:.*timeout' stderr | wc -l` -eq 2
test `wc -l < out.csv` -eq 1
check_csv out.csv
run 1 ltlcross 'sleep 5; false %f >%N' --fail-on-timeout \
--timeout 2 -f a --csv=out.csv 2>stderr
test `grep 'error:.*timeout' stderr | wc -l` -eq 2
test `wc -l < out.csv` -eq 3
check_csv out.csv
run 1 ltlcross 'sleep 5; false %f >%N' --fail-on-timeout \
--stop-on-error --timeout 2 -f a -f b --csv=out.csv \
--save-bogus=bogous 2>stderr
test `grep 'error:.*timeout' stderr | wc -l` -eq 2
test `wc -l < out.csv` -eq 3
test `wc -l < bogous` -eq 1
check_csv out.csv
# Check with --products=5 --automata
run 1 ltlcross "$ltl2tgba -s %f >%N" 'false %f >%N' \
-f a --csv=out.csv --products=5 --automata 2>stderr

View file

@ -42,13 +42,27 @@ EOF
diff output expected
# Test timeouts. This test should take 2*2 seconds.
# Test timeouts. Each of these runs should take 2*2 seconds.
$genltl --or-g=1..2 |
run 0 $ltldo -t 'sleep 10; echo %f' -T1 -t 'sleep 10; echo %f' \
>output 2>stderr
test -z "`cat output`"
test 4 = `grep -c warning: stderr`
genltl --or-g=1..2 |
run 0 ltldo -t 'sleep 10; echo %f' -T1 -t 'sleep 10; echo %f' \
--fail-on-timeout --error=warn >output 2>stderr
test -z "`cat output`"
test 4 = `grep -c error: stderr`
grep -q 'aborting here' stderr && exit 1
genltl --or-g=1..2 |
run 2 ltldo -t 'sleep 10; echo %f' -T1 -t 'sleep 10; echo %f' \
--fail-on-timeout >output 2>stderr
test -z "`cat output`"
test 1 = `grep -c error: stderr`
grep -q 'aborting here' stderr
test "`echo 1,a,3,4 | ltldo -F-/2 ltl2tgba --stats='%<,%s,%>'`" = '1,2,3,4'
$genltl --and-gf=1..3 |