From df09410d93cec963045e314cc1d7bc7e3e70c4f8 Mon Sep 17 00:00:00 2001 From: Holger Levsen Date: Mon, 15 Aug 2016 14:53:05 +0200 Subject: reproducible Debian: show percentage of results in the last 24/48h --- bin/reproducible_html_indexes.py | 53 +++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/bin/reproducible_html_indexes.py b/bin/reproducible_html_indexes.py index c704c9ca..3163da54 100755 --- a/bin/reproducible_html_indexes.py +++ b/bin/reproducible_html_indexes.py @@ -31,12 +31,14 @@ Reference doc for the folowing lists: packages to show - `text` a string. Template instance with $tot (total of packages listed) and $percent (percentage of all packages) - - `timely`: boolean value to enable to add $count and $count_total to the - text, where: + - `timespan`: value set to '24' or '48' to enable to add $count, $count_total. + $timespan_cound and $timespan_percent to the text, where: * $percent becomes count/count_total * $count_total being the number of all tested packages * $count being the len() of the query indicated by `query2` - - `query2`: useful only if `timely` is True. + * $timespan_count is the number of packages tested in that timespan in hours + * $timespan_percent is the percentage of $query in that timespan + - `query2`: useful only if `timespan` is set to a value. - `nosuite`: if true do not iterate over the suite/archs, use only the current suite+arch + global: if true, then the page will saved on the root of rb.d.n, and: @@ -52,6 +54,7 @@ section must have at least a `query` defining what to file in. # filter_query is defined in reproducible_common.py and excludes some FTBFS issues queries = { 'count_total': 'SELECT COUNT(*) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite="{suite}" AND s.architecture="{arch}"', + 'count_timespan': 'SELECT COUNT(*) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite="{suite}" AND s.architecture="{arch}" AND build_date > datetime("now", "-{timespan} hours")', 'reproducible_all': 'SELECT s.name FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite="{suite}" AND s.architecture="{arch}" AND r.status="reproducible" ORDER BY r.build_date DESC', 'reproducible_last24h': 'SELECT s.name FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite="{suite}" AND s.architecture="{arch}" AND r.status="reproducible" AND r.build_date > datetime("now", "-24 hours") ORDER BY r.build_date DESC', 'reproducible_last48h': 'SELECT s.name FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite="{suite}" AND s.architecture="{arch}" AND r.status="reproducible" AND r.build_date > datetime("now", "-48 hours") ORDER BY r.build_date DESC', @@ -212,8 +215,8 @@ pages = { 'query': 'FTBR_last24h', 'query2': 'FTBR_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'failed to build reproducibly in total, $tot of them in the last 24h in $suite/$arch:'), - 'timely': True + 'failed to build reproducibly in total, $tot ($timespan_percent% of $timespan_count) of them in the last 24h in $suite/$arch:'), + 'timespan': 24 }, { 'icon_status': 'FTBFS', @@ -221,8 +224,8 @@ pages = { 'query': 'FTBFS_last24h', 'query2': 'FTBFS_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'failed to build from source in total, $tot of them in the last 24h in $suite/$arch:'), - 'timely': True + 'failed to build from source in total, $tot ($timespan_percent% of $timespan_count) of them in the last 24h in $suite/$arch:'), + 'timespan': 24 }, { 'icon_status': 'depwait', @@ -230,8 +233,8 @@ pages = { 'query': 'depwait_last24h', 'query2': 'depwait_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'failed to satisfy their build-dependencies, $tot of them in the last 24h in $suite/$arch:'), - 'timely': True + 'failed to satisfy their build-dependencies, $tot ($timespan_percent% of $timespan_count) of them in the last 24h in $suite/$arch:'), + 'timespan': 24 }, { 'icon_status': 'reproducible', @@ -239,8 +242,8 @@ pages = { 'query': 'reproducible_last24h', 'query2': 'reproducible_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'successfully built reproducibly in total, $tot of them in the last 24h in $suite/$arch:'), - 'timely': True + 'successfully built reproducibly in total, $tot ($timespan_percent% of $timespan_count) of them in the last 24h in $suite/$arch:'), + 'timespan': 24 }, ] }, @@ -253,8 +256,8 @@ pages = { 'query': 'FTBR_last48h', 'query2': 'FTBR_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'failed to build reproducibly in total, $tot of them in the last 48h in $suite/$arch:'), - 'timely': True + 'failed to build reproducibly in total, $tot ($timespan_percent% of $timespan_count) of them in the last 48h in $suite/$arch:'), + 'timespan': 48 }, { 'icon_status': 'FTBFS', @@ -262,8 +265,8 @@ pages = { 'query': 'FTBFS_last48h', 'query2': 'FTBFS_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'failed to build from source in total, $tot of them in the last 48h in $suite/$arch:'), - 'timely': True + 'failed to build from source in total, $tot ($timespan_percent% of $timespan_count) of them in the last 48h in $suite/$arch:'), + 'timespan': 48 }, { 'icon_status': 'depwait', @@ -271,8 +274,8 @@ pages = { 'query': 'depwait_last48h', 'query2': 'depwait_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'failed to satisfy their build-dependencies, $tot of them in the last 48h in $suite/$arch:'), - 'timely': True + 'failed to satisfy their build-dependencies, $tot ($timespan_percent% of $timespan_count) of them in the last 48h in $suite/$arch:'), + 'timespan': 48 }, { 'icon_status': 'reproducible', @@ -280,8 +283,8 @@ pages = { 'query': 'reproducible_last48h', 'query2': 'reproducible_all', 'text': Template('$count packages ($percent% of ${count_total}) ' + - 'successfully built reproducibly in total, $tot of them in the last 48h in $suite/$arch:'), - 'timely': True + 'successfully built reproducibly in total, $tot ($timespan_percent% of $timespan_count) of them in the last 48h in $suite/$arch:'), + 'timespan': 48 }, ] }, @@ -429,10 +432,20 @@ def build_leading_text_section(section, rows, suite, arch): if not no_icon_link: html += '' html += '\n' + tab - if section.get('text') and section.get('timely') and section['timely']: + if section.get('text') and section.get('timespan'): count = len(query_db(queries[section['query2']].format(suite=suite, arch=arch))) percent = round(((count/count_total)*100), 1) + timespan = section['timespan'] + timespan_count = int(query_db(queries['count_timespan'].format(suite=suite, arch=arch, timespan=timespan))[0][0]) + try: + timespan_percent = round(((total/timespan_count)*100), 1) + except ZeroDivisionError: + log.error('Looks like there are either no tested package or no ' + + 'packages available at all. Maybe it\'s a new database?') + timespan_percent = 0 + html += section['text'].substitute(tot=total, percent=percent, + timespan_percent=timespan_percent, timespan_count=timespan_count, count_total=count_total, count=count, suite=suite, arch=arch) elif section.get('text'): -- cgit v1.2.3-70-g09d2