Files
ansible-role-act-runner/.kiro/steering/testing-strategy.md
Markus Pesch 82250f851d
Some checks failed
Lint Markdown files / markdown-lint (push) Failing after 11s
Ansible Linter / ansible-lint (push) Successful in 18s
fix: pass token via cli arg
2026-01-08 18:21:32 +01:00

231 lines
3.8 KiB
Markdown

---
inclusion: fileMatch
fileMatchPattern: 'tests/**/*'
---
# Testing-Strategie für Act Runner Role
## Test-Pyramide
### Unit Tests (Syntax/Lint)
```bash
# Ansible Syntax
ansible-playbook --syntax-check tests/test.yml
# Ansible Lint
ansible-lint .
# YAML Lint
yamllint .
```
### Integration Tests (Molecule)
```bash
# 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
```yaml
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
```yaml
# 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
```yaml
# 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
```ini
[runners]
test-ubuntu ansible_host=ubuntu-container
test-arch ansible_host=arch-container
[runners:vars]
ansible_connection=docker
```
## Verifikation
### Service Tests
```yaml
# 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
```yaml
- 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
```yaml
- name: Check act_runner process
command: pgrep -f act_runner
register: runner_process
failed_when: runner_process.rc != 0
```
## CI/CD Integration
### GitHub Actions
```yaml
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
```yaml
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