Skip to content

Commit fb44e2b

Browse files
fix: added 2 more tests
Signed-off-by: Matt Peterson <matt.peterson@swirldslabs.com>
1 parent a08c333 commit fb44e2b

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

server/src/test/java/com/hedera/block/server/BlockStreamServiceTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.hedera.block.protos.BlockStreamService.*;
2020
import static com.hedera.block.server.BlockStreamService.buildSingleBlockNotAvailableResponse;
2121
import static com.hedera.block.server.BlockStreamService.buildSingleBlockNotFoundResponse;
22+
import static com.hedera.block.server.Constants.*;
2223
import static com.hedera.block.server.util.PersistTestUtils.generateBlockItems;
2324
import static org.junit.jupiter.api.Assertions.assertEquals;
2425
import static org.junit.jupiter.api.Assertions.fail;
@@ -36,6 +37,7 @@
3637
import com.hedera.block.server.persistence.storage.BlockWriter;
3738
import com.hedera.block.server.producer.ItemAckBuilder;
3839
import com.hedera.block.server.util.TestUtils;
40+
import io.grpc.stub.ServerCalls;
3941
import io.grpc.stub.StreamObserver;
4042
import io.helidon.config.Config;
4143
import io.helidon.config.MapConfigSource;
@@ -47,6 +49,10 @@
4749
import java.util.List;
4850
import java.util.Map;
4951
import java.util.Optional;
52+
import java.util.function.BiConsumer;
53+
54+
import io.helidon.webserver.Routing;
55+
import io.helidon.webserver.grpc.GrpcService;
5056
import org.junit.jupiter.api.AfterEach;
5157
import org.junit.jupiter.api.BeforeEach;
5258
import org.junit.jupiter.api.Test;
@@ -246,6 +252,25 @@ public void testSingleBlockIOExceptionPath() throws IOException {
246252
verify(responseObserver, times(1)).onNext(expectedNotAvailable);
247253
}
248254

255+
@Test
256+
public void testUpdateInvokesRoutingWithLambdas() {
257+
258+
final BlockStreamService blockStreamService =
259+
new BlockStreamService(
260+
TIMEOUT_THRESHOLD_MILLIS,
261+
itemAckBuilder,
262+
streamMediator,
263+
blockPersistenceHandler,
264+
serviceStatus);
265+
266+
GrpcService.Routing routing = mock(GrpcService.Routing.class);
267+
blockStreamService.update(routing);
268+
269+
verify(routing, timeout(50).times(1)).bidi(eq(CLIENT_STREAMING_METHOD_NAME), any(ServerCalls.BidiStreamingMethod.class));
270+
verify(routing, timeout(50).times(1)).serverStream(eq(SERVER_STREAMING_METHOD_NAME), any(ServerCalls.ServerStreamingMethod.class));
271+
verify(routing, timeout(50).times(1)).unary(eq(SINGLE_BLOCK_METHOD_NAME), any(ServerCalls.UnaryMethod.class));
272+
}
273+
249274
private BlockPersistenceHandler<BlockItem, Block> buildBlockPersistenceHandler()
250275
throws IOException {
251276
BlockReader<Block> blockReader = new BlockAsDirReader(JUNIT, testConfig);

server/src/test/java/com/hedera/block/server/mediator/LiveStreamMediatorImplTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,26 @@ public void testMediatorBlocksPublishAfterException() throws IOException, Interr
295295
}
296296
}
297297

298+
@Test
299+
public void testUnsubscribeWhenNotSubscribed() {
300+
final var streamMediator = new LiveStreamMediatorImpl(blockPersistenceHandler);
301+
final var testConsumerBlockItemObserver =
302+
new TestConsumerBlockItemObserver(
303+
TIMEOUT_THRESHOLD_MILLIS,
304+
testClock,
305+
streamMediator,
306+
serverCallStreamObserver);
307+
308+
// Confirm the observer is not subscribed
309+
assertFalse(streamMediator.isSubscribed(testConsumerBlockItemObserver));
310+
311+
// Attempt to unsubscribe the observer
312+
streamMediator.unsubscribe(testConsumerBlockItemObserver);
313+
314+
// Confirm the observer is still not subscribed
315+
assertFalse(streamMediator.isSubscribed(testConsumerBlockItemObserver));
316+
}
317+
298318
private static class TestConsumerBlockItemObserver extends ConsumerBlockItemObserver {
299319
public TestConsumerBlockItemObserver(
300320
long timeoutThresholdMillis,

0 commit comments

Comments
 (0)