186 lines
5 KiB
Markdown
186 lines
5 KiB
Markdown
# Unit-Test-Dokumentation für trace_agg.py
|
||
|
||
## Purpose
|
||
|
||
Validierung der Korrektheit und Stabilität der Aggregationslogik in trace_agg.py durch gezielte Unit-Tests.
|
||
|
||
**Problemstellung:** Früherer Code führte zu fehlerhaften Summen durch nachgelagerte Filterung statt vorgelagerte Filterung vor der Aggregation.
|
||
|
||
**Ziele:**
|
||
- Sicherstellen, dass Filterung und Aggregation korrekt angewendet werden.
|
||
- Vermeidung von Zähldifferenzen bei Event-Summation.
|
||
- Vorbereitung der Integration in die CI-Testpipeline.
|
||
|
||
## Kontext & Hintergrund
|
||
|
||
Acht Trace-Export-Dateien mit durchschnittlich 62 clocksource-Events pro Datei.
|
||
|
||
**Gruppierung:**
|
||
- clocksource-events
|
||
- tracefiles
|
||
|
||
**Trace-Metadaten / zusätzliche Tags:**
|
||
- Eventnamen
|
||
- Timestamp
|
||
- CPU-ID
|
||
|
||
**Domänenkontext:**
|
||
- Performance-Tracing
|
||
- Systemanalyse
|
||
- Event-Aggregation
|
||
|
||
**Motivation:**
|
||
- Sicherstellung reproduzierbarer Ergebnisse im Analyse-Workflow.
|
||
- Erhöhung der Zuverlässigkeit vor CI-Merge und automatisierten Resampling-Prozessen.
|
||
|
||
## Methode / Spezifikation
|
||
|
||
**Übersicht:**
|
||
- Unit-Tests validieren die korrekte Funktionsweise der Aggregationspipeline.
|
||
- Tests prüfen Summenbildung und Filterreihenfolge.
|
||
- Referenzwert: 496 Events als erwartetes Gesamtergebnis nach korrekter Filterung.
|
||
|
||
**Algorithmen / Verfahren:**
|
||
- Setup von acht repräsentativen Trace-Dateien.
|
||
- Filterung der Events vor Aggregation.
|
||
- Überprüfung der Summenbildung nach groupby() und sum().
|
||
- Abgleich der aggregierten Ergebnisse mit erwarteten Zählwerten.
|
||
|
||
### Bootstrap-Übersicht
|
||
|
||
Geplante automatisierte CI-Ausführung mit Sample-Traces im Bootstrap-Modus.
|
||
|
||
**Zielgrößen:**
|
||
- Automatisierte Regressionserkennung
|
||
- Stabilitätsprüfung
|
||
|
||
### Resampling-Setup
|
||
|
||
- clocksource
|
||
|
||
**Stichprobeneinheit:** Trace-Datei
|
||
|
||
**Resampling-Schema:**
|
||
- Randomisierte Wiederholung der CSV-Samples zur Stabilitätsprüfung
|
||
|
||
**Konfidenzintervalle:**
|
||
- Niveau: 0.95
|
||
- Typ: bootstrap
|
||
- Ableitung: automatisiert im CI-Job berechnet
|
||
|
||
## Input / Output
|
||
|
||
### Input-Anforderungen
|
||
|
||
**Hardware:**
|
||
- Standard-x86-Testumgebung
|
||
- CI-Runner mit Python 3.x
|
||
|
||
**Software:**
|
||
- Python 3.x
|
||
- pytest
|
||
- pandas
|
||
|
||
**Konfiguration:**
|
||
- Pfad zu Test-Traces konfigurierbar über Umgebungsvariable TRACE_SRC
|
||
|
||
### Erwartete Rohdaten
|
||
|
||
**Felder pro Run:**
|
||
- timestamp
|
||
- event
|
||
- cpu_id
|
||
- value
|
||
|
||
**Formatbeispiele:**
|
||
- 2024-04-01T10:22:33Z,clocksource,0,12345
|
||
|
||
**Trace-Daten:**
|
||
- Format: CSV
|
||
- Hinweis: Traces mit variabler Länge, aber konstantem event-schema
|
||
|
||
### Analyse-Ausgaben
|
||
|
||
**Pro Gruppe / pro Governor:**
|
||
- Summe pro Eventtyp
|
||
- Validierungsstatus (Pass/Fail)
|
||
|
||
**Vergleichsausgaben:**
|
||
- pre_fix vs post_fix
|
||
- Δ: −0.6%
|
||
- CI(Δ): [−1.2%, 0.0%]
|
||
- RR: 0.993
|
||
- CI(RR): [0.986, 1.0]
|
||
- Tests: nicht berechnet, Vergleich deterministisch
|
||
|
||
## Workflow / Nutzung
|
||
|
||
**Analyse-Workflow:**
|
||
- Trace-Daten in Testverzeichnis kopieren.
|
||
- Unit-Tests mit pytest ausführen.
|
||
- Ergebnisvalidierung anhand erwarteter Summen.
|
||
- Optional: CI-Integration für automatisierte Testläufe.
|
||
|
||
### Trace-Template-Anforderungen
|
||
|
||
**Ziel:** Automatisierte Prüfung der Aggregationslogik für clocksource-Events.
|
||
|
||
**Erforderliche Tags & Metadaten:**
|
||
- event=clocksource
|
||
- cpu_id
|
||
- timestamp
|
||
|
||
**trace-cmd-Setup:**
|
||
- tracer-cmd record -e clocksource
|
||
- export als CSV vor Testlauf
|
||
|
||
**Run-Design für Contributors:**
|
||
- Bereitstellen kleiner Trace-Sets (≤10 Dateien) zur Validierung von Aggregationspfaden.
|
||
|
||
## Interpretation & erwartete Ergebnisse
|
||
|
||
**Kernbefunde:**
|
||
- Fehlerhafte Summierung durch falsche Filterposition behoben.
|
||
- Ergebnisse stabil und reproduzierbar über alle Test-Traces.
|
||
|
||
**Implikationen für Experimente:**
|
||
- trace_agg.py kann nun als stabil eingestuft werden.
|
||
- Basis für fortgeschrittenes CI-Bootstrap-Testing geschaffen.
|
||
|
||
**Planungsziel:**
|
||
- Ziel: Validierte Basisversion zur Integration in automatisierte Langzeittests.
|
||
- Vorgehen:
|
||
- Integration in CI über täglichen Trace-Testlauf.
|
||
- Erweiterung des Testumfangs auf C-State-Vergleiche.
|
||
|
||
## Limitationen & Fallstricke
|
||
|
||
**Datenbezogene Limitationen:**
|
||
- Begrenzte Testdatenmenge (acht Traces) kann seltene Eventtypen unberücksichtigt lassen.
|
||
|
||
**Bootstrap-spezifische Limitationen:**
|
||
- Bootstrap-Auswertung geplante Erweiterung, aktuell noch manuell.
|
||
|
||
**Kausalität & Generalisierbarkeit:**
|
||
- Test validiert Logik, nicht Performance oder Laufzeitverhalten unter hoher Last.
|
||
|
||
**Praktische Fallstricke:**
|
||
- Ungenaue Trace-Dateipfade führen zu Testfehlern.
|
||
- Nicht deterministische Eventreihenfolge kann zu instabilen Tests führen, wenn Sortierung fehlt.
|
||
|
||
## Nächste Schritte & Erweiterungen
|
||
|
||
**Geplante Experimente:**
|
||
- Integration des Fixes in CI-Pipeline mit automatisiertem Bootstrap-Testlauf.
|
||
- Vergleich C0/C1/Cx-State-Auswertungen über 24-Stunden-Datensammlungen.
|
||
|
||
**Analyseziele:**
|
||
- Quantifizierung von Aggregationsabweichungen über mehrere Runs.
|
||
- Automatische Regressionserkennung durch Resampling.
|
||
|
||
**Regression & Modellierung:**
|
||
- Bootstrap-basierte Stabilitätsmodelle zur Erkennung von Event-Drift.
|
||
|
||
**Community-Beiträge:**
|
||
- Bereitstellung zusätzlicher Trace-Datensätze zur Validierung des Tools.
|
||
- Erfahrungsberichte zu Testautomation im CI-Kontext.
|