204000aabc
Resolve 3 merge conflicts and renumber the automation_hooks migration to follow main's migration chain (036_add_document_translation_fields). Conflicts resolved: - app/api/__init__.py: add automation_router alongside main's new routers - app/utils/settings_service.py: add automation_hooks_enabled alongside compliance_enabled - tests/conftest.py: add AutomationHook alongside AuditLog/ComplianceTemplate imports Migration renumbered: - 027_add_automation_hooks → 037_add_automation_hooks - down_revision: 026_add_scheduled_jobs → 036_add_document_translation_fields Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import asyncio
|
|
import time
|
|
from unittest.mock import Mock, patch
|
|
|
|
from app.api.url_upload import process_url, URLUploadRequest
|
|
from app.config import settings
|
|
|
|
async def main():
|
|
# Mock request and URLUploadRequest
|
|
request = Mock()
|
|
url_request = URLUploadRequest(url="https://example.com/file.pdf")
|
|
|
|
# Generate a large chunk
|
|
large_chunk = b"A" * 8192
|
|
num_chunks = 10000 # 8192 * 10000 = ~80MB
|
|
|
|
mock_response = Mock()
|
|
mock_response.status_code = 200
|
|
mock_response.headers = {"Content-Type": "application/pdf"}
|
|
mock_response.iter_content = Mock(return_value=[large_chunk] * num_chunks)
|
|
|
|
# For async client later
|
|
class AsyncMockResponse:
|
|
def __init__(self):
|
|
self.status_code = 200
|
|
self.headers = {"Content-Type": "application/pdf"}
|
|
def raise_for_status(self):
|
|
pass
|
|
async def aiter_bytes(self, chunk_size):
|
|
for _ in range(num_chunks):
|
|
yield large_chunk
|
|
|
|
async_mock_response = AsyncMockResponse()
|
|
|
|
# We will mock requests.get for synchronous, httpx.AsyncClient.get for asynchronous
|
|
|
|
# Test sync
|
|
start_time = time.time()
|
|
with patch("app.api.url_upload.requests.get", return_value=mock_response), \
|
|
patch("app.api.url_upload.process_document"):
|
|
try:
|
|
await process_url(request=request, url_request=url_request)
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
end_time = time.time()
|
|
print(f"Original execution time (sync writing): {end_time - start_time:.4f} seconds")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|