@Override public QueueStats getQueueStatistics() { return this.writes.getStatistics(); }
private void reportMetrics() { this.metrics.ledgerCount(getLogMetadata().getLedgers().size()); this.metrics.queueStats(this.writes.getStatistics()); }
/** * Tests the basic functionality of the add() method. */ @Test public void testAdd() { final int timeIncrement = 1234 * 1000; // Just over 1ms. AtomicLong time = new AtomicLong(); val q = new WriteQueue(time::get); val initialStats = q.getStatistics(); Assert.assertEquals("Unexpected getSize on empty queue.", 0, initialStats.getSize()); Assert.assertEquals("Unexpected getAverageFillRate on empty queue.", 0, initialStats.getAverageItemFillRatio(), 0); Assert.assertEquals("Unexpected getExpectedProcessingTimeMillis on empty queue.", 0, initialStats.getExpectedProcessingTimeMillis()); int expectedSize = 0; long firstItemTime = 0; for (int i = 0; i < ITEM_COUNT; i++) { time.addAndGet(timeIncrement); if (i == 0) { firstItemTime = time.get(); } int writeSize = i * 10000; q.add(new Write(new ByteArraySegment(new byte[writeSize]), new TestWriteLedger(i), CompletableFuture.completedFuture(null))); expectedSize += writeSize; val stats = q.getStatistics(); val expectedFillRatio = (double) expectedSize / stats.getSize() / BookKeeperConfig.MAX_APPEND_LENGTH; val expectedProcTime = (time.get() - firstItemTime) / AbstractTimer.NANOS_TO_MILLIS; Assert.assertEquals("Unexpected getSize.", i + 1, stats.getSize()); Assert.assertEquals("Unexpected getAverageFillRate.", expectedFillRatio, stats.getAverageItemFillRatio(), 0.01); Assert.assertEquals("Unexpected getExpectedProcessingTimeMillis.", expectedProcTime, stats.getExpectedProcessingTimeMillis()); } }
Assert.assertEquals("Unexpected value from removeFinishedWrites when there were writes left in the queue.", WriteQueue.CleanupStatus.QueueNotEmpty, result1); val stats1 = q.getStatistics(); Assert.assertEquals("Unexpected size after removeFinishedWrites with no effect.", writes.size() + 1, stats1.getSize()); val expectedResult = writes.isEmpty() ? WriteQueue.CleanupStatus.QueueEmpty : WriteQueue.CleanupStatus.QueueNotEmpty; Assert.assertEquals("Unexpected result from removeFinishedWrites.", expectedResult, result2); val stats2 = q.getStatistics(); Assert.assertEquals("Unexpected size after removeFinishedWrites.", writes.size(), stats2.getSize()); Assert.assertEquals("Unexpected getExpectedProcessingTimeMillis after clear.", expectedElapsed, stats2.getExpectedProcessingTimeMillis());
AssertExtensions.assertListEquals("Unexpected writes removed.", expectedWrites, removedWrites, Object::equals); val clearStats = q.getStatistics(); Assert.assertEquals("Unexpected getSize after clear.", 0, clearStats.getSize()); Assert.assertEquals("Unexpected getAverageFillRate after clear.", 0, clearStats.getAverageItemFillRatio(), 0);