test(quartz): widen NIP-40 expiration buffer to outlive insert race
The reject_expired_events trigger checks NEW.expiration <= unixepoch() at insert time, so signing/insert latency on a slow runner could push unixepoch() to time+1 before the row was committed, raising SQLiteException at runBlocking entry. Bumping the short event to time+5 with a matching delay(6000) mirrors ExpirationTest.testDeletingExpiredEvents and gives the trigger room to breathe without changing the behavior under test.
This commit is contained in:
+6
-2
@@ -401,7 +401,11 @@ class EventStoreProjectionTest {
|
|||||||
val time = TimeUtils.now()
|
val time = TimeUtils.now()
|
||||||
val safe = signer.sign(TextNoteEvent.build("safe", createdAt = time) { expiration(time + 100) })
|
val safe = signer.sign(TextNoteEvent.build("safe", createdAt = time) { expiration(time + 100) })
|
||||||
observable.insert(safe)
|
observable.insert(safe)
|
||||||
val short = signer.sign(TextNoteEvent.build("short", createdAt = time) { expiration(time + 1) })
|
// The SQL trigger rejects an insert whose expiration is
|
||||||
|
// already <= unixepoch(), so this buffer must comfortably
|
||||||
|
// outlive any signing/insert latency. Mirrors the pattern
|
||||||
|
// in ExpirationTest.testDeletingExpiredEvents.
|
||||||
|
val short = signer.sign(TextNoteEvent.build("short", createdAt = time) { expiration(time + 5) })
|
||||||
observable.insert(short)
|
observable.insert(short)
|
||||||
|
|
||||||
val projection =
|
val projection =
|
||||||
@@ -412,7 +416,7 @@ class EventStoreProjectionTest {
|
|||||||
// Let the short expiration lapse, then ask the store to
|
// Let the short expiration lapse, then ask the store to
|
||||||
// sweep — the projection drops the expired slot in
|
// sweep — the projection drops the expired slot in
|
||||||
// response to the resulting StoreChange.Delete(Expired).
|
// response to the resulting StoreChange.Delete(Expired).
|
||||||
delay(2000)
|
delay(6000)
|
||||||
observable.deleteExpiredEvents()
|
observable.deleteExpiredEvents()
|
||||||
|
|
||||||
val after = projection.awaitItems { it.size == 1 }
|
val after = projection.awaitItems { it.size == 1 }
|
||||||
|
|||||||
Reference in New Issue
Block a user