Add trace_agg_tests/README.md
This commit is contained in:
parent
a38980d3b8
commit
8e9ef9ebac
1 changed files with 186 additions and 0 deletions
186
trace_agg_tests/README.md
Normal file
186
trace_agg_tests/README.md
Normal file
|
|
@ -0,0 +1,186 @@
|
||||||
|
# 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.
|
||||||
Loading…
Reference in a new issue