diff --git a/ChangeLog b/ChangeLog index d9e7e440fc08229e82c6ebe22d03a18fd0d423ac..79fbf9deea85d642ae682649ba5e9fd4050fc69f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2010-06-19 Per Cederqvist <ceder@lysator.liu.se> + + Refuse to run the test suite if expect is known to be so broken + that it cannot be run. + * src/server/testsuite/Makefile.am (check-l2g): Depend on + working-dejagnu. + (check-lyskomd): Ditto. + (check-leaks): Ditto. + (working-dejagnu): New target. + (EXTRA_DIST): Added dejagnu.0/00-zero-length-write.exp and + dejagnu.0/90-slow-glob-gate.exp. + * src/server/testsuite/dejagnu.0/00-zero-length-write.exp: New + test, that fails on known bad versions of expect. + * src/server/testsuite/dejagnu.0/90-slow-glob-gate.exp: New test, + that fails if a simple regexp pattern causes expect to run too + slow, indicating that it is converted to a glob pattern that + causes a lot of backtracking. + * src/server/testsuite/.gitignore: Ignore dejagnu.log and + dejagnu.sum. + 2010-05-23 Per Cederqvist <ceder@lysator.liu.se> Don't attempt to use DNS when no nameserver is available. diff --git a/src/server/testsuite/.gitignore b/src/server/testsuite/.gitignore index 4d063d1542ecb68c569cdb3dfe723bd83626c82b..f3c1e5072fa9b304c951d4a1852f31a2a992875b 100644 --- a/src/server/testsuite/.gitignore +++ b/src/server/testsuite/.gitignore @@ -13,6 +13,8 @@ bignum core db dbg.log +dejagnu.log +dejagnu.sum etc get-time-often gmon.out diff --git a/src/server/testsuite/Makefile.am b/src/server/testsuite/Makefile.am index bff254d752918ac8b93a728e2968c39b964eee59..cb0b1ba9cb59c13928f74187c2f2da4c24f5e02c 100644 --- a/src/server/testsuite/Makefile.am +++ b/src/server/testsuite/Makefile.am @@ -52,6 +52,8 @@ EXTRA_DIST = \ leaks.0/leaks10.exp \ leaks.0/lots-aux-items.conf \ leaks.0/no-aux-items.conf \ + dejagnu.0/00-zero-length-write.exp \ + dejagnu.0/90-slow-glob-gate.exp \ locksuite.py \ lyskomd.supp \ renumber.el \ @@ -130,10 +132,10 @@ check-nondejagnu: check-testfd check-test-select check-test-sigjmp check-dejagnu: check-l2g check-lyskomd check-leaks -check-l2g: test-l2g site.exp valgrind.wrap +check-l2g: test-l2g site.exp valgrind.wrap working-dejagnu runtest --tool l2g --srcdir $(srcdir) -check-lyskomd: site.exp ../lyskomd valgrind.wrap bignum timeval-overflow +check-lyskomd: site.exp ../lyskomd valgrind.wrap bignum timeval-overflow working-dejagnu if HAVE_PYTHON runtest --tool lyskomd --srcdir $(srcdir) \ 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- @@ -149,7 +151,7 @@ endif # "make check" in lyskomd.0. check-lyskomd: check-recursive -check-leaks: site.exp ../lyskomd valgrind.wrap +check-leaks: site.exp ../lyskomd valgrind.wrap working-dejagnu if HAVE_PYTHON runtest --tool leaks --srcdir $(srcdir) \ 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- @@ -160,6 +162,9 @@ else @echo >&2 endif +working-dejagnu: + runtest --tool dejagnu --srcdir $(srcdir) + check-testfd: testfd ./testfd diff --git a/src/server/testsuite/dejagnu.0/00-zero-length-write.exp b/src/server/testsuite/dejagnu.0/00-zero-length-write.exp new file mode 100644 index 0000000000000000000000000000000000000000..d16eddccd4ed972ddea26ca104dc43e884f5ff7b --- /dev/null +++ b/src/server/testsuite/dejagnu.0/00-zero-length-write.exp @@ -0,0 +1,11 @@ +# expect 5.43.0 contains a bug that causes the LysKOM test suite to +# hang. Unfortunately, I have not been able to create a short example +# that reproduces the problem. The official fix is visible here: +# +# http://expect.cvs.sourceforge.net/viewvc/expect/expect/exp_chan.c?r1=5.12&r2=5.13 + +if {[exp_version] == "5.43.0"} { + fail "expect 5.43.0 is broken and causes the test suite to hang" +} else { + pass "zero-length write bug probably not present" +} diff --git a/src/server/testsuite/dejagnu.0/90-slow-glob-gate.exp b/src/server/testsuite/dejagnu.0/90-slow-glob-gate.exp new file mode 100644 index 0000000000000000000000000000000000000000..fa142916ce2522c99b0103ffbb12b0263e3a8a44 --- /dev/null +++ b/src/server/testsuite/dejagnu.0/90-slow-glob-gate.exp @@ -0,0 +1,24 @@ +# expect 5.44.1.1 introduced a "gate keeper glob pattern", to avoid +# using "slow" regexp matching. Unfortunately, the glob pattern +# constructed for many of our fast regular expressions are very, very +# slow. So slow that the test suite cannot continue. +# +# This test reproduces the problem to a small extent. In expect +# 5.43.0 and earlier this runs in less than 1 ms, but in 5.44.1.14 it +# takes 1.3 seconds (on a particular computer). +# +# The bug is reported here: +# http://sourceforge.net/tracker/?func=detail&atid=113179&aid=3010684&group_id=13179 + +spawn echo "MRK:client1: :18 14 6 6 3 22 1 5 110 2 151 1 5 0 8 0 2 { 0 1 6 5 } 0 *\nMRK:client1: :18 14 7 6 3 22 1\n" +set t0 [clock clicks -milliseconds] +expect { + -re "^MRK:client1: :18 14 6 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 5 0 8 0 2 { 0 1 6 5 } 0 \\\\*\r?\n" { + } +} +set t1 [clock clicks -milliseconds] +if {$t1 - $t0 > 20} { + fail "regexp matchint too slow ([expr $t1 - $t0] ms)" +} else { + pass "regexp matching seems to be fast" +}