16
16
17
17
package com .hedera .block .server .consumer ;
18
18
19
- import static com .hedera .block .protos .BlockStreamService .BlockItem ;
20
- import static com .hedera .block .protos .BlockStreamService .SubscribeStreamRequest ;
21
-
19
+ import com .hedera .block .server .data .ObjectEvent ;
22
20
import com .hedera .block .server .mediator .StreamMediator ;
23
21
import io .grpc .stub .StreamObserver ;
24
- import java .time .Instant ;
25
- import java .time .InstantSource ;
22
+ import org .junit .jupiter .api .Test ;
26
23
import org .junit .jupiter .api .extension .ExtendWith ;
27
24
import org .mockito .Mock ;
28
25
import org .mockito .junit .jupiter .MockitoExtension ;
29
26
27
+ import java .time .Instant ;
28
+ import java .time .InstantSource ;
29
+
30
+ import static com .hedera .block .protos .BlockStreamService .BlockItem ;
31
+ import static com .hedera .block .protos .BlockStreamService .SubscribeStreamResponse ;
32
+ import static org .mockito .Mockito .*;
33
+
30
34
@ ExtendWith (MockitoExtension .class )
31
35
public class LiveStreamObserverImplTest {
32
36
33
37
private final long TIMEOUT_THRESHOLD_MILLIS = 50L ;
34
38
private final long TEST_TIME = 1_719_427_664_950L ;
35
39
36
- @ Mock private StreamMediator <BlockItem , SubscribeStreamRequest > streamMediator ;
37
-
38
- @ Mock private StreamObserver <BlockItem > responseStreamObserver ;
40
+ @ Mock private StreamMediator <ObjectEvent <BlockItem >, BlockItem > streamMediator ;
41
+
42
+ @ Mock private StreamObserver <SubscribeStreamResponse > responseStreamObserver ;
43
+
44
+ @ Mock private ObjectEvent <BlockItem > objectEvent ;
45
+
46
+ // @Test
47
+ // public void testConsumerTimeoutWithinWindow() {
48
+ // final var consumerBlockItemObserver =
49
+ // new ConsumerBlockItemObserver(
50
+ // TIMEOUT_THRESHOLD_MILLIS,
51
+ // buildClockInsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
52
+ // streamMediator,
53
+ // responseStreamObserver);
54
+ //
55
+ // final BlockItem blockItem = BlockItem.newBuilder().build();
56
+ // when(objectEvent.get()).thenReturn(blockItem);
57
+ //
58
+ // final SubscribeStreamResponse subscribeStreamResponse =
59
+ // SubscribeStreamResponse.newBuilder().setBlockItem(blockItem).build();
60
+ //
61
+ // consumerBlockItemObserver.onEvent(objectEvent, 0, true);
62
+ //
63
+ // // verify the observer is called with the next
64
+ // // block and the stream mediator is not unsubscribed
65
+ // verify(responseStreamObserver).onNext(subscribeStreamResponse);
66
+ // verify(streamMediator, never()).unsubscribe(consumerBlockItemObserver);
67
+ // }
68
+
69
+ @ Test
70
+ public void testConsumerTimeoutOutsideWindow () {
71
+
72
+ final var consumerBlockItemObserver =
73
+ new ConsumerBlockItemObserver (
74
+ TIMEOUT_THRESHOLD_MILLIS ,
75
+ buildClockOutsideWindow (TEST_TIME , TIMEOUT_THRESHOLD_MILLIS ),
76
+ streamMediator ,
77
+ responseStreamObserver );
78
+
79
+ consumerBlockItemObserver .onEvent (objectEvent , 1 , true );
80
+ verify (streamMediator ).unsubscribe (consumerBlockItemObserver );
81
+ }
39
82
40
- // @Test
41
- // public void testConsumerTimeoutWithinWindow() {
42
- // final LiveStreamObserver<BlockStreamServiceGrpcProto.Block,
43
- // BlockStreamServiceGrpcProto.BlockResponse> liveStreamObserver = new LiveStreamObserverImpl(
44
- // TIMEOUT_THRESHOLD_MILLIS,
45
- // buildClockInsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
46
- // buildClockInsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
47
- // streamMediator,
48
- // responseStreamObserver);
49
- // BlockStreamServiceGrpcProto.Block newBlock =
50
- // BlockStreamServiceGrpcProto.Block.newBuilder().build();
51
- // liveStreamObserver.notify(newBlock);
52
- //
53
- // // verify the observer is called with the next
54
- // // block and the stream mediator is not unsubscribed
55
- // verify(responseStreamObserver).onNext(newBlock);
56
- // verify(streamMediator, never()).unsubscribe(liveStreamObserver);
57
- // }
58
- //
59
- // @Test
60
- // public void testConsumerTimeoutOutsideWindow() throws InterruptedException {
61
- //
62
- // final LiveStreamObserver<BlockStreamServiceGrpcProto.Block,
63
- // BlockStreamServiceGrpcProto.BlockResponse> liveStreamObserver = new LiveStreamObserverImpl(
64
- // TIMEOUT_THRESHOLD_MILLIS,
65
- // buildClockOutsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
66
- // buildClockOutsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
67
- // streamMediator,
68
- // responseStreamObserver);
69
- //
70
- // final BlockStreamServiceGrpcProto.Block newBlock =
71
- // BlockStreamServiceGrpcProto.Block.newBuilder().build();
72
- // when(streamMediator.isSubscribed(liveStreamObserver)).thenReturn(true);
73
- // liveStreamObserver.notify(newBlock);
74
- // verify(streamMediator).unsubscribe(liveStreamObserver);
75
- // }
76
- //
77
83
// @Test
78
84
// public void testProducerTimeoutWithinWindow() {
79
85
// final LiveStreamObserver<BlockStreamServiceGrpcProto.Block,
@@ -92,23 +98,19 @@ public class LiveStreamObserverImplTest {
92
98
// verify(streamMediator, never()).unsubscribe(liveStreamObserver);
93
99
// }
94
100
//
95
- // @Test
96
- // public void testProducerTimeoutOutsideWindow() throws InterruptedException {
97
- // final LiveStreamObserver<BlockStreamServiceGrpcProto.Block,
98
- // BlockStreamServiceGrpcProto.BlockResponse> liveStreamObserver = new LiveStreamObserverImpl(
99
- // TIMEOUT_THRESHOLD_MILLIS,
100
- // buildClockOutsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
101
- // buildClockOutsideWindow(TEST_TIME, TIMEOUT_THRESHOLD_MILLIS),
102
- // streamMediator,
103
- // responseStreamObserver);
104
- //
105
- // Thread.sleep(51);
106
- // BlockStreamServiceGrpcProto.BlockResponse blockResponse =
107
- // BlockStreamServiceGrpcProto.BlockResponse.newBuilder().build();
108
- // liveStreamObserver.onNext(blockResponse);
109
- //
110
- // verify(streamMediator).unsubscribe(liveStreamObserver);
111
- // }
101
+ @ Test
102
+ public void testProducerTimeoutOutsideWindow () throws InterruptedException {
103
+ final var consumerBlockItemObserver = new ConsumerBlockItemObserver (
104
+ TIMEOUT_THRESHOLD_MILLIS ,
105
+ buildClockOutsideWindow (TEST_TIME , TIMEOUT_THRESHOLD_MILLIS ),
106
+ streamMediator ,
107
+ responseStreamObserver );
108
+
109
+ Thread .sleep (51 );
110
+
111
+ consumerBlockItemObserver .onEvent (objectEvent , 0 , true );
112
+ verify (streamMediator ).unsubscribe (consumerBlockItemObserver );
113
+ }
112
114
113
115
private static InstantSource buildClockInsideWindow (
114
116
long testTime , long timeoutThresholdMillis ) {
0 commit comments