104 lines
2.8 KiB
Python
104 lines
2.8 KiB
Python
"""Pytest configuration and fixtures"""
|
|
|
|
import pytest
|
|
import asyncio
|
|
from typing import AsyncGenerator
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def event_loop():
|
|
"""Create event loop for async tests"""
|
|
loop = asyncio.get_event_loop_policy().new_event_loop()
|
|
yield loop
|
|
loop.close()
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_db_session():
|
|
"""Mock database session"""
|
|
session = AsyncMock(spec=AsyncSession)
|
|
session.add = MagicMock()
|
|
session.commit = AsyncMock()
|
|
session.execute = AsyncMock()
|
|
session.refresh = AsyncMock()
|
|
session.close = AsyncMock()
|
|
return session
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_top500_response():
|
|
"""Sample TOP500 API response"""
|
|
return {
|
|
"items": [
|
|
{
|
|
"rank": 1,
|
|
"system_name": "Frontier",
|
|
"country": "USA",
|
|
"city": "Oak Ridge",
|
|
"latitude": 35.9322,
|
|
"longitude": -84.3108,
|
|
"manufacturer": "HPE",
|
|
"r_max": 1102000.0,
|
|
"r_peak": 1685000.0,
|
|
"power": 21510.0,
|
|
"cores": 8730112,
|
|
"interconnect": "Slingshot 11",
|
|
"os": "CentOS",
|
|
},
|
|
{
|
|
"rank": 2,
|
|
"system_name": "Fugaku",
|
|
"country": "Japan",
|
|
"city": "Kobe",
|
|
"latitude": 34.6913,
|
|
"longitude": 135.1830,
|
|
"manufacturer": "Fujitsu",
|
|
"r_max": 442010.0,
|
|
"r_peak": 537212.0,
|
|
"power": 29899.0,
|
|
"cores": 7630848,
|
|
"interconnect": "Tofu interconnect D",
|
|
"os": "RHEL",
|
|
},
|
|
]
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_huggingface_response():
|
|
"""Sample Hugging Face API response"""
|
|
return {
|
|
"models": [
|
|
{
|
|
"id": "bert-base-uncased",
|
|
"author": "google",
|
|
"description": "BERT base model",
|
|
"likes": 25000,
|
|
"downloads": 5000000,
|
|
"language": "en",
|
|
"tags": ["transformer", "bert"],
|
|
"pipeline_tag": "feature-extraction",
|
|
"library_name": "transformers",
|
|
"createdAt": "2024-01-15T10:00:00Z",
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_alert_data():
|
|
"""Sample alert data"""
|
|
return {
|
|
"id": 1,
|
|
"severity": "warning",
|
|
"status": "active",
|
|
"datasource_id": 2,
|
|
"datasource_name": "Epoch AI",
|
|
"message": "API response time > 30s",
|
|
"created_at": "2024-01-20T09:30:00Z",
|
|
"acknowledged_by": None,
|
|
}
|