AudioForge / scripts /test_music_generation.ps1
OnyxlMunkey's picture
c618549
# Test Music Generation End-to-End
# Tests the complete flow from API call to generation
$Colors = @{
Red = "Red"
Green = "Green"
Yellow = "Yellow"
Blue = "Cyan"
}
function Write-Info { Write-Host "[INFO] $args" -ForegroundColor $Colors.Blue }
function Write-Success { Write-Host "[SUCCESS] $args" -ForegroundColor $Colors.Green }
function Write-Warning { Write-Host "[WARNING] $args" -ForegroundColor $Colors.Yellow }
function Write-Error { Write-Host "[ERROR] $args" -ForegroundColor $Colors.Red }
Write-Host "`n"
Write-Host "===========================================================" -ForegroundColor Cyan
Write-Host " Music Generation End-to-End Test " -ForegroundColor Cyan
Write-Host "===========================================================" -ForegroundColor Cyan
Write-Host "`n"
$baseUrl = "http://127.0.0.1:8001"
$maxAttempts = 3
$attempt = 0
# Test 1: Backend Health
Write-Info "Test 1: Backend Health Check"
try {
$response = Invoke-WebRequest -Uri "$baseUrl/health" -UseBasicParsing -TimeoutSec 5
if ($response.StatusCode -eq 200) {
Write-Success "Backend is healthy"
} else {
Write-Error "Backend returned status $($response.StatusCode)"
exit 1
}
} catch {
Write-Error "Backend not responding: $($_.Exception.Message)"
Write-Warning "Make sure backend is running: cd backend; uvicorn app.main:app --reload"
exit 1
}
# Test 2: Create Generation
Write-Info "`nTest 2: Creating Music Generation"
$testPrompt = "A peaceful piano melody with soft strings"
$body = @{
prompt = $testPrompt
duration = 10
} | ConvertTo-Json
while ($attempt -lt $maxAttempts) {
$attempt++
Write-Host "Attempt $attempt/$maxAttempts..." -ForegroundColor Yellow
try {
$response = Invoke-WebRequest -Uri "$baseUrl/api/v1/generations" `
-Method POST `
-Body $body `
-ContentType "application/json" `
-UseBasicParsing `
-TimeoutSec 15
if ($response.StatusCode -eq 202 -or $response.StatusCode -eq 201 -or $response.StatusCode -eq 200) {
$data = $response.Content | ConvertFrom-Json
Write-Success "Generation created successfully!"
Write-Host " Generation ID: $($data.id)" -ForegroundColor Gray
Write-Host " Status: $($data.status)" -ForegroundColor Gray
Write-Host " Prompt: $testPrompt" -ForegroundColor Gray
# Test 3: Check Generation Status
Write-Info "`nTest 3: Checking Generation Status"
$statusAttempt = 0
$maxStatusAttempts = 30
while ($statusAttempt -lt $maxStatusAttempts) {
$statusAttempt++
Start-Sleep -Seconds 5
try {
$statusResponse = Invoke-WebRequest -Uri "$baseUrl/api/v1/generations/$($data.id)" -UseBasicParsing -TimeoutSec 5
$statusData = $statusResponse.Content | ConvertFrom-Json
Write-Host " Current status: $($statusData.status) ($statusAttempt/$maxStatusAttempts)" -ForegroundColor Gray
if ($statusData.status -eq "completed") {
Write-Success "Generation completed!"
if ($statusData.audio_path) {
Write-Host " Audio file: $($statusData.audio_path)" -ForegroundColor Green
}
Write-Host "`nMusic generation feature is working!`n" -ForegroundColor Green
exit 0
} elseif ($statusData.status -eq "failed") {
Write-Error "Generation failed: $($statusData.error_message)"
exit 1
}
} catch {
Write-Warning "Could not check status: $($_.Exception.Message)"
}
}
Write-Error "Generation timed out"
exit 1
}
} catch {
$statusCode = if ($_.Exception.Response) { $_.Exception.Response.StatusCode.value__ } else { "Unknown" }
$errorMsg = $_.Exception.Message
Write-Error "Failed: Status $statusCode - $errorMsg"
if ($statusCode -eq 500) {
Write-Warning "500 error usually means:"
Write-Host " * Database connection issue (check Docker)" -ForegroundColor Gray
Write-Host " * ML dependencies not installed" -ForegroundColor Gray
Write-Host " * Check backend logs for details" -ForegroundColor Gray
}
if ($attempt -lt $maxAttempts) {
Write-Host " Retrying in 3 seconds..." -ForegroundColor Gray
Start-Sleep -Seconds 3
}
}
}
Write-Error "Failed after $maxAttempts attempts"
Write-Host "Troubleshooting:" -ForegroundColor Yellow
Write-Host "1. Check backend is running" -ForegroundColor White
Write-Host "2. Verify ML dependencies" -ForegroundColor White
Write-Host "3. Check Docker containers" -ForegroundColor White
Write-Host "4. Review backend logs for errors" -ForegroundColor White
exit 1