You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jakarta.apache.org by mi...@apache.org on 2010/11/21 00:59:08 UTC

svn commit: r1037357 - in /jakarta/jmeter/trunk: docs/images/screenshots/ docs/images/screenshots/jms/ src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/ src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/ xdocs/ xdocs/images/screenshots...

Author: milamber
Date: Sat Nov 20 23:59:07 2010
New Revision: 1037357

URL: http://svn.apache.org/viewvc?rev=1037357&view=rev
Log:
JMS Subscriber - Add dynamic destination

Modified:
    jakarta/jmeter/trunk/docs/images/screenshots/jms/jms_pub.png
    jakarta/jmeter/trunk/docs/images/screenshots/jms/jms_sub.png
    jakarta/jmeter/trunk/docs/images/screenshots/jmssubscriber.png
    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/changes.xml
    jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png
    jakarta/jmeter/trunk/xdocs/images/screenshots/jmssubscriber.png
    jakarta/jmeter/trunk/xdocs/usermanual/build-jms-topic-test-plan.xml
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: jakarta/jmeter/trunk/docs/images/screenshots/jms/jms_pub.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/jms/jms_pub.png?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/docs/images/screenshots/jms/jms_sub.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/jms/jms_sub.png?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/docs/images/screenshots/jmssubscriber.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/jmssubscriber.png?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
Binary files - no diff available.

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=1037357&r1=1037356&r2=1037357&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 Sat Nov 20 23:59:07 2010
@@ -21,6 +21,7 @@ package org.apache.jmeter.protocol.jms.c
 import java.awt.BorderLayout;
 
 import javax.naming.Context;
+import javax.swing.BoxLayout;
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 import javax.swing.event.ChangeEvent;
@@ -91,6 +92,16 @@ public class JMSSubscriberGui extends Ab
     private final JCheckBox stopBetweenSamples =
         new JCheckBox(JMeterUtils.getResString("jms_stop_between_samples"), true); // $NON-NLS-1$
     
+    // These are the names of properties used to define the labels
+    private final static String DEST_SETUP_STATIC = "jms_dest_setup_static"; // $NON-NLS-1$
+
+    private final static String DEST_SETUP_DYNAMIC = "jms_dest_setup_dynamic"; // $NON-NLS-1$
+    // Button group resources
+    private final static String[] DEST_SETUP_ITEMS = { DEST_SETUP_STATIC, DEST_SETUP_DYNAMIC };
+
+    private final JLabeledRadioI18N destSetup =
+        new JLabeledRadioI18N("jms_dest_setup", DEST_SETUP_ITEMS, DEST_SETUP_STATIC); // $NON-NLS-1$
+    
     public JMSSubscriberGui() {
         init();
     }
@@ -129,6 +140,7 @@ public class JMSSubscriberGui extends Ab
         sampler.setClientChoice(clientChoice.getText());
         sampler.setStopBetweenSamples(stopBetweenSamples.isSelected());
         sampler.setTimeout(timeout.getText());
