Skip to content

Added blackbox integration test. #40

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from registry.fedoraproject.org/fedora:33

run dnf -y update fedora-gpg-keys && \
dnf -y install git python3-jinja2 python3-koji python3-yaml && \
dnf -y install git python3-pytest python3-pytest-cov python3-jsondiff python3-jinja2 python3-koji python3-yaml && \
dnf clean all

workdir /workspace
Expand Down
8 changes: 4 additions & 4 deletions feedback_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def datetime_now_string():
return datetime.datetime.now().strftime("%m/%d/%Y, %H:%M:%S")


def load_settings():
def load_settings(argv=None):
settings = {}

parser = argparse.ArgumentParser()
Expand All @@ -159,7 +159,7 @@ def load_settings():
parser.add_argument("--use-cache", dest="use_cache", action='store_true', help="Use local data instead of pulling Content Resolver. Saves a lot of time! Needs a 'cache_data.json' file at the same location as the script is at.")
parser.add_argument("--dev-buildroot", dest="dev_buildroot", action='store_true', help="Buildroot grows pretty quickly. Use a fake one for development.")
parser.add_argument("--dnf-cache-dir", dest="dnf_cache_dir_override", help="Override the dnf cache_dir.")
args = parser.parse_args()
args = parser.parse_args(argv)

settings["configs"] = args.configs
settings["output"] = args.output
Expand Down Expand Up @@ -7245,7 +7245,7 @@ def generate_historic_data(query):
###############################################################################


def main():
def main(argv=None):

# -------------------------------------------------
# Stage 1: Data collection and analysis using DNF
Expand All @@ -7254,7 +7254,7 @@ def main():
# measuring time of execution
time_started = datetime_now_string()

settings = load_settings()
settings = load_settings(argv)

settings["global_refresh_time_started"] = datetime.datetime.now().strftime("%-d %B %Y %H:%M UTC")

Expand Down
16 changes: 0 additions & 16 deletions test_config_files.py

This file was deleted.

76 changes: 76 additions & 0 deletions test_data/bash/input/base-eln.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
# This configuration file defines an "Environment" in Feedback Pipeline.
# https://tiny.distro.builders
#
# Environments influence how a workload looks like when installed.
# That's achieved by including specific packages — like coreutils-single — that
# influence the result.
# Environments can also act as base images when monitoring container sizes.

document: feedback-pipeline-environment
version: 1
data:
# id is the filename — that automatically prevents collisions for free!


### MANDATORY FIELDS ###

# Name is an identifier for humans
#
# (mandatory field)
name: ELN Environment

# A short description, perhaps hinting the purpose
#
# (mandatory field)
description: A base environment on top of which all ELN workloads are analyzed.

# Who maintains it? This is just a freeform string
# for humans to read. In Fedora, a FAS nick is recommended.
#
# (mandatory field)
maintainer: asamalik

# Different instances of the environment, one per repository.
#
# (mandatory field)
repositories:
- repo-test

# Packages defining this environment.
# This list includes packages for all
# architectures — that's the one to use by default.
#
# (mandatory field)
packages:
- fedora-repos-eln
- fedora-release-eln

# Labels connect things together.
# Workloads get installed in environments with the same label.
# They also get included in views with the same label.
#
# (mandatory field)
labels:
- eln
- eln-but-not-included
- eln-extras

### OPTIONAL FIELDS ###

# Architecture-specific packages.
#
# (optional field)
#arch_packages:
# x86_64:
# - arch-specific-package

# Extra installation options.
# The following are now supported:
# - "include-docs" - include documentation packages
# - "include-weak-deps" - automatically pull in "recommends" weak dependencies
#
# (optional field)
#options:
#- option

70 changes: 70 additions & 0 deletions test_data/bash/input/bash.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
# This configuration file defines a "Workload" in Feedback Pipeline.
# https://tiny.distro.builders
#
# Workload is a set of packages with a purpouse that someone cares about.
# They might want to monitor it for the install size, dependencies that get
# pulled in, etc.

