rajkumarrawal's picture
Initial commit
2ec0d39
# API Test Suite Documentation
## Overview
The Secure AI Agents Suite includes a comprehensive API testing framework that validates all external service integrations, ensuring your system works correctly with OpenAI, Google ML, ElevenLabs, and Modal platforms.
## Quick Start
### 1. Setup Configuration
```bash
# Copy the configuration template
cp api_test_config.yaml my_config.yaml
# Edit with your API keys
nano my_config.yaml
```
### 2. Run All Tests
```bash
# Run all API tests
python test_runner.py
# Run specific test
python test_runner.py --test openai
# Use custom config
python test_runner.py --config my_config.yaml
```
### 3. View Results
```bash
# View summary
python test_runner.py --show-summary
# Validate config only
python test_runner.py --validate-only
```
## Configuration
### API Keys Required
Edit `api_test_config.yaml` with your actual API keys:
```yaml
# OpenAI Configuration
openai:
api_key: "sk-your-openai-api-key-here"
base_url: "https://api.openai.com/v1"
timeout: 30
rate_limit: 100
# Google ML Configuration
google:
api_key: "your-google-api-key-here"
base_url: "https://generativelanguage.googleapis.com/v1"
timeout: 30
rate_limit: 100
# ElevenLabs Configuration
elevenlabs:
api_key: "your-elevenlabs-api-key-here"
base_url: "https://api.elevenlabs.io/v1"
timeout: 60
rate_limit: 100
# Modal Configuration
modal:
api_key: "your-modal-api-key-here"
base_url: "https://modal.com/api"
timeout: 30
rate_limit: 100
```
### Test Configuration
Customize test behavior:
```yaml
test_config:
# Minimum success rate to consider tests passing (percentage)
success_rate_threshold: 80
# Timeout for individual requests (seconds)
request_timeout: 30
# Maximum retries for failed requests
max_retries: 3
# Performance thresholds (in milliseconds)
performance_thresholds:
openai_text_generation: 5000
google_text_generation: 5000
elevenlabs_tts: 10000
modal_execution: 30000
```
## Test Categories
### OpenAI Tests
- **Connection Test**: Validates API connectivity and authentication
- **Text Generation Test**: Tests GPT models with sample prompts
- **Batch Processing Test**: Validates multiple concurrent requests
### Google ML Tests
- **Connection Test**: Validates Google Generative AI API access
- **Text Generation Test**: Tests various Google AI models
### ElevenLabs Tests
- **Connection Test**: Validates voice API connectivity
- **Text-to-Speech Test**: Tests audio generation capabilities
- **Voice Cloning Test**: Validates custom voice functionality
### Modal Tests
- **Connection Test**: Validates Modal platform access
- **Function Deployment Test**: Tests serverless function deployment
## Usage Examples
### Basic Usage
```bash
# Run all tests with default settings
python test_runner.py
# Run only OpenAI tests
python test_runner.py --test openai
# Run with custom config and output file
python test_runner.py --config production_config.yaml --output results_production.json
```
### CI/CD Integration
```bash
# Use in automated pipelines
python test_runner.py --config ci_config.yaml --output ci_results.json
# Check for configuration errors
python test_runner.py --validate-only
```
### Performance Monitoring
```bash
# Run all tests and save detailed results
python test_runner.py --output performance_report_$(date +%Y%m%d).json
# Run specific performance tests
python test_runner.py --test elevenlabs
```
## Results Format
Test results are saved in JSON format with the following structure:
```json
{
"summary": {
"timestamp": "2025-11-30T09:49:17.197Z",
"total_tests": 12,
"passed_tests": 11,
"failed_tests": 1,
"success_rate": 91.7,
"total_duration": 45.23,
"api_availability": {
"openai": true,
"google": true,
"elevenlabs": true,
"modal": true
}
},
"test_results": {
"openai_connection": {
"success": true,
"duration": 1.23,
"message": "Connection successful"
},
"openai_text_generation": {
"success": true,
"duration": 2.45,
"message": "Text generation successful",
"performance_score": 85
}
},
"performance_metrics": {
"average_response_time": 2.1,
"success_rate": 91.7,
"api_uptime": 100.0
}
}
```
## Interpreting Results
### Success Indicators
- **Success Rate**: Aim for >80% for production readiness
- **Response Time**: Should be within configured thresholds
- **API Availability**: All APIs should be accessible
### Performance Thresholds
- **OpenAI Text Generation**: <5 seconds
- **Google Text Generation**: <5 seconds
- **ElevenLabs TTS**: <10 seconds
- **Modal Execution**: <30 seconds
### Troubleshooting
#### Common Issues
**1. API Key Errors**
```bash
# Check configuration
python test_runner.py --validate-only
# Verify keys in configuration file
cat api_test_config.yaml | grep api_key
```
**2. Network Connectivity**
```bash
# Test individual API connectivity
python test_runner.py --test openai
# Check internet connection
ping api.openai.com
```
**3. Rate Limiting**
- Reduce `rate_limit` in configuration
- Implement exponential backoff
- Monitor API usage quotas
**4. Performance Issues**
- Check network latency
- Verify API service status
- Review configuration timeouts
## Best Practices
### Security
- Never commit API keys to version control
- Use environment variables for sensitive data
- Regularly rotate API keys
- Monitor API usage for anomalies
### Monitoring
- Run tests regularly (daily/weekly)
- Track performance trends over time
- Set up alerts for test failures
- Monitor API rate limits and quotas
### CI/CD Integration
```bash
# In your CI pipeline
- name: API Tests
run: |
python test_runner.py --config ci_config.yaml --output test_results.json
if [ $(jq '.summary.success_rate' test_results.json) -lt 80 ]; then
echo "API tests failed"
exit 1
fi
```
## Advanced Usage
### Custom Test Cases
Extend the test suite by adding custom test methods in `api_test_suite.py`:
```python
def test_custom_functionality(self):
"""Test custom API functionality"""
try:
# Your custom test logic here
result = self.make_request("your_custom_endpoint")
return {
'success': True,
'duration': result['duration'],
'message': 'Custom test passed'
}
except Exception as e:
return {
'success': False,
'error': str(e),
'duration': 0
}
```
### Performance Monitoring
Track API performance over time:
```python
# Add to your monitoring script
import json
from datetime import datetime
def track_performance(results_file):
with open(results_file, 'r') as f:
results = json.load(f)
metrics = {
'timestamp': datetime.now().isoformat(),
'success_rate': results['summary']['success_rate'],
'avg_response_time': results['performance_metrics']['average_response_time']
}
# Save to performance database
save_metrics(metrics)
```
## Support
For issues or questions:
1. Check the troubleshooting section above
2. Review API service status pages
3. Validate your configuration using `--validate-only`
4. Run individual tests to isolate problems
---
**Last Updated**: November 30, 2025
**Version**: 1.0.0
**Compatibility**: Python 3.8+