Author: sebb
Date: Fri Jun 25 15:14:18 2010
New Revision: 958003
URL: http://svn.apache.org/viewvc?rev=958003&view=rev
Log:
Add stop between sample processing
Modified:
jakarta/jmeter/trunk/docs/images/screenshots/jmssubscriber.png
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
jakarta/jmeter/trunk/xdocs/images/screenshots/jmssubscriber.png
jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
Modified: jakarta/jmeter/trunk/docs/images/screenshots/jmssubscriber.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/jmssubscriber.png?rev=958003&r1=958002&r2=958003&view=diff
==============================================================================
Binary files - no diff available.
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=958003&r1=958002&r2=958003&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
Fri Jun 25 15:14:18 2010
@@ -368,6 +368,7 @@ jms_request=Request Only
jms_requestreply=Request Response
jms_sample_title=JMS Default Request
jms_send_queue=JNDI name Request queue
+jms_stop_between_samples=Stop between samples?
jms_subscriber_on_message=Use MessageListener.onMessage()
jms_subscriber_receive=Use MessageConsumer.receive()
jms_subscriber_title=JMS Subscriber
Modified:
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java?rev=958003&r1=958002&r2=958003&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
Fri Jun 25 15:14:18 2010
@@ -20,11 +20,13 @@ package org.apache.jmeter.protocol.jms.c
import java.awt.BorderLayout;
+import javax.naming.Context;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+import org.apache.jmeter.gui.util.HorizontalPanel;
import org.apache.jmeter.gui.util.JLabeledRadioI18N;
import org.apache.jmeter.gui.util.VerticalPanel;
import org.apache.jmeter.protocol.jms.sampler.SubscriberSampler;
@@ -86,6 +88,9 @@ public class JMSSubscriberGui extends Ab
private final JLabeledRadioI18N clientChoice =
new JLabeledRadioI18N("jms_client_type", CLIENT_ITEMS, RECEIVE_RSC);
// $NON-NLS-1$
+ private final JCheckBox stopBetweenSamples =
+ new JCheckBox(JMeterUtils.getResString("jms_stop_between_samples"),
true); // $NON-NLS-1$
+
public JMSSubscriberGui() {
init();
}
@@ -122,6 +127,7 @@ public class JMSSubscriberGui extends Ab
sampler.setIterations(iterations.getText());
sampler.setReadResponse(String.valueOf(readResponse.isSelected()));
sampler.setClientChoice(clientChoice.getText());
+ sampler.setStopBetweenSamples(stopBetweenSamples.isSelected());
sampler.setTimeout(timeout.getText());
}
@@ -137,6 +143,10 @@ public class JMSSubscriberGui extends Ab
JPanel mainPanel = new VerticalPanel();
add(mainPanel, BorderLayout.CENTER);
+ jndiICF.setToolTipText(Context.INITIAL_CONTEXT_FACTORY);
+ urlField.setToolTipText(Context.PROVIDER_URL);
+ jmsUser.setToolTipText(Context.SECURITY_PRINCIPAL);
+ jmsPwd.setToolTipText(Context.SECURITY_CREDENTIALS);
mainPanel.add(useProperties);
mainPanel.add(jndiICF);
mainPanel.add(urlField);
@@ -149,7 +159,11 @@ public class JMSSubscriberGui extends Ab
mainPanel.add(readResponse);
mainPanel.add(timeout);
- mainPanel.add(clientChoice);
+
+ JPanel choice = new HorizontalPanel();
+ choice.add(clientChoice);
+ choice.add(stopBetweenSamples);
+ mainPanel.add(choice);
useProperties.addChangeListener(this);
useAuth.addChangeListener(this);
@@ -173,6 +187,7 @@ public class JMSSubscriberGui extends Ab
useAuth.setSelected(sampler.isUseAuth());
readResponse.setSelected(sampler.getReadResponseAsBoolean());
clientChoice.setText(sampler.getClientChoice());
+ stopBetweenSamples.setSelected(sampler.isStopBetweenSamples());
timeout.setText(sampler.getTimeout());
}
@@ -191,6 +206,7 @@ public class JMSSubscriberGui extends Ab
useAuth.setSelected(false);
readResponse.setSelected(true);
clientChoice.setText(RECEIVE_RSC);
+ stopBetweenSamples.setSelected(false);
}
/**
Modified:
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java?rev=958003&r1=958002&r2=958003&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
Fri Jun 25 15:14:18 2010
@@ -65,15 +65,20 @@ public class SubscriberSampler extends B
private transient long timeout;
- private boolean useReceive;
+ private transient boolean useReceive;
// This will be null iff initialisation succeeeds.
private transient Exception exceptionDuringInit;
+ // If true, start/stop subscriber for each sample
+ private transient boolean stopBetweenSamples;
+
// Don't change the string, as it is used in JMX files
private static final String CLIENT_CHOICE = "jms.client_choice"; //
$NON-NLS-1$
private static final String TIMEOUT = "jms.timeout"; // $NON-NLS-1$
private static final String TIMEOUT_DEFAULT = "";
+ private static final String STOP_BETWEEN = "jms.stop_between_samples"; //
$NON-NLS-1$
+
public SubscriberSampler() {
}
@@ -124,6 +129,13 @@ public class SubscriberSampler extends B
result.setResponseMessage(exceptionDuringInit.toString());
return result;
}
+ if (stopBetweenSamples){ // If so, we need to start collection here
+ try {
+ SUBSCRIBER.start();
+ } catch (JMSException e) {
+ log.warn("Problem starting subscriber", e);
+ }
+ }
StringBuilder buffer = new StringBuilder();
StringBuilder propBuffer = new StringBuilder();
@@ -169,6 +181,13 @@ public class SubscriberSampler extends B
result.setSamplerData(loop + " messages expected");
result.setSampleCount(read);
+ if (stopBetweenSamples){
+ try {
+ SUBSCRIBER.stop();
+ } catch (JMSException e) {
+ log.warn("Problem stopping subscriber", e);
+ }
+ }
return result;
}
@@ -223,10 +242,13 @@ public class SubscriberSampler extends B
interrupted = false;
exceptionDuringInit = null;
useReceive = getClientChoice().equals(JMSSubscriberGui.RECEIVE_RSC);
+ stopBetweenSamples = isStopBetweenSamples();
if (useReceive) {
try {
initReceiveClient();
- SUBSCRIBER.start();
+ if (!stopBetweenSamples){ // Don't start yet if stop between
samples
+ SUBSCRIBER.start();
+ }
} catch (NamingException e) {
exceptionDuringInit = e;
} catch (JMSException e) {
@@ -235,7 +257,9 @@ public class SubscriberSampler extends B
} else {
try {
initListenerClient();
- SUBSCRIBER.start();
+ if (!stopBetweenSamples){ // Don't start yet if stop between
samples
+ SUBSCRIBER.start();
+ }
} catch (JMSException e) {
exceptionDuringInit = e;
} catch (NamingException e) {
@@ -253,7 +277,9 @@ public class SubscriberSampler extends B
* {...@inheritdoc}
*/
public void threadFinished() {
- SUBSCRIBER.close();
+ if (SUBSCRIBER != null){ // Can be null if init fails
+ SUBSCRIBER.close();
+ }
}
/**
@@ -305,4 +331,12 @@ public class SubscriberSampler extends B
// This was the old value that was checked for
private final static String RECEIVE_STR =
JMeterUtils.getResString(JMSSubscriberGui.RECEIVE_RSC); // $NON-NLS-1$
+ public boolean isStopBetweenSamples() {
+ return getPropertyAsBoolean(STOP_BETWEEN, false);
+ }
+
+ public void setStopBetweenSamples(boolean selected) {
+ setProperty(STOP_BETWEEN, selected, false);
+ }
+
}
Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/jmssubscriber.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/jmssubscriber.png?rev=958003&r1=958002&r2=958003&view=diff
==============================================================================
Binary files - no diff available.
Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=958003&r1=958002&r2=958003&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Fri Jun 25
15:14:18 2010
@@ -1199,7 +1199,7 @@ The following table shows some values wh
</p>
</component>
-<component name="JMS Subscriber" index="§-num;.1.14" width="527"
height="411" screenshot="jmssubscriber.png">
+<component name="JMS Subscriber" index="§-num;.1.14" width="679"
height="408" screenshot="jmssubscriber.png">
<note>BETA CODE - the code is still subject to change</note>
<description>
<p>
@@ -1239,6 +1239,11 @@ The following table shows some values wh
This is best suited to Topic subscriptions.</li>
</ul>
</property>
+ <property name="Stop between samples?" required="Yes">
+ If selected, then JMeter calls Connection.stop() at the end of each sample
(and calls start() before each sample).
+ This may be useful in some cases where multiple samples/threads have
connections to the same queue.
+ If not selected, JMeter calls Connection.start() at the start of the thread,
and does not call stop() until the end of the thread.
+ </property>
</properties>
<p>
<b>NOTE:</b> JMeter 2.3.4 and earlier used a different strategy for the
MessageConsumer.receive() client.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]