Borner la mémoire de la carte (OOM du Pi) et rallumer le relief orienté par défaut
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -361,6 +361,27 @@ def test_source_cache_respects_memory_budget(tmp_path, monkeypatch):
|
||||
assert tiles._source_cache == {}
|
||||
|
||||
|
||||
def test_source_cache_holds_plain_decoded_images(tmp_path):
|
||||
"""Le cache ne retient que les pixels : ni fichier ouvert ni décodeur.
|
||||
|
||||
Une image AVIF ouverte garde son décodeur (tampons libavif/dav1d) :
|
||||
~43 Mo retenus par quadrant 2500² au lieu de 25 — le conteneur du Pi
|
||||
(1 Go) était tué par l'OOM killer en navigation à fort zoom. Le budget
|
||||
compte 4 octets/pixel : PIL stocke le RGB sur 32 bits.
|
||||
"""
|
||||
from PIL import Image
|
||||
from lidar_pipeline import tiles
|
||||
tiles.clear_source_cache()
|
||||
f = tmp_path / "src.png"
|
||||
Image.new("RGB", (40, 30), (10, 20, 30)).save(str(f))
|
||||
img = tiles._open_source(str(f), f.stat().st_mtime)
|
||||
assert type(img) is Image.Image
|
||||
assert getattr(img, "fp", None) is None
|
||||
assert img.info["_bytes"] == 40 * 30 * 4
|
||||
assert img.getpixel((0, 0))[:3] == (10, 20, 30)
|
||||
tiles.clear_source_cache()
|
||||
|
||||
|
||||
def test_source_cache_keyed_by_mtime(tmp_path):
|
||||
"""Une source réécrite n'est pas resservie depuis le cache."""
|
||||
import os
|
||||
|
||||
Reference in New Issue
Block a user