Ejemplos

Table of Contents

En esta página usted pueden encontrar inspiración de ejemplos de la vida real de pruebas ya habilitadas en Fedora CI.

did

Para cada componente tiene sentido habilitar incluso la prueba más simple como ejecutar el binario con --help o usar una prueba de humo interna. Aquí hay un ejemplo para el componente [did] https://src.fedoraproject.org/rpms/did/pull-request/5:

- hosts: localhost
  roles:
  - role: standard-test-basic
    tags:
    - classic
    tests:
    - smoke:
        dir: .
        run: did this year --test
    required_packages:
    - did

Eso es. Como se ve arriba, ejecutar un sencillo comando como prueba es muy fácil con la ayuda de la función Basic.

Python

Hay múltiples versiones del lenguaje de programación Python disponibles en Fedora y en diversos subpaquetes relacionados. Como todos ellos deben ser probados (incluyendo sus diversas combinaciones) nosotros share probamos la cobertura de ellas en el espacio de nombre tests:

El repositorio de pruebas contiene pruebas de humo básicas para entornos virtuales junto con pruebas de ejemplo Metadata almacenado en Flexible Metadata Format:

Una vez está disponible la prueba en el repositorio de pruebas compartido es fácilmente enlazable desde las versiones Python soportadas:

Probamos también implementaciones Python adicionales:

Además nos aseguramos que herramientas esenciales para venv y virtualnv, como setuptools, pip o virtualenv trabajen correctamente con todas las versiones soportadas:

Advierta que para el último conjunto de ejemplos corremos las mismas pruebas varias veces con el entorno modificado. Por ejemplo:

- smoke36:
    dir: python/smoke
    run: VERSION=3.6 ./venv.sh
- smoke37:
    dir: python/smoke
    run: VERSION=3.7 ./venv.sh
- smoke26:
    dir: python/smoke
    run: VERSION=2.6 METHOD=virtualenv TOX=false ./venv.sh
- smoke27:
    dir: python/smoke
    run: VERSION=2.7 METHOD=virtualenv ./venv.sh
- smoke34_virtualenv:
    dir: python/smoke
    run: VERSION=3.4 METHOD=virtualenv ./venv.sh

De este modo creamos diversos casos de prueba virtuales desde un único código de prueba lo que evita la duplicación y minimiza el mantenimiento futuro.

Shell

Hay diversos shells que implementan la especificación POSIX: bash, ksh, mksh, zsh, dash. Todos ellos comparten una cantidad significativa de cobertura de pruebas y esto hace que pierda sentido el enviar & mantener pruebas idénticas en cinco repositorios diferentes (+ sus posibles ramas). De este modo almacenamos el código de pruebas en el espacio de nombre tests:

Estas pruebas se enlazan después desde todos los ficheros tests.yml relevantes:

El filtro Flexible Metadata Format se usa para seleccionar las pruebas apropiadas en lugar de listar las pruebas de forma individual manualmente. Las variables de entorno PACKAGES y SH_BIN se usan para especificar que implementación de shell está siendo probada:

- hosts: localhost
  roles:
  - role: standard-test-beakerlib
    tags:
    - classic
    repositories:
    - repo: "https://src.fedoraproject.org/tests/shell.git"
      dest: "shell"
      fmf_filter: "tier: 1, 2 & tags: classic"
    environment:
      PACKAGES: ksh
      SH_BIN: ksh
    required_packages:
    - ksh
    - expect            # login requires expect
    - which             # smoke requires which

Algunas pruebas pueden ser relavantes solo para componentes seleccionados. Este se puede manejar fácilente con la condición adicional component:

repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
  dest: "shell"
  fmf_filter: "tier: 1, 2 & component: dash"

Vea la página Metadata para la lista completa de los atributos redactados hasta ahora.

SELinux

Hay diversos componentes relacionados con SELinux. Están estrechamente conectados de modo que los cambios en uno pueden causar problemas en otros. Esto es porque sus pruebas son compartidas y ejecutadas juntas:

En lugar de listar las pruebas relevantes a ser ejecutadas manuamente en cada repositorio dist git rpms repository se usa Flexible Metadata Format:

- hosts: localhost
  roles:
  - role: standard-test-beakerlib
    tags:
    - classic
    repositories:
    - repo: "https://src.fedoraproject.org/tests/selinux.git"
      dest: "selinux"
      fmf_filter: "tier: 1 | component: selinux-policy"

El filtro fmf_filter suministrado selecciona todas las pruebas relevantes para el componente selinux-policy más todas las pruebas Tier 1 selinux:

tier: 1 | componente: selinux-policy

Se cubren los siguientes seis componentes:

Use la herramienta de línea de comandos fmf para comprobar rápidamente que pruebas serán planificadas:

# dnf install -y fmf
# fedpkg clone -a tests/selinux
# cd selinux
# fmf ls --filter "tier: 1 | component: checkpolicy"
/selinux-policy/policy-rpm-macros
/checkpolicy/sedispol
/checkpolicy/checkmodule
/checkpolicy/sedismod
/checkpolicy/checkpolicy
/checkpolicy/checkpolicy-docs
/libsepol/sepol_check_context
/libsemanage/verify-options-in-semanage-conf
/libselinux/getsebool
/policycoreutils/booleans

Vea la documentación de Formato Flexible de Metadatos para otras de como instalar install fmf.