From 1499cd557b2759b234504676e4275f467da7ad1a Mon Sep 17 00:00:00 2001 From: Holger Levsen Date: Sat, 19 Dec 2015 11:22:38 +0100 Subject: reproducible debian dashboard: refactor, merge architecture build stats and move to the bottom --- bin/reproducible_common.sh | 2 +- bin/reproducible_html_dashboard.sh | 109 +++++++++++++++++++++---------------- 2 files changed, 62 insertions(+), 49 deletions(-) diff --git a/bin/reproducible_common.sh b/bin/reproducible_common.sh index 2dfdca77..9016db75 100755 --- a/bin/reproducible_common.sh +++ b/bin/reproducible_common.sh @@ -43,7 +43,7 @@ DBDSUITE="unstable" # Debian suites being tested SUITES="testing unstable experimental" # Debian architectures being tested -ARCHS="armhf amd64" +ARCHS="amd64 armhf" # define Debian build nodes in use BUILD_NODES="profitbricks-build1-amd64.debian.net profitbricks-build2-amd64.debian.net profitbricks-build5-amd64.debian.net profitbricks-build6-amd64.debian.net wbq0-armhf-rb.debian.net cbxi4pro0-armhf-rb.debian.net bpi0-armhf-rb.debian.net hb0-armhf-rb.debian.net odxu4-armhf-rb.debian.net wbd0-armhf-rb.debian.net rpi2b-armhf-rb.debian.net" # these also needs to be defined in bin/jenkins_master_wrapper.sh diff --git a/bin/reproducible_html_dashboard.sh b/bin/reproducible_html_dashboard.sh index a39feb64..7aaf4a72 100755 --- a/bin/reproducible_html_dashboard.sh +++ b/bin/reproducible_html_dashboard.sh @@ -285,36 +285,51 @@ write_usertag_table() { # write build performance stats # write_build_performance_stats() { - if [ "$ARCH" = "amd64" ] || [ "$ARCH" = "armhf" ] ; then - TIMESPAN_VERBOSE="4 weeks" - TIMESPAN_RAW="28" - else - TIMESPAN_VERBOSE="1 week" - TIMESPAN_RAW="7" - fi - write_page "" - AGE_UNSTABLE=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(max(oldest_reproducible, oldest_unreproducible, oldest_FTBFS) AS INTEGER) FROM ${TABLE[2]} WHERE suite='unstable' AND architecture='$ARCH' AND datum='$DATE'") - AGE_EXPERIMENTAL=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(max(oldest_reproducible, oldest_unreproducible, oldest_FTBFS) AS INTEGER) FROM ${TABLE[2]} WHERE suite='experimental' AND architecture='$ARCH' AND datum='$DATE'") - if [ "$ARCH" != "armhf" ] ; then - AGE_TESTING=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(max(oldest_reproducible, oldest_unreproducible, oldest_FTBFS) AS INTEGER) FROM ${TABLE[2]} WHERE suite='testing' AND architecture='$ARCH' AND datum='$DATE'") - write_page "" - else - write_page "" - fi - RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(AVG(r.build_duration) AS INTEGER) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_duration!='' AND r.build_duration!='0' AND r.build_date LIKE '%$DATE%' AND s.architecture='$ARCH'") - MIN=$(echo $RESULT/60|bc) - SEC=$(echo "$RESULT-($MIN*60)"|bc) - write_page "" - RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(AVG(r.build_duration) AS INTEGER) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_duration!='' AND r.build_duration!='0' AND r.build_date > datetime('$DATE', '-$TIMESPAN_RAW days') AND s.architecture='$ARCH'") - MIN=$(echo $RESULT/60|bc) - SEC=$(echo "$RESULT-($MIN*60)"|bc) - write_page "" - RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT COUNT(r.build_date) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_date LIKE '%$DATE%' AND s.architecture='$ARCH'") - write_page "" - RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT COUNT(r.build_date) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_date > datetime('$DATE', '-$TIMESPAN_RAW days') AND s.architecture='$ARCH'") - RESULT="$(echo $RESULT/$TIMESPAN_RAW|bc)" - write_page "" - write_page "
Build statistics for $ARCH
oldest $ARCH build result in testing / unstable / experimental$AGE_TESTING / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days
oldest $ARCH build result in unstable / experimental $AGE_UNSTABLE / $AGE_EXPERIMENTAL days
average test duration (on $DATE)$MIN minutes, $SEC seconds
average test duration (in the last $TIMESPAN_VERBOSE)$MIN minutes, $SEC seconds
packages tested on $DATE$RESULT
packages tested on average per day in the last $TIMESPAN_VERBOSE$RESULT
" + local ARCH + write_page "" + for ARCH in ${ARCHS} ; do + write_page " " + done + write_page "" + for ARCH in ${ARCHS} ; do + PERF_STATS[$ARCH]=$(mktemp -t reproducible-dashboard-perf-XXXXXXXX) + AGE_UNSTABLE=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(max(oldest_reproducible, oldest_unreproducible, oldest_FTBFS) AS INTEGER) FROM ${TABLE[2]} WHERE suite='unstable' AND architecture='$ARCH' AND datum='$DATE'") + AGE_EXPERIMENTAL=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(max(oldest_reproducible, oldest_unreproducible, oldest_FTBFS) AS INTEGER) FROM ${TABLE[2]} WHERE suite='experimental' AND architecture='$ARCH' AND datum='$DATE'") + if [ "$ARCH" != "armhf" ] ; then + AGE_TESTING=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(max(oldest_reproducible, oldest_unreproducible, oldest_FTBFS) AS INTEGER) FROM ${TABLE[2]} WHERE suite='testing' AND architecture='$ARCH' AND datum='$DATE'") + else + AGE_TESTING="-" + fi + write_page "" + done + write_page "" + for ARCH in ${ARCHS} ; do + RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(AVG(r.build_duration) AS INTEGER) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_duration!='' AND r.build_duration!='0' AND r.build_date LIKE '%$DATE%' AND s.architecture='$ARCH'") + MIN=$(echo $RESULT/60|bc) + SEC=$(echo "$RESULT-($MIN*60)"|bc) + write_page "" + done + local TIMESPAN_VERBOSE="4 weeks" + local TIMESPAN_RAW="28" + write_page "" + for ARCH in ${ARCHS} ; do + RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT CAST(AVG(r.build_duration) AS INTEGER) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_duration!='' AND r.build_duration!='0' AND r.build_date > datetime('$DATE', '-$TIMESPAN_RAW days') AND s.architecture='$ARCH'") + MIN=$(echo $RESULT/60|bc) + SEC=$(echo "$RESULT-($MIN*60)"|bc) + write_page "" + done + write_page "" + for ARCH in ${ARCHS} ; do + RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT COUNT(r.build_date) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_date LIKE '%$DATE%' AND s.architecture='$ARCH'") + write_page "" + done + write_page "" + for ARCH in ${ARCHS} ; do + RESULT=$(sqlite3 -init ${INIT} ${PACKAGES_DB} "SELECT COUNT(r.build_date) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.build_date > datetime('$DATE', '-$TIMESPAN_RAW days') AND s.architecture='$ARCH'") + RESULT="$(echo $RESULT/$TIMESPAN_RAW|bc)" + write_page "" + done +write_page "
Architecture statistics$ARCH
oldest build result in testing / unstable / experimental$AGE_TESTING / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days
average test duration (on $DATE)$MIN minutes, $SEC seconds
average test duration (in the last $TIMESPAN_VERBOSE)$MIN minutes, $SEC seconds
packages tested on $DATE$RESULT
packages tested on average per day in the last $TIMESPAN_VERBOSE$RESULT
" } # @@ -472,9 +487,6 @@ create_dashboard_page() { write_page "

