Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,13 @@ public void testFullInboxDropsOldestAndCounts() throws Exception {
// Spec sf-client.md section 14.6: on overflow, drop the OLDEST entry
// and admit the new one. The latest entry is always the most
// informative, so the FIFO head loses, not the new arrival.
CountDownLatch handlerEntered = new CountDownLatch(1);
CountDownLatch unblock = new CountDownLatch(1);
List<SenderError> received = new ArrayList<>();
Object lock = new Object();
CountDownLatch allDelivered = new CountDownLatch(5);
try (SenderErrorDispatcher d = new SenderErrorDispatcher(err -> {
handlerEntered.countDown();
try {
unblock.await();
} catch (InterruptedException ignored) {
Expand All @@ -116,13 +118,12 @@ public void testFullInboxDropsOldestAndCounts() throws Exception {
}
allDelivered.countDown();
}, /*capacity=*/ 4)) {
// First offer starts the dispatcher and lands in the handler
// immediately (and blocks there). Now we can fill the bounded
// inbox to capacity, then overflow.
// First offer starts the dispatcher. Wait until it lands in the
// handler and blocks there before filling the bounded inbox and
// overflowing it.
Assert.assertTrue(d.offer(buildError(0)));
// Give the dispatcher a moment to take the head into the
// handler so subsequent offers don't get an extra slot.
TimeUnit.MILLISECONDS.sleep(50);
Assert.assertTrue("first error should reach handler within 5s",
handlerEntered.await(5, TimeUnit.SECONDS));
for (int i = 1; i <= 4; i++) {
Assert.assertTrue("inbox should accept offer " + i,
d.offer(buildError(i)));
Expand Down
Loading