CoolFace
Apppublic

OnyxMunk/AudioForge

sourceHugging Facemitupdated 8mo agoView on Hugging Face
0likes
test_generation.py96 linesDownload Raw Back to root
1"""Test script for music generation API."""
2
3import requests
4import json
5import time
6
7API_URL = "http://localhost:8000/api/v1"
8
9def test_music_generation():
10    """Test the music generation endpoint."""
11    print("Testing Music Generation API\n")
12    print("=" * 60)
13    
14    # Test 1: Simple music generation
15    print("\n1. Testing simple music generation...")
16    payload = {
17        "prompt": "A calm acoustic guitar melody with soft percussion",
18        "duration": 2  # Short duration for testing
19    }
20    
21    print(f"   Payload: {json.dumps(payload, indent=2)}")
22    
23    try:
24        response = requests.post(
25            f"{API_URL}/generations",
26            json=payload,
27            timeout=120
28        )
29        
30        print(f"   Status Code: {response.status_code}")
31        
32        if response.status_code in [200, 202]:
33            result = response.json()
34            print(f"   [SUCCESS] Generation created!")
35            print(f"   Generation ID: {result.get('id')}")
36            print(f"   Status: {result.get('status')}")
37            
38            # Poll for completion
39            generation_id = result.get('id')
40            if generation_id:
41                print(f"\n   Polling for completion...")
42                max_attempts = 60
43                for i in range(max_attempts):
44                    time.sleep(2)
45                    status_response = requests.get(f"{API_URL}/generations/{generation_id}")
46                    if status_response.status_code == 200:
47                        status_data = status_response.json()
48                        current_status = status_data.get('status')
49                        print(f"   Attempt {i+1}/{max_attempts}: Status = {current_status}")
50                        
51                        if current_status == 'completed':
52                            print(f"   [SUCCESS] Generation completed!")
53                            print(f"   Audio URL: {status_data.get('audio_url')}")
54                            break
55                        elif current_status == 'failed':
56                            print(f"   [FAILED] Generation failed!")
57                            print(f"   Error: {status_data.get('error_message')}")
58                            break
59                    else:
60                        print(f"   [WARNING] Failed to get status: {status_response.status_code}")
61                        break
62        else:
63            print(f"   [FAILED] Request failed!")
64            print(f"   Response: {response.text}")
65            
66    except requests.exceptions.ConnectionError:
67        print(f"   [ERROR] Connection Error: Backend server not running on {API_URL}")
68    except requests.exceptions.Timeout:
69        print(f"   [ERROR] Timeout: Request took too long")
70    except Exception as e:
71        print(f"   [ERROR] {str(e)}")
72    
73    # Test 2: List generations
74    print("\n2. Testing list generations...")
75    try:
76        response = requests.get(f"{API_URL}/generations")
77        print(f"   Status Code: {response.status_code}")
78        
79        if response.status_code == 200:
80            data = response.json()
81            generations = data.get('items', [])
82            total = data.get('total', 0)
83            print(f"   [SUCCESS] Found {total} generation(s)")
84            for gen in generations[:3]:  # Show first 3
85                print(f"      - ID: {gen.get('id')}, Status: {gen.get('status')}")
86        else:
87            print(f"   [FAILED] {response.text}")
88    except Exception as e:
89        print(f"   [ERROR] {str(e)}")
90    
91    print("\n" + "=" * 60)
92    print("[COMPLETE] Test completed!")
93
94if __name__ == "__main__":
95    test_music_generation()
96