Support 'make check-parallel' in gdb's build dir

Currently, you can cd to the gdb/testsuite/ dir and use
make check-parallel, instead of using FORCE_PARALLEL:

 $ make -j8 check-parallel RUNTESTFLAGS="--target_board=native-gdbserver"
 $ make -j8 check RUNTESTFLAGS="--target_board=native-gdbserver" FORCE_PARALLEL=1

But you can't do that in the build/gdb/ dir:

 $ make check-parallel RUNTESTFLAGS="--target_board=native-gdbserver"
 make: *** No rule to make target `check-parallel'.  Stop.

I find check-parallel a bit more convenient, and more typo-proof, so
this patch makes it work from the gdb build dir too.

While documenting this in testsuite/README, I found that the parallel
testing mode would better be pulled out to its own section and
extended.

gdb/ChangeLog:
2016-02-11  Pedro Alves  <palves@redhat.com>

	* Makefile.in (check-parallel): New rule.

gdb/testsuite/ChangeLog:
2016-02-11  Pedro Alves  <palves@redhat.com>

	* README (Parallel testing): New section.
	(GDB_PARALLEL): Rewrite.
	(FORCE_PARALLEL): Document.
This commit is contained in:
Pedro Alves 2016-02-11 19:36:39 +00:00
parent bec2ab5a15
commit e352bf0a3c
4 changed files with 54 additions and 12 deletions

View file

@ -1,3 +1,7 @@
2016-02-11 Pedro Alves <palves@redhat.com>
* Makefile.in (check-parallel): New rule.
2016-02-11 Simon Marchi <simon.marchi@ericsson.com>
* arm-tdep.c (arm_skip_prologue): Remove unused variables.

View file

@ -1158,6 +1158,14 @@ check-read1: force
$(MAKE) $(TARGET_FLAGS_TO_PASS) check-read1; \
else true; fi
check-parallel: force
@if [ -f testsuite/Makefile ]; then \
rootme=`pwd`; export rootme; \
rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
cd testsuite; \
$(MAKE) $(TARGET_FLAGS_TO_PASS) check-parallel; \
else true; fi
# The idea is to parallelize testing of multilibs, for example:
# make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
# will run 3 concurrent sessions of check, eventually testing all 10

View file

@ -1,3 +1,9 @@
2016-02-11 Pedro Alves <palves@redhat.com>
* README (Parallel testing): New section.
(GDB_PARALLEL): Rewrite.
(FORCE_PARALLEL): Document.
2016-02-11 Marcin Kościelnicki <koriakin@0x04.net>
* gdb.trace/tfile-avx.c: New test.

View file

@ -25,6 +25,31 @@ The second is to cd to the testsuite directory and invoke the DejaGnu
(The `site.exp' file contains a handful of useful variables like host
and target triplets, and pathnames.)
Parallel testing
****************
If not testing with a remote host (in DejaGnu's sense), you can run
the GDB test suite in a fully parallel mode. In this mode, each .exp
file runs separately and maybe simultaneously. The test suite ensures
that all the temporary files created by the test suite do not clash,
by putting them into separate directories. This mode is primarily
intended for use by the Makefile.
For GNU make, the Makefile tries to run the tests in parallel mode if
any -j option is given. For a non-GNU make, tests are not
parallelized.
If RUNTESTFLAGS is not empty, then by default the tests are
serialized. This can be overridden by either using the
`check-parallel' target in the Makefile, or by setting FORCE_PARALLEL
to any non-empty value:
make check-parallel RUNTESTFLAGS="--target_board=native-gdbserver
make check RUNTESTFLAGS="--target_board=native-gdbserver FORCE_PARALLEL=1
If you want to use runtest directly instead of using the Makefile, see
the description of GDB_PARALLEL below.
Running the Performance Tests
*****************************
@ -125,19 +150,18 @@ a .gdbinit. For example:
GDB_PARALLEL
When testing natively (that is, not with a remote host), you can run
the GDB test suite in a fully parallel mode. In this mode, each .exp
file runs separately and maybe simultaneously. The test suite will
ensure that all the temporary files created by the test suite do not
clash, by putting them into separate directories. This mode is
primarily intended for use by the Makefile.
To use parallel testing mode without using the the Makefile, set
GDB_PARALLEL on the runtest command line to "yes". Before starting
the tests, you must ensure that the directories cache, outputs, and
temp in the test suite build directory are either empty or have been
deleted. cache in particular is used to share data across invocations
of runtest, and files there may affect the test results. The Makefile
automatically does these deletions.
To use this mode, set the GDB_PARALLEL on the runtest command line.
Before starting the tests, you must ensure that the directories cache,
outputs, and temp in the test suite build directory are either empty
or have been deleted. cache in particular is used to share data
across invocations of runtest, and files there may affect the test
results. Note that the Makefile automatically does these deletions.
FORCE_PARALLEL
Setting FORCE_PARALLEL to any non-empty value forces parallel testing
mode even if RUNTESTFLAGS is not empty.
GDB_INOTIFY