This commit is contained in:
2025-12-07 14:47:10 +01:00
parent c6a8e8e83d
commit 307e75291b

363
TESTING.md Normal file
View File

@@ -0,0 +1,363 @@
# Testing Guide - Linux BenchTools
Guide de test pour vérifier que tout fonctionne correctement.
## ✅ Checklist de test
### 1. Installation
```bash
# 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
```bash
# 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
```
```bash
# Tester le backend
curl http://localhost:8007/api/health
# Résultat attendu : {"status":"ok"}
```
```bash
# Tester le frontend
curl -I http://localhost:8087
# Résultat attendu : HTTP/1.1 200 OK
```
### 3. Test de l'API Backend
#### Health Check
```bash
curl http://localhost:8007/api/health
# {"status":"ok"}
```
#### Stats (base vide)
```bash
curl http://localhost:8007/api/stats
# {"total_devices":0,"total_benchmarks":0,"avg_global_score":0,"last_benchmark_at":null}
```
#### Liste devices (vide)
```bash
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
```bash
./scripts/bench.sh --help
```
**Résultat attendu** :
- Affiche l'usage
- Liste toutes les options
#### Test avec erreur (sans paramètres)
```bash
./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) :
```bash
# 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 :
- Label : "Support HP"
- URL : "https://support.hp.com"
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 :
```bash
# 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
```bash
# 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
```bash
# 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 :
```bash
# 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
```bash
# 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
```bash
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
```bash
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
```bash
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](DEPLOYMENT.md) section Troubleshooting
## 📞 Problèmes courants
### Backend ne démarre pas
```bash
docker compose logs backend
```
Vérifier les erreurs Python
### Port déjà utilisé
```bash
ss -tulpn | grep 8007
# Changer le port dans .env
```
### Benchmark échoue
```bash
# Vérifier les dépendances sur la machine cliente
sysbench --version
fio --version
```
---
**Happy Testing!** 🧪