document: feedback-pipeline-workload
version: 1
data:
# id is the filename — that automatically prevents collisions for free!


### MANDATORY FIELDS ###

# Name is an identifier for humans
#
# (mandatory field)
name: Bash

# A short description, perhaps hinting the purpose
#
# (mandatory field)
description: Bash

# Who maintains it? This is just a freeform string
# for humans to read. In Fedora, a FAS nick is recommended.
#
# (mandatory field)
maintainer: asamalik

# Packages defining this workload.
# This list includes packages for all
# architectures — that's the one to use by default.
#
# (mandatory field)
packages:
- bash

# Labels connect things together.
# Workloads get installed in environments with the same label.
# They also get included in views with the same label.
#
# (mandatory field)
labels:
- eln
- fedora

options:
- strict


### OPTIONAL FIELDS ###

# Architecture-specific packages.
#
# (optional field)
#arch_packages:
# x86_64:
# - arch-specific-package

# Extra installation options.
# The following are now supported:
# - "include-docs" - include documentation packages
# - "include-weak-deps" - automatically pull in "recommends" weak dependencies
#
# (optional field)
#options:
#- option
51 changes: 51 additions & 0 deletions test_data/bash/input/repo-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
# This configuration file defines a "Repository" in Feedback Pipeline.
# https://tiny.distro.builders
#
# Repositories are the sources of the data.
# Right now, they represent Fedora releases, but can be extended in the future.

document: feedback-pipeline-repository
version: 2
data:
# id is the filename — that automatically prevents collisions for free!


### MANDATORY FIELDS ###

# Name is an identifier for humans
#
# (mandatory field)
name: Content Resolver Test

# A short description, perhaps hinting the purpose
#
# (mandatory field)
description: Stable Repo used for testing

# Who maintains it? This is just a freeform string
# for humans to read. In Fedora, a FAS nick is recommended.
#
# (mandatory field)
maintainer: tdawson

# Where does this repository come from?
# Right now, only Fedora repositories are supported,
# defined by their releasever.
#
# (mandatory field)
source:

repos:

everything:
baseurl: https://kojipkgs.fedoraproject.org/compose/34/Fedora-34-20210423.0/compose/Everything/$basearch/os/

modular:
baseurl: https://kojipkgs.fedoraproject.org/compose/34/Fedora-34-20210423.0/compose//Modular/$basearch/os/

releasever: "34"

