You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2008/12/27 19:50:14 UTC
svn commit: r729656 - in
/webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2:
client/AxisTestClient.java util/MessageLevelMetricsCollectorImpl.java
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() {