run_quality_tests.pyโข7.27 kB
"""
Easy-to-use test runner for search quality and duplicate detection testing.
Updated for new x402 architecture.
"""
import sys
import time
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def print_menu():
"""Display the test menu."""
print("\n๐ SEARCH QUALITY TEST SUITE")
print("=" * 50)
print("1. Quick Quality Test (recommended)")
print("2. Multi-Query Test (3 different queries)")
print("3. Monitor Query Over Time (5 iterations)")
print("4. Comprehensive Test Suite (all tests)")
print("5. Custom Query Test")
print("6. Duplicate Detection Deep Dive")
print("7. View Previous Monitoring Results")
print("8. ๐ X402 Payment Integration Tests")
print("9. ๐ API Integration Tests")
print("0. Exit")
print("=" * 50)
def run_quick_test():
"""Run the quick quality test."""
print("\n๐ Running Quick Quality Test...")
from quick_quality_test import quick_search_test
quick_search_test()
def run_multi_query_test():
"""Run multi-query test."""
print("\n๐ Running Multi-Query Test...")
from quick_quality_test import run_multiple_queries
run_multiple_queries()
def run_monitor_test():
"""Run query monitoring test."""
print("\n๐ Running Query Monitor Test...")
from monitor_query_test import QueryMonitor
query = input("Enter query to monitor (or press Enter for default): ").strip()
if not query:
query = "AI Ethics and Safety openings fit for a PhD in Computer Science"
iterations = input("Number of iterations (default 3): ").strip()
iterations = int(iterations) if iterations.isdigit() else 3
delay = input("Minutes between iterations (default 1): ").strip()
delay = int(delay) if delay.isdigit() else 1
monitor = QueryMonitor()
monitor.monitor_query(query, iterations=iterations, delay_minutes=delay)
def run_comprehensive_test():
"""Run comprehensive test suite."""
print("\n๐ Running Comprehensive Test Suite...")
print("โ ๏ธ This will take 10-15 minutes and use multiple OpenAI API calls")
confirm = input("Continue? (y/N): ").strip().lower()
if confirm != 'y':
print("Test cancelled.")
return
from test_search_quality import SearchQualityTester
tester = SearchQualityTester()
tester.run_comprehensive_test_suite()
def run_custom_query_test():
"""Run test with custom query."""
query = input("Enter your search query: ").strip()
if not query:
print("No query provided.")
return
print(f"\n๐ Testing custom query: {query}")
from quick_quality_test import quick_search_test
quick_search_test(query)
def run_duplicate_detection_test():
"""Run focused duplicate detection test."""
print("\n๐ Running Duplicate Detection Deep Dive...")
query = input("Enter query (or press Enter for default): ").strip()
if not query:
query = "AI Ethics and Safety openings fit for a PhD in Computer Science"
from test_search_quality import SearchQualityTester
tester = SearchQualityTester()
tester.test_duplicate_detection_accuracy(query, simulate_variations=True)
def view_monitoring_results():
"""View previous monitoring results."""
print("\n๐ Viewing Previous Monitoring Results...")
from monitor_query_test import QueryMonitor
monitor = QueryMonitor()
monitor.compare_sessions()
def run_x402_tests():
"""Run x402 payment integration tests."""
print("\n๐ Running X402 Payment Integration Tests...")
from test_x402_integration import run_x402_tests
run_x402_tests()
def run_api_tests():
"""Run API integration tests."""
print("\n๐ Running API Integration Tests...")
from test_api_integration import run_api_integration_tests
run_api_integration_tests()
def main():
"""Main function with interactive menu."""
print("Welcome to the TimeLooker Search Quality Test Suite!")
print("This will help you evaluate:")
print("โข Search result quality and completeness")
print("โข Duplicate detection accuracy")
print("โข Performance and consistency")
print("โข Real-world scenario testing")
while True:
print_menu()
try:
choice = input("\nSelect an option (0-9): ").strip()
if choice == '0':
print("๐ Goodbye!")
break
elif choice == '1':
run_quick_test()
elif choice == '2':
run_multi_query_test()
elif choice == '3':
run_monitor_test()
elif choice == '4':
run_comprehensive_test()
elif choice == '5':
run_custom_query_test()
elif choice == '6':
run_duplicate_detection_test()
elif choice == '7':
view_monitoring_results()
elif choice == '8':
run_x402_tests()
elif choice == '9':
run_api_tests()
else:
print("โ Invalid option. Please choose 0-9.")
continue
# Ask if user wants to continue
print("\n" + "="*50)
continue_choice = input("Run another test? (Y/n): ").strip().lower()
if continue_choice == 'n':
print("๐ Thanks for testing!")
break
except KeyboardInterrupt:
print("\n\n๐ Test interrupted. Goodbye!")
break
except Exception as e:
print(f"\nโ Error: {e}")
print("Please try again.")
def quick_start():
"""Quick start function for command line usage."""
if len(sys.argv) > 1:
command = sys.argv[1].lower()
if command == 'quick':
run_quick_test()
elif command == 'multi':
run_multi_query_test()
elif command == 'monitor':
query = " ".join(sys.argv[2:]) if len(sys.argv) > 2 else None
from monitor_query_test import QueryMonitor
monitor = QueryMonitor()
query = query or "AI Ethics and Safety openings fit for a PhD in Computer Science"
monitor.monitor_query(query, iterations=3, delay_minutes=1)
elif command == 'comprehensive':
run_comprehensive_test()
elif command == 'custom':
if len(sys.argv) > 2:
query = " ".join(sys.argv[2:])
from quick_quality_test import quick_search_test
quick_search_test(query)
else:
print("Usage: python run_quality_tests.py custom <your query>")
else:
print("Available commands:")
print(" quick - Run quick quality test")
print(" multi - Run multi-query test")
print(" monitor - Monitor query over time")
print(" comprehensive - Run all tests")
print(" custom <query> - Test custom query")
print(" (no args) - Interactive menu")
else:
main()
if __name__ == "__main__":
quick_start()