architectures:
- aarch64
- x86_64
13 changes: 13 additions & 0 deletions test_data/bash/input/view-eln.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
document: feedback-pipeline-compose-view
version: 1
data:
name: ELN Package Set
description: You can think about it as Enterprise Linux Next. More info https://fedoraproject.org/wiki/ELN
maintainer: bakery
labels:
- eln
repository: repo-test
buildroot_strategy: dep_tracker


Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id": "base-eln:repo-test:aarch64", "type": "env", "data": {"env_conf_id": "base-eln", "pkg_ids": ["fedora-gpg-keys-34-1.noarch", "fedora-release-34-1.noarch", "fedora-release-common-34-1.noarch", "fedora-release-identity-basic-34-1.noarch", "fedora-repos-34-1.noarch", "fedora-repos-eln-34-1.noarch", "fedora-repos-rawhide-34-1.noarch"], "repo_id": "repo-test", "arch": "aarch64", "pkg_relations": {"fedora-gpg-keys-34-1.noarch": {"required_by": ["fedora-repos-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}, "fedora-release-34-1.noarch": {"required_by": ["fedora-release-common-34-1.noarch", "fedora-repos-34-1.noarch"], "recommended_by": [], "suggested_by": ["fedora-release-common-34-1.noarch"], "source_name": "fedora-release", "reponame": "everything"}, "fedora-release-common-34-1.noarch": {"required_by": ["fedora-release-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-release", "reponame": "everything"}, "fedora-release-identity-basic-34-1.noarch": {"required_by": ["fedora-release-common-34-1.noarch"], "recommended_by": ["fedora-release-34-1.noarch"], "suggested_by": [], "source_name": "fedora-release", "reponame": "everything"}, "fedora-repos-34-1.noarch": {"required_by": ["fedora-release-common-34-1.noarch", "fedora-repos-rawhide-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}, "fedora-repos-eln-34-1.noarch": {"required_by": [], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}, "fedora-repos-rawhide-34-1.noarch": {"required_by": ["fedora-repos-eln-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}}, "errors": {"non_existing_pkgs": ["fedora-release-eln"]}, "succeeded": true}, "pkg_query": [{"id": "fedora-gpg-keys-34-1.noarch", "name": "fedora-gpg-keys", "evr": "34-1", "arch": "noarch", "installsize": 116499, "description": "This package provides the RPM signature keys.", "summary": "Fedora RPM keys", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": []}, {"id": "fedora-release-34-1.noarch", "name": "fedora-release", "evr": "34-1", "arch": "noarch", "installsize": 0, "description": "Fedora release files such as various /etc/ files that define the release\nand systemd preset files that determine which services are enabled by default.", "summary": "Fedora release files", "source_name": "fedora-release", "sourcerpm": "fedora-release-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": []}, {"id": "fedora-release-common-34-1.noarch", "name": "fedora-release-common", "evr": "34-1", "arch": "noarch", "installsize": 16326, "description": "Release files common to all Editions and Spins of Fedora", "summary": "Fedora release files", "source_name": "fedora-release", "sourcerpm": "fedora-release-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": []}, {"id": "fedora-release-identity-basic-34-1.noarch", "name": "fedora-release-identity-basic", "evr": "34-1", "arch": "noarch", "installsize": 705, "description": "Provides the necessary files for a Fedora installation that is not identifying\nitself as a particular Edition or Spin.", "summary": "Package providing the basic Fedora identity", "source_name": "fedora-release", "sourcerpm": "fedora-release-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": []}, {"id": "fedora-repos-34-1.noarch", "name": "fedora-repos", "evr": "34-1", "arch": "noarch", "installsize": 4597, "description": "Fedora package repository files for yum and dnf along with gpg public keys.", "summary": "Fedora package repositories", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": []}, {"id": "fedora-repos-eln-34-1.noarch", "name": "fedora-repos-eln", "evr": "34-1", "arch": "noarch", "installsize": 3403, "description": "This package provides repository files for ELN (Enterprise Linux Next)\npackages that can be installed atop Rawhide. Note that these packages are\nexperimental and should not be used in a production environment.", "summary": "ELN repo definitions", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": ["base-eln:repo-test:aarch64"]}, {"id": "fedora-repos-rawhide-34-1.noarch", "name": "fedora-repos-rawhide", "evr": "34-1", "arch": "noarch", "installsize": 2215, "description": "This package provides the rawhide repo definitions.", "summary": "Rawhide repo definitions", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "aarch64", "q_in": ["base-eln:repo-test:aarch64"], "q_required_in": []}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id": "base-eln:repo-test:x86_64", "type": "env", "data": {"env_conf_id": "base-eln", "pkg_ids": ["fedora-gpg-keys-34-1.noarch", "fedora-release-34-1.noarch", "fedora-release-common-34-1.noarch", "fedora-release-identity-basic-34-1.noarch", "fedora-repos-34-1.noarch", "fedora-repos-eln-34-1.noarch", "fedora-repos-rawhide-34-1.noarch"], "repo_id": "repo-test", "arch": "x86_64", "pkg_relations": {"fedora-gpg-keys-34-1.noarch": {"required_by": ["fedora-repos-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}, "fedora-release-34-1.noarch": {"required_by": ["fedora-release-common-34-1.noarch", "fedora-repos-34-1.noarch"], "recommended_by": [], "suggested_by": ["fedora-release-common-34-1.noarch"], "source_name": "fedora-release", "reponame": "everything"}, "fedora-release-common-34-1.noarch": {"required_by": ["fedora-release-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-release", "reponame": "everything"}, "fedora-release-identity-basic-34-1.noarch": {"required_by": ["fedora-release-common-34-1.noarch"], "recommended_by": ["fedora-release-34-1.noarch"], "suggested_by": [], "source_name": "fedora-release", "reponame": "everything"}, "fedora-repos-34-1.noarch": {"required_by": ["fedora-release-common-34-1.noarch", "fedora-repos-rawhide-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}, "fedora-repos-eln-34-1.noarch": {"required_by": [], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}, "fedora-repos-rawhide-34-1.noarch": {"required_by": ["fedora-repos-eln-34-1.noarch"], "recommended_by": [], "suggested_by": [], "source_name": "fedora-repos", "reponame": "everything"}}, "errors": {"non_existing_pkgs": ["fedora-release-eln"]}, "succeeded": true}, "pkg_query": [{"id": "fedora-gpg-keys-34-1.noarch", "name": "fedora-gpg-keys", "evr": "34-1", "arch": "noarch", "installsize": 116499, "description": "This package provides the RPM signature keys.", "summary": "Fedora RPM keys", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": []}, {"id": "fedora-release-34-1.noarch", "name": "fedora-release", "evr": "34-1", "arch": "noarch", "installsize": 0, "description": "Fedora release files such as various /etc/ files that define the release\nand systemd preset files that determine which services are enabled by default.", "summary": "Fedora release files", "source_name": "fedora-release", "sourcerpm": "fedora-release-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": []}, {"id": "fedora-release-common-34-1.noarch", "name": "fedora-release-common", "evr": "34-1", "arch": "noarch", "installsize": 16326, "description": "Release files common to all Editions and Spins of Fedora", "summary": "Fedora release files", "source_name": "fedora-release", "sourcerpm": "fedora-release-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": []}, {"id": "fedora-release-identity-basic-34-1.noarch", "name": "fedora-release-identity-basic", "evr": "34-1", "arch": "noarch", "installsize": 705, "description": "Provides the necessary files for a Fedora installation that is not identifying\nitself as a particular Edition or Spin.", "summary": "Package providing the basic Fedora identity", "source_name": "fedora-release", "sourcerpm": "fedora-release-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": []}, {"id": "fedora-repos-34-1.noarch", "name": "fedora-repos", "evr": "34-1", "arch": "noarch", "installsize": 4597, "description": "Fedora package repository files for yum and dnf along with gpg public keys.", "summary": "Fedora package repositories", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": []}, {"id": "fedora-repos-eln-34-1.noarch", "name": "fedora-repos-eln", "evr": "34-1", "arch": "noarch", "installsize": 3403, "description": "This package provides repository files for ELN (Enterprise Linux Next)\npackages that can be installed atop Rawhide. Note that these packages are\nexperimental and should not be used in a production environment.", "summary": "ELN repo definitions", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": ["base-eln:repo-test:x86_64"]}, {"id": "fedora-repos-rawhide-34-1.noarch", "name": "fedora-repos-rawhide", "evr": "34-1", "arch": "noarch", "installsize": 2215, "description": "This package provides the rawhide repo definitions.", "summary": "Rawhide repo definitions", "source_name": "fedora-repos", "sourcerpm": "fedora-repos-34-1.src.rpm", "q_arch": "x86_64", "q_in": ["base-eln:repo-test:x86_64"], "q_required_in": []}]}
1 change: 1 addition & 0 deletions test_data/bash/output/env-conf--base-eln.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id": "base-eln", "type": "env_conf", "data": {"id": "base-eln", "name": "ELN Environment", "description": "A base environment on top of which all ELN workloads are analyzed.", "maintainer": "asamalik", "repositories": ["repo-test"], "packages": ["fedora-repos-eln", "fedora-release-eln"], "labels": ["eln", "eln-but-not-included", "eln-extras"], "arch_packages": {"armv7hl": [], "aarch64": [], "ppc64le": [], "s390x": [], "x86_64": []}, "options": [], "groups": []}}
1 change: 1 addition & 0 deletions test_data/bash/output/maintainers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"asamalik": {"name": "asamalik", "all_succeeded": true}}
Loading