feat(db): zip recent events' waveform files
This commit is contained in:
@@ -45,3 +45,37 @@ def test_snapshot_db_produces_queryable_copy(tmp_path):
|
||||
n = conn.execute("SELECT COUNT(*) FROM t").fetchone()[0]
|
||||
conn.close()
|
||||
assert n == 5
|
||||
|
||||
|
||||
def test_recent_waveforms_zip_bundles_all_per_event_files(tmp_path):
|
||||
import zipfile
|
||||
from sfm.database import SeismoDb
|
||||
from sfm.waveform_store import WaveformStore
|
||||
from sfm.db_snapshot import build_recent_waveforms_zip
|
||||
|
||||
db = SeismoDb(tmp_path / "seismo_relay.db") # creates schema on init
|
||||
store = WaveformStore(tmp_path / "waveforms")
|
||||
|
||||
def add(serial, fn, ts):
|
||||
d = store.root / serial
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
for suffix in ("", ".h5", ".a5.pkl", ".sfm.json"):
|
||||
(d / f"{fn}{suffix}").write_bytes(b"data")
|
||||
_seed_event(db.db_path, serial, fn, ts)
|
||||
|
||||
add("BE111", "AAAA1111.OE0H", "2026-06-01T00:00:00")
|
||||
add("BE111", "BBBB2222.OE0H", "2026-06-02T00:00:00") # newest
|
||||
|
||||
dest = tmp_path / "wf.zip"
|
||||
stats = build_recent_waveforms_zip(db, store, n=1, dest_path=dest)
|
||||
|
||||
assert stats["events"] == 1
|
||||
assert stats["files"] == 4
|
||||
with zipfile.ZipFile(dest) as zf:
|
||||
names = set(zf.namelist())
|
||||
assert names == {
|
||||
"BE111/BBBB2222.OE0H",
|
||||
"BE111/BBBB2222.OE0H.h5",
|
||||
"BE111/BBBB2222.OE0H.a5.pkl",
|
||||
"BE111/BBBB2222.OE0H.sfm.json",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user