Files
serv_benchmark/COMMAND_CURL_FIX.md
2025-12-20 03:47:10 +01:00

2.8 KiB

Fix: Erreur "jq: invalid JSON text passed to --argjson"

Problème identifié

L'erreur jq: invalid JSON text passed to --argjson à l'étape [8/8] est causée par une variable JSON vide ou invalide passée à jq.

Corrections appliquées

1. Parsing des arguments CLI (Ligne 1570-1607)

Ajout d'une fonction parse_args() pour gérer les arguments --server, --token, --iperf-server, et --debug.

parse_args() {
    while [[ $# -gt 0 ]]; do
        case "$1" in
            --server) SERVER_URL="$2"; shift 2 ;;
            --token) API_TOKEN="$2"; shift 2 ;;
            --iperf-server) IPERF_SERVER="$2"; shift 2 ;;
            --debug) DEBUG_PAYLOAD=1; shift ;;
            --help|-h) # affiche l'aide
        esac
    done
}

2. Amélioration de la collecte GPU (Ligne 553-589)

Ajout de validations pour éviter de capturer les messages d'erreur de nvidia-smi:

# Vérifier que nvidia-smi fonctionne avant d'extraire les infos
if nvidia-smi &>/dev/null; then
    nvidia_model=$(nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null | head -1 | tr -d '\n')

    # Ne remplacer que si les valeurs sont non-vides et valides
    if [[ -n "$nvidia_model" && ! "$nvidia_model" =~ (failed|error|Error) ]]; then
        gpu_model="$nvidia_model"
    fi
fi

3. Validation des variables JSON (Ligne 1326-1357)

Ajout de validations pour garantir qu'aucune variable n'est vide avant envoi.

4. Mode debug amélioré (Ligne 1328-1344)

Quand DEBUG_PAYLOAD=1 ou --debug, affiche l'état de toutes les variables JSON.

Commandes de diagnostic sur le poste distant

1. Vérifier la détection GPU

lspci | grep -iE 'vga|3d'

if command -v nvidia-smi &>/dev/null; then
    if nvidia-smi &>/dev/null; then
        echo "nvidia-smi fonctionne"
        nvidia-smi --query-gpu=name --format=csv,noheader
    else
        echo "nvidia-smi échoue - driver non chargé"
    fi
fi

2. Tester le script complet avec debug

curl -fsSL http://10.0.1.97:8087/scripts/bench.sh | sudo bash -s -- \
  --server http://10.0.1.97:8007 \
  --token "29855796dacf5cfe75ff9b02d6adf3dd0f9c52db5b53e7abfb4c0df7ece1be0a" \
  --iperf-server 10.0.1.97 \
  --debug

Le flag --debug va:

  • Afficher l'état de validation de toutes les variables JSON
  • Sauvegarder le payload complet dans /tmp/bench_payload_YYYYMMDD_HHMMSS.json
  • Demander confirmation avant l'envoi

3. Examiner un payload sauvegardé

ls -lht /tmp/bench_payload_*.json | head -1
jq '.' /tmp/bench_payload_*.json | less

Prochaines étapes

  1. Redémarrer le conteneur nginx pour servir la nouvelle version
  2. Tester avec --debug sur le poste ASUS
  3. Examiner le payload sauvegardé
  4. Corriger si nécessaire

Fichiers modifiés

  • frontend/scripts/bench.sh - Script principal de benchmark client