private Map<Segment, Long> getOffsetMap(List<String> scopes, List<String> streams, long offset) { Map<Segment, Long> offsetMap = new HashMap<>(); scopes.forEach(scope -> streams.forEach(stream -> offsetMap.put(new Segment(scope, stream, 0), offset))); return offsetMap; }
MockEventRead(long position, T value) { this.value = value; Segment segment = new Segment(SCOPE, STREAM_NAME, 0); this.position = new PositionImpl(Collections.singletonMap(segment, position)); }
private StreamCut getStreamCut(String streamName, int...segments) { ImmutableMap.Builder<Segment, Long> builder = ImmutableMap.<Segment, Long>builder(); Arrays.stream(segments).forEach(seg -> builder.put(new Segment(SCOPE, streamName, seg), 10L)); return new StreamCutImpl(Stream.of(SCOPE, streamName), builder.build()); }
private StreamCut getStreamCut(String streamName, long offset, int... segmentNumbers) { ImmutableMap.Builder<Segment, Long> builder = ImmutableMap.<Segment, Long>builder(); Arrays.stream(segmentNumbers).forEach(seg -> { builder.put(new Segment(SCOPE, streamName, seg), offset); }); return new StreamCutImpl(Stream.of(SCOPE, streamName), builder.build()); } }
private StreamCut getStreamCut(String streamName, long offset, int... segmentNumbers) { ImmutableMap.Builder<Segment, Long> builder = ImmutableMap.<Segment, Long>builder(); Arrays.stream(segmentNumbers).forEach(seg -> { builder.put(new Segment("unreadbytes", streamName, seg), offset); }); return new StreamCutImpl(Stream.of("unreadbytes", streamName), builder.build()); } }
private StreamCut getStreamCut(String streamName, long offset, int... segmentNumbers) { ImmutableMap.Builder<Segment, Long> builder = ImmutableMap.<Segment, Long>builder(); Arrays.stream(segmentNumbers).forEach(seg -> { builder.put(new Segment(SCOPE, streamName, seg), offset); }); return new StreamCutImpl(Stream.of(SCOPE, streamName), builder.build()); }
/** * Helper to convert Segment Id into Segment object. * * @param segment The Segment Id. * @return New instance of Segment. */ public static final Segment encode(final SegmentId segment) { Preconditions.checkNotNull(segment, "segment"); return new Segment(segment.getStreamInfo().getScope(), segment.getStreamInfo().getStream(), segment.getSegmentId()); }
private StreamCut createStreamCut(String streamName, int numberOfSegments) { Map<Segment, Long> positions = new HashMap<>(); IntStream.of(numberOfSegments).forEach(segNum -> positions.put(new Segment(SCOPE, streamName, segNum), 10L)); return new StreamCutImpl(createStream(streamName), positions); }
private StreamCut getStreamCut(long offset, int... segments) { final Map<Segment, Long> positionMap = Arrays.stream(segments).boxed() .collect(Collectors.toMap(s -> new Segment("scope", STREAM, s), s -> offset)); return new StreamCutImpl(Stream.of("scope", STREAM), positionMap); } }
private StreamCut getStreamCut(String streamName, long offset) { ImmutableMap<Segment, Long> positions = ImmutableMap.<Segment, Long>builder().put(new Segment(SCOPE, streamName, 0), offset).build(); return new StreamCutImpl(Stream.of(SCOPE, streamName), positions); } }
private StreamCut getStreamCut(long offset, int... segmentNumbers) { ImmutableMap.Builder<Segment, Long> segmentMap = ImmutableMap.builder(); Arrays.stream(segmentNumbers).forEach( seg -> segmentMap.put(new Segment(SCOPE, STREAM_NAME, seg), offset)); return new StreamCutImpl(new StreamImpl(SCOPE, STREAM_NAME), segmentMap.build()); } }
private StreamSegments getCurrentSegments(Stream stream) { List<Segment> segmentsInStream = getSegmentsForStream(stream); TreeMap<Double, SegmentWithRange> segments = new TreeMap<>(); double increment = 1.0 / segmentsInStream.size(); for (int i = 0; i < segmentsInStream.size(); i++) { segments.put((i + 1) * increment, new SegmentWithRange(new Segment(stream.getScope(), stream.getStreamName(), i), i * increment, (i + 1) * increment)); } return new StreamSegments(segments, ""); }
@Test public void testIsSegmentValid() throws Exception { CompletableFuture<Boolean> segmentOpen; segmentOpen = controllerClient.isSegmentOpen(new Segment("scope1", "stream1", 0)); assertTrue(segmentOpen.get()); segmentOpen = controllerClient.isSegmentOpen(new Segment("scope1", "stream2", 0)); assertFalse(segmentOpen.get()); segmentOpen = controllerClient.isSegmentOpen(new Segment("scope1", "stream3", 0)); AssertExtensions.assertFutureThrows("Should throw Exception", segmentOpen, throwable -> true); }
@Test public void testGetSegmentsAtTime() throws Exception { CompletableFuture<Map<Segment, Long>> positions; positions = controllerClient.getSegmentsAtTime(new StreamImpl("scope1", "stream1"), 0); assertEquals(2, positions.get().size()); assertEquals(10, positions.get().get(new Segment("scope1", "stream1", 0)).longValue()); assertEquals(20, positions.get().get(new Segment("scope1", "stream1", 1)).longValue()); positions = controllerClient.getSegmentsAtTime(new StreamImpl("scope1", "stream2"), 0); AssertExtensions.assertFutureThrows("Should throw Exception", positions, throwable -> true); }
@Test @SuppressWarnings("unchecked") public void resetReadersToCheckpoint() { Map<Segment, Long> positions = new HashMap<>(); IntStream.of(2).forEach(segNum -> positions.put(new Segment(SCOPE, "s1", segNum), 10L)); Checkpoint checkpoint = new CheckpointImpl("testChkPoint", positions); readerGroup.resetReaderGroup(ReaderGroupConfig.builder().startFromCheckpoint(checkpoint).build()); verify(synchronizer, times(1)).updateStateUnconditionally(any(Update.class)); }
@Test public void testGetCurrentSegments() throws Exception { CompletableFuture<StreamSegments> streamSegments; streamSegments = controllerClient.getCurrentSegments("scope1", "stream1"); assertTrue(streamSegments.get().getSegments().size() == 2); assertEquals(new Segment("scope1", "stream1", 6), streamSegments.get().getSegmentForKey(0.2)); assertEquals(new Segment("scope1", "stream1", 7), streamSegments.get().getSegmentForKey(0.6)); streamSegments = controllerClient.getCurrentSegments("scope1", "stream2"); AssertExtensions.assertFutureThrows("Should throw Exception", streamSegments, throwable -> true); }
private void read00(RevisionDataInput revisionDataInput, StreamCutBuilder builder) throws IOException { Stream stream = Stream.of(revisionDataInput.readUTF()); builder.stream(stream); Map<Segment, Long> map = revisionDataInput.readMap(in -> new Segment(stream.getScope(), stream.getStreamName(), in.readCompactLong()), in -> in.readCompactLong()); builder.positions(map); }
@Test(expected = IllegalStateException.class) public void testInvalidSegmentRange() { //StartOffset > endOffset. SegmentRangeImpl.builder().endOffset(10L).startOffset(20L) .segment(new Segment("scope", "stream", 1)).build(); }
@Test public void testClose() throws SegmentSealedException { MockConnectionFactoryImpl connectionFactory = new MockConnectionFactoryImpl(); MockController controller = new MockController("localhost", 0, connectionFactory); ConditionalOutputStreamFactory factory = new ConditionalOutputStreamFactoryImpl(controller, connectionFactory); Segment segment = new Segment("scope", "testWrite", 1); ConditionalOutputStream cOut = factory.createConditionalOutputStream(segment, "token", EventWriterConfig.builder().build()); cOut.close(); AssertExtensions.assertThrows(IllegalStateException.class, () -> cOut.write(ByteBuffer.allocate(0), 0)); }
@Test public void testValid() { SegmentRange segmentRange = SegmentRangeImpl.builder().endOffset(20L).segment(new Segment("scope", "stream", 0)).build(); assertEquals(0L, segmentRange.getStartOffset()); assertEquals(20L, segmentRange.getEndOffset()); assertEquals(new Segment("scope", "stream", 0), ((SegmentRangeImpl) segmentRange).getSegment()); assertEquals("scope", segmentRange.getScope()); assertEquals("stream", segmentRange.getStreamName()); } }