#!/bin/bash

# Funkcja do logowania z datą i czasem
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}

# Wartości VU do testowania
VU_VALUES=(10 25 40 60 80 100)

# Nazwa pliku testu
TEST_FILE="triverna.js"

# Czas przerwy w sekundach (3 minuty = 180 sekund)
PAUSE_TIME=60

# Podfolder na raporty z bieżącego sweepu (format YYYYMMDD)
REPORT_DIR="reports/$(date '+%Y%m%d')"
mkdir -p "$REPORT_DIR"

# Utwórz folder na logi jeśli nie istnieje
mkdir -p logs

# Plik z ogólnym logiem
LOG_FILE="logs/k6_tests_$(date '+%Y%m%d_%H%M%S').log"

log "Rozpoczęcie serii testów k6" | tee -a "$LOG_FILE"

# Wykonanie testów dla każdej wartości VU
for i in "${!VU_VALUES[@]}"
do
    VU=${VU_VALUES[i]}
    log "===== Rozpoczęcie testu dla VU=$VU =====" | tee -a "$LOG_FILE"

    # Ustaw nazwę raportu
    REPORT_NAME="${REPORT_DIR}/report-${VU}-$(date '+%Y%m%d-%H%M%S').html"

    # Zaloguj dokładny czas rozpoczęcia
    START_TIME=$(date '+%Y-%m-%d %H:%M:%S')
    log "Czas rozpoczęcia: $START_TIME" | tee -a "$LOG_FILE"

    # Wykonaj test k6
    log "Uruchamianie: K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_EXPORT=$REPORT_NAME k6 run --vus $VU --quiet --duration 300s $TEST_FILE" | tee -a "$LOG_FILE"
    K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_EXPORT="$REPORT_NAME" k6 run --vus "$VU" --quiet --duration 300s "$TEST_FILE"

    # Zaloguj dokładny czas zakończenia
    END_TIME=$(date '+%Y-%m-%d %H:%M:%S')
    log "Czas zakończenia: $END_TIME" | tee -a "$LOG_FILE"

    log "===== Zakończenie testu dla VU=$VU =====" | tee -a "$LOG_FILE"

    # Dodaj przerwę 1 minuta po każdym teście oprócz ostatniego
    if [ $i -lt $((${#VU_VALUES[@]}-1)) ]; then
        log "Przerwa 1 minuta przed następnym testem..." | tee -a "$LOG_FILE"
        sleep $PAUSE_TIME
        log "Koniec przerwy, przygotowanie do następnego testu" | tee -a "$LOG_FILE"
    fi

    log "" | tee -a "$LOG_FILE"
done

log "Wszystkie testy zostały zakończone" | tee -a "$LOG_FILE"
log "Raporty HTML zostały zapisane w: ${REPORT_DIR}/" | tee -a "$LOG_FILE"