This repository has been archived by the owner on Jul 30, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
squad-create-reproducer-from-testrun: Download reproducers by testrun
Add support for downloading reproducers by testrun ID in the squad-create-reproducers script. This allows the user to provide the --testrun parameter to download the build or test reproducer from a specific testrun, using the get_reproducer_from_testrun function from squadutilslib. The --local flag can be provided to fetch TuxRun reproducer, otherwise the TuxPlan reproducer will be downloaded by default. Signed-off-by: Katie Worton <[email protected]>
- Loading branch information
1 parent
c602628
commit 09ef6cd
Showing
3 changed files
with
125 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: utf-8 -*- | ||
# vim: set ts=4 | ||
# | ||
# Copyright 2023-present Linaro Limited | ||
# | ||
# SPDX-License-Identifier: MIT | ||
|
||
|
||
from argparse import ArgumentParser | ||
from logging import INFO, basicConfig, getLogger | ||
from os import chmod, getenv | ||
from stat import S_IRUSR, S_IWUSR, S_IXUSR | ||
from sys import exit | ||
|
||
from squad_client.core.api import SquadApi | ||
|
||
from squadutilslib import ( | ||
ReproducerNotFound, | ||
get_reproducer_from_testrun, | ||
) | ||
|
||
squad_host_url = "https://qa-reports.linaro.org/" | ||
SquadApi.configure(cache=3600, url=getenv("SQUAD_HOST", squad_host_url)) | ||
|
||
basicConfig(level=INFO) | ||
logger = getLogger(__name__) | ||
|
||
|
||
def parse_args(raw_args): | ||
parser = ArgumentParser( | ||
description="Provide a SQUAD TestRun ID to download the build or test reproducer for that TestRun." | ||
+ " The reproducer will be printed to the terminal and written to a file." | ||
) | ||
|
||
parser.add_argument( | ||
"--testrun", | ||
required=True, | ||
help="The TestRun ID of the build or test to fetch the reproducer for.", | ||
) | ||
|
||
# Optional arguments: | ||
parser.add_argument( | ||
"--debug", | ||
required=False, | ||
action="store_true", | ||
default=False, | ||
help="Display debug messages.", | ||
) | ||
|
||
parser.add_argument( | ||
"--filename", | ||
required=False, | ||
help="Name for the reproducer file, 'reproducer' by default.", | ||
) | ||
|
||
parser.add_argument( | ||
"--local", | ||
required=False, | ||
action="store_true", | ||
default=False, | ||
help="Fetch a TuxRun or TuxMake reproducer rather than a TuxPlan reproducer.", | ||
) | ||
|
||
return parser.parse_args(raw_args) | ||
|
||
|
||
def run(raw_args=None): | ||
args = parse_args(raw_args) | ||
|
||
# If filename was not provided, set filename to "reproducer" | ||
if not args.filename: | ||
filename = "reproducer" | ||
else: | ||
filename = args.filename | ||
|
||
try: | ||
reproducer = get_reproducer_from_testrun(args.testrun, filename, args.local) | ||
|
||
except ReproducerNotFound as e: | ||
logger.error(f"No reproducer could be found for TestRun {args.testrun}") | ||
logger.error(f"{e}") | ||
return -1 | ||
|
||
# If a filename was provided, don't print the reproducer to console | ||
if not args.filename: | ||
print(reproducer) | ||
|
||
if args.local: | ||
# Make the script executable | ||
chmod(filename, S_IXUSR | S_IRUSR | S_IWUSR) | ||
|
||
logger.info(f"file created: {filename}") | ||
|
||
|
||
if __name__ == "__main__": | ||
exit(run()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters