private static void write(final ExcerptAppender appender, final Data data) throws Exception { try (final DocumentContext dc = appender.writingDocument()) { final ObjectOutput out = dc.wire().objectOutput(); out.writeInt(data.id); } }
private Future<RecordInfo> attemptToWriteDocument(final ChronicleQueue queue) throws InterruptedException { final CountDownLatch startedLatch = new CountDownLatch(1); final Future<RecordInfo> future = executorService.submit(() -> { final int counterValue; startedLatch.countDown(); try (final DocumentContext documentContext = queue.acquireAppender().writingDocument()) { counterValue = counter.getAndIncrement(); documentContext.wire().getValueOut().int32(counterValue); } return new RecordInfo(counterValue); }); assertTrue("Task did not start", startedLatch.await(1, TimeUnit.MINUTES)); return future; }
@Override public void run(long startTimeNS) { datum.ts = startTimeNS; try (DocumentContext dc = appender.writingDocument()) { datum.writeMarshallable(dc.wire().bytes()); } }
private void appendToQueue(final ChronicleQueue queue) { for (int i = 0; i < 31; i++) { final ExcerptAppender appender = queue.acquireAppender(); if (queue.isClosed()) return; try (final DocumentContext dc = appender.writingDocument()) { dc.wire().write("foo"); } } }
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); } }
private int write(ExcerptAppender appender) { int value; try (DocumentContext writingDocument = appender.writingDocument()) { final long documentAcquireTimestamp = System.nanoTime(); value = wrote.getAndIncrement(); ValueOut valueOut = writingDocument.wire().getValueOut(); // make the message longer valueOut.int64(documentAcquireTimestamp); for (int i = 0; i < NUMBER_OF_INTS; i++) { valueOut.int32(value); } writingDocument.wire().padToCacheAlign(); } return value; } }
/** * 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(); } }
@Test public void testCheckIndexWithWritingDocument() { doTestCheckIndex( (appender, n) -> { try (final DocumentContext dc = appender.writingDocument()) { dc.wire().writeEventName("").object("" + n); } }); }
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; }
@Test public void tailerRollBackTest() { final File source = DirectoryUtils.tempDir("testCopyQueue-source"); try (final ChronicleQueue q = binary(source).build()) { try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("hello").text("hello-world"); } try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("hello2").text("hello-world-2"); } } }
@Before public void setup() { chroniclePath = new File(OS.TARGET, "read_only"); try (ChronicleQueue readWrite = ChronicleQueue.singleBuilder(chroniclePath) .readOnly(false) .testBlockSize() .build()) { final ExcerptAppender appender = readWrite.acquireAppender(); appender.writeText(STR1); try (DocumentContext dc = appender.writingDocument()) { dc.wire().bytes().writeUtf8(STR2); } } }
@Test public void testCheckIndexWithWritingDocument2() { doTestCheckIndex( (appender, n) -> { try (final DocumentContext dc = appender.writingDocument()) { dc.wire().bytes().writeUtf8("Hello") .writeStopBit(12345) .writeStopBit(1.2) // float also supported. .writeInt(1); } }); }
@Test public void shouldIndicateNoProcessIdWhenDocumentIsComplete() throws IOException { try (final RollingChronicleQueue queue = ChronicleQueue.singleBuilder(getTmpDir()). testBlockSize(). build()) { final QueueInspector inspector = new QueueInspector(queue); final ExcerptAppender appender = queue.acquireAppender(); appender.writeDocument(37L, ValueOut::int64); try (final DocumentContext ctx = appender.writingDocument()) { ctx.wire().write("foo").int32(17L); } final int writingThreadId = inspector.getWritingThreadId(); assertThat(writingThreadId, is(not(OS.getProcessId()))); assertThat(QueueInspector.isValidThreadId(writingThreadId), is(false)); } }
@Override public void run(long startTimeNS) { datum.setValue10(startTimeNS); try (DocumentContext dc = appender.writingDocument()) { dc.wire().bytes().write(datumBytes); //datum.writeMarshallable(dc.wire().bytes()); } try (DocumentContext dc = tailer.readingDocument()) { if (dc.wire() != null) { datumWrite.writePosition(0); dc.wire().readBytes(datumWrite); //datum.readMarshallable(dc.wire().bytes()); jlbh.sample(System.nanoTime() - datum.getValue10()); } } }
private void createQueueAndWriteData(TimeProvider timeProvider, File path) { final ChronicleQueue queue = SingleChronicleQueueBuilder .binary(path) .testBlockSize() .rollCycle(RollCycles.TEST_DAILY) .timeProvider(timeProvider) .build(); ExcerptAppender excerptAppender = queue.acquireAppender(); try (DocumentContext dc = excerptAppender.writingDocument(false)) { dc.wire().write(() -> "test").int64(0); } } }
@Test(expected = IllegalStateException.class) public void shouldBlowUpIfTryingToCreateQueueWithUnparseableRollCycle() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(new RollCycleDefaultingTest.MyRollcycle()).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(HOURLY).build()) { } }
@Test public void shouldNotBlowUpIfTryingToCreateQueueWithIncorrectRollCycle() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(DAILY).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } // we don't store which RollCycles enum was used and we try and match by format string, we // match the first RollCycles with the same format string, which may not // be the RollCycles it was written with try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(HOURLY).build()) { assertEquals(TEST_DAILY, ignored.rollCycle()); } }
@Test public void shouldOverrideDifferentEpoch() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(TEST_SECONDLY).epoch(100).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(TEST_SECONDLY).epoch(10).build()) { assertEquals(100, ((SingleChronicleQueue) ignored).epoch()); } }
@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()); } } }
@Test public void testReadWriteHourly() { File tmpDir = getTmpDir(); try (final ChronicleQueue qAppender = builder(tmpDir, wireType).rollCycle(HOURLY).build()) { try (DocumentContext documentContext = qAppender.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue qTailer = builder(tmpDir, wireType).rollCycle(HOURLY).build()) { try (DocumentContext documentContext2 = qTailer.createTailer().readingDocument()) { String str = documentContext2.wire().read("somekey").text(); Assert.assertEquals("somevalue", str); } } }