ecu-tests/docs/05_architecture_overview.md

67 lines
2.1 KiB
Markdown
Raw 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.

# Architecture Overview
This document provides a high-level view of the frameworks components and how they interact, plus a Mermaid diagram for quick orientation.
## Components
- Tests (pytest) — test modules and functions under `tests/`
- Fixtures — defined in `tests/conftest.py` (config, lin, flash_ecu)
- Config Loader — `ecu_framework/config.py` (YAML → dataclasses)
- LIN Abstraction — `ecu_framework/lin/base.py` (`LinInterface`, `LinFrame`)
- Mock LIN Adapter — `ecu_framework/lin/mock.py`
- BabyLIN Adapter — `ecu_framework/lin/babylin.py` (SDK wrapper → BabyLIN_library.py)
- Flasher — `ecu_framework/flashing/hex_flasher.py`
- Reporting Plugin — `conftest_plugin.py` (docstring → report metadata)
- Reports — `reports/report.html`, `reports/junit.xml`
## Mermaid architecture diagram
```mermaid
flowchart TB
subgraph Tests & Pytest
T[tests/*]
CF[tests/conftest.py]
PL[conftest_plugin.py]
end
subgraph Framework
CFG[ecu_framework/config.py]
BASE[ecu_framework/lin/base.py]
MOCK[ecu_framework/lin/mock.py]
BABY[ecu_framework/lin/babylin.py]
FLASH[ecu_framework/flashing/hex_flasher.py]
end
subgraph Artifacts
REP[reports/report.html<br/>reports/junit.xml]
YAML[config/*.yaml<br/>(babylin.example.yaml, test_config.yaml)]
SDK[vendor/BabyLIN_library.py<br/>platform-specific libs]
end
T --> CF
CF --> CFG
CF --> BASE
CF --> MOCK
CF --> BABY
CF --> FLASH
PL --> REP
CFG --> YAML
BABY --> SDK
T --> REP
```
## Data and control flow summary
- Tests use fixtures to obtain config and a connected LIN adapter
- Config loader reads YAML (or env override), returns typed dataclasses
- LIN calls are routed through the interface abstraction to the selected adapter
- Flasher (optional) uses the same interface to program the ECU
- Reporting plugin parses docstrings and enriches the HTML report
## Extending the architecture
- Add new bus adapters by implementing `LinInterface`
- Add new report sinks (e.g., JSON or a DB) by extending the plugin
- Add new fixtures for diagnostics or measurement tools (Scopes, power supplies, etc.)