From 47394300d7c5bbdbfdf25bd2f82c0f0a9676f045 Mon Sep 17 00:00:00 2001 From: Sergey Turivniy Date: Jan 03 2018 17:06:50 +0000 Subject: Add statistic page. Old one stable end new one --- diff --git a/statictic_page/new_page/.gitignore b/statictic_page/new_page/.gitignore new file mode 100644 index 0000000..931d5b2 --- /dev/null +++ b/statictic_page/new_page/.gitignore @@ -0,0 +1,3 @@ +.up* +*.pyc +.idea/ diff --git a/statictic_page/new_page/README.md b/statictic_page/new_page/README.md new file mode 100644 index 0000000..3d0ed66 --- /dev/null +++ b/statictic_page/new_page/README.md @@ -0,0 +1,46 @@ +#### Get packages statistic and generate file + +Navigate to folder with tests: +``` +$ cd AtomicCi/statictic_page/new_page/ +``` + +Create python virtualenv with python3 +and activate it: +``` +$ virtualenv -p python3 envname +$ . envname/bin/activate +``` + +Install requirenments: +``` +$ pip install -r requirenments.txt +``` + +Edit file config.py, add upstreamfirst_api_key and dist_git_api_key. You can generate then on settings page: +``` +upstreamfirst_api_key = '' +dist_git_api_key = '' + +UPSTREAMFIRST_URL = 'https://upstreamfirst.fedorainfracloud.org/' +DIST_GIT_URL = 'https://src.fedoraproject.org/' + +FILE_UPLOAD_2_WIKI = 'upload_to_wiki.txt' +FILE_PACKAGES = 'upstreamfirst_packages.txt' +``` +Also you can change names of the files FILE_UPLOAD_2_WIKI and FILE_PACKAGES + +To run code just execute in a command line: +``` +$ python runner.py +``` + +File upstreamfirst_packages.txt will be created. +You can simply check progress by executing following command in another terminal: +``` +$ tail -f upstreamfirst_packages.txt +``` + +After script will be finished, find upload_to_wiki.txt. Use data to upload it to the wiki. + +The result: https://fedoraproject.org/wiki/CI/Tests/new-stat#This_page_is_automatically_updated._Do_not_edit. \ No newline at end of file diff --git a/statictic_page/new_page/config.py b/statictic_page/new_page/config.py new file mode 100644 index 0000000..46ede51 --- /dev/null +++ b/statictic_page/new_page/config.py @@ -0,0 +1,8 @@ +upstreamfirst_api_key = 'R39447IPZ8GVLQCFSZGHJHY3W25V8GB08Z4Z3VW4GTFANOJHN9JRVAT5H1NIDOB0' +dist_git_api_key = 'LL47C2WS7LM0PYEZ7EQN3FYZI3UBW9VK82EBEYJRTXW1JSRD458506XMH9UROJFZ' + +UPSTREAMFIRST_URL = 'https://upstreamfirst.fedorainfracloud.org/' +DIST_GIT_URL = 'https://src.fedoraproject.org/' + +FILE_UPLOAD_2_WIKI = 'upload_to_wiki.txt' +FILE_PACKAGES = 'upstreamfirst_packages.txt' \ No newline at end of file diff --git a/statictic_page/new_page/generate_file.py b/statictic_page/new_page/generate_file.py new file mode 100644 index 0000000..2749247 --- /dev/null +++ b/statictic_page/new_page/generate_file.py @@ -0,0 +1,196 @@ +from tools import get_list_of_packages_from_the_file +from config import FILE_UPLOAD_2_WIKI +from config import FILE_PACKAGES + +def generate_file_upload_on_wiki(input_file): + """Generate file that will be uploaded on the wiki page + + Args: + input_file (file): file with packages + + Returns: + (file): file that will be uploaded on the wiki page + """ + + packages = get_list_of_packages_from_the_file(input_file) + packages_statistic = get_packages_statistic(packages) + + with open(FILE_UPLOAD_2_WIKI, 'w') as upload_file: + + upload_file.write('== This page is automatically updated. Do not edit. ==\n') + upload_file.write('{| class="wikitable sortable"\n') + upload_file.write('! style="text-align:left;" scope="col" rowspan="2" | Package\n') + upload_file.write('! scope="col" colspan="6"| dist-git\n') + upload_file.write('! scope="col" colspan="4"| upstreamfirst\n') + upload_file.write('|-\n') + upload_file.write('! scope="col" | tests.yml\n') + upload_file.write('! scope="col" | classic\n') + upload_file.write('! scope="col" | container\n') + upload_file.write('! scope="col" | atomic\n') + upload_file.write('! scope="col" | missing\n') + upload_file.write('! scope="col" | pending PR\n') + upload_file.write('! scope="col" | tests.yml\n') + upload_file.write('! scope="col" | classic\n') + upload_file.write('! scope="col" | container\n') + upload_file.write('! scope="col" | atomic\n') + upload_file.write('|-\n') + + # Statistics + upload_file.write('! style="text-align:left; font-weight: lighter;" scope="row" | Total known packages\n') + upload_file.write('| style="text-align:center;" scope="row" colspan="10" | {}\n'.format( + packages_statistic['total'])) + upload_file.write('|-\n') + upload_file.write('! style="text-align:left; font-weight: lighter;" scope="row" | Packages in category\n') + upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_yml'])) + upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_tags']['classic'])) + upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_tags']['container'])) + upload_file.write('| {}\n'.format(packages_statistic['dist-git']['test_tags']['atomic'])) + upload_file.write('| {}\n'.format(packages_statistic['dist-git']['missing'])) + upload_file.write('| {}\n'.format(packages_statistic['dist-git']['pending'])) + upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_yml'])) + upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_tags']['classic'])) + upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_tags']['container'])) + upload_file.write('| {}\n'.format(packages_statistic['upstreamfirst']['test_tags']['atomic'])) + upload_file.write('|-\n') + + # fill up file with data + for package in packages: + dict_pack = eval(package) + + upload_file.write('!style="text-align:left;" scope="row" | {}\n'.format(dict_pack['name'])) + + upload_file.write(format_color(dict_pack) + format_test_yml(dict_pack['dist-git'])) # dist-git tests.yml + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['test_tags']['classic'])) # dist-git classic + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['test_tags']['container'])) # dist-git container + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['test_tags']['atomic'])) # dist-git atomic + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['dist-git']['missing'])) # dist-git missing + upload_file.write(format_color(dict_pack) + format_pending(dict_pack['dist-git']['pending'])) # dist-git pending + + upload_file.write(format_color(dict_pack) + format_test_yml(dict_pack['upstreamfirst'])) # upstreamfirst tests.yml + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['upstreamfirst']['test_tags']['classic'])) # upstreamfirst classic + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['upstreamfirst']['test_tags']['container'])) # upstreamfirst container + upload_file.write('{}| {}\n'.format(format_color(dict_pack), dict_pack['upstreamfirst']['test_tags']['atomic'])) # upstreamfirst atomic + + upload_file.write('|-\n') + + upload_file.write('|} \n') + upload_file.close() + + +def format_pending(pending): + """Updates pending cell if package is on pending + + Args: + pending (dict): pending is dict_pack['dist-git']['pending'] + + Returns: + empty cell or cell with info + """ + if pending['status'] == '': + return '| \n' + else: + + user_str = pending['user']['name'] + ' ' + pending['user']['fullname'] + return '|[[{}|YES]] [{} _*] \n'.format(user_str, pending['url']) + + +def format_test_yml(test_yml): + """ + test_yml is dict_pack['upstreamfirst'] + or + test_yml is dict_pack['dist-git'] + """ + if test_yml['package_url']: + return '| [{} {}]\n'.format(test_yml['package_url'], test_yml['test_yml']) + else: + return '| \n' + + +def format_color(dict_pack): + """Function formats cell color to #7FFF00" 'Green' if package ready for porting""" + + if dict_pack['dist-git']['pending']['status'] == '' \ + and dict_pack['dist-git']['test_yml'] == '' \ + and dict_pack['upstreamfirst']['test_yml'] != '': + return '! style="background-color:#7FFF00"' + return '' + + +def get_packages_statistic(packages): + """Function gets packages statistic + + Args: + packages (list): list of packages + + Returns: + statistic_json (dict): packages statistic + """ + statistic_json = {'total': '', + 'dist-git': { + 'test_yml': '', + 'missing': '', + 'pending': '', + 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, + 'upstreamfirst': {'test_yml': '', + 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} + total_packages = len(packages) + statistic_json['total'] = str(total_packages) + statistic_json['dist-git']['test_yml'] = _get_packages_number_in_category(total_packages, packages, + 'dist-git', 'test_yml') + statistic_json['dist-git']['missing'] = _get_packages_number_in_category(total_packages, packages, + 'dist-git', 'missing') + statistic_json['dist-git']['pending'] = _get_packages_number_in_category(total_packages, packages, + 'dist-git', 'pending', 'status') + statistic_json['dist-git']['test_tags']['classic'] = _get_packages_number_in_category(total_packages, packages, + 'dist-git', + 'test_tags', 'classic') + statistic_json['dist-git']['test_tags']['container'] = _get_packages_number_in_category(total_packages, packages, + 'dist-git', + 'test_tags', 'container') + statistic_json['dist-git']['test_tags']['atomic'] = _get_packages_number_in_category(total_packages, packages, + 'dist-git', + 'test_tags', 'atomic') + + statistic_json['upstreamfirst']['test_yml'] = _get_packages_number_in_category(total_packages, packages, + 'upstreamfirst', 'test_yml') + statistic_json['upstreamfirst']['test_tags']['classic'] = _get_packages_number_in_category(total_packages, packages, + 'upstreamfirst', + 'test_tags', 'classic') + statistic_json['upstreamfirst']['test_tags']['container'] = _get_packages_number_in_category(total_packages, + packages, + 'upstreamfirst', + 'test_tags', + 'container') + statistic_json['upstreamfirst']['test_tags']['atomic'] = _get_packages_number_in_category(total_packages, packages, + 'upstreamfirst', + 'test_tags', 'atomic') + return statistic_json + + +def _get_packages_number_in_category(total_packages, all_packages, *args): + """ + Function returns updated statistic_json from the get_packages_statistic() + Args: + total_packages (int): total packages + all_packages (list of jsons): all packages + + Returns: + formatted_string (all_packages): + for example: '48 (42%)' + """ + number_in_category = 0 + for item in all_packages: + dict_pack = eval(item) + + if len(args) == 2: + if 'YES' in dict_pack[args[0]][args[1]]: + number_in_category += 1 + else: + if 'YES' in dict_pack[args[0]][args[1]][args[2]]: + number_in_category += 1 + formatted_string = "{} ({}%)".format(number_in_category, round((100*number_in_category)/total_packages)) + return formatted_string + + +if __name__ == '__main__': + exit(0) diff --git a/statictic_page/new_page/requirements.txt b/statictic_page/new_page/requirements.txt new file mode 100644 index 0000000..3866aaa --- /dev/null +++ b/statictic_page/new_page/requirements.txt @@ -0,0 +1,2 @@ +requests +mwclient \ No newline at end of file diff --git a/statictic_page/new_page/runner.py b/statictic_page/new_page/runner.py new file mode 100644 index 0000000..4396671 --- /dev/null +++ b/statictic_page/new_page/runner.py @@ -0,0 +1,80 @@ +from tools import * + +from generate_file import generate_file_upload_on_wiki + +dist_git_api_key = config.dist_git_api_key + +UPSTREAMFIRST_URL = config.UPSTREAMFIRST_URL +DIST_GIT_URL = config.DIST_GIT_URL + +package_json = {'name': '', + 'dist-git': { + 'package_url': '', + 'test_yml': '', + 'missing': '', + 'pending': {'status': '', 'url': '', 'user': {}}, + 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, + 'upstreamfirst': {'test_yml': '', + 'package_url': '', + 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} + + +def wrapper_for_get_pull_requests(package): + """Function updates package_json with correct information""" + + raw_text = get_pull_requests(DIST_GIT_URL, package, dist_git_api_key) + result = manage_pull_request(raw_text) + package_json['name'] = package + + if result is not None: + package_json['dist-git']['pending']['url'] = result['url'] + package_json['dist-git']['pending']['user'] = result['user'] + package_json['dist-git']['pending']['status'] = 'YES' + else: + package_json['dist-git']['pending']['url'] = '' + package_json['dist-git']['pending']['user'] = '' + package_json['dist-git']['pending']['status'] = '' + + # Get upstreamfirst test-tags + upstream_test_tags = handle_test_tags(UPSTREAMFIRST_URL, package) + upstream_test_tags = test_tags_to_dict(upstream_test_tags) + package_json['upstreamfirst']['test_tags'] = upstream_test_tags + + upstream_url_to_test_yml = get_url_to_test_yml(UPSTREAMFIRST_URL, package) + if check_if_test_yml_exists(upstream_url_to_test_yml): + package_json['upstreamfirst']['test_yml'] = 'YES' + package_json['upstreamfirst']['package_url'] = upstream_url_to_test_yml + else: + package_json['upstreamfirst']['test_yml'] = '' + package_json['upstreamfirst']['package_url'] = '' + + # Get dist-git test-tags + dist_git_test_tags = handle_test_tags(DIST_GIT_URL, package) + dist_git_test_tags = test_tags_to_dict(dist_git_test_tags) + package_json['dist-git']['test_tags'] = dist_git_test_tags + + dist_git_url_to_test_yml = get_url_to_test_yml(DIST_GIT_URL, package) + if check_if_test_yml_exists(dist_git_url_to_test_yml): + package_json['dist-git']['test_yml'] = 'YES' + package_json['dist-git']['package_url'] = dist_git_url_to_test_yml + else: + package_json['dist-git']['test_yml'] = '' + package_json['dist-git']['package_url'] = '' + + # Write results to the file + write_results_to_the_file(package_json, config.FILE_PACKAGES) + + +if __name__ == '__main__': + # Prepare environment + delete_files_before_running([config.FILE_PACKAGES, config.FILE_UPLOAD_2_WIKI]) + + # Get all open pull requests + projects = get_all_projects(UPSTREAMFIRST_URL, upstreamfirst_api_key) + all_packages = get_projects_names(projects) + + for package in all_packages: + wrapper_for_get_pull_requests(package) + + generate_file_upload_on_wiki(config.FILE_PACKAGES) + exit(0) diff --git a/statictic_page/new_page/tools.py b/statictic_page/new_page/tools.py new file mode 100644 index 0000000..379fdd1 --- /dev/null +++ b/statictic_page/new_page/tools.py @@ -0,0 +1,272 @@ +import os +import re +import requests + +import config + + +upstreamfirst_api_key = config.upstreamfirst_api_key +dist_git_api_key = config.dist_git_api_key + +UPSTREAMFIRST_URL = config.UPSTREAMFIRST_URL +DIST_GIT_URL = config.DIST_GIT_URL + + +def get_pull_requests(site_url, package, api_key): + """Get pull requests from site using API + + Args: + site_url (string): url of the site + for example: 'https://upstreamfirst.fedorainfracloud.org/' + package (string): name of the package + api_key (string): secret API key + + Returns: + response (json): info about PR + """ + site = site_url + 'api/0/rpms/' + package + '/pull-requests' + + response = requests.get(site, headers={'Authorization': 'access_token {}'.format(api_key)}) + return response.json() + + +def manage_pull_request(response_json): + """Checks if PR corresponds to the test PR and open. + + Args: + response_json (json): info about PR + + Returns: + (json): {'user': , 'url': } + """ + try: + if response_json['total_requests'] > 0: + for request in response_json['requests']: + if ('Add CI tests' or 'test' in request['title']) and (request['status'] == 'Open'): + pull_req_url = DIST_GIT_URL + request['project']['url_path'] + '/pull-requests' + return {'user': request['user'], 'url': pull_req_url} + + except Exception: + # {'error': 'Project not found', 'error_code': 'ENOPROJECT'} + return + + +def get_all_projects(site_url, api_key): + """Get all projects from site using API + + Args: + site_url (string): url of the site + for example: 'https://upstreamfirst.fedorainfracloud.org/' + api_key (string): secret API key + + Returns: + response (json): all projects + """ + site = site_url + 'api/0/projects' + + response = requests.get(site, headers={'Authorization': 'access_token {}'.format(api_key)}) + return response.json() + + +def get_projects_names(json_response): + """Get projects names from the all projects + + Args: + json_response (json): all projects + + Returns: + projects_names (list of strings) names of projects + """ + + projects_names = [] + + for project in json_response['projects']: + project_name = project['fullname'] + if 'forks/' not in project_name: + projects_names.append(project_name) + + return projects_names + + +def get_projects_url_patches(json_response): + """Get projects url patches""" + + projects_url_patches = [] + + for project in json_response['projects']: + project_name = project['url_path'] + + projects_url_patches.append(project_name) + + return projects_url_patches + + +def get_test_yaml_from_site(site_url, package, test_file='tests.yml'): + """Get test.yaml from the site + + Args: + site_url (string): url of the site + for example: 'https://upstreamfirst.fedorainfracloud.org/' + package (string): name of the package + test_file (string): file to get from site. + + Returns: + test.yaml (raw string) + """ + + if 'upstreamfirst' in site_url: + test_file_url = site_url + package + '/raw/master/f/' + test_file + elif 'fedoraproject' in site_url: + test_file_url = site_url + '/rpms/' + package + '/raw/master/f/tests/' + test_file + else: + return + + response = requests.get(test_file_url) + return response.text + + +def get_url_to_test_yml(site_url, package): + """Get url to the test.yml file + + Args: + site_url (string): url of the site + for example: 'https://upstreamfirst.fedorainfracloud.org/' + package (string): name of the package + + Returns: + url (string) + """ + if 'upstreamfirst' in site_url: + test_file_url = site_url + package + '/blob/master/f/tests.yml' + elif 'fedoraproject' in site_url: + test_file_url = site_url + 'rpms/' + package + '/blob/master/f/tests/tests.yml' + else: + return + + return test_file_url + + +def check_if_test_yml_exists(test_file_url): + """Checks if tesy.yml exists + + Args: + test_file_url (string): url of the site + + Returns: + True/False (bool) if response.status_code + """ + response = requests.get(test_file_url) + if response.status_code == 200: + return True + else: + return False + + +def get_test_tags(raw_text): + """Just returns existed test-tags + + Args: + raw_text (string): raw text output from the requests + + Returns: + tags (list if strings) + """ + test_tags = [] + + for tag in ['classic', 'container', 'atomic']: + if tag in raw_text: + test_tags.append(tag) + + return test_tags + + +def handle_test_tags(site_url, package): + """Function grts new patch to the test.yaml if existing test.yaml includes test file + + Args: + site_url (string): url of the site + for example: 'https://upstreamfirst.fedorainfracloud.org/' + package (string): name of the package + + Returns: + tags (list of strings) + """ + + raw_text = get_test_yaml_from_site(site_url, package) + + if 'Page not found' in raw_text: + return [] + + test_tags = get_test_tags(raw_text) + + if not test_tags: + new_test_file = re.findall(r'(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', raw_text) + + if new_test_file: + raw_text = get_test_yaml_from_site(site_url, package, new_test_file[-1]) + test_tags = get_test_tags(raw_text) + + return test_tags + + +def test_tags_to_dict(test_tags): + """Convert test-tags list to the dictionary""" + + tags_dict = {'classic': '', 'container': '', 'atomic': ''} + try: + for tag in test_tags: + tags_dict[tag] = 'YES' + + except Exception.KeyError: + pass + return tags_dict + + +def get_list_of_packages_from_the_file(file): + """Reads list of packages from a file + + Args: + file (file): file to get packages from + + Returns: + packages (list of packages) + """ + with open(file) as packages_file: + return packages_file.read().splitlines() + + +def write_results_to_the_file(result, filename='results.txt'): + """Write results to the file + + Args: + result (json): package's info + filename (string): name of the file to write packages + + Returns: + packages (list of packages) + """ + with open(filename, 'a') as my_file: + my_file.write('{}\n'.format(result)) + + my_file.close() + return filename + + +def delete_files_before_running(files_to_delete): + """Function deletes (cleanup) files with data + + Args: + files_to_delete (list): list of files to delete + + Returns: + (None) if everything is alright + """ + for file_name in files_to_delete: + try: + os.remove(file_name) + except OSError: + pass + + +if __name__ == '__main__': + exit(0) diff --git a/statictic_page/new_page/upload_to_wiki.py b/statictic_page/new_page/upload_to_wiki.py new file mode 100644 index 0000000..5c1d6e2 --- /dev/null +++ b/statictic_page/new_page/upload_to_wiki.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python + +import mwclient +import os + +ua = 'MyWikiTool/0.2 run by User:FedoraUser' +site = mwclient.Site('fedoraproject.org', clients_useragent=ua) +# site.login(os.environ.get('WIKI_USER'), os.environ.get('WIKI_PASS')) +site.login('sturivny', 'VgaZsxPWrMnCzTWm') +page = site.pages['CI/Tests/new-stat'] + +page.exists + +with open('upload_file.txt', 'r') as myfile: + text = myfile.read() +page.save(text, 'Current status.') diff --git a/statictic_page/new_page/upload_to_wiki.txt b/statictic_page/new_page/upload_to_wiki.txt new file mode 100644 index 0000000..12218f0 --- /dev/null +++ b/statictic_page/new_page/upload_to_wiki.txt @@ -0,0 +1,1425 @@ +== This page is automatically updated. Do not edit. == +{| class="wikitable sortable" +! style="text-align:left;" scope="col" rowspan="2" | Package +! scope="col" colspan="6"| dist-git +! scope="col" colspan="4"| upstreamfirst +|- +! scope="col" | tests.yml +! scope="col" | classic +! scope="col" | container +! scope="col" | atomic +! scope="col" | missing +! scope="col" | pending PR +! scope="col" | tests.yml +! scope="col" | classic +! scope="col" | container +! scope="col" | atomic +|- +! style="text-align:left; font-weight: lighter;" scope="row" | Total known packages +| style="text-align:center;" scope="row" colspan="10" | 116 +|- +! style="text-align:left; font-weight: lighter;" scope="row" | Packages in category +| 49 (42%) +| 49 (42%) +| 33 (28%) +| 25 (22%) +| 116 (100%) +| 53 (46%) +| 111 (96%) +| 109 (94%) +| 78 (67%) +| 52 (45%) +|- +!style="text-align:left;" scope="row" | acl +| [https://src.fedoraproject.org/rpms/acl/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/acl/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | at +| [https://src.fedoraproject.org/rpms/at/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/at/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | atomic +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/atomic/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | attr +| [https://src.fedoraproject.org/rpms/attr/blob/master/f/tests/tests.yml YES] +| YES +| +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/attr/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | audit +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/audit/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/audit/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | bash +| +| +| +| +| YES +|[[junghans Christoph Junghans|YES]] [https://src.fedoraproject.org/rpms/bash/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/bash/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | bind +| [https://src.fedoraproject.org/rpms/bind/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +|[[lbalhar Lumír Balhar|YES]] [https://src.fedoraproject.org/rpms/bind/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/bind/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | buildah +| [https://src.fedoraproject.org/rpms/buildah/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/buildah/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | byacc +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/byacc/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | ca-certificates +| [https://src.fedoraproject.org/rpms/ca-certificates/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/ca-certificates/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | checkpolicy +| [https://src.fedoraproject.org/rpms/checkpolicy/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/checkpolicy/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | coreutils +| [https://src.fedoraproject.org/rpms/coreutils/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +|[[ignatenkobrain Igor Gnatenko|YES]] [https://src.fedoraproject.org/rpms/coreutils/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/coreutils/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | cpio +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/cpio/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/cpio/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | cracklib +| [https://src.fedoraproject.org/rpms/cracklib/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/cracklib/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | cronie +| [https://src.fedoraproject.org/rpms/cronie/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/cronie/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | crontabs +| [https://src.fedoraproject.org/rpms/crontabs/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/crontabs/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | cryptsetup +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/cryptsetup/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/cryptsetup/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | curl +| [https://src.fedoraproject.org/rpms/curl/blob/master/f/tests/tests.yml YES] +| YES +| +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/curl/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | cyrus-sasl +| [https://src.fedoraproject.org/rpms/cyrus-sasl/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/cyrus-sasl/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | device-mapper-multipath +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/device-mapper-multipath/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | device-mapper-persistent-data +| [https://src.fedoraproject.org/rpms/device-mapper-persistent-data/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/device-mapper-persistent-data/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | diffutils +| [https://src.fedoraproject.org/rpms/diffutils/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/diffutils/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | dnf +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/dnf/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | docker +| +| +| +| +| YES +|[[walters Colin Walters|YES]] [https://src.fedoraproject.org/rpms/docker/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/docker/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | dracut +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/dracut/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/dracut/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | dwz +| [https://src.fedoraproject.org/rpms/dwz/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/dwz/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | e2fsprogs +| +| +| +| +| YES +|[[yshapovalov Yevhenii Shapovalov|YES]] [https://src.fedoraproject.org/rpms/e2fsprogs/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/e2fsprogs/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | elfutils +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/elfutils/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/elfutils/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | etcd +| +| +| +| +| YES +|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/etcd/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/etcd/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | expat +| [https://src.fedoraproject.org/rpms/expat/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/expat/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | file +| [https://src.fedoraproject.org/rpms/file/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/file/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | filesystem +| [https://src.fedoraproject.org/rpms/filesystem/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/filesystem/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | findutils +| [https://src.fedoraproject.org/rpms/findutils/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/findutils/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | fipscheck +| [https://src.fedoraproject.org/rpms/fipscheck/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/fipscheck/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | flex +| +| +| +| +| YES +|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/flex/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/flex/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | gawk +| [https://src.fedoraproject.org/rpms/gawk/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +|[[praiskup Pavel Raiskup|YES]] [https://src.fedoraproject.org/rpms/gawk/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/gawk/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | gc +| +| +| +| +| YES +|[[pingou Pierre-YvesChibon|YES]] [https://src.fedoraproject.org/rpms/gc/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/gc/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | gcc +| +| +| +| +| YES +|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/gcc/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/gcc/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | gdb +| +| +| +| +| YES +|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/gdb/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/gdb/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | gettext +| +| +| +| +| YES +|[[bgoncalv Bruno Goncalves|YES]] [https://src.fedoraproject.org/rpms/gettext/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/gettext/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | glib2 +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/glib2/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | glibc +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/glibc/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/glibc/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | groff +| [https://src.fedoraproject.org/rpms/groff/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/groff/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | grub2 +| +| +| +| +| YES +|[[konradr Konrad Rzeszutek Wilk|YES]] [https://src.fedoraproject.org/rpms/grub2/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/grub2/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | guile +| [https://src.fedoraproject.org/rpms/guile/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/guile/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | gzip +| [https://src.fedoraproject.org/rpms/gzip/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/gzip/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | httpd +| [https://src.fedoraproject.org/rpms/httpd/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/httpd/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | initscripts +| +| +| +| +| YES +|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/initscripts/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/initscripts/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | iproute +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/iproute/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/iproute/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | iptables +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/iptables/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/iptables/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | iscsi-initiator-utils +| +| +| +| +| YES +|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/iscsi-initiator-utils/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/iscsi-initiator-utils/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | kexec-tools +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/kexec-tools/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | keyutils +| +| +| +| +| YES +|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/keyutils/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/keyutils/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | kmod +| [https://src.fedoraproject.org/rpms/kmod/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +|[[zsun Ziqian SUN (Zamir)|YES]] [https://src.fedoraproject.org/rpms/kmod/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/kmod/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | krb5 +| [https://src.fedoraproject.org/rpms/krb5/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/krb5/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | ksh +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/ksh/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | libcap +| +| +| +| +| YES +|[[astepano Andrei Stepanov|YES]] [https://src.fedoraproject.org/rpms/libcap/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/libcap/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | libcap-ng +| +| +| +| +| YES +|[[astepano Andrei Stepanov|YES]] [https://src.fedoraproject.org/rpms/libcap-ng/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/libcap-ng/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | libgcrypt +| [https://src.fedoraproject.org/rpms/libgcrypt/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/libgcrypt/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | libselinux +| [https://src.fedoraproject.org/rpms/libselinux/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/libselinux/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | libsemanage +| [https://src.fedoraproject.org/rpms/libsemanage/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/libsemanage/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | libsepol +| [https://src.fedoraproject.org/rpms/libsepol/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/libsepol/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | libtasn1 +| +| +| +| +| YES +| +| +| +| +| +|- +!style="text-align:left;" scope="row" | libtool +| +| +| +| +| YES +|[[yshapovalov Yevhenii Shapovalov|YES]] [https://src.fedoraproject.org/rpms/libtool/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/libtool/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | libunistring +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/libunistring/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | libxml2 +| +| +| +| +| YES +|[[kloczek Tomasz Kłoczko|YES]] [https://src.fedoraproject.org/rpms/libxml2/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/libxml2/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | lua +| [https://src.fedoraproject.org/rpms/lua/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/lua/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | m4 +| [https://src.fedoraproject.org/rpms/m4/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/m4/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | make +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/make/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/make/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | mdadm +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/mdadm/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/mdadm/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | migrated +| +| +| +| +| YES +| +| +| +| +| +|- +!style="text-align:left;" scope="row" | ncompress +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/ncompress/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/ncompress/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | nfs-utils +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/nfs-utils/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/nfs-utils/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | nmap +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/nmap/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/nmap/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | nspr +| [https://src.fedoraproject.org/rpms/nspr/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/nspr/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | nss +| [https://src.fedoraproject.org/rpms/nss/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/nss/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | nss-softokn +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/nss-softokn/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | nss-util +| [https://src.fedoraproject.org/rpms/nss-util/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/nss-util/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | openldap +| [https://src.fedoraproject.org/rpms/openldap/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/openldap/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | openssh +| [https://src.fedoraproject.org/rpms/openssh/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/openssh/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | openssl +| [https://src.fedoraproject.org/rpms/openssl/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/openssl/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | p11-kit +| +| +| +| +| YES +| +| +| +| +| +|- +!style="text-align:left;" scope="row" | pam +| [https://src.fedoraproject.org/rpms/pam/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/pam/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | passwd +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/passwd/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/passwd/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | patch +| [https://src.fedoraproject.org/rpms/patch/blob/master/f/tests/tests.yml YES] +| YES +| +| +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/patch/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | policycoreutils +| [https://src.fedoraproject.org/rpms/policycoreutils/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/policycoreutils/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | pth +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/pth/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/pth/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | python +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/python/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | python2 +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/python2/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | python3 +| +| +| +| +| YES +|[[churchyard Miro Hrončok|YES]] [https://src.fedoraproject.org/rpms/python3/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/python3/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | rpm +| +| +| +| +| YES +|[[ignatenkobrain Igor Gnatenko|YES]] [https://src.fedoraproject.org/rpms/rpm/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/rpm/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | rsync +| [https://src.fedoraproject.org/rpms/rsync/blob/master/f/tests/tests.yml YES] +| YES +| +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/rsync/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | sed +| [https://src.fedoraproject.org/rpms/sed/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/sed/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | selinux-policy +| +| +| +| +| YES +|[[jlebon Jonathan Lebon|YES]] [https://src.fedoraproject.org/rpms/selinux-policy/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/selinux-policy/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | setup +| +| +| +| +| YES +|[[rasibley Rachel Sibley|YES]] [https://src.fedoraproject.org/rpms/setup/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/setup/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | shadow-utils +| +| +| +| +| YES +|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/shadow-utils/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/shadow-utils/blob/master/f/tests.yml YES] +| YES +| +| YES +|- +!style="text-align:left;" scope="row" | skopeo +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/skopeo/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | socat +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/socat/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +|- +!style="text-align:left;" scope="row" | sqlite +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/sqlite/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/sqlite/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | sudo +| [https://src.fedoraproject.org/rpms/sudo/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +|[[walters Colin Walters|YES]] [https://src.fedoraproject.org/rpms/sudo/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/sudo/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | systemd +| +| +| +| +| YES +|[[esakaiev Eduard|YES]] [https://src.fedoraproject.org/rpms/systemd/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/systemd/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | tar +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/tar/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/tar/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | test_cli +| +| +| +| +| YES +| +| +| +| +| +|- +!style="text-align:left;" scope="row" | testing-project +| +| +| +| +| YES +| +| +| +| +| +|- +!style="text-align:left;" scope="row" | time +| [https://src.fedoraproject.org/rpms/time/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/time/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | tuned +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/tuned/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | tzdata +| +| +| +| +| YES +|[[bgoncalv Bruno Goncalves|YES]] [https://src.fedoraproject.org/rpms/tzdata/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/tzdata/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | unzip +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/unzip/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/unzip/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | util-linux +| [https://src.fedoraproject.org/rpms/util-linux/blob/master/f/tests/tests.yml YES] +| YES +| YES +| +| YES +|[[lbalhar Lumír Balhar|YES]] [https://src.fedoraproject.org/rpms/util-linux/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/util-linux/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | vim +| [https://src.fedoraproject.org/rpms/vim/blob/master/f/tests/tests.yml YES] +| YES +| YES +| YES +| YES +| +| [https://upstreamfirst.fedorainfracloud.org/vim/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | virt-what +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| [https://upstreamfirst.fedorainfracloud.org/virt-what/blob/master/f/tests.yml YES] +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| +! style="background-color:#7FFF00"| YES +|- +!style="text-align:left;" scope="row" | which +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/which/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/which/blob/master/f/tests.yml YES] +| YES +| YES +| YES +|- +!style="text-align:left;" scope="row" | xz +| +| +| +| +| YES +|[[bkabrda Bohuslav Kabrda|YES]] [https://src.fedoraproject.org/rpms/xz/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/xz/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | yum +| +| +| +| +| YES +|[[mgahagan Mike Gahagan|YES]] [https://src.fedoraproject.org/rpms/yum/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/yum/blob/master/f/tests.yml YES] +| YES +| +| +|- +!style="text-align:left;" scope="row" | zip +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/zip/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/zip/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +!style="text-align:left;" scope="row" | zlib +| +| +| +| +| YES +|[[sturivny Serhii Turivnyi|YES]] [https://src.fedoraproject.org/rpms/zlib/pull-requests _*] +| [https://upstreamfirst.fedorainfracloud.org/zlib/blob/master/f/tests.yml YES] +| YES +| YES +| +|- +|} diff --git a/statictic_page/new_page/upstreamfirst_packages.txt b/statictic_page/new_page/upstreamfirst_packages.txt new file mode 100644 index 0000000..10ce905 --- /dev/null +++ b/statictic_page/new_page/upstreamfirst_packages.txt @@ -0,0 +1,116 @@ +{'name': 'acl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/acl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/acl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'at', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/at/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/at/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'atomic', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/atomic/blob/master/f/tests.yml', 'test_tags': {'classic': '', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'attr', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/attr/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/attr/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'audit', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/audit/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/audit/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'bash', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/bash/pull-requests', 'user': {'fullname': 'Christoph Junghans', 'name': 'junghans'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/bash/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'bind', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/bind/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/bind/pull-requests', 'user': {'fullname': 'Lumír Balhar', 'name': 'lbalhar'}}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/bind/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'buildah', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/buildah/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/buildah/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'byacc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/byacc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'ca-certificates', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/ca-certificates/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/ca-certificates/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'checkpolicy', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/checkpolicy/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/checkpolicy/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'coreutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/coreutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/coreutils/pull-requests', 'user': {'fullname': 'Igor Gnatenko', 'name': 'ignatenkobrain'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/coreutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'cpio', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/cpio/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cpio/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'cracklib', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/cracklib/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cracklib/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'cronie', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/cronie/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cronie/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'crontabs', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/crontabs/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/crontabs/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'cryptsetup', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/cryptsetup/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cryptsetup/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'curl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/curl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/curl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'cyrus-sasl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/cyrus-sasl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/cyrus-sasl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'device-mapper-multipath', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/device-mapper-multipath/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'device-mapper-persistent-data', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/device-mapper-persistent-data/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/device-mapper-persistent-data/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'diffutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/diffutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/diffutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'dnf', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/dnf/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'docker', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/docker/pull-requests', 'user': {'fullname': 'Colin Walters', 'name': 'walters'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/docker/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'dracut', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/dracut/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/dracut/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'dwz', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/dwz/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/dwz/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'e2fsprogs', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/e2fsprogs/pull-requests', 'user': {'fullname': 'Yevhenii Shapovalov', 'name': 'yshapovalov'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/e2fsprogs/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'elfutils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/elfutils/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/elfutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'etcd', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/etcd/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/etcd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'expat', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/expat/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/expat/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'file', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/file/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/file/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'filesystem', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/filesystem/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/filesystem/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'findutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/findutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/findutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'fipscheck', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/fipscheck/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/fipscheck/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'flex', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/flex/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/flex/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'gawk', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/gawk/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gawk/pull-requests', 'user': {'fullname': 'Pavel Raiskup', 'name': 'praiskup'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gawk/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'gc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gc/pull-requests', 'user': {'fullname': 'Pierre-YvesChibon', 'name': 'pingou'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'gcc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gcc/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gcc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'gdb', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gdb/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gdb/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'gettext', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/gettext/pull-requests', 'user': {'fullname': 'Bruno Goncalves', 'name': 'bgoncalv'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gettext/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'glib2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/glib2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'glibc', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/glibc/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/glibc/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'groff', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/groff/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/groff/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'grub2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/grub2/pull-requests', 'user': {'fullname': 'Konrad Rzeszutek Wilk', 'name': 'konradr'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/grub2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'guile', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/guile/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/guile/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'gzip', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/gzip/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/gzip/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'httpd', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/httpd/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/httpd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'initscripts', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/initscripts/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/initscripts/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'iproute', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/iproute/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/iproute/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'iptables', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/iptables/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/iptables/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'iscsi-initiator-utils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/iscsi-initiator-utils/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/iscsi-initiator-utils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'kexec-tools', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/kexec-tools/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'keyutils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/keyutils/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/keyutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'kmod', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/kmod/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/kmod/pull-requests', 'user': {'fullname': 'Ziqian SUN (Zamir)', 'name': 'zsun'}}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/kmod/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'krb5', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/krb5/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/krb5/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'ksh', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/ksh/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'libcap', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libcap/pull-requests', 'user': {'fullname': 'Andrei Stepanov', 'name': 'astepano'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libcap/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'libcap-ng', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libcap-ng/pull-requests', 'user': {'fullname': 'Andrei Stepanov', 'name': 'astepano'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libcap-ng/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'libgcrypt', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libgcrypt/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libgcrypt/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'libselinux', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libselinux/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libselinux/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'libsemanage', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libsemanage/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libsemanage/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'libsepol', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/libsepol/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libsepol/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'libtasn1', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} +{'name': 'libtool', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libtool/pull-requests', 'user': {'fullname': 'Yevhenii Shapovalov', 'name': 'yshapovalov'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libtool/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'libunistring', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libunistring/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'libxml2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/libxml2/pull-requests', 'user': {'fullname': 'Tomasz Kłoczko', 'name': 'kloczek'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/libxml2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'lua', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/lua/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/lua/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'm4', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/m4/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/m4/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'make', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/make/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/make/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'mdadm', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/mdadm/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/mdadm/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'migrated', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} +{'name': 'ncompress', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/ncompress/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/ncompress/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'nfs-utils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/nfs-utils/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nfs-utils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'nmap', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/nmap/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nmap/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'nspr', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/nspr/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nspr/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'nss', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/nss/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nss/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'nss-softokn', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nss-softokn/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'nss-util', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/nss-util/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/nss-util/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'openldap', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/openldap/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/openldap/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'openssh', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/openssh/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/openssh/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'openssl', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/openssl/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/openssl/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'p11-kit', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} +{'name': 'pam', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/pam/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/pam/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'passwd', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/passwd/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/passwd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'patch', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/patch/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/patch/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'policycoreutils', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/policycoreutils/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/policycoreutils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'pth', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/pth/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/pth/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'python', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/python/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'python2', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/python2/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'python3', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/python3/pull-requests', 'user': {'fullname': 'Miro Hrončok', 'name': 'churchyard'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/python3/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'rpm', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/rpm/pull-requests', 'user': {'fullname': 'Igor Gnatenko', 'name': 'ignatenkobrain'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/rpm/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'rsync', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/rsync/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/rsync/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'sed', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/sed/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/sed/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'selinux-policy', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/selinux-policy/pull-requests', 'user': {'fullname': 'Jonathan Lebon', 'name': 'jlebon'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/selinux-policy/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'setup', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/setup/pull-requests', 'user': {'fullname': 'Rachel Sibley', 'name': 'rasibley'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/setup/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'shadow-utils', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/shadow-utils/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/shadow-utils/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'skopeo', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/skopeo/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'socat', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/socat/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'sqlite', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/sqlite/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/sqlite/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'sudo', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/sudo/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/sudo/pull-requests', 'user': {'fullname': 'Colin Walters', 'name': 'walters'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/sudo/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'systemd', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/systemd/pull-requests', 'user': {'fullname': 'Eduard', 'name': 'esakaiev'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/systemd/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'tar', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/tar/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/tar/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'test_cli', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} +{'name': 'testing-project', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': '', 'package_url': '', 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}} +{'name': 'time', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/time/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/time/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'tuned', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/tuned/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': 'YES'}}} +{'name': 'tzdata', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/tzdata/pull-requests', 'user': {'fullname': 'Bruno Goncalves', 'name': 'bgoncalv'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/tzdata/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'unzip', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/unzip/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/unzip/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'util-linux', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/util-linux/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/util-linux/pull-requests', 'user': {'fullname': 'Lumír Balhar', 'name': 'lbalhar'}}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/util-linux/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'vim', 'dist-git': {'package_url': 'https://src.fedoraproject.org/rpms/vim/blob/master/f/tests/tests.yml', 'test_yml': 'YES', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/vim/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'virt-what', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': '', 'url': '', 'user': ''}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/virt-what/blob/master/f/tests.yml', 'test_tags': {'classic': '', 'container': '', 'atomic': 'YES'}}} +{'name': 'which', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/which/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/which/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': 'YES'}}} +{'name': 'xz', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/xz/pull-requests', 'user': {'fullname': 'Bohuslav Kabrda', 'name': 'bkabrda'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/xz/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'yum', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/yum/pull-requests', 'user': {'fullname': 'Mike Gahagan', 'name': 'mgahagan'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/yum/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': '', 'atomic': ''}}} +{'name': 'zip', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/zip/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/zip/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} +{'name': 'zlib', 'dist-git': {'package_url': '', 'test_yml': '', 'missing': 'YES', 'pending': {'status': 'YES', 'url': 'https://src.fedoraproject.org/rpms/zlib/pull-requests', 'user': {'fullname': 'Serhii Turivnyi', 'name': 'sturivny'}}, 'test_tags': {'classic': '', 'container': '', 'atomic': ''}}, 'upstreamfirst': {'test_yml': 'YES', 'package_url': 'https://upstreamfirst.fedorainfracloud.org/zlib/blob/master/f/tests.yml', 'test_tags': {'classic': 'YES', 'container': 'YES', 'atomic': ''}}} diff --git a/statictic_page/stable_page/koji-stats b/statictic_page/stable_page/koji-stats new file mode 100755 index 0000000..dd51f99 --- /dev/null +++ b/statictic_page/stable_page/koji-stats @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# +# Copyright Red Hat Inc +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# This file is part of Cockpit. +# + +UPSTREAM_PAGURE = "https://upstreamfirst.fedorainfracloud.org/api/0/" +UPSTREAM_BASE = "https://upstreamfirst.fedorainfracloud.org/" + +DISTGIT_BASE = "https://src.fedoraproject.org/git/rpms/" + +import argparse +import json +import os +import random +import sys +import tempfile +import time +import shutil +import subprocess + +import urllib.request +import urllib.parse + +DISTGIT_BASE = "https://src.fedoraproject.org/git/rpms/" + +def main(): + parser = argparse.ArgumentParser(description="Gather koji stats") + parser.add_argument("--scratch", action="store", default="/tmp", help="Scratch directory") + opts = parser.parse_args() + + stats = { } + directory = tempfile.mkdtemp(prefix="koji-stats", dir=opts.scratch) + + # Dist git + repos = repositories() + + offset = random.randint(0, len(repos)) + while True: + offset = (offset + 1) % len(repos) + project = repos[offset] + + url = urllib.parse.urljoin(DISTGIT_BASE, project) + repo = clone(url, directory) + if not repo: + continue + + start = time.time() + local(repo) + duration = int(time.time() - start) + log("mock", project, str(duration)) + + start = time.time() + koji(repo) + duration = int(time.time() - start) + log("koji", project, str(duration)) + + start = time.time() + koji(repo, "x86_64") + duration = int(time.time() - start) + log("koji-x86_64", project, str(duration)) + + shutil.rmtree(repo) + + return 0 + +def repositories(): + results = [ ] + base = os.path.dirname(__file__) + with open(os.path.join(base, "repos"), "rb") as f: + while True: + line = f.readline() + if not line: + break + line = line.strip() + if line: + results.append(line.decode("utf-8")) + return results + +def log(self, *args): + line = "\t".join(args) + "\n" + sys.stdout.write(line) + with open(os.path.join(os.path.dirname(__file__), "koji-stats.log"), 'a') as f: + f.write(line) + +def clone(url, directory): + target = os.path.join(directory, os.path.basename(url)) + while os.path.exists(target): + target += ".x" + try: + subprocess.check_call(["git", "clone", url, target], cwd=directory, stdout=sys.stderr.fileno()) + except subprocess.CalledProcessError: + return None + subprocess.check_call(["git", "checkout", "f26"], cwd=target, stdout=sys.stderr.fileno()) + return target + +def koji(directory, arch=None): + if arch: + cmd = ["fedpkg", "--scratch", "--arches", arch, "build"] + else: + cmd = ["fedpkg", "--scratch", "build"] + subprocess.check_call(cmd, cwd=directory, stdout=sys.stderr.fileno()) + +def local(directory): + subprocess.check_call(["fedpkg", "mockbuild"], cwd=directory, stdout=sys.stderr.fileno()) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/statictic_page/stable_page/publish2wiki.py b/statictic_page/stable_page/publish2wiki.py new file mode 100644 index 0000000..86ac933 --- /dev/null +++ b/statictic_page/stable_page/publish2wiki.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +# Purpose: publish output of ./test-stats to Fedora Wiki. This script is +# scheduled on Centos OpenShift: apps.ci.centos.org. Dependency are installed +# as a part of Job definition. data.txt comes from ./test-stats output. + +import mwclient +import os + +ua = 'MyWikiTool/0.2 run by User:FedoraUser' +site = mwclient.Site('fedoraproject.org', clients_useragent=ua) +site.login(os.environ.get('WIKI_USER'), os.environ.get('WIKI_PASS')) +page = site.pages['CI/Tests/stat'] +page.exists +with open('data.txt', 'r') as myfile: + text = myfile.read() +page.save(text, 'Current status.') diff --git a/statictic_page/stable_page/repos b/statictic_page/stable_page/repos new file mode 100644 index 0000000..b21aa98 --- /dev/null +++ b/statictic_page/stable_page/repos @@ -0,0 +1,288 @@ +acl +atomic +atomic-devmode +attr +audit +authconfig +avahi +basesystem +bash +bash-completion +bind +binutils +biosdevname +boost +bridge-utils +bzip2 +ca-certificates +c-ares +ceph +checkpolicy +chkconfig +chrony +cloud-init +cloud-utils +cockpit +conntrack-tools +container-selinux +coreutils +cpio +cracklib +criu +cronie +crontabs +cryptsetup +cups +curl +cyrus-sasl +dbus +dbus-glib +dbus-python +device-mapper +device-mapper-multipath +device-mapper-persistent-data +dhcp +diffutils +dmidecode +dnf +dnsmasq +docker +docker-client +docker-latest +dracut +e2fsprogs +efibootmgr +efivar +etcd +ethtool +expat +fcgi +file +filesystem +findutils +fipscheck +flannel +freetype +fuse +gawk +gdbm +GeoIP +gettext +glib2 +glibc +glib-networking +glusterfs +gmp +gnupg2 +gnutls +gobject-introspection +gomtree +gperftools +gpgme +grep +groff +grub2 +grubby +gsettings-desktop-schemas +gssproxy +gzip +hardlink +hostname +initscripts +iproute +iptables +iputils +irqbalance +iscsi-initiator-utils +jansson +json-glib +kernel +kexec-tools +keyutils +kmod +krb5 +kubernetes +less +libaio +libarchive +libassuan +libcap +libcap-ng +libcgroup +libcollection +libcroco +libdb +libdhash +libedit +libevent +libffi +gcc +libgcrypt +libgpg-error +icu +libidn +libini_config +ipa +libldb +libmnl +libmodman +libndp +libnetfilter_conntrack +libnetfilter_cthelper +libnetfilter_cttimeout +libnetfilter_queue +libnfnetlink +libnfsidmap +libnl +libnl3 +libpath_utils +libpcap +libproxy +libpwquality +libref_array +librepo +libreport +libseccomp +libselinux +libsemanage +libsepol +libsolv +libsoup +libssh2 +sssd +libtalloc +libtasn1 +libtdb +libtevent +libtirpc +libunistring +libunwind +libuser +libutempter +uuid +libverto +libxml2 +libyaml +linux-firmware +logrotate +lttng-ust +lua +lvm2 +lzo +m2crypto +make +mdadm +mokutil +mozjs17 +nano +ncurses +nettle +net-tools +NetworkManager +newt +nfs-utils +nmap +nspr +nss +nss-altfiles +nss-softokn +nss-util +oci-register-machine +oci-systemd-hook +openldap +openssh +openssl +os-prober +ostree +p11-kit +pam +passwd +pciutils +pcre +pinentry +pkgconfig +policycoreutils +polkit +polkit-pkla-compat +popt +ppp +procps-ng +protobuf-c +pth +pygpgme +pyliblzma +python +python-backports +python-backports-ssl_match_hostname +python-chardet +python-configobj +python-dateutil +python-decorator +python-dmidecode +python-docker-py +python-docker-pycreds +python-ethtool +python-iniparse +python-ipaddress +python-IPy +python-jsonpatch +python-jsonpointer +python-prettytable +python-pycurl +python-pyudev +python-requests +python-rhsm +python-setuptools +python-six +python-slip +python-urlgrabber +python-urllib3 +python-websocket-client +pyxattr +PyYAML +quota +readline +rpcbind +rpm +rpm-ostree +rsync +runc +samba +sed +selinux-policy +setools +setup +sg3_utils +shadow-utils +shared-mime-info +shim +skopeo +slang +snappy +socat +sqlite +sssd +subscription-manager +sudo +systemd +sysvinit +tar +tcp_wrappers +tmux +trousers +tuned +tzdata +usermode +userspace-rcu +ustr +util-linux +vim +virt-what +which +wpa_supplicant +xfsprogs +xz +yajl +yum +yum-metadata-parser +zlib diff --git a/statictic_page/stable_page/requirements.txt b/statictic_page/stable_page/requirements.txt new file mode 100644 index 0000000..df27baa --- /dev/null +++ b/statictic_page/stable_page/requirements.txt @@ -0,0 +1 @@ +mwclient>=0.8.6 \ No newline at end of file diff --git a/statictic_page/stable_page/run-tests b/statictic_page/stable_page/run-tests new file mode 100755 index 0000000..dc21486 --- /dev/null +++ b/statictic_page/stable_page/run-tests @@ -0,0 +1,20 @@ +#!/bin/sh -euf + +# Prepare atomic host to test, report and artifacts dirs +export TEST_SUBJECTS="$PWD/atomic.qcow2" +test -f $TEST_SUBJECTS || curl -o $TEST_SUBJECTS http://artifacts.ci.centos.org/fedora-atomic/f26/images/latest-atomic.qcow2 +rm -rf report.txt artifacts/ clone/ + +# Go through each project in upstreamfirst, clone it and put pass/fail in report.txt +curl https://upstreamfirst.fedorainfracloud.org/api/0/projects?short=true | grep '"fullname"' | grep -v '/' | cut -d '"' -f 4 | while read repo; do + git clone https://upstreamfirst.fedorainfracloud.org/$repo clone/$repo + export ANSIBLE_INVENTORY=$(test -e $repo/inventory && echo clone/$repo/inventory || echo /usr/share/ansible/inventory) + export TEST_ARTIFACTS="$PWD/artifacts/$repo" + if ! ansible-playbook -i localhost, --list-tags clone/$repo/tests.yml | grep atomic; then + printf "$repo skip\n" >> report.txt + elif ansible-playbook -t atomic -e "subjects=$TEST_SUBJECTS" -e "artifacts=$TEST_ARTIFACTS" clone/$repo/tests.yml; then + printf "$repo pass\n" >> report.txt + else + printf "$repo fail\n" >> report.txt + fi +done diff --git a/statictic_page/stable_page/run-tests-parallel b/statictic_page/stable_page/run-tests-parallel new file mode 100755 index 0000000..ccb7de5 --- /dev/null +++ b/statictic_page/stable_page/run-tests-parallel @@ -0,0 +1,27 @@ +#!/bin/sh -euf + +# Prepare atomic host to test, report and artifacts dirs +export TEST_SUBJECTS="$PWD/atomic.qcow2" +test -f $TEST_SUBJECTS || curl -o $TEST_SUBJECTS http://artifacts.ci.centos.org/fedora-atomic/f26/images/latest-atomic.qcow2 +rm -rf repo/ report/ +mkdir report/ repo/ + +run() { + git clone https://upstreamfirst.fedorainfracloud.org/$1 repo/$1 + inventory=$(test -e $1/inventory && echo repo/$1/inventory || echo /usr/share/ansible/inventory) + export TEST_ARTIFACTS="$PWD/repo/artifacts/$1" + if ! ansible-playbook --list-tags repo/$1/tests.yml | grep atomic; then + printf "$1 skip\n" >> report/$1.txt + elif ansible-playbook -i $inventory -t atomic -e "subjects=$TEST_SUBJECTS" -e "artifacts=$TEST_ARTIFACTS" repo/$1/tests.yml; then + printf "$1 pass\n" >> report/$1.txt + else + printf "$1 fail\n" >> report/$1.txt + fi +} + +# Go through each project in upstreamfirst, clone it and put pass/fail in report.txt +curl https://upstreamfirst.fedorainfracloud.org/api/0/projects?short=true | grep '"fullname"' | grep -v '/' | cut -d '"' -f 4 | while read repo; do + sleep 3 + if test $(jobs | wc -l) -gt 16; then wait; fi + run $repo & +done diff --git a/statictic_page/stable_page/test-stats b/statictic_page/stable_page/test-stats new file mode 100755 index 0000000..8e70d1e --- /dev/null +++ b/statictic_page/stable_page/test-stats @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Copyright Red Hat Inc +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# This file is part of Cockpit. +# + +import argparse +import json +import os +import sys +import tempfile +import shutil +import subprocess + +import urllib.request +import urllib.parse + + +UPSTREAM_PAGURE = "https://upstreamfirst.fedorainfracloud.org/api/0/" +UPSTREAM_BASE = "https://upstreamfirst.fedorainfracloud.org/" + +DISTGIT_BASE = "https://src.fedoraproject.org/git/rpms/" + + +def retrieve(url): + return urllib.request.urlopen(url).read() + + +def projects(): + url = urllib.parse.urljoin(UPSTREAM_PAGURE, "projects") + for project in json.loads(retrieve(url))["projects"]: + if not project.get("parent"): + yield project["name"] + + +def repos(): + base = os.path.dirname(__file__) + with open(os.path.join(base, "repos"), "rb") as f: + while True: + line = f.readline() + if not line: + break + line = line.strip() + if line: + yield line.decode("utf-8") + + +def clone(url, directory): + target = os.path.join(directory, os.path.basename(url)) + while os.path.exists(target): + target += ".x" + try: + subprocess.check_call(["git", "clone", url, target], cwd=directory, stdout=sys.stderr.fileno()) + except subprocess.CalledProcessError: + return None + return target + + +def count(stats, field, project): + if field not in stats: + stats[field] = [ ] + stats[field].append(project) + + +def tags(repo, standard): + try: + playbook = standard and "tests.yml" or "test_local.yml" + environ = os.environ.copy() + environ["LC_ALL"] = "C" + output = subprocess.check_output([ "ansible-playbook", "--list-tags", playbook ], env=environ, cwd=repo) + except subprocess.CalledProcessError: + output = b"" + + for line in output.decode("utf-8").split("\n"): + if "TASK TAGS" in line: + name, unused, tags = line.partition(":") + for tag in tags.strip(" []").split(","): + yield tag.strip() + + +def gather(repo, project, stats): + + # Standard entry point + path = os.path.join(repo, "tests.yml") + standard = os.path.exists(path) + if standard: + count(stats, "tests.yml", project) + + # Check if we have an old style test_cloud.yml file + path = os.path.join(repo, "test_cloud.yml") + if os.path.exists(path): + count(stats, "atomic", project) + elif "atomic" in tags(repo, standard): + count(stats, "atomic", project) + + if os.path.exists(os.path.join(repo, "test_cloud.yml")) or \ + os.path.exists(os.path.join(repo, "test_local.yml")) or \ + os.path.exists(os.path.join(repo, "test_docker.yml")): + count(stats, "legacy", project) + + +def main(): + parser = argparse.ArgumentParser(description='Gather stats about tests in dist-git') + opts = parser.parse_args() + + stats = {} + directory = tempfile.mkdtemp(prefix="test-stats") + + # Dist git + for project in repos(): + url = urllib.parse.urljoin(DISTGIT_BASE, project) + repo = clone(url, directory) + if repo: + sub = os.path.join(repo, "tests") + count(stats, "distgit", project) + if os.path.exists(sub): + count(stats, "distgit-tests", project) + gather(sub, project, stats) + else: + count(stats, "missing", project) + + # Upstream first projects + for project in projects(): + url = urllib.parse.urljoin(UPSTREAM_BASE, project) + repo = clone(url, directory) + if repo: + count(stats, "upstream", project) + gather(repo, project, stats) + + shutil.rmtree(directory) + + for name in list(stats.keys()): + stats["{0}-length".format(name)] = len(stats[name]) + json.dump(stats, sys.stdout, indent=4) + return 0 + + +if __name__ == '__main__': + sys.exit(main())