Skip to content

Commit 2529488

Browse files
fix: replaced lock
Signed-off-by: Matt Peterson <matt.peterson@swirldslabs.com>
1 parent d9db451 commit 2529488

File tree

1 file changed

+20
-36
lines changed

1 file changed

+20
-36
lines changed

server/src/test/java/com/hedera/block/server/producer/ProducerBlockItemObserverTest.java

Lines changed: 20 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@
4747
@ExtendWith(MockitoExtension.class)
4848
public class ProducerBlockItemObserverTest {
4949

50-
private final Object lock = new Object();
51-
5250
@Mock private ItemAckBuilder itemAckBuilder;
5351
@Mock private StreamMediator<BlockItem, ObjectEvent<SubscribeStreamResponse>> streamMediator;
5452
@Mock private StreamObserver<PublishStreamResponse> publishStreamResponseObserver;
@@ -63,11 +61,10 @@ public class ProducerBlockItemObserverTest {
6361
@Mock private ServiceStatus serviceStatus;
6462

6563
@Test
66-
public void testProducerOnNext()
67-
throws InterruptedException, IOException, NoSuchAlgorithmException {
64+
public void testProducerOnNext() throws IOException, NoSuchAlgorithmException {
6865

69-
List<BlockItem> blockItems = generateBlockItems(1);
70-
ProducerBlockItemObserver producerBlockItemObserver =
66+
final List<BlockItem> blockItems = generateBlockItems(1);
67+
final ProducerBlockItemObserver producerBlockItemObserver =
7168
new ProducerBlockItemObserver(
7269
streamMediator,
7370
publishStreamResponseObserver,
@@ -76,16 +73,12 @@ public void testProducerOnNext()
7673

7774
when(serviceStatus.isRunning()).thenReturn(true);
7875

79-
BlockItem blockHeader = blockItems.getFirst();
80-
PublishStreamRequest publishStreamRequest =
76+
final BlockItem blockHeader = blockItems.getFirst();
77+
final PublishStreamRequest publishStreamRequest =
8178
PublishStreamRequest.newBuilder().setBlockItem(blockHeader).build();
8279
producerBlockItemObserver.onNext(publishStreamRequest);
8380

84-
synchronized (lock) {
85-
lock.wait(50);
86-
}
87-
88-
verify(streamMediator, times(1)).publishEvent(blockHeader);
81+
verify(streamMediator, timeout(50).times(1)).publishEvent(blockHeader);
8982

9083
final ItemAcknowledgement itemAck =
9184
ItemAcknowledgement.newBuilder()
@@ -95,12 +88,12 @@ public void testProducerOnNext()
9588
BlockStreamService.PublishStreamResponse.newBuilder()
9689
.setAcknowledgement(itemAck)
9790
.build();
98-
verify(publishStreamResponseObserver, times(1)).onNext(publishStreamResponse);
91+
verify(publishStreamResponseObserver, timeout(50).times(1)).onNext(publishStreamResponse);
9992

10093
// Helidon will call onCompleted after onNext
10194
producerBlockItemObserver.onCompleted();
10295

103-
verify(publishStreamResponseObserver, times(1)).onCompleted();
96+
verify(publishStreamResponseObserver, timeout(50).times(1)).onCompleted();
10497
}
10598

10699
@Test
@@ -160,18 +153,14 @@ public void testProducerToManyConsumers() throws IOException, InterruptedExcepti
160153
new ItemAckBuilder(),
161154
serviceStatus);
162155

163-
PublishStreamRequest publishStreamRequest =
156+
final PublishStreamRequest publishStreamRequest =
164157
PublishStreamRequest.newBuilder().setBlockItem(blockItem).build();
165158
producerBlockItemObserver.onNext(publishStreamRequest);
166159

167-
synchronized (lock) {
168-
lock.wait(50);
169-
}
170-
171160
// Confirm each subscriber was notified of the new block
172-
verify(streamObserver1, times(1)).onNext(subscribeStreamResponse);
173-
verify(streamObserver2, times(1)).onNext(subscribeStreamResponse);
174-
verify(streamObserver3, times(1)).onNext(subscribeStreamResponse);
161+
verify(streamObserver1, timeout(50).times(1)).onNext(subscribeStreamResponse);
162+
verify(streamObserver2, timeout(50).times(1)).onNext(subscribeStreamResponse);
163+
verify(streamObserver3, timeout(50).times(1)).onNext(subscribeStreamResponse);
175164

176165
// Confirm the BlockStorage write method was
177166
// called despite the absence of subscribers
@@ -180,23 +169,22 @@ public void testProducerToManyConsumers() throws IOException, InterruptedExcepti
180169

181170
@Test
182171
public void testOnError() {
183-
ProducerBlockItemObserver producerBlockItemObserver =
172+
final ProducerBlockItemObserver producerBlockItemObserver =
184173
new ProducerBlockItemObserver(
185174
streamMediator,
186175
publishStreamResponseObserver,
187176
new ItemAckBuilder(),
188177
serviceStatus);
189178

190-
Throwable t = new Throwable("Test error");
179+
final Throwable t = new Throwable("Test error");
191180
producerBlockItemObserver.onError(t);
192181
verify(publishStreamResponseObserver).onError(t);
193182
}
194183

195184
@Test
196-
public void testItemAckBuilderExceptionTest()
197-
throws InterruptedException, IOException, NoSuchAlgorithmException {
185+
public void testItemAckBuilderExceptionTest() throws IOException, NoSuchAlgorithmException {
198186

199-
ProducerBlockItemObserver producerBlockItemObserver =
187+
final ProducerBlockItemObserver producerBlockItemObserver =
200188
new ProducerBlockItemObserver(
201189
streamMediator,
202190
publishStreamResponseObserver,
@@ -207,16 +195,12 @@ public void testItemAckBuilderExceptionTest()
207195
when(itemAckBuilder.buildAck(any()))
208196
.thenThrow(new NoSuchAlgorithmException("Test exception"));
209197

210-
List<BlockItem> blockItems = generateBlockItems(1);
211-
BlockItem blockHeader = blockItems.getFirst();
212-
PublishStreamRequest publishStreamRequest =
198+
final List<BlockItem> blockItems = generateBlockItems(1);
199+
final BlockItem blockHeader = blockItems.getFirst();
200+
final PublishStreamRequest publishStreamRequest =
213201
PublishStreamRequest.newBuilder().setBlockItem(blockHeader).build();
214202
producerBlockItemObserver.onNext(publishStreamRequest);
215203

216-
synchronized (lock) {
217-
lock.wait(50);
218-
}
219-
220204
final PublishStreamResponse.EndOfStream endOfStream =
221205
PublishStreamResponse.EndOfStream.newBuilder()
222206
.setStatus(
@@ -225,6 +209,6 @@ public void testItemAckBuilderExceptionTest()
225209
.build();
226210
final PublishStreamResponse errorResponse =
227211
PublishStreamResponse.newBuilder().setStatus(endOfStream).build();
228-
verify(publishStreamResponseObserver, times(1)).onNext(errorResponse);
212+
verify(publishStreamResponseObserver, timeout(50).times(1)).onNext(errorResponse);
229213
}
230214
}

0 commit comments

Comments
 (0)