RFC - changes to the test suite

Tom Tromey
2013-02-18T17:57:32Z

I've been working for a while on file-level parallelism for the test
suite. The idea is to make each .exp file independent, so that we can
run the test cases in parallel at whatever granularity we like. This
will let the test suite scale better on more powerful machines.

Most of the needed changes to the tests themselves are straightforward:
adding standard_testfile and standard_output_file in various places, so
that tests no longer stomp on each others' executables, and so that the
location of output files can be controlled.

However, this latter point gets to something I thought I would bring up
for discussion before prepping this (somewhat large[*]) series for
submission.

In the interest of nicer test isolation, I changed where the test suite
places most files. For a given test file, say gdb.DIR/FILE.exp, the
various output files (executables, .o files, libraries, etc) go in a new
directory named "./outputs/gdb.DIR/FILE".

This has two nice effects.

First, we don't have to audit every single intermediate file to look for
basename clashes -- we can just make sure to use standard_output_file.

Second, it means all the "clean" rules can be replaced with "rm -rf
outputs". This resulted in a nice cleanup -- I got rid of all the (IMO
barely maintained) Makefile.in files underneath gdb/testsuite. This in
turn speeds up configure a little.

So, the first question is -- does anybody care strongly about where the
files end up? And, if you do care, why do you care?

I can pretty easily make it so that the files end up in the usual place
when not running in "parallel" mode. I don't think this is as good, but
I could do it if there is an outcry.

There are a few other changes, too, but nothing quite as visible.

I changed various gdb-property-testing procs to optionally cache their
results in a "cache" directory. That way we aren't re-running things
like the compile check in support_complex_tests for every .exp file that
might need it.

I also added an "inotify" mode to the tests so you can easily see which
tests write files outside of their specified directory. There are still
a few remaining, I ran out of steam dotting every "i".

Comments?

I plan to start organizing this branch for submission soon.

Tom

[*] 329 files changed, 2099 insertions(+), 4847 deletions(-)