feat: implement Layer 2 per-file transit, RAM session, mock buffer, and tests (v0.2.0)
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user