diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/testsuite/Makefile.in | 20 | ||||
-rw-r--r-- | gdb/testsuite/README | 20 | ||||
-rwxr-xr-x | gdb/testsuite/print-ts.py | 48 |
4 files changed, 94 insertions, 8 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 06a1a06..20b2b3b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,17 @@ +2018-11-25 Sergio Durigan Junior <sergiodj@redhat.com> + + * Makefile.in (TIMESTAMP): New variable. + (check-single): Add $(TIMESTAMP) to the end of $(DO_RUNTEST) + command. + (check-single-racy): Likewise. + (check/%.exp): Likewise. + (check-racy/%.exp): Likewise. + (workers/%.worker): Likewise. + (build-perf): Likewise. + (check-perf): Likewise. + * README: Describe new "TS" and "TS_FORMAT" variables. + * print-ts.py: New file. + 2018-11-21 Benno Fünfstück <benno.fuenfstueck@gmail.com> PR python/23714 diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in index ece7e25..b526f57 100644 --- a/gdb/testsuite/Makefile.in +++ b/gdb/testsuite/Makefile.in @@ -158,6 +158,10 @@ check: all $(abs_builddir)/site.exp check-read1: $(MAKE) READ1="1" check +# Check whether we need to print the timestamp for each line of +# status. +TIMESTAMP = $(if $(TS),| $(srcdir)/print-ts.py $(if $(TS_FORMAT),$(TS_FORMAT),),) + # All the hair to invoke dejagnu. A given invocation can just append # $(RUNTESTFLAGS) DO_RUNTEST = \ @@ -192,7 +196,7 @@ check-gdb.%: $(MAKE) check TESTS="gdb.$*/*.exp" check-single: - $(DO_RUNTEST) $(RUNTESTFLAGS) $(expanded_tests_or_none) + $(DO_RUNTEST) $(RUNTESTFLAGS) $(expanded_tests_or_none) $(TIMESTAMP) check-single-racy: -rm -rf cache racy_outputs temp @@ -208,7 +212,7 @@ check-single-racy: for n in `seq $$racyiter` ; do \ mkdir -p racy_outputs/$$n; \ $(DO_RUNTEST) --outdir=racy_outputs/$$n $(RUNTESTFLAGS) \ - $(expanded_tests_or_none); \ + $(expanded_tests_or_none) $(TIMESTAMP); \ done; \ $(srcdir)/analyze-racy-logs.py \ `ls racy_outputs/*/gdb.sum` > racy.sum; \ @@ -273,7 +277,7 @@ do-check-parallel: $(TEST_TARGETS) check/%.exp: -mkdir -p outputs/$* - @$(DO_RUNTEST) GDB_PARALLEL=yes --outdir=outputs/$* $*.exp $(RUNTESTFLAGS) + @$(DO_RUNTEST) GDB_PARALLEL=yes --outdir=outputs/$* $*.exp $(RUNTESTFLAGS) $(TIMESTAMP) do-check-parallel-racy: $(TEST_TARGETS) @: @@ -282,7 +286,7 @@ check-racy/%.exp: -mkdir -p racy_outputs/$(RACY_OUTPUT_N)/$* $(DO_RUNTEST) GDB_PARALLEL=yes \ --outdir=racy_outputs/$(RACY_OUTPUT_N)/$* $*.exp \ - $(RUNTESTFLAGS) + $(RUNTESTFLAGS) $(TIMESTAMP) check/no-matching-tests-found: @echo "" @@ -292,7 +296,7 @@ check/no-matching-tests-found: # Utility rule invoked by step 2 of the build-perf rule. workers/%.worker: mkdir -p gdb.perf/outputs/$* - $(DO_RUNTEST) --outdir=gdb.perf/outputs/$* lib/build-piece.exp WORKER=$* GDB_PARALLEL=gdb.perf $(RUNTESTFLAGS) GDB_PERFTEST_MODE=compile GDB_PERFTEST_SUBMODE=build-pieces + $(DO_RUNTEST) --outdir=gdb.perf/outputs/$* lib/build-piece.exp WORKER=$* GDB_PARALLEL=gdb.perf $(RUNTESTFLAGS) GDB_PERFTEST_MODE=compile GDB_PERFTEST_SUBMODE=build-pieces $(TIMESTAMP) # Utility rule to build tests that support it in parallel. # The build is broken into 3 steps distinguished by GDB_PERFTEST_SUBMODE: @@ -312,18 +316,18 @@ build-perf: $(abs_builddir)/site.exp rm -rf gdb.perf/workers mkdir -p gdb.perf/workers @: Step 1: Generate the build .worker files. - $(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf/workers GDB_PARALLEL=gdb.perf $(RUNTESTFLAGS) GDB_PERFTEST_MODE=compile GDB_PERFTEST_SUBMODE=gen-workers + $(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf/workers GDB_PARALLEL=gdb.perf $(RUNTESTFLAGS) GDB_PERFTEST_MODE=compile GDB_PERFTEST_SUBMODE=gen-workers $(TIMESTAMP) @: Step 2: Compile the pieces. Here is the build parallelism. $(MAKE) $$(cd gdb.perf && echo workers/*/*.worker) @: Step 3: Do the final link. - $(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf GDB_PARALLEL=gdb.perf $(RUNTESTFLAGS) GDB_PERFTEST_MODE=compile GDB_PERFTEST_SUBMODE=final + $(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf GDB_PARALLEL=gdb.perf $(RUNTESTFLAGS) GDB_PERFTEST_MODE=compile GDB_PERFTEST_SUBMODE=final $(TIMESTAMP) # The default is to both compile and run the tests. GDB_PERFTEST_MODE = both check-perf: all $(abs_builddir)/site.exp @if test ! -d gdb.perf; then mkdir gdb.perf; fi - $(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf GDB_PERFTEST_MODE=$(GDB_PERFTEST_MODE) $(RUNTESTFLAGS) + $(DO_RUNTEST) --directory=gdb.perf --outdir gdb.perf GDB_PERFTEST_MODE=$(GDB_PERFTEST_MODE) $(RUNTESTFLAGS) $(TIMESTAMP) force:; diff --git a/gdb/testsuite/README b/gdb/testsuite/README index 55abfb3..723d8ba 100644 --- a/gdb/testsuite/README +++ b/gdb/testsuite/README @@ -273,6 +273,26 @@ can do: Note that only a hostname/address can be provided, without a port number. +TS + +This variable turns on the timestamp printing for each line of "make +check". Note that the timestamp will be printed on stdout output +only. In other words, there will be no timestamp output on either +gdb.sum and gdb.log files. If you would like to enable timestamp +printing, you can do: + + make check TS=1 + +TS_FORMAT + +You can provide a custom format for timestamp printing with this +variable. The format must be a string compatible with "strftime". +This variable is only useful when the TS variable is also provided. +If you would like to change the output format of the timestamp, you +can do: + + make check TS=1 TS_FORMAT='[%b %H:%S]' + Race detection ************** diff --git a/gdb/testsuite/print-ts.py b/gdb/testsuite/print-ts.py new file mode 100755 index 0000000..cfc9d26 --- /dev/null +++ b/gdb/testsuite/print-ts.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +# Copyright (C) 2018 Free Software Foundation, Inc. +# +# This file is part of GDB. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# This is a simple program that can be used to print timestamps on +# standard output. The inspiration for it was ts(1) +# (<https://joeyh.name/code/moreutils/>). We have our own version +# because unfortunately ts(1) is or may not be available on all +# systems that GDB supports. +# +# The usage is simple: +# +# #> some_command | print-ts.py [FORMAT] +# +# FORMAT must be a string compatible with "strftime". If nothing is +# provided, we choose a reasonable format. + +import fileinput +import datetime +import sys +import os + +if len(sys.argv) > 1: + fmt = sys.argv[1] +else: + fmt = '[%b %d %H:%M:%S]' + +mypid = os.getpid() + +for line in fileinput.input('-'): + sys.stdout.write("{} [{}] {}".format(datetime.datetime.now().strftime(fmt), + mypid, line)) + sys.stdout.flush() |