Author: pmouawad
Date: Sat Oct 15 14:42:43 2011
New Revision: 1183653
URL: http://svn.apache.org/viewvc?rev=1183653&view=rev
Log:
Bug 51419 - JMS Subscriber: ability to use Selectors
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
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_pub.png
jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png
jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
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=1183653&r1=1183652&r2=1183653&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
Sat Oct 15 14:42:43 2011
@@ -372,6 +372,7 @@ jms_receive_queue=JNDI name Receive queu
jms_request=Request Only
jms_requestreply=Request Response
jms_sample_title=JMS Default Request
+jms_selector=JMS Selector
jms_send_queue=JNDI name Request queue
jms_stop_between_samples=Stop between samples?
jms_subscriber_on_message=Use MessageListener.onMessage()
Modified:
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
Sat Oct 15 14:42:43 2011
@@ -74,6 +74,9 @@ public class ReceiveSubscriber implement
* @param providerUrl
* @param connfactory
* @param destinationName
+ * @param durableSubscriptionId
+ * @param clientId
+ * @param jmsSelector Message Selector
* @param useAuth
* @param securityPrincipal
* @param securityCredentials
@@ -82,11 +85,11 @@ public class ReceiveSubscriber implement
*/
public ReceiveSubscriber(boolean useProps,
String initialContextFactory, String providerUrl, String
connfactory, String destinationName,
- String durableSubscriptionId, String clientId, boolean useAuth,
+ String durableSubscriptionId, String clientId, String jmsSelector,
boolean useAuth,
String securityPrincipal, String securityCredentials) throws
NamingException, JMSException {
this(0, useProps,
initialContextFactory, providerUrl, connfactory,
destinationName,
- durableSubscriptionId, clientId, useAuth,
+ durableSubscriptionId, clientId, jmsSelector, useAuth,
securityPrincipal, securityCredentials, false);
}
@@ -103,6 +106,9 @@ public class ReceiveSubscriber implement
* @param providerUrl
* @param connfactory
* @param destinationName
+ * @param durableSubscriptionId
+ * @param clientId
+ * @param jmsSelector Message Selector
* @param useAuth
* @param securityPrincipal
* @param securityCredentials
@@ -111,11 +117,11 @@ public class ReceiveSubscriber implement
*/
public ReceiveSubscriber(int queueSize, boolean useProps,
String initialContextFactory, String providerUrl, String
connfactory, String destinationName,
- String durableSubscriptionId, String clientId, boolean useAuth,
+ String durableSubscriptionId, String clientId, String jmsSelector,
boolean useAuth,
String securityPrincipal, String securityCredentials) throws
NamingException, JMSException {
this(queueSize, useProps,
initialContextFactory, providerUrl, connfactory, destinationName,
- durableSubscriptionId, clientId, useAuth,
+ durableSubscriptionId, clientId, jmsSelector, useAuth,
securityPrincipal, securityCredentials, true);
}
@@ -133,6 +139,9 @@ public class ReceiveSubscriber implement
* @param providerUrl
* @param connfactory
* @param destinationName
+ * @param durableSubscriptionId
+ * @param clientId
+ * @param jmsSelector Message Selector
* @param useAuth
* @param securityPrincipal
* @param securityCredentials
@@ -142,7 +151,7 @@ public class ReceiveSubscriber implement
*/
private ReceiveSubscriber(int queueSize, boolean useProps,
String initialContextFactory, String providerUrl, String
connfactory, String destinationName,
- String durableSubscriptionId, String clientId, boolean useAuth,
+ String durableSubscriptionId, String clientId, String jmsSelector,
boolean useAuth,
String securityPrincipal, String securityCredentials, boolean
useMessageListener) throws NamingException, JMSException {
boolean initSuccess = false;
try{
@@ -154,7 +163,7 @@ public class ReceiveSubscriber implement
}
SESSION = CONN.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination dest = Utils.lookupDestination(ctx, destinationName);
- SUBSCRIBER = createSubscriber(SESSION, dest,
durableSubscriptionId);
+ SUBSCRIBER = createSubscriber(SESSION, dest,
durableSubscriptionId, jmsSelector);
if(useMessageListener) {
if (queueSize <=0) {
queue = new LinkedBlockingQueue<Message>();
@@ -184,15 +193,25 @@ public class ReceiveSubscriber implement
* @param durableSubscriptionId
* If neither empty nor null, this means
that a durable
* subscription will be used
+ * @param jmsSelector JMS Selector
* @return
* @throws JMSException
*/
private MessageConsumer createSubscriber(Session session,
- Destination destination, String durableSubscriptionId) throws
JMSException {
+ Destination destination, String durableSubscriptionId,
+ String jmsSelector) throws JMSException {
if (isEmpty(durableSubscriptionId)) {
- return session.createConsumer(destination);
+ if(isEmpty(jmsSelector)) {
+ return session.createConsumer(destination);
+ } else {
+ return session.createConsumer(destination, jmsSelector);
+ }
} else {
- return session.createDurableSubscriber((Topic) destination,
durableSubscriptionId);
+ if(isEmpty(jmsSelector)) {
+ return session.createDurableSubscriber((Topic) destination,
durableSubscriptionId);
+ } else {
+ return session.createDurableSubscriber((Topic) destination,
durableSubscriptionId, jmsSelector, false);
+ }
}
}
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=1183653&r1=1183652&r2=1183653&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 Oct 15 14:42:43 2011
@@ -65,6 +65,9 @@ public class JMSSubscriberGui extends Ab
private final JLabeledTextField jmsClientId =
new JLabeledTextField(JMeterUtils.getResString("jms_client_id")); //
$NON-NLS-1$
+ private final JLabeledTextField jmsSelector =
+ new JLabeledTextField(JMeterUtils.getResString("jms_selector")); //
$NON-NLS-1$
+
private final JLabeledTextField jmsUser =
new JLabeledTextField(JMeterUtils.getResString("jms_user")); //
$NON-NLS-1$
@@ -140,6 +143,7 @@ public class JMSSubscriberGui extends Ab
sampler.setDestination(jmsDestination.getText());
sampler.setDurableSubscriptionId(jmsDurableSubscriptionId.getText());
sampler.setClientID(jmsClientId.getText());
+ sampler.setJmsSelector(jmsSelector.getText());
sampler.setUsername(jmsUser.getText());
sampler.setPassword(jmsPwd.getText());
sampler.setUseAuth(useAuth.isSelected());
@@ -174,6 +178,7 @@ public class JMSSubscriberGui extends Ab
mainPanel.add(createDestinationPane());
mainPanel.add(jmsDurableSubscriptionId);
mainPanel.add(jmsClientId);
+ mainPanel.add(jmsSelector);
mainPanel.add(useAuth);
mainPanel.add(jmsUser);
mainPanel.add(jmsPwd);
@@ -205,6 +210,7 @@ public class JMSSubscriberGui extends Ab
jmsDestination.setText(sampler.getDestination());
jmsDurableSubscriptionId.setText(sampler.getDurableSubscriptionId());
jmsClientId.setText(sampler.getClientId());
+ jmsSelector.setText(sampler.getJmsSelector());
jmsUser.setText(sampler.getUsername());
jmsPwd.setText(sampler.getPassword());
iterations.setText(sampler.getIterations());
@@ -228,6 +234,7 @@ public class JMSSubscriberGui extends Ab
jmsDestination.setText(""); // $NON-NLS-1$
jmsDurableSubscriptionId.setText(""); // $NON-NLS-1$
jmsClientId.setText(""); // $NON-NLS-1$
+ jmsSelector.setText(""); // $NON-NLS-1$
jmsUser.setText(""); // $NON-NLS-1$
jmsPwd.setText(""); // $NON-NLS-1$
iterations.setText("1"); // $NON-NLS-1$
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=1183653&r1=1183652&r2=1183653&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 Oct 15 14:42:43 2011
@@ -79,16 +79,19 @@ public class SubscriberSampler extends B
// 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 TIMEOUT_DEFAULT = ""; // $NON-NLS-1$
private static final String DURABLE_SUBSCRIPTION_ID =
"jms.durableSubscriptionId"; // $NON-NLS-1$
private static final String CLIENT_ID = "jms.clientId"; // $NON-NLS-1$
+ private static final String JMS_SELECTOR = "jms.selector"; // $NON-NLS-1$
private static final String DURABLE_SUBSCRIPTION_ID_DEFAULT = "";
private static final String CLIENT_ID_DEFAULT = ""; // $NON-NLS-1$
+ private static final String JMS_SELECTOR_DEFAULT = ""; // $NON-NLS-1$
private static final String STOP_BETWEEN = "jms.stop_between_samples"; //
$NON-NLS-1$
private transient boolean START_ON_SAMPLE = false;
public SubscriberSampler() {
+ super();
}
/**
@@ -101,7 +104,7 @@ public class SubscriberSampler extends B
private void initListenerClient() throws JMSException, NamingException {
SUBSCRIBER = new ReceiveSubscriber(0, getUseJNDIPropertiesAsBoolean(),
getJNDIInitialContextFactory(),
getProviderUrl(), getConnectionFactory(),
getDestination(), getDurableSubscriptionId(),
- getClientId(), isUseAuth(), getUsername(), getPassword());
+ getClientId(), getJmsSelector(), isUseAuth(),
getUsername(), getPassword());
log.debug("SubscriberSampler.initListenerClient called");
}
@@ -113,7 +116,7 @@ public class SubscriberSampler extends B
private void initReceiveClient() throws NamingException, JMSException {
SUBSCRIBER = new ReceiveSubscriber(getUseJNDIPropertiesAsBoolean(),
getJNDIInitialContextFactory(), getProviderUrl(),
getConnectionFactory(), getDestination(),
- getDurableSubscriptionId(), getClientId(), isUseAuth(),
getUsername(), getPassword());
+ getDurableSubscriptionId(), getClientId(), getJmsSelector(),
isUseAuth(), getUsername(), getPassword());
log.debug("SubscriberSampler.initReceiveClient called");
}
@@ -371,6 +374,13 @@ public class SubscriberSampler extends B
public String getClientId() {
return getPropertyAsString(CLIENT_ID, CLIENT_ID_DEFAULT);
}
+
+ /**
+ * @return JMS selector
+ */
+ public String getJmsSelector() {
+ return getPropertyAsString(JMS_SELECTOR, JMS_SELECTOR_DEFAULT);
+ }
public void setDurableSubscriptionId(String durableSubscriptionId){
setProperty(DURABLE_SUBSCRIPTION_ID, durableSubscriptionId,
DURABLE_SUBSCRIPTION_ID_DEFAULT);
@@ -382,6 +392,13 @@ public class SubscriberSampler extends B
public void setClientID(String clientId) {
setProperty(CLIENT_ID, clientId, CLIENT_ID_DEFAULT);
}
+
+ /**
+ * @param jmsSelector JMS Selector
+ */
+ public void setJmsSelector(String jmsSelector) {
+ setProperty(JMS_SELECTOR, jmsSelector, JMS_SELECTOR_DEFAULT);
+ }
// This was the old value that was checked for
private final static String RECEIVE_STR =
JMeterUtils.getResString(JMSSubscriberGui.RECEIVE_RSC); // $NON-NLS-1$
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sat Oct 15 14:42:43 2011
@@ -139,6 +139,7 @@ Mirror server now uses default port 8081
<h3>Other samplers</h3>
<ul>
+<li>Bug 51419 - JMS Subscriber: ability to use Selectors</li>
</ul>
<h3>Controllers</h3>
Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_pub.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_pub.png?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
Binary files - no diff available.
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=1183653&r1=1183652&r2=1183653&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=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Oct 15
14:42:43 2011
@@ -1309,6 +1309,8 @@ The following table shows some values wh
use the respective queue will automatically be generated by the JMS provider
if it does not exist yet.</property>
<property name="Client ID" required="No">The Client ID to use when you you
use a durable subscription.
Be sure to add a variable like ${__threadNum} when you have more than one
Thread.</property>
+ <property name="JMS Selector" required="No">Message Selector as defined by
JMS specification to extract only
+ messages that respect the Selector condition. Syntax uses subpart of SQL
92.</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>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]