Hi - The gcc-testresults mailing list is a well-established place to plop snippets of testsuite results. It's an okay way to archive and distribute overall counts, but it's not machine readable, and it's way incomplete (lacks .log content, a lot of metadata, barely meaningfully searchable) for trying to understand why something failed.
A few years ago, our team @ RH built the bunsen system to serve as a structured repository for dejagnu (and other) testsuite types. [1] An instance running here [2] has been collecting data from the sourceware buildbots and individuals (hi iains!) for years. It convers all the toolchain pieces and then some, including gcc. It features machine readable indexing, cross-referenced test case browsing, regression analysis, old data aging, and many other capabilities. (It even has a piece that extracts data from the gcc-testresults@ mailing list archives, but there's too little there to bother. [4]) This patch attempts to make it easy for gcc developers who use the contrib/test_summary script today to opt in to contributing their results to a bunsen server (defaulting to the sourceware one [2]). The prerequites are: - git - the bunsen t-upload-git-push script [3], feel free to grab just that into your $PATH - sourceware account with bunsendb commit access [ask on admin-reque...@sourceware.org] - pretty much nothing else - specifically, gcc commit access is not necessary! Here's how it looks when it's run after a random small gcc build/test: .../contrib/test_summary -h [...] -b: instead of emailing, push test logs into a bunsen git repo -bg REPO: specify the bunsen git repo to override default -bt TAG: specify the bunsen git commit tag to override default .../contrib/test_summary -b | env PATH=$BUNSEN/INST/bin:$PATH sh -x + echo master + echo basepoints/gcc-15-3524-ga523c2ba5862 + echo a523c2ba58621c3630a1cd890d6db82879f92c90 + echo git://gcc.gnu.org/git/gcc.git + find . -name '*.log' -o -name '*.sum' -o -name '.bunsen.*' + t-upload-git-push ssh://sourceware.org/git/bunsendb.git/ fche/gcc/x86_64-20240913-1516 ec57fb8ee928e341d1f0d1b09c1d571fb590bd2b refs/tags/fche/gcc/x86_64-20240913-1516 And here's what that dataset looks like on bunsen a few minutes later: https://builder.sourceware.org/testrun/ec57fb8ee928e341d1f0d1b09c1d571fb590bd2b If this is of any interest, I'd be glad to hack on this script further to make it acceptable. [1] https://sourceware.org/bunsen/ [2] https://builder.sourceware.org/testruns/ [3] https://sourceware.org/git/?p=bunsen.git;a=blob;f=bin/t-upload-git-push [4] https://sourceware.org/git/?p=bunsen.git;a=blob;f=bin/t-sourceware-mails-import diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 9b36caf02bb1..def8dd8a8a73 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,9 @@ +2024-09-13 Frank Ch. Eigler <f...@redhat.com> + + * test_summary: Add -b (bunsen) mode to report all test results + into a https://sourceware.org/bunsen/ system instead of emailing + extracts. + 2024-08-01 Thomas Schwinge <tschwi...@baylibre.com> * gcc_update (files_and_dependencies): Update for diff --git a/contrib/test_summary b/contrib/test_summary index 5760b053ec27..867ada4d6b81 100755 --- a/contrib/test_summary +++ b/contrib/test_summary @@ -39,6 +39,9 @@ if test x"$1" = "x-h"; then should be selected from the log files. -f: force reports to be mailed; if omitted, only reports that differ from the sent.* version are sent. + -b: instead of emailing, push test logs into a bunsen git repo + -bg REPO: specify the bunsen git repo to override default + -bt TAG: specify the bunsen git commit tag to override default _EOF exit 0 fi @@ -57,6 +60,9 @@ fi : ${filesuffix=}; export filesuffix : ${move=true}; export move : ${forcemail=false}; export forcemail +: ${bunsen=false}; +: ${bunsengit=ssh://sourceware.org/git/bunsendb.git/}; +: ${bunsentag=`whoami`/gcc/`uname -m`-`date +%Y%m%d-%H%M`}; while true; do case "$1" in -o) filesuffix=.sent; move=false; : ${mailto=nobody}; shift;; @@ -64,10 +70,30 @@ while true; do -p) prepend_logs=${prepend_logs+"$prepend_logs "}"$2"; shift 2;; -i) append_logs=${append_logs+"$append_logs "}"$2"; shift 2;; -m) mailto=$2; forcemail=true; shift 2;; + -b) bunsen=true; shift;; + -bg) bunsengit=$2; shift 2;; + -bt) bunsentag=$2; shift 2;; -f) unset mailto; forcemail=true; shift;; *) break;; esac done +if [ "x$bunsen" = "xtrue" ]; then + gitsrcdir=`dirname "$0"` # this script, contrib/test_summary + gitsrcdir=`dirname "$gitsrcdir"` # and the parent directory + if [ -d "$gitsrcdir/.git" ]; then # is this a git-hosted source tree? + # gather basic build metadata for sourceware-buildbot-style .bunsen data + gitbranch=`cd "$gitsrcdir"; git rev-parse --abbrev-ref HEAD` + echo "echo '$gitbranch' > .bunsen.source.gitbranch &&" + gitdescribe=`cd "$gitsrcdir"; git describe` + echo "echo '$gitdescribe' > .bunsen.source.gitdescribe &&" + gitname=`cd "$gitsrcdir"; git rev-parse HEAD` + echo "echo '$gitname' > .bunsen.source.gitname &&" + gitremote=`cd "$gitsrcdir"; git config --get remote.origin.url` + echo "echo '$gitremote' > .bunsen.source.gitrepo &&" + fi + echo "(find . -name '*.log' -o -name '*.sum' -o -name '.bunsen.*' | t-upload-git-push '$bunsengit' '$bunsentag')" + exit 0 +fi : ${mailto="\" address \""}; export mailto files=`find . -name \*.sum$filesuffix -print | sort` anyfile=false anychange=$forcemail &&