trace_agg_unit_test/trace_agg_tests/README.md

186 lines
5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.