summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2010-05-18 14:42:51 +0000
committerMartin Ritchie <ritchiem@apache.org>2010-05-18 14:42:51 +0000
commit8dba7b7ab260e158765578c6fa3d65302b3e2abc (patch)
treebfeb7e89c84e2f21b0da232fa9ae455a8cc323d1 /qpid/java
parent617b6d040067cf6ecd526ecd4c333c2ec1233c96 (diff)
downloadqpid-python-8dba7b7ab260e158765578c6fa3d65302b3e2abc.tar.gz
QPID-2584 : Convert all TimerTasks to HouseKeepingTasks for running in the VHost thread pool.
Update VirtualHost and Configuration to allow configuration and testing of VirtualHostHouseKeepingPlugins. Added system test to validate the loading of VHPlugins is performed correctly git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@945678 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java55
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java15
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java2
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/HouseKeepingTask.java58
-rwxr-xr-xqpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java13
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java86
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java (renamed from qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java)29
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java2
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java79
9 files changed, 251 insertions, 88 deletions
diff --git a/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java b/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
index c3f5d7e5ac..fbbb205ff0 100644
--- a/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
+++ b/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
@@ -25,20 +25,19 @@ import org.apache.qpid.server.configuration.plugin.SlowConsumerDetectionConfigur
import org.apache.qpid.server.configuration.plugin.SlowConsumerDetectionQueueConfiguration;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.virtualhost.plugins.VirtualHostPlugin;
+import org.apache.qpid.server.virtualhost.plugins.VirtualHostHouseKeepingPlugin;
import org.apache.qpid.server.virtualhost.plugins.VirtualHostPluginFactory;
import org.apache.qpid.slowconsumerdetection.policies.SlowConsumerPolicyPlugin;
-class SlowConsumerDetection extends VirtualHostPlugin
+class SlowConsumerDetection extends VirtualHostHouseKeepingPlugin
{
Logger _logger = Logger.getLogger(SlowConsumerDetection.class);
- private VirtualHost _virtualhost;
private SlowConsumerDetectionConfiguration _config;
private SlowConsumerPolicyPlugin _policy;
public static class SlowConsumerFactory implements VirtualHostPluginFactory
{
- public VirtualHostPlugin newInstance(VirtualHost vhost)
+ public VirtualHostHouseKeepingPlugin newInstance(VirtualHost vhost)
{
return new SlowConsumerDetection(vhost);
}
@@ -46,54 +45,42 @@ class SlowConsumerDetection extends VirtualHostPlugin
public SlowConsumerDetection(VirtualHost vhost)
{
- _virtualhost = vhost;
+ super(vhost);
_config = vhost.getConfiguration().getConfiguration(SlowConsumerDetectionConfiguration.class);
if (_config == null)
{
throw new IllegalArgumentException("Plugin has not been configured");
}
-
}
@Override
public void execute()
{
_logger.info("Starting the SlowConsumersDetection job");
- try
+ for (AMQQueue q : _virtualhost.getQueueRegistry().getQueues())
{
- for (AMQQueue q : _virtualhost.getQueueRegistry().getQueues())
+ _logger.debug("Checking consumer status for queue: "
+ + q.getName());
+ try
{
- _logger.debug("Checking consumer status for queue: "
- + q.getName());
- try
- {
- SlowConsumerDetectionQueueConfiguration config =
- q.getConfiguration().getConfiguration(SlowConsumerDetectionQueueConfiguration.class);
+ SlowConsumerDetectionQueueConfiguration config =
+ q.getConfiguration().getConfiguration(SlowConsumerDetectionQueueConfiguration.class);
- if (checkQueueStatus(q, config))
- {
- config.getPolicy().performPolicy(q);
- }
- }
- catch (Exception e)
+ if (checkQueueStatus(q, config))
{
- _logger.error("Exception in SlowConsumersDetection " +
- "for queue: " +
- q.getNameShortString().toString(), e);
- //Don't throw exceptions as this will stop the
- // house keeping task from running.
+ config.getPolicy().performPolicy(q);
}
}
- _logger.info("SlowConsumersDetection job completed.");
- }
- catch (Exception e)
- {
- _logger.error("SlowConsumersDetection job failed: " + e.getMessage(), e);
- }
- catch (Error e)
- {
- _logger.error("SlowConsumersDetection job failed with error: " + e.getMessage(), e);
+ catch (Exception e)
+ {
+ _logger.error("Exception in SlowConsumersDetection " +
+ "for queue: " +
+ q.getNameShortString().toString(), e);
+ //Don't throw exceptions as this will stop the
+ // house keeping task from running.
+ }
}
+ _logger.info("SlowConsumersDetection job completed.");
}
public long getDelay()
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
index e552596058..67620d384b 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
@@ -40,6 +40,7 @@ import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
+import org.apache.qpid.server.virtualhost.HouseKeepingTask;
import org.apache.qpid.server.virtualhost.VirtualHost;
import java.nio.ByteBuffer;
@@ -189,7 +190,7 @@ public class ManagementExchange implements Exchange, QMFService.Listener
}
_virtualHost = host;
_id = host.getConfigStore().createId();
- _virtualHost.scheduleTask(_virtualHost.getBroker().getManagementPublishInterval(),_updateTask);
+ _virtualHost.scheduleHouseKeepingTask(_virtualHost.getBroker().getManagementPublishInterval(), new UpdateTask(_virtualHost));
getConfigStore().addConfiguredObject(this);
getQMFService().addListener(this);
}
@@ -484,17 +485,17 @@ public class ManagementExchange implements Exchange, QMFService.Listener
- private final TimerTask _updateTask = new UpdateTask();
-
-
- private class UpdateTask extends TimerTask
+ private class UpdateTask extends HouseKeepingTask
{
+ public UpdateTask(VirtualHost vhost)
+ {
+ super(vhost);
+ }
- public void run()
+ public void execute()
{
publishAllConsole();
publishAllSchema();
-
}
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
index 780f5f1159..09ae3bd920 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
@@ -213,6 +213,6 @@ public class VirtualHostConfiguration extends ConfigurationPlugin
public int getHouseKeepingThreadCount()
{
- return _config.getInt("housekeeping.threadCount", Runtime.getRuntime().availableProcessors());
+ return _config.getInt("housekeeping.poolSize", Runtime.getRuntime().availableProcessors());
}
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/HouseKeepingTask.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/HouseKeepingTask.java
new file mode 100644
index 0000000000..1f4dd56eb1
--- /dev/null
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/HouseKeepingTask.java
@@ -0,0 +1,58 @@
+/*
+ *
+ * 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.server.virtualhost;
+
+import org.apache.log4j.Logger;
+
+public abstract class HouseKeepingTask implements Runnable
+{
+ Logger _logger = Logger.getLogger(this.getClass());
+
+ protected VirtualHost _virtualhost;
+
+ private String _name;
+
+ public HouseKeepingTask(VirtualHost vhost)
+ {
+ _virtualhost = vhost;
+ _name = _virtualhost.getName() + ":" + this.getClass().getSimpleName();
+ }
+
+ final public void run()
+ {
+ // Don't need to undo this as this is a thread pool thread so will
+ // always go through here before we do any real work.
+ Thread.currentThread().setName(_name);
+ try
+ {
+ execute();
+ }
+ catch (Throwable e)
+ {
+ _logger.warn(this.getClass().getSimpleName() + " throw exception: " + e);
+ }
+ }
+
+
+ /** Execute the plugin. */
+ public abstract void execute();
+
+}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
index c140e4a144..a5d75d8574 100755
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
@@ -37,8 +37,10 @@ import org.apache.qpid.server.management.ManagedObject;
import org.apache.qpid.server.registry.IApplicationRegistry;
import org.apache.qpid.server.binding.BindingFactory;
+import java.util.List;
import java.util.UUID;
import java.util.TimerTask;
+import java.util.concurrent.FutureTask;
public interface VirtualHost extends DurableConfigurationStore.Source, VirtualHostConfig
{
@@ -70,8 +72,17 @@ public interface VirtualHost extends DurableConfigurationStore.Source, VirtualHo
UUID getBrokerId();
- void scheduleTask(long period, TimerTask task);
+ void scheduleHouseKeepingTask(long period, HouseKeepingTask task);
+ long getHouseKeepingTaskCount();
+
+ public long getHouseKeepingCompletedTaskCount();
+
+ int getHouseKeepingPoolSize();
+
+ void setHouseKeepingPoolSize(int newSize);
+
+ int getHouseKeepingActiveCount();
IApplicationRegistry getApplicationRegistry();
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
index 0252d265fd..413ebe159e 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
@@ -29,7 +29,7 @@ import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.server.AMQBrokerManagerMBean;
import org.apache.qpid.server.virtualhost.plugins.VirtualHostPluginFactory;
-import org.apache.qpid.server.virtualhost.plugins.VirtualHostPlugin;
+import org.apache.qpid.server.virtualhost.plugins.VirtualHostHouseKeepingPlugin;
import org.apache.qpid.server.binding.BindingFactory;
import org.apache.qpid.server.configuration.BrokerConfig;
import org.apache.qpid.server.configuration.ConfigStore;
@@ -71,11 +71,12 @@ import javax.management.NotCompliantMBeanException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;
import java.util.Map;
+import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.FutureTask;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -103,7 +104,7 @@ public class VirtualHostImpl implements Accessable, VirtualHost
private ACLManager _accessManager;
- private final Timer _timer;
+ private final ScheduledThreadPoolExecutor _houseKeepingTasks;
private final IApplicationRegistry _appRegistry;
private VirtualHostConfiguration _configuration;
private DurableConfigurationStore _durableConfigurationStore;
@@ -114,6 +115,7 @@ public class VirtualHostImpl implements Accessable, VirtualHost
private final long _createTime = System.currentTimeMillis();
private final ConcurrentHashMap<BrokerLink,BrokerLink> _links = new ConcurrentHashMap<BrokerLink, BrokerLink>();
+ private static final int HOUSEKEEPING_SHUTDOWN_TIMEOUT = 5;
public void setAccessableName(String name)
{
@@ -217,7 +219,7 @@ public class VirtualHostImpl implements Accessable, VirtualHost
_connectionRegistry = new ConnectionRegistry(this);
- _timer = new Timer("TimerThread-" + _name + ":", true);
+ _houseKeepingTasks = new ScheduledThreadPoolExecutor(_configuration.getHouseKeepingThreadCount());
_queueRegistry = new DefaultQueueRegistry(this);
@@ -290,33 +292,35 @@ public class VirtualHostImpl implements Accessable, VirtualHost
/* add a timer task to iterate over queues, cleaning expired messages from queues with no consumers */
if (period != 0L)
{
- class HouseKeepingTask extends TimerTask
+ class ExpiredMessagesTask extends HouseKeepingTask
{
- Logger _hkLogger = Logger.getLogger(HouseKeepingTask.class);
-
- public void run()
+ public ExpiredMessagesTask(VirtualHost vhost)
+ {
+ super(vhost);
+ }
+
+ public void execute()
{
- _hkLogger.info("Starting the houseKeeping job");
for (AMQQueue q : _queueRegistry.getQueues())
{
- _hkLogger.debug("Checking message status for queue: "+q.getName().toString());
+ _logger.debug("Checking message status for queue: "
+ + q.getName());
try
{
q.checkMessageStatus();
}
catch (Exception e)
{
- _hkLogger.error("Exception in housekeeping for queue: " + q.getNameShortString().toString(), e);
+ _logger.error("Exception in housekeeping for queue: "
+ + q.getNameShortString().toString(), e);
//Don't throw exceptions as this will stop the
// house keeping task from running.
}
}
- _hkLogger.info("HouseKeeping job completed.");
}
}
- final TimerTask expiredMessagesTask = new HouseKeepingTask();
- scheduleTask(period, expiredMessagesTask);
+ scheduleHouseKeepingTask(period, new ExpiredMessagesTask(this));
class ForceChannelClosuresTask extends TimerTask
{
@@ -332,14 +336,12 @@ public class VirtualHostImpl implements Accessable, VirtualHost
if (plugins != null)
{
- ScheduledThreadPoolExecutor vhostTasks
- = new ScheduledThreadPoolExecutor(_configuration.getHouseKeepingThreadCount());
-
for (String pluginName : plugins.keySet())
{
try
{
- VirtualHostPlugin plugin = plugins.get(pluginName).newInstance(this);
+ VirtualHostHouseKeepingPlugin plugin =
+ plugins.get(pluginName).newInstance(this);
TimeUnit units = TimeUnit.MILLISECONDS;
@@ -359,7 +361,7 @@ public class VirtualHostImpl implements Accessable, VirtualHost
}
}
- vhostTasks.scheduleAtFixedRate(plugin, plugin.getDelay() / 2,
+ _houseKeepingTasks.scheduleAtFixedRate(plugin, plugin.getDelay() / 2,
plugin.getDelay(), units);
_logger.info("Loaded VirtualHostPlugin:" + plugin);
@@ -377,9 +379,42 @@ public class VirtualHostImpl implements Accessable, VirtualHost
}
}
- public void scheduleTask(final long period, final TimerTask task)
+ /**
+ * Allow other broker components to register a HouseKeepingTask
+ *
+ * @param period How often this task should run, in ms.
+ * @param task The task to run.
+ */
+ public void scheduleHouseKeepingTask(long period, HouseKeepingTask task)
+ {
+ _houseKeepingTasks.scheduleAtFixedRate(task, period / 2, period,
+ TimeUnit.MILLISECONDS);
+ }
+
+ public long getHouseKeepingTaskCount()
{
- _timer.scheduleAtFixedRate(task, period / 2, period);
+ return _houseKeepingTasks.getTaskCount();
+ }
+
+ public long getHouseKeepingCompletedTaskCount()
+ {
+ return _houseKeepingTasks.getCompletedTaskCount();
+ }
+
+ public int getHouseKeepingPoolSize()
+ {
+ return _houseKeepingTasks.getCorePoolSize();
+ }
+
+ public void setHouseKeepingPoolSize(int newSize)
+ {
+ _houseKeepingTasks.setCorePoolSize(newSize);
+ }
+
+
+ public int getHouseKeepingActiveCount()
+ {
+ return _houseKeepingTasks.getActiveCount();
}
@@ -588,9 +623,14 @@ public class VirtualHostImpl implements Accessable, VirtualHost
}
//Stop Housekeeping
- if (_timer != null)
+ if (_houseKeepingTasks != null)
{
- _timer.cancel();
+ _houseKeepingTasks.shutdown();
+
+ if (!_houseKeepingTasks.awaitTermination(HOUSEKEEPING_SHUTDOWN_TIMEOUT, TimeUnit.SECONDS))
+ {
+ _houseKeepingTasks.shutdownNow();
+ }
}
//Close MessageStore
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java
index e30b5e1934..e76844fa3a 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostHouseKeepingPlugin.java
@@ -20,25 +20,16 @@
*/
package org.apache.qpid.server.virtualhost.plugins;
-import org.apache.log4j.Logger;
+import org.apache.qpid.server.virtualhost.HouseKeepingTask;
+import org.apache.qpid.server.virtualhost.VirtualHost;
-public abstract class VirtualHostPlugin implements Runnable
+public abstract class VirtualHostHouseKeepingPlugin extends HouseKeepingTask
{
- Logger _logger = Logger.getLogger(this.getClass());
-
- final public void run()
+ public VirtualHostHouseKeepingPlugin(VirtualHost vhost)
{
- try
- {
- execute();
- }
- catch (Throwable e)
- {
- _logger.warn(this.getClass().getSimpleName()+" throw exception: " + e);
- }
+ super(vhost);
}
-
/**
* Long value representing the delay between repeats
*
@@ -48,15 +39,11 @@ public abstract class VirtualHostPlugin implements Runnable
/**
* Option to specify what the delay value represents
- * @see java.util.concurrent.TimeUnit for valid value.
+ *
* @return
+ *
+ * @see java.util.concurrent.TimeUnit for valid value.
*/
public abstract String getTimeUnit();
- /**
- * Execute the plugin.
- */
- public abstract void execute();
-
-
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java
index c32ff76f81..c8bea18444 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPluginFactory.java
@@ -24,5 +24,5 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
public interface VirtualHostPluginFactory
{
- public VirtualHostPlugin newInstance(VirtualHost vhost);
+ public VirtualHostHouseKeepingPlugin newInstance(VirtualHost vhost);
}
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
index 683343aa14..c1e2406167 100644
--- a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
@@ -129,8 +129,87 @@ public class VirtualHostConfigurationTest extends TestCase
assertEquals(3, bTest.getMaximumMessageAge());
ApplicationRegistry.remove();
+ }
+
+ /**
+ * Test that the house keeping pool sizes is correctly processed
+ *
+ * @throws Exception
+ */
+ public void testHouseKeepingThreadCount() throws Exception
+ {
+ int initialPoolSize = 10;
+
+ configXml.addProperty("virtualhost.testHouseKeepingThreadCount.name", "testHouseKeepingThreadCount");
+ configXml.addProperty("virtualhost.testHouseKeepingThreadCount.housekeeping.poolSize",
+ initialPoolSize);
+
+ VirtualHostConfiguration config =
+ new VirtualHostConfiguration("testHouseKeepingThreadCount",
+ configXml.subset("virtualhost.testHouseKeepingThreadCount"));
+ VirtualHost vhost =
+ ApplicationRegistry.getInstance().createVirtualHost(config);
+
+ assertEquals("HouseKeeping PoolSize not set correctly.",
+ initialPoolSize, vhost.getHouseKeepingPoolSize());
+
+ ApplicationRegistry.remove();
+ }
+
+ /**
+ * Test default house keeping tasks
+ *
+ * @throws Exception
+ */
+ public void testDefaultHouseKeepingTasks() throws Exception
+ {
+ configXml.addProperty("virtualhost.testDefaultHouseKeepingTasks.name", "testDefaultHouseKeepingTasks");
+ VirtualHostConfiguration config =
+ new VirtualHostConfiguration("testDefaultHouseKeepingTasks",
+ configXml.subset("virtualhost.testDefaultHouseKeepingTasks"));
+ VirtualHost vhost =
+ ApplicationRegistry.getInstance().createVirtualHost(config);
+ assertEquals("Default houseKeeping task count incorrect.", 2,
+ vhost.getHouseKeepingTaskCount());
+ // Currently the two are tasks:
+ // ExpiredMessageTask from VirtualHost
+ // UpdateTask from the QMF ManagementExchange
+
+
+ ApplicationRegistry.remove();
}
+ /**
+ * Test that we can dynamically change the thread pool size
+ *
+ * @throws Exception
+ */
+ public void testDynamicHouseKeepingPoolSizeChange() throws Exception
+ {
+ int initialPoolSize = 10;
+
+ configXml.addProperty("virtualhost.testDynamicHouseKeepingPoolSizeChange.name", "testDynamicHouseKeepingPoolSizeChange");
+ configXml.addProperty("virtualhost.testDynamicHouseKeepingPoolSizeChange.housekeeping.poolSize",
+ initialPoolSize);
+
+ VirtualHostConfiguration config =
+ new VirtualHostConfiguration("testHouseKeepingThreadCount",
+ configXml.subset("virtualhost.testDynamicHouseKeepingPoolSizeChange"));
+ VirtualHost vhost =
+ ApplicationRegistry.getInstance().createVirtualHost(config);
+
+ assertEquals("HouseKeeping PoolSize not set correctly.",
+ initialPoolSize, vhost.getHouseKeepingPoolSize());
+
+ vhost.setHouseKeepingPoolSize(1);
+
+ assertEquals("HouseKeeping PoolSize not correctly change.",
+ 1, vhost.getHouseKeepingPoolSize());
+
+ ApplicationRegistry.remove();
+ }
+
+
}