Testing: Stabilized test suite and achieved 93% total coverage.
- Fixed CLI tests by patching local imports at source (psutil, os, Path). - Fixed Collector tests by globalizing docker.from_env mock. - Stabilized SSE stream tests via AsyncMock and immediate generator termination to prevent hangs. - Achieved >80% coverage on CLI (84%), Collector (97%), and DB Repository (100%). - Implemented SMTP Relay service tests (100%).
This commit is contained in:
66
execution_graphs.md
Normal file
66
execution_graphs.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# DECNET Execution Graphs
|
||||
|
||||
These graphs illustrate the logical flow of execution within the DECNET framework, showing how high-level commands and API requests trigger secondary processes and subsystem interactions.
|
||||
|
||||
## 1. Deployment & Teardown Flow
|
||||
This flow shows the orchestration from a CLI `deploy` command down to network setup and container instantiation.
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
CLI_Deploy([cli.deploy]) --> INI[ini_loader.load_ini]
|
||||
CLI_Deploy --> NET_Detect[network.detect_interface]
|
||||
CLI_Deploy --> FleetBuild[fleet.build_deckies_from_ini]
|
||||
|
||||
FleetBuild --> Archetype[archetypes.get_archetype]
|
||||
FleetBuild --> Distro[distros.get_distro]
|
||||
|
||||
CLI_Deploy --> Engine_Deploy[engine.deployer.deploy]
|
||||
|
||||
Engine_Deploy --> IP_Alloc[network.allocate_ips]
|
||||
Engine_Deploy --> NET_Setup[network.setup_host_macvlan]
|
||||
Engine_Deploy --> Compose_Gen[composer.write_compose]
|
||||
Engine_Deploy --> Docker_Up[engine.deployer._compose_with_retry]
|
||||
|
||||
CLI_Teardown([cli.teardown]) --> Engine_Teardown[engine.deployer.teardown]
|
||||
Engine_Teardown --> NET_Cleanup[network.teardown_host_macvlan]
|
||||
Engine_Teardown --> Docker_Down[engine.deployer._compose]
|
||||
```
|
||||
|
||||
## 2. Mutation & Monitoring Flow
|
||||
How DECNET maintains deception by periodically changing decoy identities and monitoring activities.
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph Periodic_Process
|
||||
CLI_Mutate([cli.mutate]) --> Mutate_Loop[mutator.engine.run_watch_loop]
|
||||
end
|
||||
|
||||
Mutate_Loop --> Mutate_All[mutator.engine.mutate_all]
|
||||
Mutate_All --> Mutate_Decky[mutator.engine.mutate_decky]
|
||||
|
||||
Mutate_Decky --> Get_New_Identity[archetypes.get_archetype]
|
||||
Mutate_Decky --> Rewrite_Compose[composer.write_compose]
|
||||
Mutate_Decky --> Restart_Container[engine.deployer._compose_with_retry]
|
||||
|
||||
subgraph Log_Collection
|
||||
CLI_Collect([cli.collect]) --> Worker[collector.worker.log_collector_worker]
|
||||
Worker --> Stream[collector.worker._stream_container]
|
||||
Stream --> Parse[collector.worker.parse_rfc5424]
|
||||
end
|
||||
```
|
||||
|
||||
## 3. Web API Flow (Fleet Management)
|
||||
How the Web UI interacts with the underlying systems via the FastAPI router.
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
Web_UI[Web Dashboard] --> API_Deploy[web.router.fleet.deploy_deckies]
|
||||
Web_UI --> API_Mutate[web.router.fleet.mutate_decky]
|
||||
Web_UI --> API_Stream[web.router.stream.stream_events]
|
||||
|
||||
API_Deploy --> FleetBuild[fleet.build_deckies_from_ini]
|
||||
API_Mutate --> Mutator[mutator.engine.mutate_decky]
|
||||
|
||||
API_Stream --> DB_Pull[web.db.sqlite.repository.get_logs_after_id]
|
||||
DB_Pull --> SQLite[(SQLite Database)]
|
||||
```
|
||||
Reference in New Issue
Block a user