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="&sect-num;.1.14"  width="527" 
height="411" screenshot="jmssubscriber.png">
+<component name="JMS Subscriber" index="&sect-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]

Reply via email to