diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-11-16 15:16:25 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-11-17 10:11:50 +0000 |
commit | c72e313608b86c45a822d385ea5bc7acd3b6582c (patch) | |
tree | 47f9f19ed6e142161045dbff125f61dca174ff83 | |
parent | 037d7135de575c9e0c20e9158c105979bfee339c (diff) | |
download | gdb-c72e313608b86c45a822d385ea5bc7acd3b6582c.zip gdb-c72e313608b86c45a822d385ea5bc7acd3b6582c.tar.gz gdb-c72e313608b86c45a822d385ea5bc7acd3b6582c.tar.bz2 |
gdb/testsuite: prevent timeout in gdb.gdb/unittest.exp
When GDB is compiled with --enable-targets=all I would sometimes see
the 'maintenance selftest' in gdb.gdb/unittest.exp test timeout.
This one command causes GDB to run many separate self tests, this can
take some time. The output of this command basically follows this
pattern:
(gdb) maintenance selftest
Running selftest aarch64-analyze-prologue.
Running selftest aarch64-process-record.
Running selftest arm-record.
Running selftest arm_analyze_prologue.
Running selftest array_view.
Running selftest child_path.
Running selftest cli_utils.
..... snip lots more lines ....
Ran 79 unit tests, 0 failed
Currently the expect script waits for the final summary line ("Ran 79
unit test, 0 failed") before declaring pass or fail. The problem is
that if the summary line takes too long to appear the test will
timeout.
As this test makes use of gdb_test_multiple then all I've done is add
an extra pattern that matches the 'Running selftest ....' lines and
then calls exp_continue. Doing this means we find matches much more
frequently, and each time we do the timeout timer resets, preventing
the overall test from timing out.
gdb/testsuite/ChangeLog:
* gdb.gdb/unittest.exp: Spot 'Running...' lines.
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.gdb/unittest.exp | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3795205..9c326d5 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2020-11-17 Andrew Burgess <andrew.burgess@embecosm.com> + * gdb.gdb/unittest.exp: Spot 'Running...' lines. + +2020-11-17 Andrew Burgess <andrew.burgess@embecosm.com> + * gdb.base/completion.exp: Add new tests. 2020-11-16 Tom Tromey <tromey@adacore.com> diff --git a/gdb/testsuite/gdb.gdb/unittest.exp b/gdb/testsuite/gdb.gdb/unittest.exp index 20027b8..28a1452 100644 --- a/gdb/testsuite/gdb.gdb/unittest.exp +++ b/gdb/testsuite/gdb.gdb/unittest.exp @@ -26,6 +26,13 @@ gdb_start set test "maintenance selftest" gdb_test_multiple $test $test { + -re ".*Running selftest \[^\n\r\]+\." { + # The selftests can take some time to complete. To prevent + # timeout spot the 'Running ...' lines going past, so long as + # these are produced quickly enough then the overall test will + # not timeout. + exp_continue + } -re "Ran ($decimal) unit tests, 0 failed\r\n$gdb_prompt $" { set num_ran $expect_out(1,string) gdb_assert "$num_ran > 0" $test |