Files
serv_benchmark/TESTING.md
2025-12-07 14:47:10 +01:00

7.7 KiB

Testing Guide - Linux BenchTools

Guide de test pour vérifier que tout fonctionne correctement.

Checklist de test

1. Installation

# Cloner le projet
git clone https://gitea.maison43.duckdns.org/gilles/linux-benchtools.git
cd linux-benchtools

# Vérifier les fichiers
ls -la

# Exécuter l'installation
./install.sh

Résultat attendu :

  • Docker images construites
  • Conteneurs démarrés
  • Fichier .env créé avec un token
  • Message de succès avec les URLs

2. Vérification des services

# Vérifier que les conteneurs tournent
docker compose ps

# Devrait afficher :
# linux_benchtools_backend   running   0.0.0.0:8007->8007/tcp
# linux_benchtools_frontend  running   0.0.0.0:8087->80/tcp
# Tester le backend
curl http://localhost:8007/api/health

# Résultat attendu : {"status":"ok"}
# Tester le frontend
curl -I http://localhost:8087

# Résultat attendu : HTTP/1.1 200 OK

3. Test de l'API Backend

Health Check

curl http://localhost:8007/api/health
# {"status":"ok"}

Stats (base vide)

curl http://localhost:8007/api/stats
# {"total_devices":0,"total_benchmarks":0,"avg_global_score":0,"last_benchmark_at":null}

Liste devices (vide)

curl http://localhost:8007/api/devices
# {"items":[],"total":0,"page":1,"page_size":20}

4. Test du Frontend

Ouvrir dans un navigateur :

http://localhost:8087

Vérifications :

  • Dashboard s'affiche avec le thème Monokai dark
  • Stats affichent "0" partout
  • Message "Aucun device trouvé"
  • Commande de benchmark est affichée
  • Navigation fonctionne (Dashboard, Devices, Settings)

5. Test du script bench.sh

Test d'aide

./scripts/bench.sh --help

Résultat attendu :

  • Affiche l'usage
  • Liste toutes les options

Test avec erreur (sans paramètres)

./scripts/bench.sh

Résultat attendu :

  • Message d'erreur clair
  • Indique qu'il manque --server et --token

Test complet (simulation)

Sur la machine serveur (ou n'importe quelle machine Linux) :

# Récupérer le token
TOKEN=$(grep API_TOKEN .env | cut -d= -f2)

# Exécuter le benchmark
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
  --server http://localhost:8007/api/benchmark \
  --token "$TOKEN" \
  --short

Résultat attendu :

[INFO] Linux BenchTools Client v1.0.0
[INFO] Checking dependencies...
[INFO] All dependencies satisfied
[INFO] Collecting hardware information...
[INFO] Running benchmarks...
[INFO] Running CPU benchmark...
[INFO] Running memory benchmark...
[INFO] Running disk benchmark...
[INFO] Building JSON payload...
[INFO] Sending results to server...
[INFO] Benchmark submitted successfully!
[INFO] Response: {"status":"ok","device_id":1,"benchmark_id":1,...}
[INFO] Benchmark completed!

Vérifier dans l'interface

  1. Rafraîchir le Dashboard (F5)

  2. Vérifier que :

    • Total Devices : 1
    • Total Benchmarks : 1
    • Le device apparaît dans le tableau
    • Le score global est affiché
  3. Cliquer sur "Voir" pour le device

  4. Vérifier que :

    • Informations hardware affichées
    • Dernier benchmark visible
    • Onglets fonctionnent

6. Test Upload de document

  1. Aller sur la page détail d'un device
  2. Onglet "Documents"
  3. Sélectionner un fichier PDF
  4. Choisir un type (ex: "manual")
  5. Cliquer "Upload"

Résultat attendu :

  • Toast de confirmation
  • Document apparaît dans la liste
  • Bouton "Télécharger" fonctionne

7. Test Liens constructeur

  1. Page détail device → Onglet "Liens"
  2. Ajouter un lien :
  3. Cliquer "Ajouter"

Résultat attendu :

  • Lien apparaît
  • Lien cliquable
  • Bouton supprimer fonctionne

8. Test Multiple Benchmarks

Exécuter 3 fois le script bench.sh sur la même machine :

# Bench 1
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
  --server http://localhost:8007/api/benchmark \
  --token "$TOKEN" --short

# Attendre 30s

# Bench 2
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
  --server http://localhost:8007/api/benchmark \
  --token "$TOKEN" --short

# Attendre 30s

# Bench 3
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
  --server http://localhost:8007/api/benchmark \
  --token "$TOKEN" --short

Vérifications :

  • Total Benchmarks : 3
  • Onglet "Historique Benchmarks" affiche 3 entrées
  • Scores peuvent varier légèrement

9. Test Logs

# Voir les logs backend
docker compose logs backend

# Vérifier qu'il n'y a pas d'erreurs Python
# Devrait afficher les requêtes API

10. Test Persistance

# Arrêter les conteneurs
docker compose down

# Vérifier que les données persistent
ls -la backend/data/
# Devrait afficher data.db

ls -la uploads/
# Devrait afficher les documents uploadés

# Redémarrer
docker compose up -d

# Attendre quelques secondes
sleep 5

# Vérifier que les données sont toujours là
curl http://localhost:8007/api/devices
# Devrait afficher les devices précédents

🧪 Tests avancés

Test avec iperf3

Si vous avez un serveur iperf3 :

# Sur le serveur de bench, lancer iperf3
docker run -d --name iperf3-server -p 5201:5201 networkstatic/iperf3 -s

# Exécuter le benchmark avec tests réseau
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
  --server http://localhost:8007/api/benchmark \
  --token "$TOKEN" \
  --iperf-server localhost

# Vérifier que network_score n'est pas null

Test sur différentes machines

  1. Machine 1 (serveur puissant)
  2. Machine 2 (Raspberry Pi)
  3. Machine 3 (vieille machine)

Vérifier :

  • Scores différents selon les performances
  • Classement cohérent dans le Dashboard

Test de charge

# Envoyer 10 benchmarks en parallèle
for i in {1..10}; do
  curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
    --server http://localhost:8007/api/benchmark \
    --token "$TOKEN" \
    --device "test-machine-$i" \
    --short &
done

wait

# Vérifier que tous ont été enregistrés
curl http://localhost:8007/api/stats

🐛 Tests d'erreur

Token invalide

curl -X POST http://localhost:8007/api/benchmark \
  -H "Authorization: Bearer INVALID_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

# Résultat attendu : HTTP 401

JSON invalide

curl -X POST http://localhost:8007/api/benchmark \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d 'invalid json'

# Résultat attendu : HTTP 400

Device inexistant

curl http://localhost:8007/api/devices/99999

# Résultat attendu : HTTP 404

📊 Résumé des tests

Test Commande Résultat attendu
Installation ./install.sh Services démarrés
Health check curl localhost:8007/api/health {"status":"ok"}
Frontend Navigateur Dashboard visible
Benchmark ./scripts/bench.sh Succès + device créé
Upload doc Interface web Document uploadé
Lien Interface web Lien ajouté
Persistance docker compose down/up Données conservées

Tous les tests passent ?

Si oui : Félicitations ! L'application fonctionne parfaitement 🎉

Si non : Consultez DEPLOYMENT.md section Troubleshooting

📞 Problèmes courants

Backend ne démarre pas

docker compose logs backend

Vérifier les erreurs Python

Port déjà utilisé

ss -tulpn | grep 8007
# Changer le port dans .env

Benchmark échoue

# Vérifier les dépendances sur la machine cliente
sysbench --version
fio --version

Happy Testing! 🧪