On Fri, Sep 13, 2024 at 4:19 PM Frank Ch. Eigler <f...@redhat.com> wrote:
>
> 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.
>

I pretty much only use `contrib/test_summary` via the
`mail-report.log` target in the top-level Makefile; maybe add a
`bunsen` target to the top-level Makefile, too, to simplify invoking
it?

>
> [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 &&
>

Reply via email to