" # explain setup write_explaination_table debian - # write build per day graph - write_page "

" - write_page " \"${MAINLABEL[$i]}\"" # redo arch specific pngs once a day for ARCH in ${ARCHS} ; do if [ ! -f $BASE/${TABLE[1]}_$ARCH.png ] || [ $DUMMY_FILE -nt $BASE/${TABLE[1]}_$ARCH.png ] ; then @@ -482,32 +494,33 @@ create_dashboard_page() { create_png_from_table 1 ${TABLE[1]}_$ARCH.png fi done - ARCH="amd64" - # write suite builds age graphs - write_page "

" - for SUITE in $SUITES ; do - write_page " \"age" - done - write_build_performance_stats # other archs: armhf ARCH="armhf" write_page "

" - write_page "


" write_suite_table for SUITE in unstable experimental ; do write_page " \"$SUITE/$ARCH" done - write_page " \"${MAINLABEL[$i]}\"" - write_page "

" + # write performance stats and build per day graphs + write_page "

" write_build_performance_stats - write_page "

" - for SUITE in unstable experimental ; do - write_page " \"age" + write_page "

" + for ARCH in ${ARCHS} ; do + write_page " \"${MAINLABEL[$i]}\"" done + # write suite builds age graphs write_page "

" - write_page "


" + for ARCH in ${ARCHS} ; do + for SUITE in $SUITES ; do + if [ "$ARCH" = "armhf" ] && [ "$SUITE" = testing ] ; then + continue + fi + write_page " \"age" + done + write_page "

" + done # link to index_breakages - write_page "
There are some problems in this test setup itself too. And there is documentation too, in case you missed the link at the top. Feedback is always welcome!

" + write_page "
There are some problems in this test setup itself too. And there is documentation too, in case you missed the link at the top. Feedback is very much appreciated.

" # the end write_page_footer cp $PAGE $BASE/reproducible.html -- cgit v1.2.3-54-g00ecf