diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-07-06 15:52:42 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-07-06 15:52:42 +0000 |
| commit | 1ce6e1d254c757a43658da7c6f1fe4591c693f1c (patch) | |
| tree | 4a34ad1b3eb643e6ee774d4db8a4e5766257a940 /java/perftests | |
| parent | c9a3a2d86a39c4254bcccdcde2b578d36c41c561 (diff) | |
| download | qpid-python-1ce6e1d254c757a43658da7c6f1fe4591c693f1c.tar.gz | |
QPID-4113: added support for a system property to override all participant durations.
Applied patch from Philip Harvey <phil@philharveyonline.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1358281 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/perftests')
2 files changed, 81 insertions, 1 deletions
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 31037a3038..5ebd73a8b9 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 @@ -18,10 +18,20 @@ */ package org.apache.qpid.disttest.controller.config; +import org.apache.commons.lang.ObjectUtils; import org.apache.qpid.disttest.message.CreateParticpantCommand; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class ParticipantConfig { + private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantConfig.class); + + public static final String DURATION_OVERRIDE_SYSTEM_PROPERTY = "qpid.disttest.duration"; + + /** we cache the overridden duration so that we only compute and - more importantly - log it once */ + private static Long cachedOverriddenDuration; + private String _destinationName; private long _numberOfMessages; private String _name; @@ -58,7 +68,34 @@ public abstract class ParticipantConfig createParticipantCommand.setDestinationName(_destinationName); createParticipantCommand.setNumberOfMessages(_numberOfMessages); createParticipantCommand.setBatchSize(_batchSize); - createParticipantCommand.setMaximumDuration(_maximumDuration); + + Long maximumDuration = (Long)ObjectUtils.defaultIfNull(getOverriddenDuration(), _maximumDuration); + createParticipantCommand.setMaximumDuration(maximumDuration); } + private Long getOverriddenDuration() + { + if(cachedOverriddenDuration != null) + { + return cachedOverriddenDuration; + } + + String overriddenDurationString = System.getProperty(DURATION_OVERRIDE_SYSTEM_PROPERTY); + if(overriddenDurationString != null) + { + try + { + long overriddenDuration = Long.valueOf(overriddenDurationString); + LOGGER.info("Applied overridden maximum duration " + overriddenDuration); + cachedOverriddenDuration = overriddenDuration; + return overriddenDuration; + } + catch (NumberFormatException e) + { + LOGGER.error("Couldn't parse overridden duration " + overriddenDurationString, e); + } + } + + return null; + } }
\ No newline at end of file diff --git a/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java b/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java new file mode 100644 index 0000000000..f58cc628a4 --- /dev/null +++ b/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.qpid.disttest.controller.config; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import org.apache.qpid.disttest.message.CreateParticpantCommand; +import org.apache.qpid.test.utils.QpidTestCase; + +public class ParticipantConfigTest extends QpidTestCase +{ + public void testCreateProducerCommandAppliesDurationOverride() + { + long overriddenDuration = 123; + setTestSystemProperty(ParticipantConfig.DURATION_OVERRIDE_SYSTEM_PROPERTY, String.valueOf(overriddenDuration)); + + CreateParticpantCommand createParticipantCommand = mock(CreateParticpantCommand.class); + ParticipantConfig participantConfig = new ParticipantConfig("name", "destinationName", 1, 2, 5000) + { + }; + + participantConfig.setParticipantProperties(createParticipantCommand); + + verify(createParticipantCommand).setMaximumDuration(overriddenDuration); + } +} |
