Author: kahatlen Date: Wed Nov 21 10:28:48 2012 New Revision: 1412042 URL: http://svn.apache.org/viewvc?rev=1412042&view=rev Log: DERBY-6001: ErrorMessageTest assert failure: Only one of the waiters should be aborted Improve diagnostics. Print stack traces to the log if both threads fail. Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorMessageTest.java Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorMessageTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorMessageTest.java?rev=1412042&r1=1412041&r2=1412042&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorMessageTest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorMessageTest.java Wed Nov 21 10:28:48 2012 @@ -200,17 +200,19 @@ public class ErrorMessageTest extends Ba // Check that exactly one of the threads failed, and that the failure // was caused by a deadlock. It is not deterministic which of the two // threads will be terminated. - String msg; - if (holder[0] != null) { - assertSQLState("Not a deadlock", "40001", holder[0]); - assertNull("Only one of the waiters should be aborted", holder[1]); - msg = holder[0].getMessage(); - } else { - assertSQLState("Not a deadlock", "40001", holder[1]); - msg = holder[1].getMessage(); + assertFalse("No deadlock", holder[0] == null && holder[1] == null); + if (holder[0] != null && holder[1] != null) { + // Both threads failed. Print some more information to the log + // so we can see what's going on. + printStackTrace(holder[0]); + printStackTrace(holder[1]); + fail("Only one of the waiters should be aborted"); } - String[] lines = msg.split("\n"); + SQLException deadlock = holder[0] == null ? holder[1] : holder[0]; + assertSQLState("Not a deadlock", "40001", deadlock); + + String[] lines = deadlock.getMessage().split("\n"); assertEquals("Unexpected number of lines in message", 8, lines.length); Pattern[] patterns = new Pattern[] {