You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by wo...@apache.org on 2005/08/19 05:27:57 UTC
cvs commit: jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/client ReceiveSubscriber.java
woolfel 2005/08/18 20:27:57
Modified: src/protocol/jms/org/apache/jmeter/protocol/jms/sampler
SubscriberSampler.java PublisherSampler.java
JMSSampler.java
src/protocol/jms/org/apache/jmeter/protocol/jms/client
ReceiveSubscriber.java
Log:
made some additional enhancements to the topic samplers. Added handling for
ObjectMessages to make sure we don't get an exception.
peter lin
Revision Changes Path
1.7 +26 -4 jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
Index: SubscriberSampler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SubscriberSampler.java 15 Aug 2005 20:33:07 -0000 1.6
+++ SubscriberSampler.java 19 Aug 2005 03:27:57 -0000 1.7
@@ -16,9 +16,12 @@
package org.apache.jmeter.protocol.jms.sampler;
+import java.io.ObjectInputStream;
+
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
+import javax.jms.ObjectMessage;
import javax.jms.TextMessage;
import org.apache.jmeter.samplers.Entry;
@@ -178,6 +181,7 @@
}
}
result.sampleEnd();
+ result.setSamplerData(this.BUFFER.toString());
result.setResponseMessage(loop + " samples messages recieved");
if (this.getReadResponseAsBoolean()) {
result.setResponseData(this.BUFFER.toString().getBytes());
@@ -218,11 +222,26 @@
}
}
result.sampleEnd();
- result.setResponseMessage(loop + " samples messages recieved");
+ result.setResponseHeaders(loop + " samples messages recieved");
+ if (this.SUBSCRIBER.getMessageType() == ReceiveSubscriber.TEXT) {
+ result.setSamplerData(this.SUBSCRIBER.getMessage());
+ result.setContentType(SampleResult.TEXT);
+ }
if (this.getReadResponseAsBoolean()) {
- result.setResponseData(this.SUBSCRIBER.getMessage().getBytes());
+ // added an a check to make sure the message is TextMessage
+ // before trying to set the SampleResult.
+ if (this.SUBSCRIBER.getMessageType() == ReceiveSubscriber.TEXT) {
+ result.setResponseData(this.SUBSCRIBER.getMessage().getBytes());
+ } else {
+ result.setResponseData(
+ this.SUBSCRIBER.getObjectMessage().toString().getBytes());
+ }
} else {
- result.setContentLength(this.SUBSCRIBER.getMessage().getBytes().length);
+ // right now I'm not sure how to handle ObjectMessages, since there
+ // isn't an easy way to count the bytes of an object message.
+ if (this.SUBSCRIBER.getMessageType() == ReceiveSubscriber.TEXT) {
+ result.setContentLength(this.SUBSCRIBER.getMessage().getBytes().length);
+ }
}
result.setSuccessful(true);
result.setResponseCode(loop + " message(s) recieved successfully");
@@ -247,7 +266,10 @@
this.BUFFER.append(content);
count(1);
}
- }
+ } else if (message instanceof ObjectMessage) {
+ ObjectMessage msg = (ObjectMessage)message;
+ this.BUFFER.append(msg.getObject().toString());
+ }
} catch (JMSException e) {
log.error(e.getMessage());
}
1.8 +5 -0 jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
Index: PublisherSampler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PublisherSampler.java 15 Aug 2005 20:33:07 -0000 1.7
+++ PublisherSampler.java 19 Aug 2005 03:27:57 -0000 1.8
@@ -152,7 +152,12 @@
result.setResponseCode("message published successfully");
result.setResponseMessage(loop + " messages published");
result.setSuccessful(true);
+ // we have to set the ReponseData so that it gets counted in
+ // the aggregate listener. Since JMS performance is about
+ // the throughput of both pub/sub, it's important to measure
+ // both. Peter Lin
result.setResponseData(content.getBytes());
+ result.setSamplerData(content);
result.setSampleCount(loop);
this.BUFFER.setLength(0);
}
1.13 +3 -1 jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java
Index: JMSSampler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- JMSSampler.java 16 Aug 2005 01:29:51 -0000 1.12
+++ JMSSampler.java 19 Aug 2005 03:27:57 -0000 1.13
@@ -31,6 +31,7 @@
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
+import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -140,6 +141,7 @@
} else {
if (replyMsg instanceof TextMessage) {
res.setResponseData(((TextMessage) replyMsg).getText().getBytes());
+ res.setContentLength(((TextMessage) replyMsg).getText().getBytes().length);
} else {
res.setResponseData(replyMsg.toString().getBytes());
}
1.6 +33 -7 jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
Index: ReceiveSubscriber.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ReceiveSubscriber.java 12 Jul 2005 20:50:37 -0000 1.5
+++ ReceiveSubscriber.java 19 Aug 2005 03:27:57 -0000 1.6
@@ -23,6 +23,7 @@
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
+import javax.jms.ObjectMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
@@ -40,6 +41,9 @@
*/
public class ReceiveSubscriber implements Runnable {
+ public static final int TEXT = 0;
+ public static final int OBJECT = 1;
+
private static Logger log = LoggingManager.getLoggerForClass();
private TopicConnection CONN = null;
@@ -52,7 +56,7 @@
private byte[] RESULT = null;
- private Object OBJ_RESULT = null;// TODO never read
+ private Object OBJ_RESULT = null;
// private long time = System.currentTimeMillis();
private int counter;
@@ -65,6 +69,8 @@
// is picked up
private Thread CLIENTTHREAD = null;
+
+ private int MSG_TYPE = TEXT;
/**
*
@@ -174,6 +180,22 @@
return this.RESULT;
}
+ /**
+ * current implementation supports Text and Object messages
+ * @return
+ */
+ public int getMessageType() {
+ return this.MSG_TYPE;
+ }
+
+ /**
+ * Return the raw object in the message
+ * @return
+ */
+ public Object getObjectMessage() {
+ return this.OBJ_RESULT;
+ }
+
/**
* close() will stop the connection first. Then it closes the subscriber,
* session and connection and sets them to null.
@@ -260,12 +282,16 @@
}
try {
Message message = this.SUBSCRIBER.receive();
- if (message != null && message instanceof TextMessage) {
- TextMessage msg = (TextMessage) message;
- if (msg.getText().trim().length() > 0) {
- this.buffer.append(msg.getText());
- count(1);
- }
+ if (message != null) {
+ if (message instanceof TextMessage) {
+ TextMessage msg = (TextMessage) message;
+ if (msg.getText().trim().length() > 0) {
+ this.buffer.append(msg.getText());
+ }
+ } else if (message instanceof ObjectMessage) {
+ this.OBJ_RESULT = ((ObjectMessage)message).getObject();
+ }
+ count(1);
}
} catch (JMSException e) {
log.info("Communication error: " + e.getMessage());
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org