static void asyncLoggerConfigTest(final Logger logger, final Unlocker unlocker, final BlockingAppender blockingAppender) { for (int i = 0; i < 130; i++) { TRACE("Test logging message " + i + ". Remaining capacity=" + asyncRemainingCapacity(logger)); TRACE("Test decrementing unlocker countdown latch. Count=" + unlocker.countDownLatch.getCount()); unlocker.countDownLatch.countDown(); final String param = "I'm innocent"; logger.info(new ParameterizedMessage("logging innocent object #{} {}", i, param)); } TRACE("Before stop() blockingAppender.logEvents.count=" + blockingAppender.logEvents.size()); //CoreLoggerContexts.stopLoggerContext(false); // stop async thread while (blockingAppender.logEvents.size() < 130) { Thread.yield(); } TRACE("After stop() blockingAppender.logEvents.count=" + blockingAppender.logEvents.size()); final Stack<String> actual = transform(blockingAppender.logEvents); for (int i = 0; i < 130; i++) { assertEquals("logging innocent object #" + i + " I'm innocent", actual.pop()); } assertTrue(actual.isEmpty()); } }
@Test(timeout = 5000) public void testNormalQueueFullKeepsMessagesInOrder() throws InterruptedException { final Logger logger = LogManager.getLogger(this.getClass()); blockingAppender.countDownLatch = new CountDownLatch(1); unlocker = new Unlocker(new CountDownLatch(129)); unlocker.start(); QueueFullAsyncLoggerConfigTest.asyncLoggerConfigTest(logger, unlocker, blockingAppender); } }
@Test(timeout = 5000) public void testNormalQueueFullKeepsMessagesInOrder() throws InterruptedException { final Logger logger = LogManager.getLogger(this.getClass()); blockingAppender.countDownLatch = new CountDownLatch(1); unlocker = new Unlocker(new CountDownLatch(129)); unlocker.start(); asyncLoggerConfigTest(logger, unlocker, blockingAppender); }