diff options
Diffstat (limited to 'java/perftests/src/main/java/org/apache/qpid/disttest/controller')
5 files changed, 55 insertions, 14 deletions
diff --git a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java index eaccb54f0e..5a726c50b4 100644 --- a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java +++ b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java @@ -57,34 +57,54 @@ public class ClientRegistry return Collections.unmodifiableSet(_registeredClientNames); } - public int awaitClients(int numberOfClientsToAwait, long timeout) + /** + * @return the number of clients that are still absent. + */ + public int awaitClients(final int numberOfClientsToAwait, final long idleTimeout) { - final long endTime = System.currentTimeMillis() + timeout; + long deadlineForNextRegistration = deadline(idleTimeout); - int numberOfClientsAbsent = numberOfClientsToAwait - _registeredClientNames.size(); - long remainingTimeout = endTime - System.currentTimeMillis(); + int numberOfClientsAbsent = numberAbsent(numberOfClientsToAwait); - while(numberOfClientsAbsent > 0 && remainingTimeout > 0) + while(numberOfClientsAbsent > 0 && System.currentTimeMillis() < deadlineForNextRegistration) { synchronized (_lock) { try { - _lock.wait(remainingTimeout); + _lock.wait(idleTimeout); } catch (InterruptedException e) { Thread.currentThread().interrupt(); + return numberOfClientsAbsent; } } - numberOfClientsAbsent = numberOfClientsToAwait - _registeredClientNames.size(); - remainingTimeout = endTime - System.currentTimeMillis(); + int newNumberAbsent = numberAbsent(numberOfClientsToAwait); + if(newNumberAbsent < numberOfClientsAbsent) + { + // a registration was received since the last loop, so reset the timeout + deadlineForNextRegistration = deadline(idleTimeout); + } + + numberOfClientsAbsent = newNumberAbsent; } return numberOfClientsAbsent < 0 ? 0 : numberOfClientsAbsent; } + + private long deadline(final long idleTimeout) + { + return System.currentTimeMillis() + idleTimeout; + } + + private int numberAbsent(int numberOfClientsToAwait) + { + return numberOfClientsToAwait - _registeredClientNames.size(); + } + private void notifyAllWaiters() { synchronized (_lock) diff --git a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java index 6c5ff3450c..d4474e2c12 100644 --- a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java +++ b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java @@ -21,7 +21,9 @@ package org.apache.qpid.disttest.controller; import java.util.ArrayList; import java.util.List; +import org.apache.qpid.disttest.message.ParticipantResult; import org.apache.qpid.disttest.results.aggregation.ITestResult; +import org.apache.qpid.disttest.results.aggregation.TestResultAggregator; public class ResultsForAllTests { @@ -46,4 +48,23 @@ public class ResultsForAllTests { return _hasErrors; } + + public ResultsForAllTests getAllParticipantsResult() + { + ResultsForAllTests summaryResultsForAllTests = new ResultsForAllTests(); + + for (ITestResult testResult : _results) + { + for(ParticipantResult participantResult : testResult.getParticipantResults()) + { + if(TestResultAggregator.ALL_CONSUMER_PARTICIPANTS_NAME.equals(participantResult.getParticipantName())) + { + TestResult summaryTestResult = new TestResult(testResult.getName()); + summaryTestResult.addParticipantResult(participantResult); + summaryResultsForAllTests.add(summaryTestResult); + } + } + } + return summaryResultsForAllTests; + } } diff --git a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java index 110de8a4ea..dcccccdd5f 100644 --- a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java +++ b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java @@ -24,7 +24,6 @@ import org.apache.qpid.disttest.message.CreateConsumerCommand; public class ConsumerConfig extends ParticipantConfig { - private boolean _isTopic; private boolean _isDurableSubscription; private boolean _isBrowsingSubscription; private String _selector; @@ -35,7 +34,6 @@ public class ConsumerConfig extends ParticipantConfig // For Gson public ConsumerConfig() { - _isTopic = false; _isDurableSubscription = false; _isBrowsingSubscription = false; _selector = null; @@ -56,9 +54,8 @@ public class ConsumerConfig extends ParticipantConfig boolean noLocal, boolean synchronous) { - super(consumerName, destinationName, numberOfMessages, batchSize, maximumDuration); + super(consumerName, destinationName, isTopic, numberOfMessages, batchSize, maximumDuration); - _isTopic = isTopic; _isDurableSubscription = isDurableSubscription; _isBrowsingSubscription = isBrowsingSubscription; _selector = selector; @@ -73,7 +70,6 @@ public class ConsumerConfig extends ParticipantConfig setParticipantProperties(createConsumerCommand); createConsumerCommand.setSessionName(sessionName); - createConsumerCommand.setTopic(_isTopic); createConsumerCommand.setDurableSubscription(_isDurableSubscription); createConsumerCommand.setBrowsingSubscription(_isBrowsingSubscription); createConsumerCommand.setSelector(_selector); diff --git a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java index 16f7b0d18d..99ae4b7426 100644 --- a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java +++ b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java @@ -33,6 +33,7 @@ public abstract class ParticipantConfig private boolean _alreadyLoggedAboutOverriddenDuration; private String _destinationName; + private boolean _isTopic; private long _numberOfMessages; private String _name; private int _batchSize; @@ -51,12 +52,14 @@ public abstract class ParticipantConfig public ParticipantConfig( String name, String destinationName, + boolean isTopic, long numberOfMessages, int batchSize, long maximumDuration) { _name = name; _destinationName = destinationName; + _isTopic = isTopic; _numberOfMessages = numberOfMessages; _batchSize = batchSize; _maximumDuration = maximumDuration; @@ -66,6 +69,7 @@ public abstract class ParticipantConfig { createParticipantCommand.setParticipantName(_name); createParticipantCommand.setDestinationName(_destinationName); + createParticipantCommand.setTopic(_isTopic); createParticipantCommand.setNumberOfMessages(_numberOfMessages); createParticipantCommand.setBatchSize(_batchSize); diff --git a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java index f2369ed671..88c188d3ac 100644 --- a/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java +++ b/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java @@ -59,7 +59,7 @@ public class ProducerConfig extends ParticipantConfig long startDelay, String messageProviderName) { - super(producerName, destinationName, numberOfMessages, batchSize, maximumDuration); + super(producerName, destinationName, false, numberOfMessages, batchSize, maximumDuration); _deliveryMode = deliveryMode; _messageSize = messageSize; |