@Override public String toString() { return getFormattedMessage(); }
ThreadDumpMessageProxy(final ThreadDumpMessage msg) { this.formattedMsg = msg.getFormattedMessage(); this.title = msg.title; }
@Override public void run() { actual[0] = msg.getFormattedMessage(); } };
@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")); }
if (stillWaiting) { final ThreadDumpMessage message = new ThreadDumpMessage("Waiting"); System.err.print(message.getFormattedMessage());
@Override public String toString() { return getFormattedMessage(); }
ThreadDumpMessageProxy(final ThreadDumpMessage msg) { this.formattedMsg = msg.getFormattedMessage(); this.title = msg.title; }