Test Environment

This page describes details about the test environment.

Supported Architectures

Testing Farm supports a variety of hardware architectures, depending on the ranch being used.

🌍 Public Ranch

We currently support:

  • x86_64 in AWS

  • aarch64 in AWS

No other architectures are currently planned.

🎩 Red Hat Ranch

We currently support:

  • x86_64 in AWS with failover to Beaker and PSI OpenStack

  • aarch64 in AWS with failover to Beaker

  • ppc64le in Beaker

  • s390x in Beaker

Epel

Before Testing Farm starts installing artifacts into the test environment, it adds the EPEL repositories to the system.

Epel repository is added only for CentOS Stream distributions tested via the 🌍 Public ranch.

For RHEL the repository is not added by default, as this is not considered a best practice when testing RHEL.

For enabling the repository for RHEL you can use:

Implementation

The tag repository setup is implemented via the following guest-setup playbook:

Tag Repository

Before Testing Farm starts installing artifacts into the test environment, it adds the "tag repository" to the system. This repository contains all builds tagged with -candidate (i.e. which passed gating) that are not yet present in the nightly repository. It’s currently necessary as landing in nightly can take an indefinite amount of time due to the manual "pre-validation" and "attach to erratum" steps. Adding this repository greatly reduces the number of artifact installation failures.

The tag repository is auto-generated by the build system - Koji or Brew. As a package maintainer you might know it under the name brew/koji buildroot repository.

The base URL of the repository is set up according to the test environment operating system.

Tag repository is added:

  • for RHEL, CentOS Stream and Fedora based distributions

  • when testing on VM or Bare Metal, i.e. for container testing the setup is skipped

  • for Fedora and CentOS the tag repository is enabled during test execution, see Disabling section if you would like to disable the repository during your testing

  • for RHEL the tag repository is disabled during the test execution, see Enabling section if you would like to enable the repository during your testing

Tag repository details:

  • repository name: testing-farm-tag-repository

  • priority

    • 🌍 Public Ranch - 9 (higher than system repos)

    • 🎩 Red Hat Ranch - 999 (lower than system repos)

Implementation

The tag repository setup is implemented via the following guest-setup Ansible tasks:

Disabling

This is applicable only for CentOS Stream and Fedora, in RHEL the tag repository is disabled for test execution.

If you would like to disable the tag repository during test execution add below adjust rule to your tmt plan. This can be useful if the tag repository is causing issues for your testing.:W!

  • Fedora

    adjust:
        - when: distro == fedora
          prepare+:
            - how: shell
              order: 20
              script:  dnf config-manager --set-disabled testing-farm-tag-repository
          because: Don't use Testing Farm tag repository.
  • CentOS Stream

    adjust:
        - when: distro == centos-stream
          prepare+:
            - how: shell
              order: 20
              script:  dnf config-manager --set-disabled testing-farm-tag-repository
          because: Don't use Testing Farm tag repository.

Enabling

This is applicable only for RHEL, for CentOS Stream and Fedora the tag repository is enabled during test execution.

If you would like to enable the tag repository during test execution add the below adjust rule to your plan. This can be useful if you package depends on a specific version of another package pulled in from the tag repository and your want to install some additional packages from it, e.g. the -devel package.

adjust:
    - when: distro == rhel
      prepare+:
        - how: shell
          order: 20
          script:  dnf config-manager --set-enabled testing-farm-tag-repository
      because: Use Testing Farm tag repository during test execution.

Composes

Testing farm supports a variety of composes, depending on the ranch being used. The lists of composes for every ranch are available below:

When Compose YUM repositories are removed upstream, the composes become almost useless. If you would like to keep a compose for longer than the default time, you will need to request that it be tagged with by ENGCMP with do-not-remove. You will also need to change the keep_until date in variables-composes-yaml. Either request this from Testing Farm team or make a merge request.

Reserved Directories

This section describes special reserved directories in the testing environment. Your tests should avoid touching these, or unexpected failures can happen.

/var/ARTIFACTS for tmt based tests

This directory contains the tmt working directory used to save test artifacts and manage tmt tests execution.

/tmp/artifacts for STI based tests

This directory is used to store test artifacts produced by standard-test-roles.