
# Avertissement légal
⚠️ N'utilisez ce code que sur des sites que vous possédez ou pour lesquels vous avez une autorisation explicite. 
Le stress testing non autorisé peut être considéré comme une attaque par déni de service.

# Compilation
```
go build -o stress-test main.go
```
# Utilisation
## Aide
```
./stress-test -help
Usage of ./stress-test:
  -csv string
        Output CSV file (default "stress_test_results.csv")
  -d int
        Test duration in seconds
  -html string
        Output HTML report (default "stress_test_report.html")
  -json string
        Output JSON file (default "stress_test_results.json")
  -r int
        Total number of requests to make
  -ru int
        Ramp-up time in seconds
  -t int
        Number of threads (goroutines) (default 10)
  -url string
        Target URL to test
  -ws int
        Window size for time series in seconds (default 5)
```

## Test basique avec export
```
./stress-test -url https://mon.site.intranet -t 50 -d 60 -ru 10
```

## Avec fenêtre de temps personnalisée (10 secondes)
```
./stress-test -url https://mon.site.intranet -t 100 -d 120 -ws 10
```

## Avec tous les exports personnalisés
```
./stress-test -url https://mon.site.intranet -t 100 -d 300 -ru 30 \
  -csv results.csv -json results.json -html report.html
```

## Basé sur le nombre de requêtes
```
./stress-test -url https://mon.site.intranet -t 50 -r 10000 -ws 5
```

# Exemple d'utilisation
```bash
./stress-test -url https://mon.site.intranet -t 100 -d 600 -ru 60
Starting stress test on https://mon.site.intranet
Threads: 100, Duration: 600s, Ramp-up: 60s
------------------------------------------------------------
```
Execution du test....
```
============================================================
STRESS TEST RESULTS
============================================================
Total Duration: 606.10 seconds
Total Requests: 335949
Successful Requests: 335949
Failed Requests: 0
Error Rate: 0.00%
Requests per second: 554.28

Latency Metrics:
  Average: 81.00 ms
  Median: 76.00 ms
  P95: 134.00 ms
  P99: 166.00 ms
  Min: 0.00 ms
  Max: 403.00 ms

------------------------------------------------------------
Exporting results...
✅ CSV exported to: stress_test_results.csv
✅ JSON exported to: stress_test_results.json
✅ HTML report generated: stress_test_report.html
```

## stress_test_report.html
Récupérer le fichier html et lire avec un navigateur

ℹ️ Le html utilise [Chart.js](https://cdn.jsdelivr.net/npm/chart.js), si besoin, récupérer le script localement et modifier le fichier html en remplacant la ligne:
```
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
```
Par
```
<script src="./chart.js"></script>
```

![stress_test_report.html](./imgs/stresstest-01.png)

## Vue de l'état de l'application cible pendant le stress
![Vue perf applis](./imgs/stresstest-02.png)