Skip to main content
Glama

DuckDB-RAG-MCP-Sample

by nananaman
test_system_status.py3.19 kB
import pytest from unittest.mock import patch, MagicMock, Mock from server import get_system_status from tests.conftest import MockContext @pytest.fixture def mock_setup(): # Mockオブジェクトのセットアップ mock_conn = MagicMock() mock_conn_sql = MagicMock() mock_conn_sql.fetchone.return_value = [10] mock_conn.sql.return_value = mock_conn_sql # コンテキスト生成 mock_ctx = MockContext(conn=mock_conn) # torchのモック - システムでtorch.cudaが利用可能なことを示す mock_torch = Mock() mock_torch.cuda = Mock() mock_torch.cuda.is_available = Mock(return_value=True) mock_torch.cuda.get_device_name = Mock(return_value="Test GPU") mock_torch.cuda.memory_allocated = Mock(return_value=1000000000) # 1GB # OSモックの作成 mock_os = MagicMock() mock_os.environ.get.return_value = "vectors.parquet" mock_os.path.exists.return_value = True mock_os.path.getsize.return_value = 5000000 # 5MB # モック関数を作成 mock_get_document_count = MagicMock(return_value=10) mock_get_device_info = MagicMock( return_value={"device": "cuda (Test GPU)", "gpu_memory_usage": "1.00 GB"} ) mock_get_file_info = MagicMock(return_value={"exists": True, "size_mb": "5.0 MB"}) with ( patch("duckdb_rag.get_document_count", mock_get_document_count), patch("duckdb_rag.get_device_info", mock_get_device_info), patch("duckdb_rag.get_file_info", mock_get_file_info), patch("os.environ.get", mock_os.environ.get), patch.dict("sys.modules", {"torch": mock_torch}), ): yield { "ctx": mock_ctx, "conn": mock_conn, "torch": mock_torch, "os": mock_os, "get_document_count": mock_get_document_count, "get_device_info": mock_get_device_info, "get_file_info": mock_get_file_info, } @pytest.mark.asyncio async def test_get_system_status(mock_setup): # get_system_status関数を呼び出し status = await get_system_status(ctx=mock_setup["ctx"]) # 結果が辞書であることを確認 assert isinstance(status, dict) # 必要なキーが含まれていることを確認 assert "document_count" in status assert "model_name" in status assert "device" in status assert "vector_db_status" in status assert "vector_file" in status # 値が期待通りであることを確認 assert status["document_count"] == 10 assert "pfnet/plamo-embedding-1b" in status["model_name"] assert status["device"] == "cuda (Test GPU)" assert status["vector_db_status"] == "connected" assert "vectors.parquet" in status["vector_file"] assert "5.0 MB" in status["vector_file"] @pytest.mark.asyncio async def test_get_system_status_no_cuda(mock_setup): # CUDA非対応環境をシミュレート mock_setup["get_device_info"].return_value = {"device": "cpu"} # get_system_status関数を呼び出し status = await get_system_status(ctx=mock_setup["ctx"]) # デバイスがCPUになっていることを確認 assert status["device"] == "cpu"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nananaman/DuckDB-RAG-MCP-Sample'

If you have feedback or need assistance with the MCP directory API, please join our Discord server