Author: pmouawad Date: Sat Nov 18 21:39:34 2017 New Revision: 1815698 URL: http://svn.apache.org/viewvc?rev=1815698&view=rev Log: Bug 61544 - JMS Point-to-Point Sampler: Enhance communication styles with read, browse, clear This closes #325 Fix persistence and add tests Bugzilla Id: 61544
Modified: jmeter/trunk/bin/testfiles/JMS_TESTS.csv jmeter/trunk/bin/testfiles/JMS_TESTS.jmx jmeter/trunk/bin/testfiles/JMS_TESTS.xml jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSamplerGui.java jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java Modified: jmeter/trunk/bin/testfiles/JMS_TESTS.csv URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/JMS_TESTS.csv?rev=1815698&r1=1815697&r2=1815698&view=diff ============================================================================== --- jmeter/trunk/bin/testfiles/JMS_TESTS.csv (original) +++ jmeter/trunk/bin/testfiles/JMS_TESTS.csv Sat Nov 18 21:39:34 2017 @@ -8,6 +8,12 @@ JMS-P2P-DifferentSelector,,No reply mess JMS-P2P-SameSelector,200,OK,TG-JMS-P2P 1-1,text,true,1,1,1,0 JMS-P2P-RequestOnly,200,OK,TG-JMS-P2P 1-1,text,true,1,1,1,0 JSS-ConsumePreviousMessage,200,OK,TG-JMS-P2P 1-1,text,true,1,1,1,0 +JMS-P2P-RequestOnly,200,OK,TG-JMS-P2P 1-1,text,true,1,1,1,0 +JMS-P2P-Browse,200,1 messages available on the queue,TG-JMS-P2P 1-1,text,true,1,1,1,0 +JMS-P2P-Read,200,1 message(s) received successfully,TG-JMS-P2P 1-1,text,true,1,1,1,0 +JMS-P2P-RequestOnlyForClear,200,OK,TG-JMS-P2P 1-1,text,true,1,1,1,0 +JMS-P2P-Clear,200,1 message(s) removed,TG-JMS-P2P 1-1,text,true,1,1,1,0 +JMS-P2P-BrowseAfterClear,200,0 messages available on the queue,TG-JMS-P2P 1-1,text,true,1,1,1,0 JMS Publisher-NonDurable,200,1 messages published,TG-JMS-PS 2-1,,true,1,1,1,0 JMS Subscriber-NonDurable,200,1 message(s) received successfully of 1 expected,TG-JMS-PS 2-1,text,true,1,1,1,0 JMS Publisher-Persistent,200,1 messages published,TG-JMS-PS-Selector-receive 3-1,,true,1,1,1,0 Modified: jmeter/trunk/bin/testfiles/JMS_TESTS.jmx URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/JMS_TESTS.jmx?rev=1815698&r1=1815697&r2=1815698&view=diff ============================================================================== --- jmeter/trunk/bin/testfiles/JMS_TESTS.jmx (original) +++ jmeter/trunk/bin/testfiles/JMS_TESTS.jmx Sat Nov 18 21:39:34 2017 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<jmeterTestPlan version="1.2" properties="3.4" jmeter="3.4-SNAPSHOT.20171027"> +<jmeterTestPlan version="1.2" properties="3.4" jmeter="3.4-SNAPSHOT.20171118"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -29,7 +29,7 @@ <stringProp name="scriptLanguage">groovy</stringProp> <stringProp name="parameters"></stringProp> <stringProp name="filename"></stringProp> - <stringProp name="cacheKey">12bd6db8-b5be-4825-a7ce-b7f4ba5ba84e</stringProp> + <stringProp name="cacheKey">true</stringProp> <stringProp name="script">import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.BrokerFactory; import org.apache.jmeter.util.JMeterUtils; @@ -82,7 +82,6 @@ try { <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue0</stringProp> <stringProp name="JMSSampler.ReceiveQueue">dynamicQueues/requestQueue0</stringProp> - <boolProp name="JMSSampler.isFireAndForget">false</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">true</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> @@ -96,6 +95,7 @@ try { <collectionProp name="JMSProperties.properties"/> </elementProp> <boolProp name="JMSSampler.useResMsgIdAsCorrelId">true</boolProp> + <intProp name="JMSSampler.communicationStyle">1</intProp> </JMSSampler> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> @@ -109,7 +109,7 @@ try { <hashTree/> </hashTree> <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSS-ConsumeUpcomingMessage" enabled="true"> - <stringProp name="cacheKey">c7334ba5-f18d-407c-9a7f-28c29a6bee84</stringProp> + <stringProp name="cacheKey">true</stringProp> <stringProp name="filename"></stringProp> <stringProp name="parameters">dynamicQueues/requestQueue0-tmp</stringProp> <stringProp name="script">import org.apache.activemq.ActiveMQConnectionFactory; @@ -190,7 +190,6 @@ class MyMessageListener implements Messa <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue0-tmp</stringProp> <stringProp name="JMSSampler.ReceiveQueue"></stringProp> - <boolProp name="JMSSampler.isFireAndForget">false</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">true</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> @@ -205,6 +204,7 @@ class MyMessageListener implements Messa </elementProp> <boolProp name="JMSSampler.useResMsgIdAsCorrelId">true</boolProp> <stringProp name="TestPlan.comments">Test case where Request queue is empty meaning we'll wait for a reply on ReplyTo queue</stringProp> + <intProp name="JMSSampler.communicationStyle">1</intProp> </JMSSampler> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> @@ -221,7 +221,6 @@ class MyMessageListener implements Messa <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue1</stringProp> <stringProp name="JMSSampler.ReceiveQueue">dynamicQueues/requestQueue1</stringProp> - <boolProp name="JMSSampler.isFireAndForget">false</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> @@ -240,6 +239,7 @@ class MyMessageListener implements Messa </elementProp> </collectionProp> </elementProp> + <intProp name="JMSSampler.communicationStyle">1</intProp> </JMSSampler> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> @@ -256,7 +256,6 @@ class MyMessageListener implements Messa <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue2</stringProp> <stringProp name="JMSSampler.ReceiveQueue">dynamicQueues/requestQueue2</stringProp> - <boolProp name="JMSSampler.isFireAndForget">false</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> @@ -281,6 +280,7 @@ class MyMessageListener implements Messa </collectionProp> </elementProp> <stringProp name="JMSSampler.jmsSelector">NewsType='Opinion'</stringProp> + <intProp name="JMSSampler.communicationStyle">1</intProp> </JMSSampler> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> @@ -297,7 +297,6 @@ class MyMessageListener implements Messa <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue3</stringProp> <stringProp name="JMSSampler.ReceiveQueue">dynamicQueues/requestQueue3</stringProp> - <boolProp name="JMSSampler.isFireAndForget">false</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> @@ -322,6 +321,7 @@ class MyMessageListener implements Messa </collectionProp> </elementProp> <stringProp name="JMSSampler.jmsSelector">NewsType='Sports'</stringProp> + <intProp name="JMSSampler.communicationStyle">1</intProp> </JMSSampler> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> @@ -338,7 +338,6 @@ class MyMessageListener implements Messa <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue4</stringProp> <stringProp name="JMSSampler.ReceiveQueue"></stringProp> - <boolProp name="JMSSampler.isFireAndForget">true</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> @@ -357,6 +356,7 @@ class MyMessageListener implements Messa </elementProp> </collectionProp> </elementProp> + <intProp name="JMSSampler.communicationStyle">0</intProp> </JMSSampler> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> @@ -382,7 +382,7 @@ class MyMessageListener implements Messa <hashTree/> </hashTree> <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSS-ConsumePreviousMessage" enabled="true"> - <stringProp name="cacheKey">c7334ba5-f18d-407c-9a7f-28c29a6bee84</stringProp> + <stringProp name="cacheKey">true</stringProp> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script">import org.apache.activemq.ActiveMQConnectionFactory; @@ -434,6 +434,241 @@ finally { </ResponseAssertion> <hashTree/> </hashTree> + <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS-P2P-RequestOnly" enabled="true"> + <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> + <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue5</stringProp> + <stringProp name="JMSSampler.ReceiveQueue"></stringProp> + <boolProp name="JMSSampler.isNonPersistent">false</boolProp> + <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> + <stringProp name="JMSSampler.timeout"></stringProp> + <stringProp name="HTTPSamper.xml_data">Test-send-only-for-count-and-read</stringProp> + <stringProp name="JMSSampler.initialContextFactory">org.apache.activemq.jndi.ActiveMQInitialContextFactory</stringProp> + <stringProp name="JMSSampler.contextProviderUrl">tcp://localhost:61616</stringProp> + <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <elementProp name="arguments" elementType="JMSProperties"> + <collectionProp name="JMSProperties.properties"> + <elementProp name="" elementType="JMSProperty"> + <stringProp name="JMSProperty.name">JMSCorrelationId</stringProp> + <stringProp name="JMSProperty.value">MsgId-${__time(,)}</stringProp> + <stringProp name="JMSProperty.type">java.lang.String</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <intProp name="JMSSampler.communicationstyle">0</intProp> + <intProp name="JMSSampler.communicationStyle">0</intProp> + </JMSSampler> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="-1549895784">Oneway request has no response data</stringProp> + </collectionProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">16</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Think Time" enabled="true"> + <intProp name="ActionProcessor.action">1</intProp> + <intProp name="ActionProcessor.target">0</intProp> + <stringProp name="ActionProcessor.duration">0</stringProp> + </TestAction> + <hashTree> + <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Pause" enabled="true"> + <stringProp name="ConstantTimer.delay">1000</stringProp> + <stringProp name="RandomTimer.range">100</stringProp> + </UniformRandomTimer> + <hashTree/> + </hashTree> + <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS-P2P-Browse" enabled="true"> + <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> + <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue5</stringProp> + <stringProp name="JMSSampler.ReceiveQueue"></stringProp> + <boolProp name="JMSSampler.isNonPersistent">false</boolProp> + <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> + <stringProp name="JMSSampler.timeout"></stringProp> + <stringProp name="HTTPSamper.xml_data"></stringProp> + <stringProp name="JMSSampler.initialContextFactory">org.apache.activemq.jndi.ActiveMQInitialContextFactory</stringProp> + <stringProp name="JMSSampler.contextProviderUrl">tcp://localhost:61616</stringProp> + <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <elementProp name="arguments" elementType="JMSProperties"> + <collectionProp name="JMSProperties.properties"> + <elementProp name="" elementType="JMSProperty"> + <stringProp name="JMSProperty.name">JMSCorrelationId</stringProp> + <stringProp name="JMSProperty.value">MsgId-${__time(,)}</stringProp> + <stringProp name="JMSProperty.type">java.lang.String</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <intProp name="JMSSampler.communicationstyle">3</intProp> + <intProp name="JMSSampler.communicationStyle">3</intProp> + </JMSSampler> + <hashTree> + <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Pause" enabled="true"> + <stringProp name="ConstantTimer.delay">1000</stringProp> + <stringProp name="RandomTimer.range">100</stringProp> + </UniformRandomTimer> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="-1029016402">requestQueue5 has 1 messages</stringProp> + </collectionProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">16</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS-P2P-Read" enabled="true"> + <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> + <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue5</stringProp> + <stringProp name="JMSSampler.ReceiveQueue"></stringProp> + <boolProp name="JMSSampler.isNonPersistent">false</boolProp> + <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> + <stringProp name="JMSSampler.timeout">1000</stringProp> + <stringProp name="HTTPSamper.xml_data"></stringProp> + <stringProp name="JMSSampler.initialContextFactory">org.apache.activemq.jndi.ActiveMQInitialContextFactory</stringProp> + <stringProp name="JMSSampler.contextProviderUrl">tcp://localhost:61616</stringProp> + <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <elementProp name="arguments" elementType="JMSProperties"> + <collectionProp name="JMSProperties.properties"/> + </elementProp> + <intProp name="JMSSampler.communicationstyle">2</intProp> + <intProp name="JMSSampler.communicationStyle">2</intProp> + </JMSSampler> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="-1086280699">Test-send-only-for-count-and-read</stringProp> + </collectionProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">16</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS-P2P-RequestOnlyForClear" enabled="true"> + <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> + <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue6</stringProp> + <stringProp name="JMSSampler.ReceiveQueue"></stringProp> + <boolProp name="JMSSampler.isNonPersistent">false</boolProp> + <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> + <stringProp name="JMSSampler.timeout"></stringProp> + <stringProp name="HTTPSamper.xml_data">Test-send-only-for-clear</stringProp> + <stringProp name="JMSSampler.initialContextFactory">org.apache.activemq.jndi.ActiveMQInitialContextFactory</stringProp> + <stringProp name="JMSSampler.contextProviderUrl">tcp://localhost:61616</stringProp> + <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <elementProp name="arguments" elementType="JMSProperties"> + <collectionProp name="JMSProperties.properties"> + <elementProp name="" elementType="JMSProperty"> + <stringProp name="JMSProperty.name">JMSCorrelationId</stringProp> + <stringProp name="JMSProperty.value">MsgId-${__time(,)}</stringProp> + <stringProp name="JMSProperty.type">java.lang.String</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <intProp name="JMSSampler.communicationstyle">0</intProp> + <intProp name="JMSSampler.communicationStyle">0</intProp> + </JMSSampler> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="-1549895784">Oneway request has no response data</stringProp> + </collectionProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">16</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Think Time" enabled="true"> + <intProp name="ActionProcessor.action">1</intProp> + <intProp name="ActionProcessor.target">0</intProp> + <stringProp name="ActionProcessor.duration">0</stringProp> + </TestAction> + <hashTree> + <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Pause" enabled="true"> + <stringProp name="ConstantTimer.delay">1000</stringProp> + <stringProp name="RandomTimer.range">100</stringProp> + </UniformRandomTimer> + <hashTree/> + </hashTree> + <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS-P2P-Clear" enabled="true"> + <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> + <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue6</stringProp> + <stringProp name="JMSSampler.ReceiveQueue"></stringProp> + <boolProp name="JMSSampler.isNonPersistent">false</boolProp> + <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> + <stringProp name="JMSSampler.timeout">1</stringProp> + <stringProp name="HTTPSamper.xml_data"></stringProp> + <stringProp name="JMSSampler.initialContextFactory">org.apache.activemq.jndi.ActiveMQInitialContextFactory</stringProp> + <stringProp name="JMSSampler.contextProviderUrl">tcp://localhost:61616</stringProp> + <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <elementProp name="arguments" elementType="JMSProperties"> + <collectionProp name="JMSProperties.properties"/> + </elementProp> + <intProp name="JMSSampler.communicationstyle">4</intProp> + <stringProp name="JMSSampler.expiration">1000</stringProp> + <stringProp name="JMSSampler.jmsNumberOfSamplesToAggregate"></stringProp> + <intProp name="JMSSampler.communicationStyle">4</intProp> + </JMSSampler> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="2008037952">requestQueue6: 1 message(s) removed</stringProp> + </collectionProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">16</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS-P2P-BrowseAfterClear" enabled="true"> + <stringProp name="JMSSampler.queueconnectionfactory">ConnectionFactory</stringProp> + <stringProp name="JMSSampler.SendQueue">dynamicQueues/requestQueue6</stringProp> + <stringProp name="JMSSampler.ReceiveQueue"></stringProp> + <boolProp name="JMSSampler.isNonPersistent">false</boolProp> + <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> + <stringProp name="JMSSampler.timeout"></stringProp> + <stringProp name="HTTPSamper.xml_data">Test-send-only-for-count-and-read</stringProp> + <stringProp name="JMSSampler.initialContextFactory">org.apache.activemq.jndi.ActiveMQInitialContextFactory</stringProp> + <stringProp name="JMSSampler.contextProviderUrl">tcp://localhost:61616</stringProp> + <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <elementProp name="arguments" elementType="JMSProperties"> + <collectionProp name="JMSProperties.properties"> + <elementProp name="" elementType="JMSProperty"> + <stringProp name="JMSProperty.name">JMSCorrelationId</stringProp> + <stringProp name="JMSProperty.value">MsgId-${__time(,)}</stringProp> + <stringProp name="JMSProperty.type">java.lang.String</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <intProp name="JMSSampler.communicationstyle">3</intProp> + <intProp name="JMSSampler.communicationStyle">3</intProp> + </JMSSampler> + <hashTree> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="-1343037074">requestQueue6 has 0 messages</stringProp> + </collectionProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">16</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG-JMS-PS" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> @@ -1136,7 +1371,7 @@ propFloat 1.2</stringProp> <stringProp name="scriptLanguage">groovy</stringProp> <stringProp name="parameters"></stringProp> <stringProp name="filename"></stringProp> - <stringProp name="cacheKey">d47bf508-8239-4927-913f-238941a3e887</stringProp> + <stringProp name="cacheKey">true</stringProp> <stringProp name="script">import org.apache.activemq.broker.BrokerService; import org.apache.jmeter.util.JMeterUtils; import org.apache.commons.io.FileUtils; @@ -1180,6 +1415,7 @@ FileUtils.deleteDirectory(new File(JMete </value> </objProp> <stringProp name="filename">JMS_TESTS.csv</stringProp> + <stringProp name="TestPlan.comments">Clear messages on Send Queue requestQueue6:1 message(s) removed</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true"> @@ -1216,9 +1452,5 @@ FileUtils.deleteDirectory(new File(JMete </ResultCollector> <hashTree/> </hashTree> - <WorkBench guiclass="WorkBenchGui" testclass="WorkBench" testname="WorkBench" enabled="true"> - <boolProp name="WorkBench.save">true</boolProp> - </WorkBench> - <hashTree/> </hashTree> </jmeterTestPlan> Modified: jmeter/trunk/bin/testfiles/JMS_TESTS.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/JMS_TESTS.xml?rev=1815698&r1=1815697&r2=1815698&view=diff ============================================================================== --- jmeter/trunk/bin/testfiles/JMS_TESTS.xml (original) +++ jmeter/trunk/bin/testfiles/JMS_TESTS.xml Sat Nov 18 21:39:34 2017 @@ -57,6 +57,48 @@ <error>false</error> </assertionResult> </sample> +<sample s="true" lb="JMS-P2P-RequestOnly" rc="200" rm="OK" tn="TG-JMS-P2P 1-1" dt="text" sc="1" ec="0" ng="1" na="1"> + <assertionResult> + <name>Response Assertion</name> + <failure>false</failure> + <error>false</error> + </assertionResult> +</sample> +<sample s="true" lb="JMS-P2P-Browse" rc="200" rm="1 messages available on the queue" tn="TG-JMS-P2P 1-1" dt="text" sc="1" ec="0" ng="1" na="1"> + <assertionResult> + <name>Response Assertion</name> + <failure>false</failure> + <error>false</error> + </assertionResult> +</sample> +<sample s="true" lb="JMS-P2P-Read" rc="200" rm="1 message(s) received successfully" tn="TG-JMS-P2P 1-1" dt="text" sc="1" ec="0" ng="1" na="1"> + <assertionResult> + <name>Response Assertion</name> + <failure>false</failure> + <error>false</error> + </assertionResult> +</sample> +<sample s="true" lb="JMS-P2P-RequestOnlyForClear" rc="200" rm="OK" tn="TG-JMS-P2P 1-1" dt="text" sc="1" ec="0" ng="1" na="1"> + <assertionResult> + <name>Response Assertion</name> + <failure>false</failure> + <error>false</error> + </assertionResult> +</sample> +<sample s="true" lb="JMS-P2P-Clear" rc="200" rm="1 message(s) removed" tn="TG-JMS-P2P 1-1" dt="text" sc="1" ec="0" ng="1" na="1"> + <assertionResult> + <name>Response Assertion</name> + <failure>false</failure> + <error>false</error> + </assertionResult> +</sample> +<sample s="true" lb="JMS-P2P-BrowseAfterClear" rc="200" rm="0 messages available on the queue" tn="TG-JMS-P2P 1-1" dt="text" sc="1" ec="0" ng="1" na="1"> + <assertionResult> + <name>Response Assertion</name> + <failure>false</failure> + <error>false</error> + </assertionResult> +</sample> <sample s="true" lb="JMS Publisher-NonDurable" rc="200" rm="1 messages published" tn="TG-JMS-PS 2-1" dt="" sc="1" ec="0" ng="1" na="1"> <assertionResult> <name>Response Assertion</name> Modified: jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSamplerGui.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSamplerGui.java?rev=1815698&r1=1815697&r2=1815698&view=diff ============================================================================== --- jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSamplerGui.java (original) +++ jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSamplerGui.java Sat Nov 18 21:39:34 2017 @@ -44,7 +44,6 @@ import org.apache.jorphan.gui.JLabeledTe /** * Configuration screen for Java Messaging Point-to-Point requests. <br> - * Created on: October 28, 2004 * */ public class JMSSamplerGui extends AbstractSamplerGui { @@ -137,7 +136,7 @@ public class JMSSamplerGui extends Abstr element.setReceiveQueue(receiveQueue.getText()); element.setProperty(JMSSampler.JMS_COMMUNICATION_STYLE, jmsCommunicationStyle.getSelectedIndex()); - + element.removeProperty(JMSSampler.IS_ONE_WAY); element.setNonPersistent(useNonPersistentDelivery.isSelected()); element.setUseReqMsgIdAsCorrelId(useReqMsgIdAsCorrelId.isSelected()); element.setUseResMsgIdAsCorrelId(useResMsgIdAsCorrelId.isSelected()); Modified: jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java?rev=1815698&r1=1815697&r2=1815698&view=diff ============================================================================== --- jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java (original) +++ jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java Sat Nov 18 21:39:34 2017 @@ -216,18 +216,22 @@ public class JMSSampler extends Abstract LOGGER.debug("isBrowseOnly"); StringBuilder sb = new StringBuilder(""); res.setSuccessful(true); - sb.append("\n \n Browse message on Send Queue " + sendQueue.getQueueName()); - sb.append(browseQueueDetails(sendQueue, res)); + sb.append("Browse message on Send Queue ").append(sendQueue.getQueueName()) + .append(": ") + .append(browseQueueDetails(sendQueue, res)); res.setResponseData(sb.toString().getBytes()); + res.setResponseCodeOK(); } private void handleClearQueue(SampleResult res) throws JMSException { LOGGER.debug("isClearQueue"); StringBuilder sb = new StringBuilder(""); res.setSuccessful(true); - sb.append("\n \n Clear messages on Send Queue " + sendQueue.getQueueName()); - sb.append(clearQueue(sendQueue, res)); + sb.append("Clear messages on Send Queue ").append(sendQueue.getQueueName()) + .append(": ") + .append(clearQueue(sendQueue, res)); res.setResponseData(sb.toString().getBytes()); + res.setResponseCodeOK(); } private void handleOneWay(SampleResult res) throws JMSException {