feat: implement Layer 2 per-file transit, RAM session, mock buffer, and tests (v0.2.0)

This commit is contained in:
“Naeel”
2026-09-06 12:01:56 +03:00
parent 0ea7ba058c
commit 112c84f11a
34 changed files with 2200 additions and 162 deletions
+61
View File
@@ -0,0 +1,61 @@
import pytest
from upload.backend.session import (
create_session, add_file, get_files, file_count,
store_result, get_result, store_csv, get_csv,
touch, pause_ttl, resume_ttl, request_cancel, get_cancel_event,
cleanup, configure, MAX_FILE_BYTES, MAX_SESSION_BYTES
)
from upload.backend.session.state import _sessions
def test_session_lifecycle():
sid = create_session()
assert sid in _sessions
assert file_count(sid) == 0
assert get_files(sid) == []
# Add file
ok = add_file(sid, "doc.txt", b"hello world")
assert ok is True
assert file_count(sid) == 1
files = get_files(sid)
assert len(files) == 1
assert files[0] == ("doc.txt", b"hello world")
# Store result and csv
assert store_result(sid, b"PK...zip") is True
assert get_result(sid) == b"PK...zip"
assert store_csv(sid, "col1,col2\nval1,val2") is True
assert get_csv(sid) == "col1,col2\nval1,val2"
# Cancel event
ev = get_cancel_event(sid)
assert ev is not None
assert not ev.is_set()
assert request_cancel(sid) is True
assert ev.is_set()
# TTL methods do not raise
touch(sid)
pause_ttl(sid)
resume_ttl(sid)
# Cleanup
cleanup(sid)
assert sid not in _sessions
assert get_files(sid) is None
assert file_count(sid) == 0
def test_session_limits():
sid = create_session()
configure(max_session_bytes=100)
try:
# Add 60 bytes - ok
assert add_file(sid, "f1.bin", b"x" * 60) is True
# Add 50 bytes - should fail (60 + 50 > 100)
assert add_file(sid, "f2.bin", b"x" * 50) is False
assert file_count(sid) == 1
finally:
configure(max_session_bytes=500 * 1024 * 1024)
cleanup(sid)