From cf5c81c23f2ec780f247bd5dc465ae25db4b2f24 Mon Sep 17 00:00:00 2001 From: Josef Skladanka Date: Mar 15 2017 14:00:52 +0000 Subject: Crude demo of how resultsdb should be used --- diff --git a/pkg_test_results.py b/pkg_test_results.py index f9fec70..c6ed7cc 100644 --- a/pkg_test_results.py +++ b/pkg_test_results.py @@ -14,7 +14,7 @@ import requests MDAPI_URL = 'https://apps.fedoraproject.org/mdapi/koji/pkg' -TASKOTRON_URL = 'https://taskotron.fedoraproject.org/resultsdb_api/api/v1.0/' +TASKOTRON_URL = 'https://taskotron.fedoraproject.org/resultsdb_api/api/v2.0' HEADERS = {'user-agent': 'brt-dashboard/0.1'} @@ -47,11 +47,10 @@ def get_last_build_pkg(pkgname, cnt=None): return '-'.join(infos) -def get_test_result(pkg, test, queue, cnt=None): +def get_test_results(pkg, cnt=None): """ Return the output on a given test for a given package. """ cnt = cnt or 0 - url = '%s/testcases/%s/results?type=koji_build&item=%s' % ( - TASKOTRON_URL, test, pkg) + url = '%s/results/latest?item=%s&type=koji_build' % (TASKOTRON_URL, pkg) _log.debug('Querying: %s for the %s time', url, cnt) try: req = requests.get(url, headers=HEADERS) @@ -60,16 +59,14 @@ def get_test_result(pkg, test, queue, cnt=None): if cnt == 3: raise time.sleep(1) - return get_test_result(pkg, test, queue, cnt+1) + return get_test_result(pkg, cnt+1) - out = '?' - if data['data']: - out = all([d['outcome'] == 'PASSED' for d in data['data']]) + results = {} - queue.put((test, out)) - queue.task_done() - return out + for d in data['data']: + results[d['testcase']['name']] = d['outcome'] == 'PASSED' + return results def process_pkg(pkg, test_names, queue): @@ -83,27 +80,12 @@ def process_pkg(pkg, test_names, queue): 'build': build } - # Get all the results multi-threaded - - threads = [] - m = multiprocessing.Manager() - q = m.Queue() - for test in test_names: - t = threading.Thread( - target=get_test_result, - args=(build, test, q)) - threads.append(t) - t.start() - # Wait that we got all the results - for t in threads: - t.join() - - # Process the output + data = get_test_results(build) results = {} - while q.qsize(): - test, out = q.get() - results[test] = out + + for test in test_names: + results[test] = data.get(test, '?') pkg_info['tests'] = results queue.put((pkg, pkg_info))