FFGEN-Demo / test_system.py
Matis Codjia
Feat:Sources files
27bbd47
#!/usr/bin/env python3
"""
Test script for the cache system
"""
import os
from deepseek_caller import DeepSeekCaller
from stats_logger import StatsLogger
from config import DEEPSEEK_API_KEY
def test_deepseek_connection():
"""Test if DeepSeek API is accessible"""
print("=" * 70)
print("🧪 TEST 1: DeepSeek API Connection")
print("=" * 70)
if not DEEPSEEK_API_KEY:
print(" DEEPSEEK_API_KEY not found in environment")
print(" Set it with: export DEEPSEEK_API_KEY='your-key'")
return False
try:
caller = DeepSeekCaller()
is_connected = caller.test_connection()
if is_connected:
print(" DeepSeek API is accessible")
return True
else:
print(" DeepSeek API test failed")
return False
except Exception as e:
print(f" Error: {e}")
return False
def test_feedback_generation():
"""Test feedback generation"""
print("\n" + "=" * 70)
print("🧪 TEST 2: Feedback Generation")
print("=" * 70)
caller = DeepSeekCaller()
test_context = {
"theme": "Prime Number Check",
"difficulty": "beginner",
"error_category": "Incorrect Base Case Return Value",
"instructions": "Write a function to check if a number is prime",
"code": """
int is_prime(int n) {
if (n <= 1) {
return 1; // Bug: should return 0
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
""",
"test_cases_scope": ["Input: 1", "Input: 2", "Input: 17"],
"failed_tests": ["Input: 1 (returns 1, expected 0)"]
}
print(" Generating feedback...")
result = caller.generate_feedback(test_context)
if result.get('feedback'):
print(" Feedback generated successfully!")
print("\n Metrics:")
print(f" Tokens (prompt): {result['tokens_prompt']}")
print(f" Tokens (completion): {result['tokens_completion']}")
print(f" Total tokens: {result['tokens_total']}")
print(f" Generation time: {result['generation_time_ms']:.0f} ms")
print("\n Feedback:")
print(f" {result['feedback'][:200]}...")
return True
else:
print(f" Error: {result.get('error')}")
return False
def test_stats_logger():
"""Test stats logging"""
print("\n" + "=" * 70)
print("🧪 TEST 3: Stats Logger")
print("=" * 70)
logger = StatsLogger()
# Test query log
test_query = {
"query_id": "test-123",
"status": "hit",
"similarity_score": 0.15,
"confidence": 0.95,
"response_time_ms": 123.45,
"theme": "Test Theme",
"error_category": "Test Error",
"difficulty": "beginner",
"deepseek_tokens": 0,
"cache_size": 100
}
try:
logger.log_query(test_query)
print(" Query logged successfully")
# Read back
stats = logger.read_stats(limit=1)
if stats:
print(f" Read back: {stats[-1]['query_id']}")
else:
print(" No stats found (empty file)")
return True
except Exception as e:
print(f" Error: {e}")
return False
def main():
print(" TESTING CACHE SYSTEM COMPONENTS")
print()
results = []
# Test 1: API Connection
results.append(("DeepSeek API", test_deepseek_connection()))
# Test 2: Feedback Generation
if results[0][1]: # Only if API works
results.append(("Feedback Generation", test_feedback_generation()))
else:
print("\n⏭ Skipping feedback generation test (API unavailable)")
# Test 3: Stats Logger
results.append(("Stats Logger", test_stats_logger()))
# Summary
print("\n" + "=" * 70)
print(" TEST SUMMARY")
print("=" * 70)
for test_name, passed in results:
status = " PASS" if passed else " FAIL"
print(f"{status:12} {test_name}")
total_tests = len(results)
passed_tests = sum(1 for _, passed in results if passed)
print()
print(f"Total: {passed_tests}/{total_tests} tests passed")
if passed_tests == total_tests:
print(" All tests passed! System is ready.")
return 0
else:
print(" Some tests failed. Check configuration.")
return 1
if __name__ == "__main__":
exit(main())