+        sampler.setDestinationStatic(destSetup.getText().equals(DEST_SETUP_STATIC));
     }
 
     /**
@@ -151,7 +163,7 @@ public class JMSSubscriberGui extends Ab
         mainPanel.add(jndiICF);
         mainPanel.add(urlField);
         mainPanel.add(jndiConnFac);
-        mainPanel.add(jmsDestination);
+        mainPanel.add(createDestinationPane());
         mainPanel.add(useAuth);
         mainPanel.add(jmsUser);
         mainPanel.add(jmsPwd);
@@ -189,6 +201,7 @@ public class JMSSubscriberGui extends Ab
         clientChoice.setText(sampler.getClientChoice());
         stopBetweenSamples.setSelected(sampler.isStopBetweenSamples());
         timeout.setText(sampler.getTimeout());
+        destSetup.setText(sampler.isDestinationStatic() ? DEST_SETUP_STATIC : DEST_SETUP_DYNAMIC);
     }
 
     @Override
@@ -207,6 +220,7 @@ public class JMSSubscriberGui extends Ab
         readResponse.setSelected(true);
         clientChoice.setText(RECEIVE_RSC);
         stopBetweenSamples.setSelected(false);
+        destSetup.setText(DEST_SETUP_STATIC);
     }
 
     /**
@@ -222,4 +236,12 @@ public class JMSSubscriberGui extends Ab
             jmsPwd.setEnabled(!useAuth.isSelected());
         }
     }
+    
+    private JPanel createDestinationPane() {
+        JPanel pane = new JPanel(new BorderLayout(3, 0));
+        pane.add(jmsDestination, BorderLayout.CENTER);
+        destSetup.setLayout(new BoxLayout(destSetup, BoxLayout.X_AXIS));
+        pane.add(destSetup, BorderLayout.EAST);
+        return pane;
+    }
 }
\ No newline at end of file

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=1037357&r1=1037356&r2=1037357&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 Sat Nov 20 23:59:07 2010
@@ -78,7 +78,8 @@ public class SubscriberSampler extends B
     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$
-
+    
+    private transient boolean START_ON_SAMPLE = false;
 
     public SubscriberSampler() {
     }
@@ -118,6 +119,10 @@ public class SubscriberSampler extends B
     // TODO - should we call start() and stop()?
     @Override
     public SampleResult sample() {
+        // run threadStarted only if Destination setup on each sample
+        if (!isDestinationStatic()) {
+            threadStarted(true);
+        }
         SampleResult result = new SampleResult();
         result.setDataType(SampleResult.TEXT);
         result.setSampleLabel(getName());
@@ -188,6 +193,10 @@ public class SubscriberSampler extends B
                 log.warn("Problem stopping subscriber", e);
             }
         }
+        // run threadFinished only if Destination setup on each sample (stop Listen queue)
+        if (!isDestinationStatic()) {
+            threadFinished(true);
+        }
         return result;
     }
 
@@ -238,37 +247,47 @@ public class SubscriberSampler extends B
      * {@inheritDoc}
      */
     public void threadStarted() {
-        timeout = getTimeoutAsLong();
-        interrupted = false;
-        exceptionDuringInit = null;
-        useReceive = getClientChoice().equals(JMSSubscriberGui.RECEIVE_RSC);
-        stopBetweenSamples = isStopBetweenSamples();
-        if (useReceive) {
-            try {
-                initReceiveClient();
-                if (!stopBetweenSamples){ // Don't start yet if stop between samples
-                    SUBSCRIBER.start();
+        // Disabled thread start if listen on sample choice
+        if (isDestinationStatic() || START_ON_SAMPLE) {
+            timeout = getTimeoutAsLong();
+            interrupted = false;
+            exceptionDuringInit = null;
+            useReceive = getClientChoice().equals(JMSSubscriberGui.RECEIVE_RSC);
+            stopBetweenSamples = isStopBetweenSamples();
+            if (useReceive) {
+                try {
+                    initReceiveClient();
+                    if (!stopBetweenSamples){ // Don't start yet if stop between samples
+                        SUBSCRIBER.start();
+                    }
+                } catch (NamingException e) {
+                    exceptionDuringInit = e;
+                } catch (JMSException e) {
+                    exceptionDuringInit = e;
                 }
-            } catch (NamingException e) {
-                exceptionDuringInit = e;
-            } catch (JMSException e) {
-                exceptionDuringInit = e;
-            }
-        } else {
-            try {
-                initListenerClient();
-                if (!stopBetweenSamples){ // Don't start yet if stop between samples
-                    SUBSCRIBER.start();
+            } else {
+                try {
+                    initListenerClient();
+                    if (!stopBetweenSamples){ // Don't start yet if stop between samples
+                        SUBSCRIBER.start();
+                    }
+                } catch (JMSException e) {
+                    exceptionDuringInit = e;
+                } catch (NamingException e) {
+                    exceptionDuringInit = e;
                 }
-            } catch (JMSException e) {
-                exceptionDuringInit = e;
-            } catch (NamingException e) {
-                exceptionDuringInit = e;
+            }
+            if (exceptionDuringInit != null){
+                log.error("Could not initialise client",exceptionDuringInit);
             }
         }
-        if (exceptionDuringInit != null){
-            log.error("Could not initialise client",exceptionDuringInit);
+    }
+    
+    public void threadStarted(boolean wts) {
+        if (wts) {
+            START_ON_SAMPLE = true; // listen on sample 
         }
+        threadStarted();
     }
 
     /**
@@ -281,6 +300,13 @@ public class SubscriberSampler extends B
             SUBSCRIBER.close();
         }
     }
+    
+    public void threadFinished(boolean wts) {
+        if (wts) {
+            START_ON_SAMPLE = false; // listen on sample
+        }
+        threadFinished();
+    }
 
     /**
      * Handle an interrupt of the test.

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sat Nov 20 23:59:07 2010
@@ -125,6 +125,7 @@ To override the default local language f
 <li>Bug 49775 - Allow sending messages without a body</li>
 <li>Bug 49862 - Improve SMTPSampler Request output.</li>
 <li>Bug 50268 - Adds static and dynamic destinations to JMS Publisher</li>
+<li>JMS Subscriber - Add dynamic destination</li>
 </ul>
 
 <h3>Controllers</h3>

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/jmssubscriber.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/jmssubscriber.png?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/usermanual/build-jms-topic-test-plan.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/build-jms-topic-test-plan.xml?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/build-jms-topic-test-plan.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/build-jms-topic-test-plan.xml Sat Nov 20 23:59:07 2010
@@ -125,7 +125,10 @@ Then, select the JMS Subscriber element 
 <li>Enter the provider URL. This is the URL for the JNDI server, if there is one. For example, with ActiveMQ 5.4 on local machine with default port, the value is "tcp://localhost:61616"</li>
 <li>Enter the name of the connection factory. Please refer to the documentation
 of the JMS provider for the information. For ActiveMQ, the default is "ConnectionFactory"</li>
-<li>Enter the name of the message topic. For ActiveMQ Dynamic Topics (create topics dynamically), example value is "dynamicTopics/MyStaticTopic1"</li>
+<li>Enter the name of the message topic. For ActiveMQ Dynamic Topics (create topics dynamically), example value is "dynamicTopics/MyStaticTopic1"
+Note: Setup at startup mean that JMeter starting to listen on the Destination at beginning of test without name change possibility. 
+Setup on Each sample mean that JMeter (re)starting to listen before run each JMS Subscriber sample, 
+this last option permit to have Destination name with some JMeter variables</li>
 <li>If the JMS provider requires authentication, check "required" and enter the 
 username and password. For example, Orion JMS requires authentication, while ActiveMQ
 and MQSeries does not</li>
@@ -154,8 +157,8 @@ Then, select the JMS Publisher element i
 <li>Enter the name of the connection factory. Please refer to the documentation
 of the JMS provider for the information. For ActiveMQ, the default is "ConnectionFactory"</li>
 <li>Enter the name of the message topic. For ActiveMQ Dynamic Topics (create topics dynamically), example value is "dynamicTopics/MyStaticTopic1". 
-Note: Setup at startup mean that JMeter starting connection with the Destination at begin's test without name change possibility. 
-Setup on Each sample mean that JMeter (re)starting the connection before execute each JMS Publisher sample, 
+Note: Setup at startup mean that JMeter starting connection with the Destination at beginning of test without name change possibility. 
+Setup on Each sample mean that JMeter (re)starting the connection before run each JMS Publisher sample, 
 this last option permit to have Destination name with some JMeter variables</li>
 <li>If the JMS provider requires authentication, check "required" and enter the 
 username and password. For example, Orion JMS requires authentication, while ActiveMQ

Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1037357&r1=1037356&r2=1037357&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Nov 20 23:59:07 2010
@@ -1205,7 +1205,7 @@ The following table shows some values wh
 </p>
 </component>
 
-<component name="JMS Subscriber" index="&sect-num;.1.14"  width="679" height="408" screenshot="jmssubscriber.png">
+<component name="JMS Subscriber" index="&sect-num;.1.14"  screenshot="jmssubscriber.png">
 <note>BETA CODE - the code is still subject to change</note>
 	<description>
 		<p>
@@ -1226,6 +1226,7 @@ The following table shows some values wh
   <property name="JNDI Initial Context Factory" required="No">Name of the context factory</property>
   <property name="Provider URL" required="No">The URL for the jms provider</property>
   <property name="Destination" required="Yes">the message destination (topic or queue name)</property>
+  <property name="Setup" required="Yes">The destination setup type. With At startup, the destination name is static (i.e. always same name during the test), with Each sample, the destination name is dynamic and is evaluate at each sample (i.e. the destination name may be a variable)</property>
   <property name="Authentication" required="Yes">Authentication requirement for the JMS provider</property>
   <property name="User" required="No">User Name</property>
   <property name="Password" required="No">Password</property>



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@jakarta.apache.org
For additional commands, e-mail: notifications-help@jakarta.apache.org