Skip to content

serhei/bunsen

Repository files navigation

bunsen

bunsen indexes and stores a collection of DejaGNU test result files in a Git repo. The Git repo generated by bunsen contains an index in JSON format to speed up querying and test result analysis. For test result analysis, bunsen includes a Python library and a collection of analysis scripts.

When storing test result data, Git's de-duplication produces an impressive compression factor. For example, a collection of 8758 testruns from https://gdb-buildbot.osci.io/results/ takes up 24GB when the log files are individually compressed with xz, but only 3.2GB when the files are packed into a Git repo using `bunsen**.

The codebase is intended as a starting point towards automatic regression detection and analysis for free software projects whose testing setup generates a large volume of test results across different system configurations.

Analysis examples for the LPC/GNUTools 2021 talk: https://people.redhat.com/~smakarov/2021-lpc-talk/

Tutorial from the GNU Tools Cauldron 2019 talk: doc/2019-cauldron-tutorial.md

Prerequisites

bunsen requires Git, Python 3 and the following libraries:

$ pip3 install --user tqdm # see https://github.com/tqdm/tqdm
$ pip3 install --user GitPython # see https://github.com/gitpython-developers/GitPython
$ pip3 install --user python-dateutil # see https://github.com/dateutil/dateutil/

Or, more simply:

$ pip3 install --user -r requirements.txt

Python3 versions older than 3.4 may also require:

$ pip3 install --user pathlib # see https://docs.python.org/3/library/pathlib.html

Example setup for the server/bunsen-cgi.py dashboard and server/bunsen-upload.py upload scripts with lighttpd:

$ cp bunsen-lighttpd.conf.example bunsen-lighttpd.conf
$ vim bunsen-lighttpd.conf # edit var.bunsen_root
$ vim .bunsen/config # add 'manifest', 'commit_module' options to section [bunsen-push];
                     # see server/bunsen-upload.py for details
$ lighttpd -D -f ./bunsen-lighttpd.conf

Example .bunsen/config for a SystemTap Bunsen setup:

[core]
	project=systemtap
[project "systemtap"]
	source_repo=/opt/upstream-systemtap
	gitweb_url=https://sourceware.org/git/?p=systemtap.git
[bunsen-upload]
	manifest=sysinfo,systemtap.dmesg*,systemtap.sum*,systemtap.log*
	commit_module=systemtap.commit_logs

Here, /opt/upstream-systemtap is a Git checkout of the Sourceware SystemTap git repo.

Development

bunsen is now hosted on sourceware.org: