mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
103 lines
2.6 KiB
Python
103 lines
2.6 KiB
Python
#!/usr/bin/env python
|
|
"""Simple test to check if stdio mode starts without logging interference."""
|
|
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
import time
|
|
|
|
|
|
def test_stdio_simple():
|
|
"""Test stdio mode for logging interference."""
|
|
# Start the server
|
|
proc = subprocess.Popen(
|
|
[sys.executable, "-m", "hanzo_mcp.cli", "--transport", "stdio"],
|
|
stdin=subprocess.PIPE,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
text=True,
|
|
bufsize=0,
|
|
)
|
|
|
|
# Send initialize request
|
|
request = {
|
|
"jsonrpc": "2.0",
|
|
"id": 1,
|
|
"method": "initialize",
|
|
"params": {
|
|
"protocolVersion": "0.1.0",
|
|
"capabilities": {},
|
|
"clientInfo": {"name": "test-client", "version": "1.0.0"},
|
|
},
|
|
}
|
|
|
|
print("Sending initialize request...")
|
|
proc.stdin.write(json.dumps(request) + "\n")
|
|
proc.stdin.flush()
|
|
|
|
# Read response for 5 seconds
|
|
start_time = time.time()
|
|
output_lines = []
|
|
error_lines = []
|
|
|
|
while time.time() - start_time < 5:
|
|
# Check for stdout
|
|
try:
|
|
proc.stdout.flush()
|
|
line = proc.stdout.readline()
|
|
if line:
|
|
output_lines.append(line.strip())
|
|
except Exception:
|
|
pass
|
|
|
|
# Check for stderr
|
|
try:
|
|
proc.stderr.flush()
|
|
line = proc.stderr.readline()
|
|
if line:
|
|
error_lines.append(line.strip())
|
|
except Exception:
|
|
pass
|
|
|
|
time.sleep(0.1)
|
|
|
|
# Kill the process
|
|
proc.terminate()
|
|
proc.wait()
|
|
|
|
# Analyze results
|
|
print("\n" + "=" * 60)
|
|
print("SUMMARY:")
|
|
print(f"Total stdout lines: {len(output_lines)}")
|
|
print(f"Total stderr lines: {len(error_lines)}")
|
|
|
|
# Check each stdout line for valid JSON
|
|
violations = 0
|
|
for i, line in enumerate(output_lines):
|
|
try:
|
|
data = json.loads(line)
|
|
print(
|
|
f"✓ Valid JSON response: {data.get('method', data.get('result', 'response'))}"
|
|
)
|
|
except json.JSONDecodeError:
|
|
print(f"✗ Line {i + 1} is not valid JSON: {line}")
|
|
violations += 1
|
|
|
|
# Show stderr if any
|
|
if error_lines:
|
|
print("\nSTDERR OUTPUT:")
|
|
for line in error_lines:
|
|
print(f" {line}")
|
|
|
|
if violations == 0 and output_lines:
|
|
print("✅ All stdout output is valid JSON!")
|
|
else:
|
|
print(f"❌ Found {violations} protocol violations")
|
|
|
|
return violations == 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = test_stdio_simple()
|
|
sys.exit(0 if success else 1)
|