private void assertCycleRollTimes(final long epochOffset, final TimeProvider timeProvider) { final long currentTime = System.currentTimeMillis(); final long currentTimeAtStartOfCycle = currentTime - (currentTime % cycle.length()); clock.set(currentTimeAtStartOfCycle); final int startCycle = cycle.current(timeProvider, epochOffset); clock.addAndGet(cycle.length()); assertThat(cycle.current(timeProvider, epochOffset), is(startCycle + 1)); assertThat(cycle.current(plusOneMillisecond(timeProvider), epochOffset), is(startCycle + 1)); assertThat(cycle.current(minusOneMillisecond(timeProvider), epochOffset), is(startCycle)); clock.addAndGet(cycle.length()); assertThat(cycle.current(timeProvider, epochOffset), is(startCycle + 2)); assertThat(cycle.current(plusOneMillisecond(timeProvider), epochOffset), is(startCycle + 2)); assertThat(cycle.current(minusOneMillisecond(timeProvider), epochOffset), is(startCycle + 1)); } }
private void overrideRollCycleForFileNameLength(int patternLength) { for (RollCycles cycle : RollCycles.values()) { if (cycle.format().length() == patternLength) { LOGGER.warn("Overriding roll cycle from {} to {}", rollCycle, cycle); rollCycle = cycle; return; } } throw new IllegalStateException("Can't find an appropriate RollCycles to override to"); }
@Parameterized.Parameters(name = "{0}") public static Collection<Object[]> data() { final List<Object[]> data = new ArrayList<>(); for (RollCycles testDatum : TEST_DATA) { data.add(new Object[]{testDatum.name(), testDatum}); } return data; }
@Override public int current(@NotNull TimeProvider time, long epoch) { return (int) ((time.currentTimeMillis() - epoch) / length()); }
public RollCycleEncodeSequenceTest(final RollCycles cycle) { longValue = new BinaryTwoLongReference(); bytes = Bytes.elasticByteBuffer(); longValue.bytesStore(bytes, 0, 16); rollCycleEncodeSequence = new RollCycleEncodeSequence(longValue, cycle.defaultIndexCount(), cycle.defaultIndexSpacing()); }
private void read(@NotNull ChronicleQueue aChronicle, int expected) { final ExcerptTailer myTailer = aChronicle.createTailer(); final int myLast = HOURLY.toCycle(myTailer.toEnd().index()); final int myFirst = HOURLY.toCycle(myTailer.toStart().index()); int myCycle = myFirst - 1; long myIndex = HOURLY.toIndex(myCycle, 0); int count = 0; while (myCycle <= myLast) { // System.out.println(Long.toHexString(myIndex)); if (myTailer.moveToIndex(myIndex)) { while (myTailer.readDocument(read())) { count++; } } myIndex = HOURLY.toIndex(++myCycle, 0); } Assert.assertEquals(expected, count); }
public static void main(String[] args) { for (RollCycles r : RollCycles.values()) { System.out.println(r + ": cycleShift=" + r.cycleShift + " sequenceMask=" + Long.toHexString(r.sequenceMask) + " format=" + r.format + " indexSpacing=" + r.indexSpacing); } }
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()); } }
.build()) { long start = RollCycles.DAILY.toIndex(queue.cycle(), 0); appendMessage(queue, start, "Hello World"); @NotNull String expectedEager = "--- !!meta-data #binary\n" +
@Test public void shouldConvertCyclesToResourceNamesWithNoEpoch() throws Exception { final int epoch = 0; final RollingResourcesCache cache = new RollingResourcesCache(RollCycles.DAILY, epoch, File::new, File::getName); final int cycle = RollCycles.DAILY.current(System::currentTimeMillis, 0); assertCorrectConversion(cache, cycle, Instant.now(), DateTimeFormatter.ofPattern("yyyyMMdd").withZone(ZoneId.of("GMT"))); }
@Override public int current(@NotNull TimeProvider time, long epoch) { return (int) ((time.currentTimeMillis() - epoch) / length()); }
public static void main(String[] args) { for (RollCycles r : RollCycles.values()) { System.out.println(r + ": cycleShift=" + r.cycleShift + " sequenceMask=" + Long.toHexString(r.sequenceMask) + " format=" + r.format + " indexSpacing=" + r.indexSpacing); } }
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()); } }
.build()) { long start = RollCycles.DAILY.toIndex(queue.cycle(), 0); @NotNull ExcerptTailer tailer = queue.createTailer(); assertFalse(tailer.moveToIndex(start));
private void overrideRollCycleForFileNameLength(int patternLength) { for (RollCycles cycle : RollCycles.values()) { if (cycle.format().length() == patternLength) { LOGGER.warn("Overriding roll cycle from {} to {}", rollCycle, cycle); rollCycle = cycle; return; } } throw new IllegalStateException("Can't find an appropriate RollCycles to override to"); }