mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-23 20:21:03 +02:00
Tests README (in wrong directory)
This commit is contained in:
parent
3cdb4cd74b
commit
709f270a1a
1 changed files with 238 additions and 0 deletions
238
trustgraph-base/tests/README.md
Normal file
238
trustgraph-base/tests/README.md
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
# TrustGraph Python API Integration Tests
|
||||
|
||||
This directory contains integration tests for the TrustGraph Python API refactor.
|
||||
|
||||
## Overview
|
||||
|
||||
The integration tests verify the following components:
|
||||
- **Basic API instantiation** and client creation
|
||||
- **REST API** functionality (synchronous and asynchronous)
|
||||
- **WebSocket API** functionality (synchronous and asynchronous)
|
||||
- **Bulk operations** for data import/export
|
||||
- **Metrics** endpoints
|
||||
- **Streaming types** and data structures
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. **Python dependencies:**
|
||||
```bash
|
||||
pip install pytest pytest-asyncio
|
||||
```
|
||||
|
||||
2. **Running TrustGraph Gateway API:**
|
||||
- The tests require a running TrustGraph Gateway API server
|
||||
- Default URL: `http://localhost:8088/`
|
||||
- Configure via environment variables (see below)
|
||||
|
||||
## Running the Tests
|
||||
|
||||
### Quick Start (No Gateway Required)
|
||||
|
||||
To run tests in "skip mode" (validates structure without requiring a running server):
|
||||
|
||||
```bash
|
||||
export SKIP_INTEGRATION_TESTS=true
|
||||
pytest tests/test_api_integration.py -v
|
||||
```
|
||||
|
||||
### Full Integration Tests (Requires Running Gateway)
|
||||
|
||||
1. **Start your TrustGraph Gateway API server**
|
||||
|
||||
2. **Configure environment variables:**
|
||||
```bash
|
||||
export TRUSTGRAPH_URL=http://localhost:8088/
|
||||
export TRUSTGRAPH_TOKEN=your-auth-token-here # Optional
|
||||
export TRUSTGRAPH_TEST_FLOW=test-flow # Optional
|
||||
export SKIP_INTEGRATION_TESTS=false # Enable tests
|
||||
```
|
||||
|
||||
3. **Run the tests:**
|
||||
```bash
|
||||
pytest tests/test_api_integration.py -v
|
||||
```
|
||||
|
||||
### Running Specific Test Classes
|
||||
|
||||
```bash
|
||||
# Test only REST API
|
||||
pytest tests/test_api_integration.py::TestRESTAPI -v
|
||||
|
||||
# Test only WebSocket API
|
||||
pytest tests/test_api_integration.py::TestWebSocketAPI -v
|
||||
|
||||
# Test only async functionality
|
||||
pytest tests/test_api_integration.py::TestAsyncRESTAPI -v
|
||||
pytest tests/test_api_integration.py::TestAsyncWebSocketAPI -v
|
||||
|
||||
# Test only bulk operations
|
||||
pytest tests/test_api_integration.py::TestBulkOperations -v
|
||||
|
||||
# Test only metrics
|
||||
pytest tests/test_api_integration.py::TestMetrics -v
|
||||
```
|
||||
|
||||
### Running with Coverage
|
||||
|
||||
```bash
|
||||
pytest tests/test_api_integration.py --cov=trustgraph.api --cov-report=html
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `TRUSTGRAPH_URL` | Gateway API URL | `http://localhost:8088/` |
|
||||
| `TRUSTGRAPH_TOKEN` | Authentication token | `None` |
|
||||
| `TRUSTGRAPH_TEST_FLOW` | Flow ID for testing | `test-flow` |
|
||||
| `SKIP_INTEGRATION_TESTS` | Skip tests requiring live server | `false` |
|
||||
|
||||
## Test Categories
|
||||
|
||||
### 1. Basic Connection Tests (`TestBasicConnection`)
|
||||
- API instantiation with/without token
|
||||
- Context manager support
|
||||
- Lazy initialization of clients
|
||||
|
||||
### 2. REST API Tests (`TestRESTAPI`)
|
||||
- Flow listing
|
||||
- Flow class listing
|
||||
- Flow instance creation
|
||||
- Method existence verification
|
||||
|
||||
### 3. Async REST API Tests (`TestAsyncRESTAPI`)
|
||||
- Async flow operations
|
||||
- Async context manager
|
||||
- Async/await patterns
|
||||
|
||||
### 4. WebSocket API Tests (`TestWebSocketAPI`)
|
||||
- WebSocket client creation
|
||||
- Flow instance creation
|
||||
- Method availability
|
||||
- URL conversion (HTTP → WS)
|
||||
|
||||
### 5. Async WebSocket API Tests (`TestAsyncWebSocketAPI`)
|
||||
- Async WebSocket operations
|
||||
- Streaming support verification
|
||||
- Method signatures
|
||||
|
||||
### 6. Bulk Operations Tests (`TestBulkOperations`)
|
||||
- Bulk client instantiation
|
||||
- Import/export methods
|
||||
- Async bulk operations
|
||||
- Iterator-based data transfer
|
||||
|
||||
### 7. Metrics Tests (`TestMetrics`)
|
||||
- Metrics endpoint access
|
||||
- Prometheus format validation
|
||||
- Async metrics retrieval
|
||||
|
||||
### 8. Streaming Types Tests (`TestStreamingTypes`)
|
||||
- `AgentThought` chunk creation
|
||||
- `AgentObservation` chunk creation
|
||||
- `AgentAnswer` chunk creation
|
||||
- `RAGChunk` creation
|
||||
|
||||
### 9. Triple Type Tests (`TestTripleType`)
|
||||
- Triple data structure validation
|
||||
|
||||
## Test Structure
|
||||
|
||||
```
|
||||
tests/
|
||||
├── __init__.py # Test package marker
|
||||
├── README.md # This file
|
||||
└── test_api_integration.py # Main integration test suite
|
||||
```
|
||||
|
||||
## Adding New Tests
|
||||
|
||||
To add new integration tests:
|
||||
|
||||
1. **Create a new test class** in `test_api_integration.py`:
|
||||
```python
|
||||
class TestNewFeature:
|
||||
"""Test new feature functionality"""
|
||||
|
||||
@skip_if_no_gateway
|
||||
def test_new_feature(self):
|
||||
api = Api(url=GATEWAY_URL, token=AUTH_TOKEN)
|
||||
# Your test code here
|
||||
assert result is not None
|
||||
```
|
||||
|
||||
2. **Add the `@skip_if_no_gateway` decorator** to tests requiring a live server
|
||||
|
||||
3. **Use pytest.mark.asyncio** for async tests:
|
||||
```python
|
||||
@skip_if_no_gateway
|
||||
@pytest.mark.asyncio
|
||||
async def test_async_feature(self):
|
||||
api = Api(url=GATEWAY_URL, token=AUTH_TOKEN)
|
||||
result = await api.async_flow().list()
|
||||
assert isinstance(result, list)
|
||||
```
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
For CI/CD pipelines:
|
||||
|
||||
```yaml
|
||||
# Example GitHub Actions workflow
|
||||
- name: Run Integration Tests
|
||||
env:
|
||||
TRUSTGRAPH_URL: http://localhost:8088/
|
||||
SKIP_INTEGRATION_TESTS: false
|
||||
run: |
|
||||
# Start Gateway API in background
|
||||
./start-gateway.sh &
|
||||
sleep 10
|
||||
|
||||
# Run tests
|
||||
pytest tests/test_api_integration.py -v
|
||||
|
||||
# Stop Gateway API
|
||||
./stop-gateway.sh
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Tests are skipped
|
||||
- Check that `SKIP_INTEGRATION_TESTS` is set to `false`
|
||||
- Verify the Gateway API is running at the configured URL
|
||||
|
||||
### Connection errors
|
||||
- Verify `TRUSTGRAPH_URL` is correct
|
||||
- Check that the Gateway API is accessible
|
||||
- Ensure firewall rules allow connections
|
||||
|
||||
### Authentication errors
|
||||
- Verify `TRUSTGRAPH_TOKEN` is set correctly
|
||||
- Check token validity with the Gateway API
|
||||
|
||||
### Timeout errors
|
||||
- Increase timeout in Api instantiation
|
||||
- Check Gateway API performance
|
||||
- Verify network connectivity
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
Planned test additions:
|
||||
- End-to-end streaming tests (requires live LLM)
|
||||
- Bulk operation performance tests
|
||||
- Error handling and edge cases
|
||||
- WebSocket reconnection scenarios
|
||||
- Token refresh mechanisms
|
||||
- Multi-flow coordination tests
|
||||
|
||||
## Contributing
|
||||
|
||||
When adding new API features:
|
||||
1. Add corresponding integration tests
|
||||
2. Document environment variables if needed
|
||||
3. Update this README with new test categories
|
||||
4. Ensure tests can run in skip mode for CI
|
||||
|
||||
## License
|
||||
|
||||
Same as TrustGraph project license.
|
||||
Loading…
Add table
Add a link
Reference in a new issue