Author: robbie
Date: Fri Jul  6 15:52:42 2012
New Revision: 1358281

URL: http://svn.apache.org/viewvc?rev=1358281&view=rev
Log:
QPID-4113: added support for a system property to override all participant 
durations.

Applied patch from Philip Harvey <[email protected]>

Added:
    
qpid/trunk/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java
Modified:
    
qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java

Modified: 
qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java?rev=1358281&r1=1358280&r2=1358281&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java
 (original)
+++ 
qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java
 Fri Jul  6 15:52:42 2012
@@ -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

Added: 
qpid/trunk/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java?rev=1358281&view=auto
==============================================================================
--- 
qpid/trunk/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java
 (added)
+++ 
qpid/trunk/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java
 Fri Jul  6 15:52:42 2012
@@ -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);
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to