Merge pull request #2774 from vitorpamplona/claude/fix-nostr-repeat-sub-test-mOpDe
test(quartz): make repeat-sub test tolerant of resub timing race
This commit is contained in:
+15
-8
@@ -128,17 +128,24 @@ class NostrClientRepeatSubTest : RelayClientTest() {
|
||||
client.unsubscribe(mySubId)
|
||||
client.removeConnectionListener(listener)
|
||||
|
||||
// The relay may return up to limit events before EOSE; some relays return
|
||||
// one extra past the requested limit, so don't assert on the exact count.
|
||||
// The split between the three subscriptions is inherently racy:
|
||||
// the consumer fires resub1 (filtersShouldIgnore) at events.size==1
|
||||
// and resub2 (filtersShouldSendAfterEOSE) at events.size==5, but
|
||||
// those four receive() calls give resub1 enough wall-clock time on
|
||||
// a slow machine to actually reach the relay and start streaming
|
||||
// events before resub2 replaces it. Verify only the structural
|
||||
// invariants: two EOSEs, the loop stopped on the second one, and
|
||||
// every non-EOSE entry is a valid 64-char event id.
|
||||
val firstEose = events.indexOf("EOSE")
|
||||
val lastEose = events.lastIndexOf("EOSE")
|
||||
val eoseCount = events.count { it == "EOSE" }
|
||||
|
||||
assertEquals(true, firstEose >= 0)
|
||||
assertEquals(true, lastEose > firstEose)
|
||||
assertEquals(2, eoseCount)
|
||||
assertEquals(events.size - 1, lastEose)
|
||||
assertEquals(true, firstEose in 1..101)
|
||||
assertEquals(true, (lastEose - firstEose - 1) in 1..11)
|
||||
assertEquals(true, events.take(firstEose).all { it.length == 64 })
|
||||
assertEquals(true, events.subList(firstEose + 1, lastEose).all { it.length == 64 })
|
||||
assertEquals(true, firstEose in 0 until lastEose)
|
||||
assertEquals(true, events.filter { it != "EOSE" }.all { it.length == 64 })
|
||||
// Upper bound: original (100) + filtersShouldIgnore (50) + filtersShouldSendAfterEOSE (10) + 2 EOSEs,
|
||||
// plus a small allowance for relays that overshoot their limit by one.
|
||||
assertEquals(true, events.size <= 165)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user