# Mode DEBUG - Guide d'utilisation

## Configuration du mode DEBUG

Le mode DEBUG permet d'afficher le payload JSON complet avant l'envoi au serveur et de le sauvegarder dans un fichier.

### Option 1 : Activer directement dans le script (permanent)

Éditez le fichier `scripts/bench.sh` à la ligne 37 :

```bash
# Avant (debug désactivé)
DEBUG_PAYLOAD="${DEBUG_PAYLOAD:-0}"

# Après (debug activé en permanence)
DEBUG_PAYLOAD="${DEBUG_PAYLOAD:-1}"
```

Puis exécutez normalement :
```bash
sudo bash scripts/bench.sh
```

### Option 2 : Activer via variable d'environnement (temporaire)

Sans modifier le script, utilisez :
```bash
DEBUG_PAYLOAD=1 sudo bash scripts/bench.sh
```

**Note** : Cette méthode nécessite `DEBUG_PAYLOAD=1` à chaque exécution.

## Ce que fait le mode DEBUG

Lorsque `DEBUG_PAYLOAD=1` :

1. **Affiche le payload complet** formaté avec `jq` :
   ```
   ════════════════════════════════════════════════════════
   DEBUG: Payload JSON complet
   ════════════════════════════════════════════════════════
   {
     "device_identifier": "lenovo-bureau",
     "bench_script_version": "1.1.0",
     "hardware": {
       "cpu": {
         "vendor": "GenuineIntel",
         "model": "Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz",
         "cores": 4,
         "threads": 4,
         ...
       },
       "ram": {
         "total_mb": 7771,
         "used_mb": 4530,
         "free_mb": 1291,
         "shared_mb": 1950,
         ...
       },
       "network": {
         "interfaces": [
           {
             "name": "eno1",
             "type": "ethernet",
             "mac": "xx:xx:xx:xx:xx:xx",
             "ip": "10.0.1.169",
             "speed_mbps": 1000,
             "wake_on_lan": true
           }
         ]
       }
     },
     "results": {
       "cpu": { "score": 12.17, ... },
       "memory": { "score": 0.0, ... },
       "disk": { "score": 67.65, ... },
       "network": {
         "upload_mbps": 427.86,
         "download_mbps": 398.94,
         "ping_ms": 44.16,
         "score": 41.34
       },
       "global_score": 25.15
     }
   }
   ════════════════════════════════════════════════════════
   ```

2. **Sauvegarde dans un fichier** avec timestamp :
   ```
   ✓ Payload sauvegardé dans: /tmp/bench_payload_20251207_234512.json
   ```

3. **Attend confirmation** avant d'envoyer :
   ```
   Appuyez sur Entrée pour continuer l'envoi ou Ctrl+C pour annuler...
   ```

## Utilisation pratique

### Vérifier les données avant envoi

```bash
# Activer le debug
DEBUG_PAYLOAD=1 sudo bash scripts/bench.sh

# Le script s'arrête avant l'envoi
# Vous pouvez alors :
# - Vérifier le payload affiché
# - Consulter le fichier JSON sauvegardé
# - Appuyer sur Entrée pour continuer
# - Ou Ctrl+C pour annuler
```

### Sauvegarder le payload sans envoyer

```bash
# Lancer avec debug
DEBUG_PAYLOAD=1 sudo bash scripts/bench.sh

# Quand le script demande confirmation :
# Appuyez sur Ctrl+C pour annuler l'envoi

# Le payload est déjà sauvegardé dans /tmp/bench_payload_*.json
```

### Analyser les payloads sauvegardés

```bash
# Lister tous les payloads sauvegardés
ls -lh /tmp/bench_payload_*.json

# Afficher le dernier payload
jq '.' /tmp/bench_payload_*.json | tail -n 1

# Comparer deux payloads
diff <(jq -S '.' /tmp/bench_payload_20251207_234512.json) \
     <(jq -S '.' /tmp/bench_payload_20251207_235612.json)
```

