Spaces:
Runtime error
Runtime error
#!/usr/bin/env python3 | |
""" | |
Test script for the Text-to-SQL application | |
""" | |
import requests | |
import json | |
import time | |
def test_health(): | |
"""Test health endpoint""" | |
try: | |
response = requests.get("http://localhost:8000/health") | |
print(f"Health check: {response.status_code}") | |
if response.status_code == 200: | |
data = response.json() | |
print(f"Status: {data['status']}") | |
print(f"Model loaded: {data['model_loaded']}") | |
return response.status_code == 200 | |
except Exception as e: | |
print(f"Health check failed: {e}") | |
return False | |
def test_single_prediction(): | |
"""Test single prediction endpoint""" | |
try: | |
data = { | |
"question": "How many employees are older than 30?", | |
"table_headers": ["id", "name", "age", "department", "salary"] | |
} | |
response = requests.post("http://localhost:8000/predict", json=data) | |
print(f"Single prediction: {response.status_code}") | |
if response.status_code == 200: | |
result = response.json() | |
print(f"Question: {result['question']}") | |
print(f"SQL: {result['sql_query']}") | |
print(f"Processing time: {result['processing_time']:.3f}s") | |
return True | |
else: | |
print(f"Error: {response.text}") | |
return False | |
except Exception as e: | |
print(f"Single prediction failed: {e}") | |
return False | |
def test_batch_prediction(): | |
"""Test batch prediction endpoint""" | |
try: | |
data = { | |
"queries": [ | |
{ | |
"question": "How many employees are older than 30?", | |
"table_headers": ["id", "name", "age", "department", "salary"] | |
}, | |
{ | |
"question": "Show all employees in IT department", | |
"table_headers": ["id", "name", "age", "department", "salary"] | |
} | |
] | |
} | |
response = requests.post("http://localhost:8000/batch", json=data) | |
print(f"Batch prediction: {response.status_code}") | |
if response.status_code == 200: | |
result = response.json() | |
print(f"Total queries: {result['total_queries']}") | |
print(f"Successful queries: {result['successful_queries']}") | |
for i, res in enumerate(result['results']): | |
print(f"\nQuery {i+1}:") | |
print(f" Question: {res['question']}") | |
print(f" SQL: {res['sql_query']}") | |
return True | |
else: | |
print(f"Error: {response.text}") | |
return False | |
except Exception as e: | |
print(f"Batch prediction failed: {e}") | |
return False | |
def main(): | |
"""Run all tests""" | |
print("π§ͺ Testing Text-to-SQL Application") | |
print("=" * 50) | |
# Wait a bit for the server to start | |
print("Waiting for server to be ready...") | |
time.sleep(5) | |
# Test health | |
print("\n1. Testing health endpoint...") | |
health_ok = test_health() | |
if not health_ok: | |
print("β Health check failed. Make sure the server is running.") | |
return | |
# Test single prediction | |
print("\n2. Testing single prediction...") | |
single_ok = test_single_prediction() | |
# Test batch prediction | |
print("\n3. Testing batch prediction...") | |
batch_ok = test_batch_prediction() | |
# Summary | |
print("\n" + "=" * 50) | |
print("π Test Results:") | |
print(f"Health check: {'β ' if health_ok else 'β'}") | |
print(f"Single prediction: {'β ' if single_ok else 'β'}") | |
print(f"Batch prediction: {'β ' if batch_ok else 'β'}") | |
if all([health_ok, single_ok, batch_ok]): | |
print("\nπ All tests passed! Your application is ready for deployment.") | |
else: | |
print("\nβ οΈ Some tests failed. Please check the errors above.") | |
if __name__ == "__main__": | |
main() |