Files
qiming/qiming-run_code_rmcp/fixtures/test_python_large_params.py
2026-06-01 13:43:09 +08:00

70 lines
2.6 KiB
Python

#!/usr/bin/env python3
# Test Python script with large text parameters to verify "Argument list too long" fix
import sys
import json
import time
# Generate a large text parameter (>2MB) to test the temporary file parameter passing solution
def generate_large_text(size_in_mb):
chunk = "This is a test chunk of text designed to generate large parameters for Python testing. " * 100
iterations = (size_in_mb * 1024 * 1024) // len(chunk)
result = ""
for i in range(iterations):
result += chunk + f"Iteration {i}\n"
return result
# Handler function that processes large text parameters
def handler(args):
print("Handler function called with large parameters")
# Test that we received the large text parameter
if not args or 'largeText' not in args:
print("ERROR: No largeText parameter found")
return {"success": False, "error": "Missing largeText parameter"}
large_text = args['largeText']
print(f"Received large text parameter, length: {len(large_text)}")
print(f"Large text parameter size (MB): {len(large_text) / 1024 / 1024:.2f}")
# Verify the text contains expected content
expected_content = "This is a test chunk of text designed to generate large parameters for Python testing"
if expected_content in large_text:
print("SUCCESS: Large text parameter contains expected content")
# Count occurrences of "Iteration" to verify data integrity
iteration_count = large_text.count("Iteration")
print(f"Found {iteration_count} iterations in the text")
return {
"success": True,
"message": "Successfully processed large text parameter",
"textSize": len(large_text),
"sizeMB": round(len(large_text) / 1024 / 1024, 2),
"iterationCount": iteration_count,
"sampleText": large_text[:100] + "..."
}
else:
print("ERROR: Large text parameter does not contain expected content")
return {"success": False, "error": "Invalid content in largeText parameter"}
# This part won't be executed when the code is run through the MCP runner
if __name__ == "__main__":
print("Running large parameter test directly...")
# Generate test data (3MB to ensure we exceed the 2MB threshold)
large_text = generate_large_text(3)
print(f"Generated test data, size: {len(large_text) / 1024 / 1024:.2f} MB")
# Create test arguments
test_args = {
"largeText": large_text,
"additionalParam": "test value",
"numberParam": 42
}
print("Calling handler with large parameters...")
result = handler(test_args)
print("Result:", json.dumps(result, indent=2))