ArunCore / tests /test_system.py
GitHub Actions Bot
deploy: automated sync from github main
985f3ee
Raw
History Blame Contribute Delete
5 kB
"""
ArunCore Comprehensive System Integration Test Suite
Tests:
1. Knowledge Base Search & RAG Retrieval
2. Live GitHub API Data Sync
3. Telegram Alert & Message Delivery
4. Active Learning Loop (save_unknown_question_answer -> data/unknown_questions.json)
5. Agent Tool Execution & Persona Response
"""
import sys
import os
import json
import time
# Ensure project root is in sys.path
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if BASE_DIR not in sys.path:
sys.path.insert(0, BASE_DIR)
from dotenv import load_dotenv
load_dotenv(os.path.join(BASE_DIR, ".env"))
def test_knowledge_base():
print("\n--- [TEST 1/5] Knowledge Base RAG Search ---")
from backend.app.core.agent import search_arun_knowledge
query = "medical AI tutors neet bot"
result = search_arun_knowledge.invoke({"query": query})
print(f"Query: '{query}'")
print(f"Result Snippet: {result[:300]}...")
assert len(result) > 50, "Knowledge base search returned insufficient data"
print("βœ… [PASS] Knowledge Base Search working cleanly!")
def test_github_sync():
print("\n--- [TEST 2/5] Live GitHub API Data Sync ---")
from backend.app.core.agent import get_github_live_data
result = get_github_live_data.invoke({"username": "neural-arun"})
print(f"Result Snippet:\n{result[:300]}...")
assert "Live GitHub Repositories" in result or "github.com" in result, "GitHub sync returned invalid output"
print("βœ… [PASS] Live GitHub Sync working cleanly!")
def test_active_learning_loop():
print("\n--- [TEST 3/5] Active Learning Loop (Telegram Reply -> unknown_questions.json) ---")
from backend.app.core.agent import save_unknown_question_answer
test_q = f"Automated Test Question {int(time.time())}"
test_a = "This is a verified test answer ingested by the automated test suite."
res = save_unknown_question_answer(test_q, test_a)
print(f"Function return: {res}")
json_path = os.path.join(BASE_DIR, "data", "raw", "unknown_questions.json")
assert os.path.exists(json_path), "data/raw/unknown_questions.json does not exist"
with open(json_path, "r", encoding="utf-8") as f:
data = json.load(f)
found = any(entry.get("question") == test_q for entry in data)
assert found, f"Test question '{test_q}' not found in unknown_questions.json"
print(f"Verified '{test_q}' saved into data/raw/unknown_questions.json (Total entries: {len(data)})")
print("βœ… [PASS] Active Learning Loop working cleanly!")
def test_telegram_delivery():
print("\n--- [TEST 4/5] Telegram Alert Delivery Engine ---")
from backend.app.core.agent import _deliver_notify_arun, send_automated_chat_alert
status = _deliver_notify_arun("SYSTEM_ALERT", "Automated system integration test run")
print(f"Telegram Delivery Output: {status}")
assert "SUCCESS" in status or "SKIPPED" in status, f"Telegram delivery failed: {status}"
auto_status = send_automated_chat_alert("test_sys_session", "System test query", "System test response")
print(f"Automated Chat Alert Output: {auto_status}")
assert "SUCCESS" in auto_status or "SKIPPED" in auto_status, f"Automated chat alert failed: {auto_status}"
print("βœ… [PASS] Telegram Alert Engine working cleanly!")
def test_agent_execution():
print("\n--- [TEST 5/5] Agent Invocation & Tool Execution ---")
from backend.app.core.agent import init_agent
main_llm, prompt, default_memory, tools = init_agent()
print(f"Loaded {len(tools)} agent tools: {[t.name for t in tools]}")
messages = prompt.format_messages(
running_summary=default_memory.running_summary,
chat_history=[],
input="Tell me about Arun's background in AI engineering.",
agent_scratchpad=[],
)
ai_msg = main_llm.invoke(messages)
if ai_msg.tool_calls:
print(f"AI Persona triggered tool call(s): {[tc['name'] for tc in ai_msg.tool_calls]}")
assert len(ai_msg.tool_calls) > 0, "Tool call array is empty"
else:
print(f"AI Persona Response (Temperature 0.7):\n{ai_msg.content[:250]}...")
assert len(ai_msg.content) > 10, "Agent generated empty response"
print("βœ… [PASS] Agent Invocation & Persona working cleanly!")
if __name__ == "__main__":
print("=========================================================")
print(" ARUNCORE SYSTEM FUNCTIONALITY TEST SUITE ")
print("=========================================================")
try:
test_knowledge_base()
test_github_sync()
test_active_learning_loop()
test_telegram_delivery()
test_agent_execution()
print("\n=========================================================")
print("πŸŽ‰ ALL 5 SYSTEM TESTS PASSED SUCCESSFULLY! EVERYTHING IS HEALTHY.")
print("=========================================================")
except Exception as e:
print(f"\n❌ TEST FAILED: {e}")
sys.exit(1)