## Vérifications importantes

Avec le mode DEBUG activé, vous pouvez vérifier que :

### ✅ Données RAM complètes
```json
"ram": {
  "total_mb": 7771,
  "used_mb": 4530,      // Présent ✓
  "free_mb": 1291,      // Présent ✓
  "shared_mb": 1950     // Présent ✓
}
```

### ✅ Données réseau Wake-on-LAN
```json
"network": {
  "interfaces": [
    {
      "wake_on_lan": true  // Présent ✓
    }
  ]
}
```

### ✅ Résultats iperf3
```json
"results": {
  "network": {
    "upload_mbps": 427.86,      // Présent ✓
    "download_mbps": 398.94,    // Présent ✓
    "ping_ms": 44.16,           // Présent ✓
    "score": 41.34
  }
}
```

## Désactiver le mode DEBUG

### Méthode 1 : Dans le script (permanent)

Éditez `scripts/bench.sh` ligne 37 :
```bash
DEBUG_PAYLOAD="${DEBUG_PAYLOAD:-0}"  # Remettre à 0
```

### Méthode 2 : Sans variable d'environnement

Simplement exécuter :
```bash
sudo bash scripts/bench.sh  # Sans DEBUG_PAYLOAD=1
```

## Nettoyage des fichiers debug

Les fichiers de debug s'accumulent dans `/tmp/`. Pour les nettoyer :

```bash
# Supprimer tous les payloads de debug
rm /tmp/bench_payload_*.json

# Ou supprimer les payloads de plus de 7 jours
find /tmp -name "bench_payload_*.json" -mtime +7 -delete
```

## Cas d'usage

### 1. Développement / Tests
Activez le debug en permanence dans le script pendant le développement.

### 2. Debugging d'erreurs
Si vous avez une erreur HTTP 422 ou 500, activez le debug pour voir exactement ce qui est envoyé.

### 3. Validation après modifications
Après modification du script, vérifiez que toutes les données attendues sont présentes.

### 4. Documentation
Sauvegardez un payload exemple pour la documentation de l'API.

## Exemple complet

```bash
# Terminal 1 : Lancer avec debug
gilles@serveur:~$ DEBUG_PAYLOAD=1 sudo bash scripts/bench.sh

# ... Le script collecte les données ...

# Affichage du payload complet
════════════════════════════════════════════════════════
DEBUG: Payload JSON complet
════════════════════════════════════════════════════════
{
  "device_identifier": "lenovo-bureau",
  ...
}
════════════════════════════════════════════════════════

✓ Payload sauvegardé dans: /tmp/bench_payload_20251207_234512.json

Appuyez sur Entrée pour continuer l'envoi ou Ctrl+C pour annuler...

# [Vous appuyez sur Entrée]

✓ Envoi du payload vers: http://10.0.0.50:8007/api/benchmark
✓ Payload envoyé avec succès (HTTP 200)

# Terminal 2 : Analyser le payload sauvegardé
gilles@serveur:~$ jq '.hardware.ram' /tmp/bench_payload_20251207_234512.json
{
  "total_mb": 7771,
  "used_mb": 4530,
  "free_mb": 1291,
  "shared_mb": 1950,
  ...
}
```

## Résumé

| Action | Commande |
|--------|----------|
| Activer temporairement | `DEBUG_PAYLOAD=1 sudo bash scripts/bench.sh` |
| Activer en permanence | Éditer ligne 37 du script : `DEBUG_PAYLOAD="${DEBUG_PAYLOAD:-1}"` |
| Désactiver | `sudo bash scripts/bench.sh` (sans DEBUG_PAYLOAD=1) |
| Voir les payloads sauvegardés | `ls /tmp/bench_payload_*.json` |
| Analyser un payload | `jq '.' /tmp/bench_payload_YYYYMMDD_HHMMSS.json` |
| Nettoyer | `rm /tmp/bench_payload_*.json` |
