docs: Consolidate all plans into docs/plans/ directory

- Create new docs/plans/ directory with organized structure
- Add comprehensive PLAN_deadlock_detection_prevention.md (15h plan)
  - ThreadSanitizer integration (2h)
  - Helgrind validation (3h)
  - std::scoped_lock refactoring (4h)
  - std::shared_mutex optimization (6h)
- Migrate 16 plans from planTI/ to docs/plans/
  - Rename all files to PLAN_*.md convention
  - Update README.md with index and statuses
- Remove old planTI/ directory
- Add run_all_tests.sh script for test automation

Plans now include:
- 1 active development plan (deadlock prevention)
- 3 test architecture plans
- 13 integration test scenario plans

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
StillHammer 2025-11-21 19:32:33 +08:00
parent 063549bf17
commit 572e133f4e
20 changed files with 1233 additions and 3 deletions

File diff suppressed because it is too large Load Diff

100
docs/plans/README.md Normal file
View File

@ -0,0 +1,100 @@
# Plans de Développement - GroveEngine
Ce dossier contient tous les plans de développement structurés pour le projet GroveEngine.
## 📋 Liste des Plans
### Plans Actifs
| Fichier | Sujet | Date | Durée | Statut |
|---------|-------|------|-------|--------|
| [PLAN_deadlock_detection_prevention.md](./PLAN_deadlock_detection_prevention.md) | Détection & Prévention Deadlock (TSan, Helgrind, scoped_lock, shared_mutex) | 2025-01-21 | 15h | 🟡 En cours |
### Plans Tests d'Intégration
| Fichier | Sujet | Date | Durée | Statut |
|---------|-------|------|-------|--------|
| [PLAN_integration_tests_global.md](./PLAN_integration_tests_global.md) | Plan global des tests d'intégration (13 scénarios) | 2024-11-13 | 5-7 jours | 🟢 Terminé |
| [PLAN_architecture_tests.md](./PLAN_architecture_tests.md) | Architecture de la suite de tests d'intégration | 2024-11-13 | - | 🟢 Terminé |
| [PLAN_seuils_success.md](./PLAN_seuils_success.md) | Seuils de succès pour les métriques de test | 2024-11-13 | - | 🟢 Terminé |
### Plans Scénarios Individuels (Tests d'Intégration)
| Fichier | Scénario | Description | Durée | Statut |
|---------|----------|-------------|-------|--------|
| [PLAN_scenario_01_production_hotreload.md](./PLAN_scenario_01_production_hotreload.md) | Production Hot-Reload | Hot-reload avec state complexe en conditions réelles | ~30s | 🟢 Implémenté |
| [PLAN_scenario_02_chaos_monkey.md](./PLAN_scenario_02_chaos_monkey.md) | Chaos Monkey | Failures aléatoires (crashes, corruptions, recovery) | ~30s | 🟢 Implémenté |
| [PLAN_scenario_03_stress_test.md](./PLAN_scenario_03_stress_test.md) | Stress Test | Long-running avec 120 reloads répétés sur 10 min | ~10min | 🟢 Implémenté |
| [PLAN_scenario_04_race_condition.md](./PLAN_scenario_04_race_condition.md) | Race Condition Hunter | Compilation concurrente + reload automatique | ~10s | 🟢 Implémenté |
| [PLAN_scenario_05_multimodule.md](./PLAN_scenario_05_multimodule.md) | Multi-Module Orchestration | Interactions entre plusieurs modules | ~1min | 🔴 Non implémenté |
| [PLAN_scenario_07_limits.md](./PLAN_scenario_07_limits.md) | Limite Tests | Large state (100k particules), timeouts, corruption | ~3min | 🟢 Implémenté |
| [PLAN_scenario_08_config_hotreload.md](./PLAN_scenario_08_config_hotreload.md) | Config Hot-Reload | Changement config à la volée, validation, rollback | ~1min | 🟢 Implémenté |
| [PLAN_scenario_09_module_dependencies.md](./PLAN_scenario_09_module_dependencies.md) | Module Dependencies | Cascade reload, cycle detection, isolation | ~1min | 🟢 Implémenté |
| [PLAN_scenario_10_multiversion_coexistence.md](./PLAN_scenario_10_multiversion_coexistence.md) | Multi-Version Coexistence | Canary deployment, progressive migration, rollback | ~2min | 🟢 Implémenté |
| [PLAN_scenario_11_io_system.md](./PLAN_scenario_11_io_system.md) | IO System Stress | Pub/sub IntraIO, batching, backpressure, thread safety | ~1min | 🟢 Implémenté |
| [PLAN_scenario_12_datanode.md](./PLAN_scenario_12_datanode.md) | DataNode Integration | Typed API, hashing, tree operations | ~30s | 🟢 Implémenté |
| [PLAN_scenario_13_cross_system.md](./PLAN_scenario_13_cross_system.md) | Cross-System Integration | IO + DataNode, config hot-reload broadcasting | ~1min | 🟡 Deadlock à fixer |
## 📊 Statistiques
- **Plans totaux** : 17
- **En cours** : 2 (Deadlock prevention, Scenario 13 fix)
- **Terminés** : 14
- **Non démarrés** : 1 (Scenario 05)
## 📝 Convention de Nommage
Format : `PLAN_<nom_descriptif>.md`
Exemples :
- `PLAN_deadlock_detection_prevention.md` - Plan d'amélioration technique
- `PLAN_integration_tests_global.md` - Plan global multi-scénarios
- `PLAN_scenario_XX_<nom>.md` - Plan de test individuel
- `PLAN_architecture_<nom>.md` - Document d'architecture
## 🗂️ Structure d'un Plan
Chaque plan devrait contenir :
1. **Vue d'ensemble**
- Durée totale
- Objectif principal
- Tableau récapitulatif des phases
2. **Phases détaillées**
- Phase 1, 2, 3...
- Modifications précises (fichiers, lignes)
- Exemples de code AVANT/APRÈS
- Tests de validation
3. **Livrables**
- Checklist de validation
- Critères de succès
4. **Calendrier**
- Timeline avec effort estimé
## 🎯 Statuts
- 🔴 Non démarré
- 🟡 En cours
- 🟢 Terminé
- ⚫ Archivé
## 💡 Utilisation
1. **Créer un nouveau plan** lors d'une grosse feature
2. **Suivre la structure standard**
3. **Mettre à jour le statut** dans ce README
4. **Archiver les plans terminés** (optionnel : déplacer vers `archive/`)
## 🔗 Liens Utiles
- [Tests d'intégration (répertoire)](../../tests/integration/)
- [Documentation architecture](../architecture/)
- [Guide de contribution](../../CONTRIBUTING.md)
---
**Dernière mise à jour** : 2025-01-21
**Fichiers dans ce dossier** : 17 plans

97
run_all_tests.sh Normal file
View File

@ -0,0 +1,97 @@
#!/bin/bash
# GroveEngine - Run All Integration Tests
# Usage: ./run_all_tests.sh [options]
#
# Options:
# --verbose Show full test output
# --parallel Run tests in parallel (faster but harder to read)
# --summary Only show pass/fail summary
# --continue Continue running tests even if one fails
set -e
VERBOSE=false
PARALLEL=false
SUMMARY=false
CONTINUE=false
BUILD_DIR="build"
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--verbose|-v)
VERBOSE=true
shift
;;
--parallel|-j)
PARALLEL=true
shift
;;
--summary|-s)
SUMMARY=true
shift
;;
--continue|-c)
CONTINUE=true
shift
;;
--help|-h)
echo "Usage: $0 [options]"
echo ""
echo "Options:"
echo " --verbose, -v Show full test output"
echo " --parallel, -j Run tests in parallel"
echo " --summary, -s Only show pass/fail summary"
echo " --continue, -c Continue running tests even if one fails"
echo " --help, -h Show this help message"
exit 0
;;
*)
echo "Unknown option: $1"
echo "Use --help for usage information"
exit 1
;;
esac
done
# Check if build directory exists
if [ ! -d "$BUILD_DIR" ]; then
echo "Error: Build directory '$BUILD_DIR' not found"
echo "Run 'cmake -B build && cmake --build build' first"
exit 1
fi
cd "$BUILD_DIR"
echo "════════════════════════════════════════════════════════════════"
echo " GroveEngine - Integration Test Suite"
echo "════════════════════════════════════════════════════════════════"
echo ""
# Run with CTest
if [ "$PARALLEL" = true ]; then
echo "Running tests in parallel..."
if [ "$VERBOSE" = true ]; then
ctest -j$(nproc) --output-on-failure
else
ctest -j$(nproc)
fi
elif [ "$SUMMARY" = true ]; then
echo "Running tests (summary only)..."
ctest --output-on-failure 2>&1 | grep -E "(Test|Passed|Failed|Total)"
elif [ "$VERBOSE" = true ]; then
echo "Running tests (verbose mode)..."
ctest --verbose
else
echo "Running tests..."
if [ "$CONTINUE" = true ]; then
ctest --output-on-failure || true
else
ctest --output-on-failure
fi
fi
echo ""
echo "════════════════════════════════════════════════════════════════"
echo " Test Run Complete"
echo "════════════════════════════════════════════════════════════════"

View File

@ -32,8 +32,7 @@ public:
private:
std::vector<Tank> tanks;
int frameCount = 0;
std::string moduleVersion = "v1.0";
std::shared_ptr<spdlog::logger> logger;
std::string moduleVersion = "v1.0";std::shared_ptr<spdlog::logger> logger;
std::unique_ptr<IDataNode> config;
void updateTank(Tank& tank, float dt);

View File

@ -5,7 +5,7 @@
#include <memory>
// This line will be modified by AutoCompiler during race condition tests
std::string moduleVersion = "v11";
std::string moduleVersion = "v1";
namespace grove {