You've already forked ansible-role-act-runner
3.8 KiB
3.8 KiB
inclusion, fileMatchPattern
| inclusion | fileMatchPattern |
|---|---|
| fileMatch | tests/**/* |
Testing-Strategie für Act Runner Role
Test-Pyramide
Unit Tests (Syntax/Lint)
# Ansible Syntax
ansible-playbook --syntax-check tests/test.yml
# Ansible Lint
ansible-lint .
# YAML Lint
yamllint .
Integration Tests (Molecule)
# Vollständiger Test-Zyklus
molecule test
# Einzelne Schritte
molecule create # Test-Umgebung erstellen
molecule converge # Role ausführen
molecule verify # Tests ausführen
molecule destroy # Aufräumen
End-to-End Tests
- Runner registriert sich erfolgreich
- Service startet und läuft stabil
- Jobs können ausgeführt werden
Molecule-Konfiguration
molecule.yml
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: ubuntu-20.04
image: ubuntu:20.04
pre_build_image: true
- name: archlinux
image: archlinux:latest
pre_build_image: true
provisioner:
name: ansible
config_options:
defaults:
callbacks_enabled: profile_tasks
verifier:
name: ansible
Test Scenarios
# molecule/default/converge.yml
- name: Converge
hosts: all
become: true
vars:
act_runner_gitea_url: "https://gitea.example.com"
act_runner_token: "test-token"
roles:
- role: act_runner
Testfälle
Positive Tests
- Installation auf unterstützten OS
- Konfiguration mit Standard-Werten
- Service-Start und -Status
- Registrierung (gemockt)
Negative Tests
- Fehlende Required Variables
- Ungültige Gitea-URL
- Ungültiger Token
- Unzureichende Berechtigungen
Edge Cases
- Bereits registrierter Runner
- Service bereits gestartet
- Konfigurationsdatei existiert bereits
Testdaten
Mock-Konfigurationen
# Minimal
act_runner_gitea_url: "https://test.gitea.com"
act_runner_token: "test-token-123"
# Erweitert
act_runner_config:
runner:
capacity: 2
labels:
- "test:docker://alpine:latest"
Test-Inventories
[runners]
test-ubuntu ansible_host=ubuntu-container
test-arch ansible_host=arch-container
[runners:vars]
ansible_connection=docker
Verifikation
Service Tests
# In molecule/default/verify.yml
- name: Verify service is running
service_facts:
- name: Check act_runner service
assert:
that:
- ansible_facts.services['act_runner.service'].state == 'running'
- ansible_facts.services['act_runner.service'].status == 'enabled'
Configuration Tests
- name: Verify config file exists
stat:
path: /etc/act_runner/config.yaml
register: config_file
- name: Check config file
assert:
that:
- config_file.stat.exists
- config_file.stat.mode == '0644'
Process Tests
- name: Check act_runner process
command: pgrep -f act_runner
register: runner_process
failed_when: runner_process.rc != 0
CI/CD Integration
GitHub Actions
name: Test Role
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Molecule
run: molecule test
Gitea Actions
name: Ansible Role Test
on: [push]
jobs:
molecule:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Test with Molecule
run: |
pip install molecule[docker]
molecule test
Performance Tests
Resource Usage
- Memory consumption des Runners
- CPU-Last während Job-Ausführung
- Disk I/O für Container-Images
Scalability
- Mehrere Runner auf einem Host
- Concurrent Job-Ausführung
- Container-Startup-Zeit
Regression Tests
Upgrade-Tests
- Update von vorheriger Version
- Konfigurationsmigration
- Service-Kontinuität
Compatibility Tests
- Verschiedene Ansible-Versionen
- Verschiedene OS-Versionen
- Verschiedene Docker-Versionen