@Override public synchronized Integer call() throws Exception { try (final DocumentContext dc = tailer.readingDocument()) { System.out.println("index=" + Long.toHexString(dc.index())); if (!dc.isPresent()) return documentsRead; StringBuilder sb = Wires.acquireStringBuilder(); dc.wire().bytes().parse8bit(sb, StopCharTesters.ALL); String readText = sb.toString(); if (java.util.Objects.equals(readText, "")) { return documentsRead; } System.out.println("Read a document " + readText); documentsRead++; } return documentsRead; } }
private long action(@NotNull final ExcerptTailer tailer1, @NotNull final RollCycle rollCycle) { // tailer1.direction(direction); long readvalue = 0; long seqNumRead = 0; try (final DocumentContext dc = tailer1.readingDocument()) { readvalue = dc.wire().read("value").int64(); seqNumRead = dc.index(); } final long nextSeq = rollCycle.toSequenceNumber(tailer1.index()); /*System.out.println("Return-value=" + readvalue + ", seq=" + rollCycle.toSequenceNumber(seqNumRead) + ", next-seq=" + nextSeq + "(" + Long.toHexString(nextSeq) + "x0)" + ",direction=" + tailer1.direction());*/ return readvalue; }
private void writeTestDocument(@NotNull ThreadLocal<ExcerptAppender> tl, String text) { try (DocumentContext dc = tl.get().writingDocument()) { long index = dc.index(); dc.wire().write("key").int64(index); dc.wire().write("text").text(text); } }
/** * Add a test message with the given ExcerptAppender and return the index position of the entry * * @param appender ExceptAppender * @param msg test message * @return index position of the entry */ private long appendEntry(@NotNull final ExcerptAppender appender, String msg) { DocumentContext dc = appender.writingDocument(); try { dc.wire().write().text(msg); return dc.index(); } finally { dc.close(); } }
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()); } }
@Test public void testLastIndexAppendedAcrossRestarts() { String path = OS.TARGET + "/" + getClass().getSimpleName() + "-" + System.nanoTime(); for (int i = 0; i < 5; i++) { try (ChronicleQueue queue = single(path) .testBlockSize() .rollCycle(TEST_DAILY) .build()) { ExcerptAppender appender = queue.acquireAppender(); try (DocumentContext documentContext = appender.writingDocument()) { int index = (int) documentContext.index(); assertEquals(i, index); documentContext.wire().write().text("hello world"); } assertEquals(i, (int) appender.lastIndexAppended()); } } try { IOTools.deleteDirWithFiles(path, 2); } catch (Exception index) { } }
long index = dc.index(); Assert.assertEquals(0, chronicle.rollCycle().toSequenceNumber(index)); dc.wire().write(() -> "FirstName").text("Quartilla"); Assert.assertEquals(1, chronicle.rollCycle().toSequenceNumber(dc.index())); dc.wire().write(() -> "FirstName").text("Rob"); Assert.assertEquals(2, chronicle.rollCycle().toSequenceNumber(dc.index())); dc.wire().write(() -> "FirstName").text("Rob"); long index = dc.index(); Assert.assertEquals(0, chronicle.rollCycle().toSequenceNumber(index)); Assert.assertEquals(1, chronicle.rollCycle().toSequenceNumber(dc.index())); Assert.assertEquals(2, chronicle.rollCycle().toSequenceNumber(dc.index()));
void readForward(@NotNull ChronicleQueue chronicle, int entries) { ExcerptTailer forwardTailer = chronicle.createTailer() .direction(TailerDirection.FORWARD) .toStart(); for (int i = 0; i < entries; i++) { try (DocumentContext documentContext = forwardTailer.readingDocument()) { Assert.assertTrue(documentContext.isPresent()); Assert.assertEquals(i, RollCycles.DAILY.toSequenceNumber(documentContext.index())); StringBuilder sb = Wires.acquireStringBuilder(); ValueIn valueIn = documentContext.wire().readEventName(sb); Assert.assertTrue("hello".contentEquals(sb)); String actual = valueIn.text(); Assert.assertEquals("world" + i, actual); } } try (DocumentContext documentContext = forwardTailer.readingDocument()) { Assert.assertFalse(documentContext.isPresent()); } }
try (final DocumentContext ctx = appender.writingDocument()) { ctx.wire().write("event").int32(i); indices[i] = ctx.index();
/** * if one appender if much further ahead than the other, then the new append should jump * straight to the end rather than attempting to write a positions that are already occupied */ @Test public void testAppendedSkipToEnd() { try (ChronicleQueue q = builder(getTmpDir(), this.wireType) .build()) { ExcerptAppender appender = q.acquireAppender(); ExcerptAppender appender2 = q.acquireAppender(); int indexCount = 100; for (int i = 0; i < indexCount; i++) { try (DocumentContext dc = appender.writingDocument()) { dc.wire().write("key").text("some more " + 1); Assert.assertEquals(i, q.rollCycle().toSequenceNumber(dc.index())); } } try (DocumentContext dc = appender2.writingDocument()) { dc.wire().write("key").text("some data " + indexCount); Assert.assertEquals(indexCount, q.rollCycle().toSequenceNumber(dc.index())); } } }
void readBackward(@NotNull ChronicleQueue chronicle, int entries) { ExcerptTailer backwardTailer = chronicle.createTailer() .direction(TailerDirection.BACKWARD) .toEnd(); for (int i = entries - 1; i >= 0; i--) { try (DocumentContext documentContext = backwardTailer.readingDocument()) { assertTrue(documentContext.isPresent()); final long index = documentContext.index(); assertEquals("index: " + index, i, (int) index); Assert.assertEquals(i, RollCycles.DAILY.toSequenceNumber(index)); Assert.assertTrue(documentContext.isPresent()); StringBuilder sb = Wires.acquireStringBuilder(); ValueIn valueIn = documentContext.wire().readEventName(sb); Assert.assertTrue("hello".contentEquals(sb)); String actual = valueIn.text(); Assert.assertEquals("world" + i, actual); } } try (DocumentContext documentContext = backwardTailer.readingDocument()) { assertFalse(documentContext.isPresent()); } }
@Test public void testWrittenAndReadIndexesAreTheSameOfTheFirstExcerpt() { File tmp = getTmpDir(); long expected; try (ChronicleQueue queue = single(tmp) .testBlockSize() .build()) { ExcerptAppender appender = queue.acquireAppender(); try (DocumentContext dc = appender.writingDocument()) { dc.wire().write().text("some-data"); expected = dc.index(); Assert.assertTrue(expected > 0); } appender.lastIndexAppended(); ExcerptTailer tailer = queue.createTailer(); try (DocumentContext dc = tailer.readingDocument()) { String text = dc.wire().read().text(); { long actualIndex = dc.index(); Assert.assertTrue(actualIndex > 0); Assert.assertEquals(expected, actualIndex); } { long actualIndex = tailer.index(); Assert.assertTrue(actualIndex > 0); Assert.assertEquals(expected, actualIndex); } } } }
@Test public void testIndexWritingDocument() { try (final ChronicleQueue chronicle = builder(getTmpDir(), this.wireType) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); long index; try (DocumentContext dc = appender.writingDocument()) { dc.wire().write(() -> "FirstName").text("Quartilla"); index = dc.index(); } try (DocumentContext dc = appender.writingDocument(true)) { dc.wire().write(() -> "FirstName").text("Quartilla"); } Assert.assertEquals(index, appender.lastIndexAppended()); } }
index)); final DocumentContext context = tailer.readingDocument(); assertThat(context.index(), is(index)); context.wire().read(() -> "key").text(sb); Assert.assertEquals("value=" + i, sb.toString());
try (DocumentContext writingContext = appender.writingDocument()) { writingContext.wire().write().text("some-text-" + i); indexs[i] = writingContext.index();
try (DocumentContext dc = appender.writingDocument()) { dc.wire().getValueOut().text("hi-" + i); lastCycle = wqueue.rollCycle().toCycle(dc.index());
@Test public void testMoveToWithAppender() { try (ChronicleQueue syncQ = builder(getTmpDir(), this.wireType) .build()) { InternalAppender sync = (InternalAppender) syncQ.acquireAppender(); File name2 = DirectoryUtils.tempDir(testName.getMethodName()); try (ChronicleQueue chronicle = builder(name2, this.wireType) .build()) { ExcerptAppender appender = chronicle.acquireAppender(); appender.writeDocument(w -> w.writeEventName("hello").text("world0")); appender.writeDocument(w -> w.writeEventName("hello").text("world1")); appender.writeDocument(w -> w.writeEventName("hello").text("world2")); ExcerptTailer tailer = chronicle.createTailer(); try (DocumentContext documentContext = tailer.readingDocument()) { sync.writeBytes(documentContext.index(), documentContext.wire().bytes()); } try (DocumentContext documentContext = tailer.readingDocument()) { String text = documentContext.wire().read().text(); Assert.assertEquals("world1", text); } } } }