mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-19 19:48:04 +01:00
Add a (failing!) test for dropped errors during WebSocketConnectionTest
This commit is contained in:
committed by
Jon Chambers
parent
470e17963a
commit
fc8d180f7c
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.whispersystems.textsecuregcm.websocket;
|
package org.whispersystems.textsecuregcm.websocket;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.mockito.ArgumentMatchers.anyList;
|
import static org.mockito.ArgumentMatchers.anyList;
|
||||||
import static org.mockito.ArgumentMatchers.argThat;
|
import static org.mockito.ArgumentMatchers.argThat;
|
||||||
@@ -32,7 +33,10 @@ import java.util.UUID;
|
|||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
@@ -57,6 +61,7 @@ import org.whispersystems.websocket.WebSocketClient;
|
|||||||
import org.whispersystems.websocket.messages.WebSocketResponseMessage;
|
import org.whispersystems.websocket.messages.WebSocketResponseMessage;
|
||||||
import reactor.adapter.JdkFlowAdapter;
|
import reactor.adapter.JdkFlowAdapter;
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
|
import reactor.core.publisher.Hooks;
|
||||||
import reactor.core.scheduler.Scheduler;
|
import reactor.core.scheduler.Scheduler;
|
||||||
import reactor.core.scheduler.Schedulers;
|
import reactor.core.scheduler.Schedulers;
|
||||||
import reactor.test.StepVerifier;
|
import reactor.test.StepVerifier;
|
||||||
@@ -79,20 +84,37 @@ class WebSocketConnectionTest {
|
|||||||
|
|
||||||
private static final int SOURCE_DEVICE_ID = 1;
|
private static final int SOURCE_DEVICE_ID = 1;
|
||||||
|
|
||||||
|
private static final AtomicInteger ON_ERROR_DROPPED_COUNTER = new AtomicInteger();
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void setUpBeforeAll() {
|
||||||
|
Hooks.onErrorDropped(_ -> ON_ERROR_DROPPED_COUNTER.incrementAndGet());
|
||||||
|
}
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() {
|
void setUp() {
|
||||||
account = mock(Account.class);
|
account = mock(Account.class);
|
||||||
device = mock(Device.class);
|
device = mock(Device.class);
|
||||||
messagesManager = mock(MessagesManager.class);
|
messagesManager = mock(MessagesManager.class);
|
||||||
receiptSender = mock(ReceiptSender.class);
|
receiptSender = mock(ReceiptSender.class);
|
||||||
messageDeliveryScheduler = Schedulers.newBoundedElastic(10, 10_000, "messageDelivery");
|
messageDeliveryScheduler = Schedulers.newBoundedElastic(10, 10_000, "messageDelivery");
|
||||||
clientReleaseManager = mock(ClientReleaseManager.class);
|
clientReleaseManager = mock(ClientReleaseManager.class);
|
||||||
|
|
||||||
|
ON_ERROR_DROPPED_COUNTER.set(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
void teardown() {
|
void tearDown() {
|
||||||
StepVerifier.resetDefaultTimeout();
|
StepVerifier.resetDefaultTimeout();
|
||||||
messageDeliveryScheduler.dispose();
|
messageDeliveryScheduler.dispose();
|
||||||
|
|
||||||
|
assertEquals(0, ON_ERROR_DROPPED_COUNTER.get(),
|
||||||
|
"Errors dropped during test");
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void tearDownAfterAll() {
|
||||||
|
Hooks.resetOnErrorDropped();
|
||||||
}
|
}
|
||||||
|
|
||||||
private WebSocketConnection buildWebSocketConnection(final WebSocketClient client) {
|
private WebSocketConnection buildWebSocketConnection(final WebSocketClient client) {
|
||||||
|
|||||||
Reference in New Issue
Block a user