|
|
e004bc015b
|
feat: Windows portage + Phase 4 SceneCollector integration
- Port to Windows (MinGW/Ninja):
- ModuleFactory/ModuleLoader: LoadLibrary/GetProcAddress
- SystemUtils: Windows process memory APIs
- FileWatcher: st_mtime instead of st_mtim
- IIO.h: add missing #include <cstdint>
- Tests (09, 10, 11): grove_dlopen/dlsym wrappers
- Phase 4 - SceneCollector & IIO:
- Implement view/proj matrix calculation in parseCamera()
- Add IIO routing test with game→renderer pattern
- test_22_bgfx_sprites_headless: 5 tests, 23 assertions pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 09:48:14 +08:00 |
|
|
|
9105610b29
|
feat: Add integration tests 8-10 & fix CTest configuration
Added three new integration test scenarios:
- Test 08: Config Hot-Reload (dynamic configuration updates)
- Test 09: Module Dependencies (dependency injection & cascade reload)
- Test 10: Multi-Version Coexistence (canary deployment & progressive migration)
Fixes:
- Fixed CTest working directory for all tests (add WORKING_DIRECTORY)
- Fixed module paths to use relative paths (./ prefix)
- Fixed IModule.h comments for clarity
New test modules:
- ConfigurableModule (for config reload testing)
- BaseModule, DependentModule, IndependentModule (for dependency testing)
- GameLogicModuleV1/V2/V3 (for multi-version testing)
Test coverage now includes 10 comprehensive integration scenarios covering
hot-reload, chaos testing, stress testing, race conditions, memory leaks,
error recovery, limits, config reload, dependencies, and multi-versioning.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-19 07:34:15 +08:00 |
|
|
|
360f39325b
|
feat: Add Memory Leak Hunter test & fix critical ModuleLoader leaks
**Test Suite Completion - Scenario 5**
Add comprehensive memory leak detection test for hot-reload system with 200 reload cycles.
**New Test: test_05_memory_leak**
- 200 hot-reload cycles without recompilation
- Memory monitoring every 5 seconds (RSS, temp files, .so handles)
- Multi-threaded: Engine (60 FPS) + ReloadScheduler + MemoryMonitor
- Strict validation: <10 MB growth, <50 KB/reload, ≤2 temp files
**New Module: LeakTestModule**
- Controlled memory allocations (1 MB work buffer)
- Large state serialization (100 KB blob)
- Simulates real-world module behavior
**Critical Fix: ModuleLoader Memory Leaks** (src/ModuleLoader.cpp:34-39)
- Auto-unload previous library before loading new one
- Prevents library handle leaks (+200 .so mappings eliminated)
- Prevents temp file accumulation (778 files → 1-2 files)
- Memory leak reduced by 97%: 36.5 MB → 1.9 MB
**Test Results - Before Fix:**
- Memory growth: 36.5 MB ❌
- Per reload: 187.1 KB ❌
- Temp files: 778 ❌
- Mapped .so: +200 ❌
**Test Results - After Fix:**
- Memory growth: 1.9 MB ✅
- Per reload: 9.7 KB ✅
- Temp files: 1-2 ✅
- Mapped .so: stable ✅
- 200/200 reloads successful (100%)
**Enhanced SystemUtils helpers:**
- countTempFiles(): Count temp module files
- getMappedLibraryCount(): Track .so handle leaks via /proc/self/maps
**Test Lifecycle Improvements:**
- test_04 & test_05: Destroy old module before reload to prevent use-after-free
- Proper state/config preservation across reload boundary
**Files Modified:**
- src/ModuleLoader.cpp: Auto-unload on load()
- tests/integration/test_05_memory_leak.cpp: NEW - 200 cycle leak detector
- tests/modules/LeakTestModule.cpp: NEW - Test module with allocations
- tests/helpers/SystemUtils.{h,cpp}: Memory monitoring functions
- tests/integration/test_04_race_condition.cpp: Fixed module lifecycle
- tests/CMakeLists.txt: Added test_05 and LeakTestModule
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-16 10:06:18 +08:00 |
|