[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#67392: dejagnu too noisy by default
From: |
Jacob Bachmeyer |
Subject: |
bug#67392: dejagnu too noisy by default |
Date: |
Wed, 22 Nov 2023 22:03:27 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.22) Gecko/20090807 MultiZilla/1.8.3.4e SeaMonkey/1.1.17 Mnenhy/0.7.6.0 |
Tom Tromey wrote:
I think runtest prints too much information to stdout by default.
Consider the appended output. This comes from running a single gdb
test.
A little bit of this is gdb-specific (the "HIP" override line). But
most of it is not.
What is "HIP"?
I have to warn you, again, that monkey-patching the framework like that
is not supported and is likely to break in a future release, probably
around the time that native parallel testing is introduced but possibly
before then. (You will, of course, be able to define a procedure named
"default_target_compile" in the tool-init context but it may not be the
"default_target_compile" that the framework calls anymore.) Also,
default_target_compile is slated to be entirely rewritten before the
next release, so whatever matching you are using may also break.
Further, default_target_compile is not intended as a customization
point, but rather as a default for targets that do not have their own
${target}_compile procedures defined in the site configuration.
The documented API call is target_compile, which only calls
default_target_compile if ${target}_compile does not exist.
Monkeypatching default_target_compile will break at any site that
actually has target-specific compile procedures.
There are plans to provide for extensibility; current Git master has
most of a spec strings module in lib/specs.exp that is planned to be
used as part of a table-driven new default_target_compile; an API for
testsuites to insert additional values will be provided. The tentative
plan is to add categories to the layers mechanism: site, local,
builtin, and fallback. The "site" category is reserved for
site-specific configuration and, since the site configuration files can
determine what testsuite is about to run, is the highest priority. The
"local" category allows testsuites to override the standard behavior.
The "builtin" category will contain the information currently hardwired
into default_target_compile. Lastly, the "fallback" category exists
explicitly to allow testsuites to extend DejaGnu as GDB did with Go and
Rust, but without causing upstream changes to mysteriously vanish when
testing GDB.
Most output is not really useful. In fact, pretty much the only lines I
might normally be interested in are the "Running [...]" line and the
result summary, so that if I "make -j8 check" I can easily see which
tests are being run. (FWIW for -j8 even the summary isn't interesting
because gdb's Makefile has to collate the results at the end anyway.)
The future native parallel testing support will take care of that. As
long as the GDB Makefiles do not pass the relevant option (probably also
-j) to runtest, the parallel testing infrastructure will not be used.
So, I think runtest should print a lot less text by default. Emitting
it to the .log file is sufficient (although some could even be trimmed
from there).
The largish block makes finding a previous run easier when rolling
through terminal scrollback. It visually stands out from the "Running
..." lines very eye-catchingly.
If you don't like that, though, how about a command line option to make
it be more quiet?
The question here is what should such an option actually do? Which
messages should be suppressed?
prentzel. runtest gdb.cp/local-static.exp
WARNING: Couldn't find the global config file.
Using
/home/tromey/gdb/build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/lib/gdb.exp
as tool init file.
NOTE: Dejagnu's default_target_compile is missing support for HIP, using local
override
Test run by tromey on Wed Nov 22 16:53:00 2023
Native configuration is x86_64-pc-linux-gnu
=== gdb tests ===
Schedule of variations:
unix
Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using
/home/tromey/gdb/build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/config/unix.exp
as tool-and-target-specific interface file.
Running
/home/tromey/gdb/build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/local-static.exp
...
=== gdb Summary ===
# of expected passes 407
/home/tromey/gdb/build/gdb/gdb version 15.0.50.20231121-git -nw -nx -q -iex "set height 0" -iex "set width 0" -data-directory /home/tromey/gdb/build/gdb/data-directory
DejaGnu is specifically intended to support complex testing
environments, so please consider a user with multiple test targets, of
different architectures, possibly connected using different interfaces,
all managed from one workstation. That said, perhaps some different
defaults may be appropriate in the narrow case of running one specific
test script, locally.
While writing this, I had an idea for a possible new feature: a
"oneshot" testing mode, perhaps available with a --oneshot option, that
will set up the testsuite and run exactly one script, with minimal
output, perhaps as little as the summary lines and ${tool}_version
output. Implementing this right now would require extensive changes to
runtest, so it will sit on my TODO list until I find an elegant way to
do it, but the goal would be something like:
8<------
prentzel. runtest --oneshot gdb.cp/local-static.exp
# of expected passes 407
/home/tromey/gdb/build/gdb/gdb version 15.0.50.20231121-git -nw -nx -q -iex "set height
0" -iex "set width 0" -data-directory /home/tromey/gdb/build/gdb/data-directory
8<------
The intended use of --oneshot is for rapid testing while developing a
feature or chasing a bug, so logs would probably also be different in
oneshot mode but this requires more thought. I presume that your
site.exp is setting tool to "gdb"?
-- Jacob