Skip to content

Add deterministic integration scenarios booting real subsystems (ECS / Physics / Render / Network / Scene)#421

Merged
Krilliac merged 4 commits into
Workingfrom
codex/add-integration-tests-for-engine-subsystems
Apr 9, 2026
Merged

Add deterministic integration scenarios booting real subsystems (ECS / Physics / Render / Network / Scene)#421
Krilliac merged 4 commits into
Workingfrom
codex/add-integration-tests-for-engine-subsystems

Conversation

@Krilliac

@Krilliac Krilliac commented Apr 9, 2026

Copy link
Copy Markdown
Owner

Motivation

  • Provide focused integration tests that boot real engine subsystems (not mocks) to validate cross-system contracts and deterministic behaviour for physics/ECS, rendering constant-buffer updates, networking prediction/reconciliation under latency/jitter, and scene snapshot roundtrips.

Description

  • Added a new integration test suite Tests/Integration/TestSubsystemIntegrationScenarios.cpp that uses a diagnostics-style harness to initialize EngineContext, PhysicsSystem, event bus, and other subsystems and contains four focused scenarios for ECS+Physics, ECS+Rendering, Networking+ECS, and Scene save/load roundtrip with identity checks.
  • Implemented small, test-local helpers in the new file: world-matrix/constant-buffer diff updater, replication packet (de)serializer, and deterministic ComponentSerializerEntry registrations for transform/name to ensure snapshot identity round-trips.
  • Wired the new test into the test runner by updating Tests/CMakeLists.txt to include Integration/TestSubsystemIntegrationScenarios.cpp in the SparkTests target.
  • Used existing engine subsystems/APIs in tests: PhysicsUpdateSystem, PhysicsBody readback, Spark::Graphics::ConstantBufferDiffManager, Spark::Net::InstabilitySimulator, ClientPrediction, and Spark::Editor::SceneSnapshotSerializer with the ComponentSerializerRegistry.

Testing

  • Ran clang-format -i Tests/Integration/TestSubsystemIntegrationScenarios.cpp successfully to match project formatting rules.
  • Ran cmake --preset linux-gcc-release which configured successfully for the Linux-GCC release preset (tests enabled) without errors.
  • Per-file syntax validation with g++ -std=gnu++23 -fsyntax-only including the engine include paths and entt stub passed for the new source file.
  • Kicked off cmake --build ... --target SparkTests which began building the test target and made substantive progress in this environment, but the full compilation of the entire SparkTests target is long-running and did not complete within the interactive session timeout (partial build progress observed).

Codex Task

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

github-actions Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

✅ CI Errors Resolved

All previously reported errors have been fixed. All builds passing.

Last checked: 2026-04-09T05:40:01Z

@Krilliac
Krilliac merged commit aa4effa into Working Apr 9, 2026
3 checks passed
@Krilliac
Krilliac deleted the codex/add-integration-tests-for-engine-subsystems branch April 9, 2026 05:42
@github-actions

github-actions Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

Code Coverage (GCC + lcov)

Utils/MemoryMonitor.cpp                        | 9.3%   236| 0.0%  19|    -    0
Utils/MemoryMonitor.h                          |85.7%    14| 0.0%  12|    -    0
Utils/MultiISA.h                               |42.9%    14| 0.0%   6|    -    0
Utils/NetworkHealthMonitor.cpp                 | 113%    15| 0.0%   2|    -    0
Utils/NetworkHealthMonitor.h                   |    -     0|    -   0|    -    0
Utils/OpaqueHandle.h                           | 282%    11| 0.0%  15|    -    0
Utils/ProcessLinux.cpp                         |16.5%   182| 0.0%  28|    -    0
Utils/Profiler.cpp                             |14.2%   113| 0.0%  15|    -    0
Utils/Profiler.h                               |36.4%    33| 0.0%  12|    -    0
Utils/RandomEngine.h                           |29.3%    41| 0.0%  12|    -    0
Utils/Result.h                                 | 100%    29| 0.0%  28|    -    0
Utils/RingBuffer.h                             | 108%    59| 0.0%  64|    -    0
Utils/ScopeGuard.h                             | 142%    36| 0.0%  51|    -    0
Utils/ScopedTimer.h                            |25.0%    12| 0.0%   3|    -    0
Utils/Serializer.h                             | 100%    48| 0.0%  42|    -    0
Utils/SparkConsole.cpp                         |28.5%   144| 0.0%  17|    -    0
Utils/SparkConsole.h                           | 100%     2| 0.0%   2|    -    0
Utils/SparkError.h                             |10.9%    55| 0.0%   6|    -    0
Utils/SplinePath.h                             |    -     0|    -   0|    -    0
Utils/StackTrace.h                             |10.8%    74| 0.0%   8|    -    0
Utils/StateMachine.h                           |54.0%    63| 0.0%  32|    -    0
Utils/StringUtils.h                            |18.1%   116| 0.0%  21|    -    0
Utils/Telemetry.h                              |21.8%    87| 0.0%  16|    -    0
Utils/ThreadDebugger.h                         |11.6%   199| 0.0%  23|    -    0
Utils/ThreadSafeQueue.h                        |27.5%    40| 0.0%  11|    -    0
Utils/TimerManager.h                           |19.8%    96| 0.0%  19|    -    0
Utils/UUID.h                                   |43.2%    37| 0.0%  16|    -    0
Utils/Validate.h                               |    -     0|    -   0|    -    0

[/home/runner/work/SparkEngine/SparkEngine/SparkSDK/Include/Spark/]
IEngineContext.h                               |6700%     1| 0.0%   1|    -    0
Version.h                                      |    -     0|    -   0|    -    0
================================================================================
                                         Total:|29.2% 23463| 0.0%  4k|    -    0

Per-Subsystem Coverage

Subsystem Lines Hit Coverage Threshold Status
AI 2776 694 25% 35%
Animation 160 154 96.2% 35%
Audio 0 0 0% 30%
Camera 0 0 0% 40%
Core 2184 1387 63.5% 40%
ECS 190 114 60% 40%
Editor 5997 1864 31.1% 25%
GameModules 6244 3131 50.1% 30%
Graphics 7172 3770 52.6% 30%
Networking 3322 2145 64.6% 35%
Physics 0 0 0% 35%
Scripting 0 0 0% 30%
Utils 7625 4812 63.1% 60%

Total: 50.7% (18071/35670 lines)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant