Author: veithen Date: Sat Dec 27 10:50:14 2008 New Revision: 729656 URL: http://svn.apache.org/viewvc?rev=729656&view=rev Log: SYNAPSE-491: Transport test kit: Give the transport sender a bit more time to update the metrics before triggering an assertion failure in AxisTestClient.
Modified: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/client/AxisTestClient.java webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java Modified: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/client/AxisTestClient.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/client/AxisTestClient.java?rev=729656&r1=729655&r2=729656&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/client/AxisTestClient.java (original) +++ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/client/AxisTestClient.java Sat Dec 27 10:50:14 2008 @@ -23,6 +23,7 @@ import javax.xml.namespace.QName; import junit.framework.Assert; +import junit.framework.AssertionFailedError; import org.apache.axiom.attachments.Attachments; import org.apache.axis2.Constants; @@ -44,9 +45,13 @@ import org.apache.axis2.transport.testkit.tests.TearDown; import org.apache.axis2.transport.testkit.tests.Transient; import org.apache.axis2.transport.testkit.util.ContentTypeUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; @Name("axis") public class AxisTestClient implements TestClient, MessageExchangeValidator { + private static final Log log = LogFactory.getLog(AxisTestClient.class); + private @Transient AxisTestClientConfigurator[] configurators; private @Transient TransportSender sender; protected @Transient ServiceClient serviceClient; @@ -120,14 +125,32 @@ public void afterReceive() throws Exception { if (sender instanceof ManagementSupport) { ManagementSupport sender = (ManagementSupport)this.sender; - Assert.assertEquals(1, metrics.getMessagesSent()); - Assert.assertEquals(messagesSent+1, sender.getMessagesSent()); - long thisBytesSent = metrics.getBytesSent(); - Assert.assertTrue("No increase in bytes sent in message level metrics", thisBytesSent != 0); - long newBytesSent = sender.getBytesSent(); - Assert.assertTrue("No increase in bytes sent in transport level metrics (before sending: " + bytesSent + - "; after sending: " + newBytesSent + ")", newBytesSent > bytesSent); - Assert.assertEquals("Mismatch between message and transport level metrics", thisBytesSent, newBytesSent - bytesSent); + synchronized (metrics) { + long start = System.currentTimeMillis(); + while (true) { + try { + Assert.assertEquals(1, metrics.getMessagesSent()); + Assert.assertEquals(messagesSent+1, sender.getMessagesSent()); + long thisBytesSent = metrics.getBytesSent(); + Assert.assertTrue("No increase in bytes sent in message level metrics", thisBytesSent != 0); + long newBytesSent = sender.getBytesSent(); + Assert.assertTrue("No increase in bytes sent in transport level metrics", newBytesSent > bytesSent); + Assert.assertEquals("Mismatch between message and transport level metrics", thisBytesSent, newBytesSent - bytesSent); + break; + } catch (AssertionFailedError ex) { + // SYNAPSE-491: Maybe the transport sender didn't finish updating the + // metrics yet. We give it up to one seconds to do so. + long remaining = start + 1000 - System.currentTimeMillis(); + if (remaining < 0) { + throw ex; + } else { + log.debug("The transport sender didn't update the metrics yet (" + + ex.getMessage() + "). Waiting for " + remaining + " ms."); + metrics.wait(remaining); + } + } + } + } } } } Modified: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java?rev=729656&r1=729655&r2=729656&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java (original) +++ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java Sat Dec 27 10:50:14 2008 @@ -24,6 +24,8 @@ /** * Message level metrics collector implementation used during the tests to check that * message level metrics collection is implemented. + * <p> + * On any update, all threads waiting for an instance of this class are notified. */ public class MessageLevelMetricsCollectorImpl implements MessageLevelMetricsCollector { private long messagesSent; @@ -34,6 +36,7 @@ public synchronized void incrementBytesSent(long size) { bytesSent += size; + notifyAll(); } public void incrementFaultsReceiving(int errorCode) { @@ -47,6 +50,7 @@ public synchronized void incrementMessagesSent() { messagesSent++; + notifyAll(); } public void incrementTimeoutsReceiving() {