Files
railseek6/test_server_and_ocr.py

205 lines
6.1 KiB
Python

import requests
import time
import os
def test_server_status():
"""Test if the server is running"""
print("Testing server status...")
try:
response = requests.get("http://localhost:3015/health", timeout=5)
if response.status_code == 200:
print("✅ Server is running!")
return True
else:
print(f"❌ Server returned status: {response.status_code}")
return False
except Exception as e:
print(f"❌ Server not accessible: {e}")
return False
def test_webui_access():
"""Test if web UI is accessible"""
print("\nTesting web UI access...")
try:
response = requests.get("http://localhost:3015/webui/", timeout=5)
if response.status_code == 200:
print("✅ Web UI is accessible!")
return True
else:
print(f"❌ Web UI returned status: {response.status_code}")
return False
except Exception as e:
print(f"❌ Web UI not accessible: {e}")
return False
def test_login():
"""Test login with credentials"""
print("\nTesting login...")
login_data = {
"username": "jleu3482",
"password": "jleu1212"
}
try:
response = requests.post("http://localhost:3015/login", data=login_data, timeout=10)
print(f"Login response: {response.status_code}")
if response.status_code == 200:
print("✅ Login successful!")
data = response.json()
print(f" Token type: {data.get('token_type')}")
print(f" Auth mode: {data.get('auth_mode')}")
return data.get('access_token')
else:
print(f"❌ Login failed: {response.text}")
return None
except Exception as e:
print(f"❌ Login error: {e}")
return None
def upload_ocr_pdf(token=None):
"""Upload the OCR PDF file for testing"""
print("\nUploading OCR PDF...")
headers = {}
if token:
headers['Authorization'] = f'Bearer {token}'
files = {
'file': ('ocr.pdf', open('../ocr.pdf', 'rb'), 'application/pdf')
}
try:
response = requests.post(
"http://localhost:3015/upload",
files=files,
headers=headers,
timeout=30
)
print(f"Upload response: {response.status_code}")
if response.status_code == 200:
print("✅ Upload successful!")
data = response.json()
print(f" Document ID: {data.get('doc_id')}")
print(f" Status: {data.get('status')}")
return data.get('doc_id')
else:
print(f"❌ Upload failed: {response.text}")
return None
except Exception as e:
print(f"❌ Upload error: {e}")
return None
finally:
if 'files' in locals():
files['file'][1].close()
def check_document_status(doc_id, token=None):
"""Check the status of the uploaded document"""
print(f"\nChecking document status for ID: {doc_id}")
headers = {}
if token:
headers['Authorization'] = f'Bearer {token}'
try:
response = requests.get(
f"http://localhost:3015/doc-status/{doc_id}",
headers=headers,
timeout=10
)
print(f"Status response: {response.status_code}")
if response.status_code == 200:
data = response.json()
print(f"✅ Document status: {data.get('status')}")
print(f" Progress: {data.get('progress', 0)}%")
print(f" Message: {data.get('message', '')}")
return data
else:
print(f"❌ Status check failed: {response.text}")
return None
except Exception as e:
print(f"❌ Status check error: {e}")
return None
def test_search(query, token=None):
"""Test search functionality"""
print(f"\nTesting search with query: '{query}'")
headers = {'Content-Type': 'application/json'}
if token:
headers['Authorization'] = f'Bearer {token}'
search_data = {
"query": query,
"top_k": 5
}
try:
response = requests.post(
"http://localhost:3015/query",
json=search_data,
headers=headers,
timeout=15
)
print(f"Search response: {response.status_code}")
if response.status_code == 200:
data = response.json()
print("✅ Search successful!")
print(f" Found {len(data.get('results', []))} results")
for i, result in enumerate(data.get('results', [])):
print(f" Result {i+1}:")
print(f" Score: {result.get('score', 0):.3f}")
print(f" Text: {result.get('text', '')[:100]}...")
return data
else:
print(f"❌ Search failed: {response.text}")
return None
except Exception as e:
print(f"❌ Search error: {e}")
return None
if __name__ == "__main__":
print("LightRAG Server and OCR Test")
print("=" * 50)
# Test server status
if not test_server_status():
print("\n💡 Server is not running. Please start it with:")
print(" cd LightRAG-main && .\\zrun.bat")
exit(1)
# Test web UI access
test_webui_access()
# Test login
token = test_login()
# Upload OCR PDF
doc_id = upload_ocr_pdf(token)
if doc_id:
# Wait a bit for processing
print("\n⏳ Waiting for document processing...")
time.sleep(10)
# Check document status
status_data = check_document_status(doc_id, token)
# Test search with OCR content
test_search("optical character recognition", token)
test_search("PDF document", token)
test_search("text extraction", token)
print("\n" + "=" * 50)
print("Test completed!")
print("Access the web UI at: http://localhost:3015/webui/")
print("Username: jleu3482")
print("Password: jleu1212")