/** * Returns a ThreadDumpMessage using the data in the proxy. * @return a ThreadDumpMessage. */ protected Object readResolve() { return new ThreadDumpMessage(formattedMsg, title); } }
@Override public ThreadDumpMessage get() { return new ThreadDumpMessage("Title of ..."); } });
@Test public void testUseConstructorThread() throws InterruptedException { // LOG4J2-763 final ThreadDumpMessage msg = new ThreadDumpMessage("Test"); final String[] actual = new String[1]; final Thread other = new Thread("OtherThread") { @Override public void run() { actual[0] = msg.getFormattedMessage(); } }; other.start(); other.join(); assertTrue("No mention of other thread in msg", !actual[0].contains("OtherThread")); }
@Test public void testToString() { final ThreadDumpMessage msg = new ThreadDumpMessage("Test"); final String actual = msg.toString(); assertTrue(actual.contains("Test")); assertTrue(actual.contains("RUNNABLE")); assertTrue(actual.contains(getClass().getName())); }
@Test public void testMessage() { final ThreadDumpMessage msg = new ThreadDumpMessage("Testing"); final String message = msg.getFormattedMessage(); //System.out.print(message); assertTrue("No header", message.contains(" Id=")); } }
@Test public void testMessage() { final ThreadDumpMessage msg = new ThreadDumpMessage("Testing"); final String message = msg.getFormattedMessage(); //System.out.print(message); assertTrue("No header", message.contains("Testing")); assertTrue("No RUNNABLE", message.contains("RUNNABLE")); assertTrue("No ThreadDumpMessage", message.contains("ThreadDumpMessage")); }
@Test public void formatTo_usesCachedMessageString() throws Exception { final ThreadDumpMessage message = new ThreadDumpMessage(""); final String initial = message.getFormattedMessage(); assertFalse("no ThreadWithCountDownLatch thread yet", initial.contains("ThreadWithCountDownLatch")); final CountDownLatch started = new CountDownLatch(1); final CountDownLatch keepAlive = new CountDownLatch(1); final ThreadWithCountDownLatch thread = new ThreadWithCountDownLatch(started, keepAlive); thread.start(); started.await(); // ensure thread is running final StringBuilder result = new StringBuilder(); message.formatTo(result); assertFalse("no ThreadWithCountDownLatch captured", result.toString().contains("ThreadWithCountDownLatch")); assertEquals(initial, result.toString()); keepAlive.countDown(); // allow thread to die }
@Test public void testMessageWithLocks() throws Exception { final ReentrantLock lock = new ReentrantLock(); lock.lock(); final Thread thread1 = new Thread1(lock); thread1.start(); ThreadDumpMessage msg; synchronized(this) { final Thread thread2 = new Thread2(this); thread2.start(); try { Thread.sleep(200); msg = new ThreadDumpMessage("Testing"); } finally { lock.unlock(); } } final String message = msg.getFormattedMessage(); //System.out.print(message); assertTrue("No header", message.contains("Testing")); assertTrue("No RUNNABLE", message.contains("RUNNABLE")); assertTrue("No ThreadDumpMessage", message.contains("ThreadDumpMessage")); //assertTrue("No Locks", message.contains("waiting on")); //assertTrue("No syncronizers", message.contains("locked syncrhonizers")); }
final ThreadDumpMessage message = new ThreadDumpMessage("Waiting"); System.err.print(message.getFormattedMessage());
/** * Returns a ThreadDumpMessage using the data in the proxy. * @return a ThreadDumpMessage. */ protected Object readResolve() { return new ThreadDumpMessage(formattedMsg, title); } }