Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding x-max-priority queue attribute and correcting issue 41 #42

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/main/com/zeroclue/jmeter/protocol/amqp/AMQPConsumer.java
Original file line number Diff line number Diff line change
Expand Up @@ -354,9 +354,11 @@ private String formatHeaders(QueueingConsumer.Delivery delivery){
sb.append(EXCHANGE_PARAMETER).append(": ").append(delivery.getEnvelope().getExchange()).append("\n");
sb.append(ROUTING_KEY_PARAMETER).append(": ").append(delivery.getEnvelope().getRoutingKey()).append("\n");
sb.append(DELIVERY_TAG_PARAMETER).append(": ").append(delivery.getEnvelope().getDeliveryTag()).append("\n");
for (String key : headers.keySet()) {
sb.append(key).append(": ").append(headers.get(key)).append("\n");
}
if(headers != null){
for (String key : headers.keySet()) {
sb.append(key).append(": ").append(headers.get(key)).append("\n");
}
}
return sb.toString();
}
}
40 changes: 37 additions & 3 deletions src/main/com/zeroclue/jmeter/protocol/amqp/AMQPPublisher.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ public class AMQPPublisher extends AMQPSampler implements Interruptible {
private final static String REPLY_TO_QUEUE = "AMQPPublisher.ReplyToQueue";
private final static String CONTENT_TYPE = "AMQPPublisher.ContentType";
private final static String CORRELATION_ID = "AMQPPublisher.CorrelationId";
private final static String PRIORITY = "AMQPPublisher.Priority";
private final static String DELIVERY_MODE = "AMQPPublisher.DeliveryMode";
private final static String MESSAGE_ID = "AMQPPublisher.MessageId";
private final static String HEADERS = "AMQPPublisher.Headers";

Expand Down Expand Up @@ -175,11 +177,11 @@ public void setReplyToQueue(String content) {
public String getContentType() {
return getPropertyAsString(CONTENT_TYPE);
}

public void setContentType(String contentType) {
setProperty(CONTENT_TYPE, contentType);
}

/**
* @return the correlation identifier for the sample
*/
Expand All @@ -191,6 +193,36 @@ public void setCorrelationId(String content) {
setProperty(CORRELATION_ID, content);
}

public String getPriority() {
return getPropertyAsString(PRIORITY);
}

protected int getPriorityAsInt() {
if (getPropertyAsInt(PRIORITY) < 0) {
return 0;
}
return getPropertyAsInt(PRIORITY);
}

public void setPriority(String content) {
setProperty(PRIORITY, content);
}

public String getDeliveryMode() {
return getPropertyAsString(DELIVERY_MODE);
}

public void setDeliveryMode(String content) {
setProperty(DELIVERY_MODE, content);
}

protected int getDeliveryModeAsInt() {
if (getPropertyAsInt(DELIVERY_MODE) < 1) {
return 1;
}
return getPropertyAsInt(DELIVERY_MODE);
}

/**
* @return the message id for the sample
*/
Expand Down Expand Up @@ -247,11 +279,13 @@ protected AMQP.BasicProperties getProperties() {

final int deliveryMode = getPersistent() ? 2 : 1;
final String contentType = StringUtils.defaultIfEmpty(getContentType(), "text/plain");

builder.contentType(contentType)
.deliveryMode(deliveryMode)
.priority(0)
.correlationId(getCorrelationId())
.priority(getPriorityAsInt())
.deliveryMode(getDeliveryModeAsInt())
.replyTo(getReplyToQueue())
.type(getMessageType())
.headers(prepareHeaders())
Expand Down
19 changes: 19 additions & 0 deletions src/main/com/zeroclue/jmeter/protocol/amqp/AMQPSampler.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public abstract class AMQPSampler extends AbstractSampler implements ThreadListe
private static final String ITERATIONS = "AMQPSampler.Iterations";
private static final String MESSAGE_TTL = "AMQPSampler.MessageTTL";
private static final String MESSAGE_EXPIRES = "AMQPSampler.MessageExpires";
private static final String X_MAX_PRIORITY = "AMQPSampler.XMaxPriority";
private static final String QUEUE_DURABLE = "AMQPSampler.QueueDurable";
private static final String QUEUE_REDECLARE = "AMQPSampler.Redeclare";
private static final String QUEUE_EXCLUSIVE = "AMQPSampler.QueueExclusive";
Expand Down Expand Up @@ -122,6 +123,9 @@ private Map<String, Object> getQueueArguments() {
if(getMessageExpires() != null && !getMessageExpires().isEmpty())
arguments.put("x-expires", getMessageExpiresAsInt());

if(getXMaxPriority() != null && !getXMaxPriority().isEmpty())
arguments.put("x-max-priority", getXMaxPriorityAsInt());

return arguments;
}

Expand Down Expand Up @@ -263,6 +267,21 @@ protected Integer getMessageExpiresAsInt() {
return getPropertyAsInt(MESSAGE_EXPIRES);
}

public String getXMaxPriority() {
return getPropertyAsString(X_MAX_PRIORITY);
}

public void setXMaxPriority(String name) {
setProperty(X_MAX_PRIORITY, name);
}

protected Integer getXMaxPriorityAsInt() {
if (getPropertyAsInt(X_MAX_PRIORITY) < 0) {
return null;
}
return getPropertyAsInt(X_MAX_PRIORITY);
}


public String getHost() {
return getPropertyAsString(HOST);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public class AMQPPublisherGui extends AMQPSamplerGui {
private JLabeledTextField messageType = new JLabeledTextField("Message Type");
private JLabeledTextField replyToQueue = new JLabeledTextField("Reply-To Queue");
private JLabeledTextField correlationId = new JLabeledTextField("Correlation Id");
private JLabeledTextField priority = new JLabeledTextField("Priority");
private JLabeledTextField deliveryMode = new JLabeledTextField("Delivery mode");
private JLabeledTextField contentType = new JLabeledTextField("ContentType");
private JLabeledTextField messageId = new JLabeledTextField("Message Id");

Expand Down Expand Up @@ -80,6 +82,8 @@ public void configure(TestElement element) {
replyToQueue.setText(sampler.getReplyToQueue());
contentType.setText(sampler.getContentType());
correlationId.setText(sampler.getCorrelationId());
priority.setText(sampler.getPriority());
deliveryMode.setText(sampler.getDeliveryMode());
messageId.setText(sampler.getMessageId());
message.setText(sampler.getMessage());
configureHeaders(sampler);
Expand Down Expand Up @@ -114,6 +118,8 @@ public void modifyTestElement(TestElement te) {
sampler.setMessageType(messageType.getText());
sampler.setReplyToQueue(replyToQueue.getText());
sampler.setCorrelationId(correlationId.getText());
sampler.setPriority(priority.getText());
sampler.setDeliveryMode(deliveryMode.getText());
sampler.setContentType(contentType.getText());
sampler.setMessageId(messageId.getText());
sampler.setHeaders((Arguments) headers.createTestElement());
Expand All @@ -136,6 +142,8 @@ protected final void init() {
messageType.setPreferredSize(new Dimension(100, 25));
replyToQueue.setPreferredSize(new Dimension(100, 25));
correlationId.setPreferredSize(new Dimension(100, 25));
priority.setPreferredSize(new Dimension(100, 25));
deliveryMode.setPreferredSize(new Dimension(100, 25));
contentType.setPreferredSize(new Dimension(100, 25));
messageId.setPreferredSize(new Dimension(100, 25));
message.setPreferredSize(new Dimension(400, 150));
Expand All @@ -146,6 +154,8 @@ protected final void init() {
mainPanel.add(messageType);
mainPanel.add(replyToQueue);
mainPanel.add(correlationId);
mainPanel.add(priority);
mainPanel.add(deliveryMode);
mainPanel.add(contentType);
mainPanel.add(messageId);
mainPanel.add(headers);
Expand All @@ -164,6 +174,8 @@ public void clearGui() {
messageType.setText("");
replyToQueue.setText("");
correlationId.setText("");
priority.setText("");
deliveryMode.setText("");
contentType.setText("");
messageId.setText("");
headers.clearGui();
Expand All @@ -179,4 +191,4 @@ private void configureHeaders(AMQPPublisher sampler)
headers.clearGui();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public abstract class AMQPSamplerGui extends AbstractSamplerGui {
protected JLabeledTextField virtualHost = new JLabeledTextField("Virtual Host");
protected JLabeledTextField messageTTL = new JLabeledTextField("Message TTL");
protected JLabeledTextField messageExpires = new JLabeledTextField("Expires");
protected JLabeledTextField xMaxPriority = new JLabeledTextField("x-max-priority");
protected JLabeledChoice exchangeType = new JLabeledChoice("Exchange Type", new String[]{ "direct", "topic", "headers", "fanout"});
private final JCheckBox exchangeDurable = new JCheckBox("Durable?", AMQPSampler.DEFAULT_EXCHANGE_DURABLE);
private final JCheckBox exchangeAutoDelete = new JCheckBox("Auto Delete?", AMQPSampler.DEFAULT_EXCHANGE_AUTO_DELETE);
Expand Down Expand Up @@ -65,6 +66,7 @@ public void configure(TestElement element) {
virtualHost.setText(sampler.getVirtualHost());
messageTTL.setText(sampler.getMessageTTL());
messageExpires.setText(sampler.getMessageExpires());
xMaxPriority.setText(sampler.getXMaxPriority());
queueDurable.setSelected(sampler.queueDurable());
queueExclusive.setSelected(sampler.queueExclusive());
queueAutoDelete.setSelected(sampler.queueAutoDelete());
Expand Down Expand Up @@ -130,6 +132,7 @@ public void modifyTestElement(TestElement element) {
sampler.setVirtualHost(virtualHost.getText());
sampler.setMessageTTL(messageTTL.getText());
sampler.setMessageExpires(messageExpires.getText());
sampler.setXMaxPriority(xMaxPriority.getText());
sampler.setExchangeType(exchangeType.getText());
sampler.setQueueDurable(queueDurable.isSelected());
sampler.setQueueExclusive(queueExclusive.isSelected());
Expand Down Expand Up @@ -222,6 +225,10 @@ private Component makeCommonPanel() {
gridBagConstraints.gridy = 3;
queueSettings.add(messageExpires, gridBagConstraints);

gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
queueSettings.add(xMaxPriority, gridBagConstraints);

gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
queueSettings.add(queueDurable, gridBagConstraints);
Expand Down