You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by bennyvw <gi...@git.apache.org> on 2017/11/10 21:03:24 UTC
[GitHub] jmeter issue #325: 61544 - Added read, browse and clear as communication sty...
Github user bennyvw commented on the issue:
https://github.com/apache/jmeter/pull/325
Philippe,
Thanks for your quick review. I am going to pay attention to your remarks asap.
Regards,
Benny.
> Op 10 november 2017 om 21:20 schreef Philippe M <no...@github.com>:
>
>
> @pmouawad requested changes on this pull request.
>
> Thanks a lot for this very interesting contribution.
> Find my remarks below.
> I'll be happy to merge this PR once you can take into account those remarks and possible remarks from other members.
> Regards
>
>
> ---------------------------------------------
>
> In docs/usermanual/component_reference.html https://github.com/apache/jmeter/pull/325#discussion_r150327021 :
>
> > @@ -3813,7 +3813,7 @@ <h3 id="JMS_Publisher_parms1">
>
>
> HTML files are generated from XML. Could you update comonent_reference.xml instead ?
>
>
> ---------------------------------------------
>
> In docs/usermanual/component_reference.html https://github.com/apache/jmeter/pull/325#discussion_r150327166 :
>
> > + queue referenced by <span class="code">message.getJMSReplyTo()</span>.
> +</dd>
> +
> +<dt>
> +<span class="code">Read</span>
> +</dt>
> +<dd> will read a message from an outgoing queue which has no listeners attached. This can be convenient for testing purposes.
> + This method can be used if you need to handle queues without a binding file (in case the jmeter-jms-skip-jndi library is used),
> + which only works with the JMS Point-to-Point sampler.
> + In case binding files are used, one can also use the JMS Subscriber Sampler for reading from a queue.
> +</dd>
> +
> +<dt>
> +<span class="code">Browse</span>
> +</dt>
> +<dd> will determine the current queue depth without removing messages from the queue, returning the number of messages on the queue.
>
> Would it be possible to provide screenshots as it makes documentation much clearer
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150327668 :
>
> > res.setResponseMessage(e.getLocalizedMessage());
> }
> }
> res.sampleEnd();
> return res;
> }
>
> + private void handleBrowse(SampleResult res) throws JMSException {
> + LOGGER.debug("isBrowseOnly");
> + StringBuffer sb = new StringBuffer("");
>
> StringBuilder would be better here, and wherever StringBuffer is used
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150328109 :
>
> > + Integer.parseInt(getPriority()), Long.parseLong(getExpiration()));
> + res.setRequestHeaders(Utils.messageProperties(msg));
> + if (replyMsg == null) {
> + res.setResponseMessage("No reply message received");
> + } else {
> + if (replyMsg instanceof TextMessage) {
> + res.setResponseData(((TextMessage) replyMsg).getText(), null);
> + } else {
> + res.setResponseData(replyMsg.toString(), null);
> + }
> + res.setResponseHeaders(Utils.messageProperties(replyMsg));
> + res.setResponseOK();
> + }
> + }
> +
> + private String browseQueueForConsumption(Queue queue, String jmsSelector, SampleResult res, StringBuilder buffer,
>
> Isn't name confusing here ? AFAIU we are consuming here not browsing right ?
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150328248 :
>
> > + } else {
> + res.setResponseData(replyMsg.toString(), null);
> + }
> + res.setResponseHeaders(Utils.messageProperties(replyMsg));
> + res.setResponseOK();
> + }
> + }
> +
> + private String browseQueueForConsumption(Queue queue, String jmsSelector, SampleResult res, StringBuilder buffer,
> + StringBuilder propBuffer) {
> + String retVal = null;
> + try {
> + QueueReceiver consumer = session.createReceiver(queue, jmsSelector);
> + Message reply = consumer.receive(Long.valueOf(getTimeout()));
> + LOGGER.debug("Message: " + reply);
> + consumer.close();
>
> You should use try with resource pattern to ensure close happens ? Or use try/finally and closeQuietly depending on what you want to do
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150328288 :
>
> > + try {
> + QueueReceiver consumer = session.createReceiver(queue, jmsSelector);
> + Message reply = consumer.receive(Long.valueOf(getTimeout()));
> + LOGGER.debug("Message: " + reply);
> + consumer.close();
> + if (reply != null) {
> + res.setResponseMessage("1 message(s) received successfully");
> + res.setResponseHeaders(reply.toString());
> + TextMessage msg = (TextMessage) reply;
> + retVal = msg.getText();
> + extractContent(buffer, propBuffer, msg);
> + } else {
> + res.setResponseMessage("No message received");
> + }
> + } catch (Exception ex) {
> + ex.printStackTrace();
>
> This must be removed
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150328360 :
>
> > + QueueReceiver consumer = session.createReceiver(queue, jmsSelector);
> + Message reply = consumer.receive(Long.valueOf(getTimeout()));
> + LOGGER.debug("Message: " + reply);
> + consumer.close();
> + if (reply != null) {
> + res.setResponseMessage("1 message(s) received successfully");
> + res.setResponseHeaders(reply.toString());
> + TextMessage msg = (TextMessage) reply;
> + retVal = msg.getText();
> + extractContent(buffer, propBuffer, msg);
> + } else {
> + res.setResponseMessage("No message received");
> + }
> + } catch (Exception ex) {
> + ex.printStackTrace();
> + LOGGER.error(ex.getMessage());
>
> Any logging requires some contextual information otherwise it's useless.
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150328441 :
>
> > + if (corrID == null) {
> + corrID = message.getJMSMessageID();
> + messageBodies = messageBodies + numMsgs + " - MessageID: " + corrID + ": " + message.getText()
> + + "\n";
> + } else {
> + messageBodies = messageBodies + numMsgs + " - CorrelationID: " + corrID + ": " + message.getText()
> + + "\n";
> + }
> + numMsgs++;
> + }
> + res.setResponseMessage(numMsgs + " messages available on the queue");
> + res.setResponseHeaders(qBrowser.toString());
> + return (messageBodies + queue.getQueueName() + " has " + numMsgs + " messages");
> + } catch (Exception e) {
> + res.setResponseMessage("Error counting message on the queue");
> + e.printStackTrace();
>
> Same remarks as above
>
>
> ---------------------------------------------
>
> In src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java https://github.com/apache/jmeter/pull/325#discussion_r150328999 :
>
> > + LOGGER.error(e.getMessage());
> + return "";
> + }
> + }
> +
> + private String clearQueue(Queue queue, SampleResult res) {
> + String retVal = null;
> + try {
> + QueueReceiver consumer = session.createReceiver(queue);
> + Message deletedMsg = null;
> + long deletedMsgCount = 0;
> + do {
> + deletedMsg = consumer.receiveNoWait();
> + if (deletedMsg != null) {
> + deletedMsgCount++;
> + deletedMsg.acknowledge();
>
> Shouldn't this be parameterized ? There are 4 modes, if we ACK for AUTO_ACK that would be wrong no ?
>
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub https://github.com/apache/jmeter/pull/325#pullrequestreview-75868433 , or mute the thread https://github.com/notifications/unsubscribe-auth/Aem4Xh4JYZs7qs0fAg01NRZYm8aTa2g-ks5s1LAlgaJpZM4QZnSl .
>
>
>
Met vriendelijke groet,
Benny van Wijngaarden.
Tel. 0629556587http://www.smaragd-it.nl/
benny@smaragd-it.nl mailto:benny@smaragd-it.nl
---