@NotNull DocumentContext readingDocument(boolean includeMetaData);
@Override public DocumentContext apply(final ExcerptTailer excerptTailer) { final DocumentContext documentContext = excerptTailer.readingDocument(); if (!documentContext.isPresent()) { invocationCount++; if (invocationCount >= maxPollsReturningEmptyDocument) { throw new ArithmeticException("For testing purposes"); } } return documentContext; } }
@NotNull private List<Integer> fillResults(@NotNull ExcerptTailer tailer, @NotNull List<Integer> results) { for (int i = 0; i < 10; i++) { try (DocumentContext documentContext = tailer.readingDocument()) { if (!documentContext.isPresent()) break; results.add(documentContext.wire().read(() -> "msg").int32()); } } return results; }
private void testQueue(@NotNull ChronicleQueue queue) { @NotNull ExcerptTailer tailer = queue.createTailer(); try (DocumentContext dc = tailer.readingDocument()) { assertFalse(dc.isPresent()); } }
public int fetchOneMessage(@NotNull ExcerptTailer tailer, @NotNull byte[] using) { try (DocumentContext dc = tailer.readingDocument()) { return !dc.isPresent() ? -1 : dc.wire().bytes().read(using); } }
private static Data read(final ExcerptTailer tailer) throws Exception { try (final DocumentContext dc = tailer.readingDocument()) { if (!dc.isPresent()) { return null; } final ObjectInput in = dc.wire().objectInput(); return new Data(in.readInt()); } }
private String read(ExcerptTailer tailer) { if (tailer.peekDocument() || firstMessage) { try (DocumentContext dc = tailer.readingDocument(false)) { if (dc.isPresent()) { firstMessage = false; String text = dc.wire().asText().toString(); return text; } } } return null; } }
@Test public void shouldDetermineQueueDirectoryFromQueueFile() { final Path path = Paths.get(OS.USER_DIR, TEST_QUEUE_FILE); try (final ChronicleQueue queue = ChronicleQueue.singleBuilder(path) .testBlockSize() .build()) { assertThat(queue.createTailer().readingDocument().isPresent(), is(false)); } finally { IOTools.deleteDirWithFiles(path.toFile(), 20); } }
private static void expected(@NotNull ExcerptTailer tailer, String expected) { try (DocumentContext dc = tailer.readingDocument()) { assertTrue("No document found", dc.isPresent()); Bytes bytes2 = Bytes.elasticHeapByteBuffer(128); dc.wire().copyTo(new TextWire(bytes2)); assertEquals(expected, bytes2.toString()); } }
private static long countEntries(final ChronicleQueue queue) { final ExcerptTailer tailer = queue.createTailer(); tailer.toStart().direction(TailerDirection.FORWARD); long entryCount = 0L; while (true) { try (final DocumentContext ctx = tailer.readingDocument()) { if (!ctx.isPresent()) { break; } entryCount++; } } return entryCount; }
private BytesWithIndex bytes(final ExcerptTailer tailer) { try (DocumentContext dc = tailer.readingDocument()) { if (!dc.isPresent()) return null; Bytes<?> bytes = dc.wire().bytes(); long index = dc.index(); return new BytesWithIndex(bytes, index); } }
private void readDocument(@NotNull ThreadLocal<ExcerptTailer> tlt, String text) { try (DocumentContext dc = tlt.get().readingDocument()) { if (!dc.isPresent()) return; Assert.assertEquals(dc.index(), dc.wire().read(() -> "key").int64()); Assert.assertEquals(text, dc.wire().read(() -> "text").text()); } }
private static long[] writeMessagesStoreIndices(final ExcerptAppender appender, final ExcerptTailer tailer) { final long[] indices = new long[RECORD_COUNT]; for (int i = 0; i < RECORD_COUNT; i++) { try (final DocumentContext ctx = appender.writingDocument()) { ctx.wire().getValueOut().int32(i); } } for (int i = 0; i < RECORD_COUNT; i++) { try (final DocumentContext ctx = tailer.readingDocument()) { assertThat("Expected record at index " + i, ctx.isPresent(), is(true)); indices[i] = tailer.index(); } } return indices; }
private static void expectValue(final int expectedValue, final ExcerptTailer tailer) { try (final DocumentContext documentContext = tailer.readingDocument()) { assertTrue(documentContext.isPresent()); assertEquals(expectedValue, documentContext.wire().getValueIn().int32()); } }
@Test public void shouldHandleLargeEpoch() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .epoch(System.currentTimeMillis()) .epoch(1284739200000L) .rollCycle(DAILY) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(wire -> wire.write(() -> "key").text("value=v")); final ExcerptTailer excerptTailer = chronicle.createTailer().toStart(); assertThat(excerptTailer.readingDocument().isPresent(), is(true)); } }
@Test public void shouldBeAbleToReadFromQueueWithNonZeroEpoch() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .epoch(System.currentTimeMillis()) .rollCycle(RollCycles.DAILY) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(wire -> wire.write(() -> "key").text("value=v")); Assert.assertTrue(appender.cycle() == 0); final ExcerptTailer excerptTailer = chronicle.createTailer().toStart(); assertThat(excerptTailer.readingDocument().isPresent(), is(true)); } }
@Test public void shouldReadBackwardFromEndOfQueueWhenDirectionIsSetAfterMoveToEnd() { try (final ChronicleQueue queue = builder(getTmpDir(), this.wireType) .rollCycle(TEST2_DAILY) .build()) { final ExcerptAppender appender = queue.acquireAppender(); appender.writeDocument(w -> w.writeEventName("hello").text("world")); final ExcerptTailer tailer = queue.createTailer(); tailer.toEnd(); tailer.direction(TailerDirection.BACKWARD); assertThat(tailer.readingDocument().isPresent(), is(true)); } }
@Test(expected = TimeoutException.class) public void shouldHandleEmptyFile() { Assume.assumeFalse(OS.isWindows()); try (final ChronicleQueue queue = ChronicleQueue.singleBuilder(tmpDir) .testBlockSize() .timeoutMS(100) .readOnly(true) .build()) { ExcerptTailer tailer = queue.createTailer(); assertFalse(tailer.readingDocument().isPresent()); } } }
@Test public void testZeroLengthMessage() { try (ChronicleQueue chronicle = builder(getTmpDir(), wireType) .rollCycle(TEST_DAILY) .build()) { ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(w -> { }); // System.out.println(chronicle.dump()); ExcerptTailer tailer = chronicle.createTailer(); try (DocumentContext dc = tailer.readingDocument()) { assertFalse(dc.wire().hasMore()); } } }
@Test public void testReadingWritingMarshallableDocument() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .build()) { MyMarshable myMarshable = new MyMarshable(); final ExcerptAppender appender = chronicle.acquireAppender(); try (DocumentContext dc = appender.writingDocument()) { dc.wire().write("myMarshable").typedMarshallable(myMarshable); } ExcerptTailer tailer = chronicle.createTailer(); try (DocumentContext dc = tailer.readingDocument()) { Assert.assertEquals(myMarshable, dc.wire().read(() -> "myMarshable").typedMarshallable()); } } }