|
|
""" |
|
|
Quick integration test to verify the app works with refactored MCP client. |
|
|
""" |
|
|
import os |
|
|
import sys |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
os.environ["USE_MCP_ARXIV"] = "true" |
|
|
os.environ["MCP_ARXIV_STORAGE_PATH"] = "data/test_integration_papers" |
|
|
|
|
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent)) |
|
|
|
|
|
from dotenv import load_dotenv |
|
|
load_dotenv() |
|
|
|
|
|
from app import ResearchPaperAnalyzer |
|
|
import logging |
|
|
|
|
|
|
|
|
logging.basicConfig( |
|
|
level=logging.INFO, |
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
|
|
) |
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
def test_retriever_agent(): |
|
|
"""Test that RetrieverAgent works with refactored MCP client.""" |
|
|
logger.info("=" * 80) |
|
|
logger.info("Testing RetrieverAgent with refactored MCP client") |
|
|
logger.info("=" * 80) |
|
|
|
|
|
try: |
|
|
|
|
|
analyzer = ResearchPaperAnalyzer() |
|
|
|
|
|
|
|
|
logger.info(f"\nArxiv client type: {type(analyzer.arxiv_client).__name__}") |
|
|
|
|
|
if type(analyzer.arxiv_client).__name__ != "MCPArxivClient": |
|
|
logger.error("β Expected MCPArxivClient but got different client") |
|
|
return False |
|
|
|
|
|
|
|
|
logger.info("\nTesting search through RetrieverAgent...") |
|
|
test_state = { |
|
|
"query": "transformer architecture", |
|
|
"category": "cs.AI", |
|
|
"num_papers": 2, |
|
|
"token_usage": {"input_tokens": 0, "output_tokens": 0, "embedding_tokens": 0}, |
|
|
"errors": [] |
|
|
} |
|
|
|
|
|
|
|
|
result_state = analyzer.retriever_agent.run(test_state) |
|
|
|
|
|
|
|
|
if "papers" in result_state and len(result_state["papers"]) > 0: |
|
|
logger.info(f"\nβ Successfully retrieved {len(result_state['papers'])} papers") |
|
|
for i, paper in enumerate(result_state["papers"], 1): |
|
|
logger.info(f" {i}. {paper.title[:80]}...") |
|
|
logger.info(f" arXiv ID: {paper.arxiv_id}") |
|
|
return True |
|
|
else: |
|
|
logger.error("\nβ No papers retrieved") |
|
|
return False |
|
|
|
|
|
except Exception as e: |
|
|
logger.error(f"\nβ Integration test failed: {str(e)}", exc_info=True) |
|
|
return False |
|
|
|
|
|
if __name__ == "__main__": |
|
|
success = test_retriever_agent() |
|
|
|
|
|
logger.info("\n" + "=" * 80) |
|
|
if success: |
|
|
logger.info("β Integration test PASSED") |
|
|
else: |
|
|
logger.info("β Integration test FAILED") |
|
|
logger.info("=" * 80) |
|
|
|
|
|
sys.exit(0 if success else 1) |
|
|
|