Author: veithen Date: Tue Dec 23 10:54:13 2008 New Revision: 729062 URL: http://svn.apache.org/viewvc?rev=729062&view=rev Log: Updated existing transport to support message level metrics collection (at least messages sent and bytes sent).
Added: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java (with props) Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportSender.java webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/client/AxisTestClient.java Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java?rev=729062&r1=729061&r2=729062&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java (original) +++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java Tue Dec 23 10:54:13 2008 @@ -183,7 +183,7 @@ try { messageSender.send(message, msgCtx); - metrics.incrementMessagesSent(); + metrics.incrementMessagesSent(msgCtx); } catch (AxisJMSException e) { metrics.incrementFaultsSending(); @@ -191,7 +191,7 @@ } try { - metrics.incrementBytesSent(JMSUtils.getMessageSize(message)); + metrics.incrementBytesSent(msgCtx, JMSUtils.getMessageSize(message)); } catch (JMSException e) { log.warn("Error reading JMS message size to update transport metrics", e); } Modified: webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportSender.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportSender.java?rev=729062&r1=729061&r2=729062&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportSender.java (original) +++ webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportSender.java Tue Dec 23 10:54:13 2008 @@ -447,10 +447,10 @@ Transport.send(message); // update metrics - metrics.incrementMessagesSent(); + metrics.incrementMessagesSent(msgContext); long bytesSent = message.getBytesSent(); if (bytesSent != -1) { - metrics.incrementBytesSent(bytesSent); + metrics.incrementBytesSent(msgContext, bytesSent); } } catch (MessagingException e) { 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=729062&r1=729061&r2=729062&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 Tue Dec 23 10:54:13 2008 @@ -31,8 +31,10 @@ import org.apache.axis2.client.ServiceClient; import org.apache.axis2.context.MessageContext; import org.apache.axis2.transport.TransportSender; +import org.apache.axis2.transport.base.BaseConstants; import org.apache.axis2.transport.base.ManagementSupport; import org.apache.axis2.transport.testkit.MessageExchangeValidator; +import org.apache.axis2.transport.testkit.axis2.util.MessageLevelMetricsCollectorImpl; import org.apache.axis2.transport.testkit.channel.Channel; import org.apache.axis2.transport.testkit.client.ClientOptions; import org.apache.axis2.transport.testkit.client.TestClient; @@ -51,6 +53,7 @@ protected @Transient Options axisOptions; private long messagesSent; private long bytesSent; + private MessageLevelMetricsCollectorImpl metrics; @Setup @SuppressWarnings("unused") private void setUp(AxisTestClientContext context, Channel channel, AxisTestClientConfigurator[] configurators) throws Exception { @@ -82,6 +85,9 @@ ManagementSupport sender = (ManagementSupport)this.sender; messagesSent = sender.getMessagesSent(); bytesSent = sender.getBytesSent(); + metrics = new MessageLevelMetricsCollectorImpl(); + } else { + metrics = null; } } @@ -103,6 +109,9 @@ } mc.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, options.getCharset()); mc.setServiceContext(serviceClient.getServiceContext()); + if (metrics != null) { + mc.setProperty(BaseConstants.METRICS_COLLECTOR, metrics); + } mepClient.addMessageContext(mc); mepClient.execute(block); return resultMessageLabel == null ? null : mepClient.getMessageContext(resultMessageLabel); @@ -111,10 +120,14 @@ 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 (before sending: " + bytesSent + + 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); } } } Added: 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=729062&view=auto ============================================================================== --- webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java (added) +++ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java Tue Dec 23 10:54:13 2008 @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.axis2.transport.testkit.axis2.util; + +import org.apache.axis2.transport.base.MessageLevelMetricsCollector; + +/** + * Message level metrics collector implementation used during the tests to check that + * message level metrics collection is implemented. + */ +public class MessageLevelMetricsCollectorImpl implements MessageLevelMetricsCollector { + private long messagesSent; + private long bytesSent; + + public void incrementBytesReceived(long size) { + } + + public synchronized void incrementBytesSent(long size) { + bytesSent += size; + } + + public void incrementFaultsReceiving(int errorCode) { + } + + public void incrementFaultsSending(int errorCode) { + } + + public void incrementMessagesReceived() { + } + + public synchronized void incrementMessagesSent() { + messagesSent++; + } + + public void incrementTimeoutsReceiving() { + } + + public void incrementTimeoutsSending() { + } + + public void notifyReceivedMessageSize(long size) { + } + + public void notifySentMessageSize(long size) { + } + + public void reportReceivingFault(int errorCode) { + } + + public void reportResponseCode(int respCode) { + } + + public void reportSendingFault(int errorCode) { + } + + public synchronized long getMessagesSent() { + return messagesSent; + } + + public synchronized long getBytesSent() { + return bytesSent; + } +} Propchange: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/axis2/util/MessageLevelMetricsCollectorImpl.java ------------------------------------------------------------------------------ svn:eol-style = native