Overrode SingleStreamTracker#orphanedInitialPositionInStream() to
match that of the provided `StreamConfig`.
This commit is contained in:
parent
eccd6cf2e7
commit
ce2604e58e
3 changed files with 32 additions and 2 deletions
|
|
@ -27,5 +27,3 @@ public class StreamConfig {
|
|||
private final InitialPositionInStreamExtended initialPositionInStreamExtended;
|
||||
private String consumerArn;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,14 @@ public class SingleStreamTracker implements StreamTracker {
|
|||
|
||||
private final List<StreamConfig> streamConfigs;
|
||||
|
||||
/**
|
||||
* Cached reference to {@link StreamConfig#initialPositionInStreamExtended()}
|
||||
* to avoid unnecessary getter invocations.
|
||||
*/
|
||||
@EqualsAndHashCode.Exclude
|
||||
@ToString.Exclude
|
||||
private final InitialPositionInStreamExtended initialPositionInStream;
|
||||
|
||||
public SingleStreamTracker(String streamName) {
|
||||
this(StreamIdentifier.singleStreamInstance(streamName));
|
||||
}
|
||||
|
|
@ -72,6 +80,7 @@ public class SingleStreamTracker implements StreamTracker {
|
|||
public SingleStreamTracker(@NonNull StreamIdentifier streamIdentifier, @NonNull StreamConfig streamConfig) {
|
||||
this.streamIdentifier = streamIdentifier;
|
||||
this.streamConfigs = Collections.singletonList(streamConfig);
|
||||
this.initialPositionInStream = streamConfig.initialPositionInStreamExtended();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -84,6 +93,11 @@ public class SingleStreamTracker implements StreamTracker {
|
|||
return NO_LEASE_DELETION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InitialPositionInStreamExtended orphanedStreamInitialPositionInStream() {
|
||||
return initialPositionInStream;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMultiStream() {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
package software.amazon.kinesis.processor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
|
|
@ -48,6 +50,22 @@ public class SingleStreamTrackerTest {
|
|||
validate(tracker, expectedPosition);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConsistencyOfInitialPositionInStream() {
|
||||
for (final InitialPositionInStream position : InitialPositionInStream.values()) {
|
||||
final InitialPositionInStreamExtended expectedPosition;
|
||||
if (position == InitialPositionInStream.AT_TIMESTAMP) {
|
||||
expectedPosition = InitialPositionInStreamExtended.newInitialPositionAtTimestamp(new Date());
|
||||
} else {
|
||||
expectedPosition = InitialPositionInStreamExtended.newInitialPosition(position);
|
||||
}
|
||||
|
||||
final StreamTracker tracker = new SingleStreamTracker(STREAM_NAME, expectedPosition);
|
||||
|
||||
assertEquals(expectedPosition, tracker.orphanedStreamInitialPositionInStream());
|
||||
}
|
||||
}
|
||||
|
||||
private static void validate(StreamTracker tracker) {
|
||||
validate(tracker, StreamTracker.DEFAULT_POSITION_IN_STREAM);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue