You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2007/08/20 12:37:34 UTC

svn commit: r567647 [3/3] - in /activemq/trunk/activemq-core/src: main/java/org/apache/activemq/ main/java/org/apache/activemq/broker/ main/java/org/apache/activemq/broker/jmx/ main/java/org/apache/activemq/broker/region/ main/java/org/apache/activemq/...

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/TempUsage.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/TempUsage.java?rev=567647&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/TempUsage.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/TempUsage.java Mon Aug 20 03:37:29 2007
@@ -0,0 +1,49 @@
+/**
+ * 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.activemq.usage;
+
+import org.apache.activemq.kaha.Store;
+
+/**
+ * Used to keep track of how much of something is being used so that a
+ * productive working set usage can be controlled.
+ * 
+ * Main use case is manage memory usage.
+ * 
+ * @org.apache.xbean.XBean
+ * 
+ * @version $Revision: 1.3 $
+ */
+public class TempUsage extends Usage{
+
+    final private Store store;
+
+        
+    public TempUsage(String name,Store store){
+        super(null,name,1.0f);
+        this.store=store;
+    }
+    
+    public TempUsage(TempUsage parent,String name){
+        super(parent,name,1.0f);
+        this.store=parent.store;
+    }
+
+    protected long retrieveUsage(){
+        return store.size();
+    }
+}
\ No newline at end of file

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/TempUsage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/TempUsage.java
------------------------------------------------------------------------------
    svn:executable = *

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/Usage.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/Usage.java?rev=567647&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/Usage.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/Usage.java Mon Aug 20 03:37:29 2007
@@ -0,0 +1,358 @@
+/**
+ * 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.activemq.usage;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.activemq.Service;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Used to keep track of how much of something is being used so that a
+ * productive working set usage can be controlled.
+ * 
+ * Main use case is manage memory usage.
+ * 
+ * @org.apache.xbean.XBean
+ * 
+ * @version $Revision: 1.3 $
+ */
+public abstract class Usage implements Service{
+
+    private static final Log LOG=LogFactory.getLog(Usage.class);
+    protected final Object usageMutex=new Object();
+    protected int percentUsage;
+    private final Usage parent;
+    private UsageCapacity limiter = new DefaultUsageCapacity();
+    private int percentUsageMinDelta=1;
+    private final List<UsageListener> listeners=new CopyOnWriteArrayList<UsageListener>();
+    private final boolean debug=LOG.isDebugEnabled();
+    private String name="";
+    private float usagePortion=1.0f;
+    private List<Usage> children=new CopyOnWriteArrayList<Usage>();
+    private final List<Runnable> callbacks=new LinkedList<Runnable>();
+    private int pollingTime = 100;
+   
+    public Usage(Usage parent,String name,float portion){
+        this.parent=parent;
+        this.usagePortion=portion;
+        if(parent!=null){
+            this.limiter.setLimit((long)(parent.getLimit()*portion));
+            this.name=parent.name+":";
+        }
+        this.name+=name;
+    }
+
+    protected abstract long retrieveUsage();
+
+    /**
+     * @throws InterruptedException
+     */
+    public void waitForSpace() throws InterruptedException{
+        waitForSpace(0);
+    }
+
+    /**
+     * @param timeout 
+     * @throws InterruptedException
+     * 
+     * @return true if space
+     */
+    public boolean waitForSpace(long timeout) throws InterruptedException{
+        if(parent!=null){
+            if(!parent.waitForSpace(timeout)){
+                return false;
+            }
+        }
+        synchronized(usageMutex){
+            caclPercentUsage();
+            if(percentUsage>=100){
+                long deadline=timeout>0?System.currentTimeMillis()+timeout:Long.MAX_VALUE;
+                long timeleft=deadline;
+                while(timeleft>0){
+                    caclPercentUsage();
+                    if(percentUsage>=100){
+                        usageMutex.wait(pollingTime);
+                        timeleft=deadline-System.currentTimeMillis();
+                    }else{
+                        break;
+                    }
+                }
+            }
+            return percentUsage<100;
+        }
+    }
+
+    
+
+    public boolean isFull(){
+        if(parent!=null&&parent.isFull()){
+            return true;
+        }
+        synchronized(usageMutex){
+            caclPercentUsage();
+            return percentUsage>=100;
+        }
+    }
+
+    public void addUsageListener(UsageListener listener){
+        listeners.add(listener);
+    }
+
+    public void removeUsageListener(UsageListener listener){
+        listeners.remove(listener);
+    }
+
+    public long getLimit(){
+        synchronized(usageMutex){
+            return limiter.getLimit();
+        }
+    }
+
+    /**
+     * Sets the memory limit in bytes. Setting the limit in bytes will set the
+     * usagePortion to 0 since the UsageManager is not going to be portion based
+     * off the parent.
+     * 
+     * When set using XBean, you can use values such as: "20 mb", "1024 kb", or
+     * "1 gb"
+     * 
+     * @org.apache.xbean.Property propertyEditor="org.apache.activemq.util.MemoryPropertyEditor"
+     */
+    public void setLimit(long limit){
+        if(percentUsageMinDelta<0){
+            throw new IllegalArgumentException("percentUsageMinDelta must be greater or equal to 0");
+        }
+        synchronized(usageMutex){
+            this.limiter.setLimit(limit);
+            this.usagePortion=0;
+        }
+        onLimitChange();
+    }
+
+    private void onLimitChange(){
+        // We may need to calculate the limit
+        if(usagePortion>0&&parent!=null){
+            synchronized(usageMutex){
+                this.limiter.setLimit((long)(parent.getLimit()*usagePortion));
+            }
+        }
+        // Reset the percent currently being used.
+        int percentUsage;
+        synchronized(usageMutex){
+            percentUsage=caclPercentUsage();
+        }
+        setPercentUsage(percentUsage);
+        // Let the children know that the limit has changed. They may need to
+        // set
+        // their limits based on ours.
+        for(Usage child:children){
+            child.onLimitChange();
+        }
+    }
+
+    public float getUsagePortion(){
+        synchronized(usageMutex){
+            return usagePortion;
+        }
+    }
+
+    public void setUsagePortion(float usagePortion){
+        synchronized(usageMutex){
+            this.usagePortion=usagePortion;
+        }
+        onLimitChange();
+    }
+
+    /*
+     * Sets the minimum number of percentage points the usage has to change
+     * before a UsageListener event is fired by the manager.
+     */
+    public int getPercentUsage(){
+        synchronized(usageMutex){
+            return percentUsage;
+        }
+    }
+
+    public int getPercentUsageMinDelta(){
+        synchronized(usageMutex){
+            return percentUsageMinDelta;
+        }
+    }
+
+    /**
+     * Sets the minimum number of percentage points the usage has to change
+     * before a UsageListener event is fired by the manager.
+     * 
+     * @param percentUsageMinDelta
+     */
+    public void setPercentUsageMinDelta(int percentUsageMinDelta){
+        if(percentUsageMinDelta<1){
+            throw new IllegalArgumentException("percentUsageMinDelta must be greater than 0");
+        }
+        int percentUsage;
+        synchronized(usageMutex){
+            this.percentUsageMinDelta=percentUsageMinDelta;
+            percentUsage=caclPercentUsage();
+        }
+        setPercentUsage(percentUsage);
+    }
+
+    public long getUsage(){
+        synchronized(usageMutex){
+            return retrieveUsage();
+        }
+    }
+
+    protected void setPercentUsage(int value){
+        synchronized(usageMutex){
+            int oldValue=percentUsage;
+            percentUsage=value;
+            if(oldValue!=value){
+                fireEvent(oldValue,value);
+            }
+        }
+    }
+
+    protected int caclPercentUsage(){
+        if(limiter.getLimit()==0){
+            return 0;
+        }
+        return (int)((((retrieveUsage()*100)/limiter.getLimit())/percentUsageMinDelta)*percentUsageMinDelta);
+    }
+
+    private void fireEvent(int oldPercentUsage,int newPercentUsage){
+        if(debug){
+            LOG.debug("Memory usage change.  from: "+oldPercentUsage+", to: "+newPercentUsage);
+        }
+        // Switching from being full to not being full..
+        if(oldPercentUsage>=100&&newPercentUsage<100){
+            synchronized(usageMutex){
+                usageMutex.notifyAll();
+                for(Iterator<Runnable> iter=new ArrayList<Runnable>(callbacks).iterator();iter.hasNext();){
+                    Runnable callback=iter.next();
+                    callback.run();
+                }
+                callbacks.clear();
+            }
+        }
+        // Let the listeners know
+        for(Iterator<UsageListener> iter=listeners.iterator();iter.hasNext();){
+            UsageListener l=iter.next();
+            l.onUsageChanged(this,oldPercentUsage,newPercentUsage);
+        }
+    }
+
+    public String getName(){
+        return name;
+    }
+
+    public String toString(){
+        return "Usage("+getName()+") percentUsage="+percentUsage+"%, usage="+retrieveUsage()+" limit="+limiter.getLimit()
+                +" percentUsageMinDelta="+percentUsageMinDelta+"%";
+    }
+
+    public void start(){
+        if(parent!=null){
+            parent.addChild(this);
+        }
+    }
+
+    public void stop(){
+        if(parent!=null){
+            parent.removeChild(this);
+        }
+    }
+
+    private void addChild(Usage child){
+        children.add(child);
+    }
+
+    private void removeChild(Usage child){
+        children.remove(child);
+    }
+
+    /**
+     * @param callback
+     * @return true if the UsageManager was full. The callback will only be
+     *         called if this method returns true.
+     */
+    public boolean notifyCallbackWhenNotFull(final Runnable callback){
+        if(parent!=null){
+            Runnable r=new Runnable(){
+
+                public void run(){
+                    synchronized(usageMutex){
+                        if(percentUsage>=100){
+                            callbacks.add(callback);
+                        }else{
+                            callback.run();
+                        }
+                    }
+                }
+            };
+            if(parent.notifyCallbackWhenNotFull(r)){
+                return true;
+            }
+        }
+        synchronized(usageMutex){
+            if(percentUsage>=100){
+                callbacks.add(callback);
+                return true;
+            }else{
+                return false;
+            }
+        }
+    }
+
+    
+    /**
+     * @return the limiter
+     */
+    public UsageCapacity getLimiter(){
+        return this.limiter;
+    }
+
+    
+    /**
+     * @param limiter the limiter to set
+     */
+    public void setLimiter(UsageCapacity limiter){
+        this.limiter=limiter;
+    }
+
+    
+    /**
+     * @return the pollingTime
+     */
+    public int getPollingTime(){
+        return this.pollingTime;
+    }
+
+    
+    /**
+     * @param pollingTime the pollingTime to set
+     */
+    public void setPollingTime(int pollingTime){
+        this.pollingTime=pollingTime;
+    }
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/Usage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/Usage.java
------------------------------------------------------------------------------
    svn:executable = *

Added: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageCapacity.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageCapacity.java?rev=567647&view=auto
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageCapacity.java (added)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageCapacity.java Mon Aug 20 03:37:29 2007
@@ -0,0 +1,48 @@
+/**
+ * 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.activemq.usage;
+
+
+
+/**
+ Identify if a limit has been reached
+ * 
+ * @org.apache.xbean.XBean
+ * 
+ * @version $Revision: 1.3 $
+ */
+public interface UsageCapacity{
+
+    /**
+     * Has the limit been reached ?
+     * 
+     * @param size
+     * @return true if it has
+     */
+    boolean isLimit(long size);
+    
+    
+    /**
+     * @return the limit
+     */
+    long getLimit();
+    
+    /**
+     * @param limit the limit to set
+     */
+    void setLimit(long limit);
+}

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageCapacity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageCapacity.java
------------------------------------------------------------------------------
    svn:executable = *

Copied: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageListener.java (from r565381, activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageListener.java)
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageListener.java?p2=activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageListener.java&p1=activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageListener.java&r1=565381&r2=567647&rev=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageListener.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/usage/UsageListener.java Mon Aug 20 03:37:29 2007
@@ -14,8 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.memory;
+package org.apache.activemq.usage;
 
 public interface UsageListener {
-    void onMemoryUseChanged(UsageManager memoryManager, int oldPercentUsage, int newPercentUsage);
+    void onUsageChanged(Usage usage, int oldPercentUsage, int newPercentUsage);
 }

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/AMQDeadlockTest3.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/AMQDeadlockTest3.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/AMQDeadlockTest3.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/AMQDeadlockTest3.java Mon Aug 20 03:37:29 2007
@@ -41,10 +41,10 @@
 import org.apache.activemq.broker.TransportConnector;
 import org.apache.activemq.broker.region.policy.PolicyEntry;
 import org.apache.activemq.broker.region.policy.PolicyMap;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.network.DiscoveryNetworkConnector;
 import org.apache.activemq.network.NetworkConnector;
 import org.apache.activemq.pool.PooledConnectionFactory;
+import org.apache.activemq.usage.SystemUsage;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.jms.core.JmsTemplate;
@@ -238,9 +238,9 @@
         brokerService.setPersistent(false);
         brokerService.setUseJmx(true);
 
-        final UsageManager memoryManager = new UsageManager();
-        memoryManager.setLimit(5000000);
-        brokerService.setMemoryManager(memoryManager);
+        final SystemUsage memoryManager = new SystemUsage();
+        memoryManager.getMemoryUsage().setLimit(5000000);
+        brokerService.setUsageManager(memoryManager);
 
         final List<PolicyEntry> policyEntries = new ArrayList<PolicyEntry>();
 

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTestSupport.java Mon Aug 20 03:37:29 2007
@@ -51,8 +51,8 @@
 import org.apache.activemq.command.TransactionId;
 import org.apache.activemq.command.TransactionInfo;
 import org.apache.activemq.command.XATransactionId;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.store.PersistenceAdapter;
+import org.apache.activemq.usage.SystemUsage;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -74,7 +74,7 @@
 
     protected int maxWait = 4000;
 
-    protected UsageManager memoryManager;
+    protected SystemUsage memoryManager;
 
     protected void setUp() throws Exception {
         super.setUp();

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/MessageExpirationTest.java Mon Aug 20 03:37:29 2007
@@ -91,7 +91,7 @@
 
         // Reduce the limit so that only 1 message can flow through the broker
         // at a time.
-        broker.getMemoryManager().setLimit(1);
+        broker.getUsageManager().getMemoryUsage().setLimit(1);
 
         final Message m1 = createMessage(producerInfo, destination, deliveryMode);
         final Message m2 = createMessage(producerInfo, destination, deliveryMode, 1000);

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/ConfigTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/ConfigTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/ConfigTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/ConfigTest.java Mon Aug 20 03:37:29 2007
@@ -32,12 +32,12 @@
 import org.apache.activemq.broker.region.policy.SubscriptionRecoveryPolicy;
 import org.apache.activemq.broker.region.policy.TimedSubscriptionRecoveryPolicy;
 import org.apache.activemq.command.ActiveMQTopic;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
 import org.apache.activemq.store.journal.JournalPersistenceAdapter;
 import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
 import org.apache.activemq.transport.tcp.TcpTransportServer;
+import org.apache.activemq.usage.SystemUsage;
 import org.apache.activemq.wireformat.ObjectStreamWireFormat;
 import org.apache.activemq.xbean.BrokerFactoryBean;
 import org.apache.commons.logging.Log;
@@ -233,10 +233,10 @@
 
             // Check usage manager
             // System.out.print("Checking memory manager configurations... ");
-            UsageManager memMgr = broker.getMemoryManager();
+            SystemUsage memMgr = broker.getUsageManager();
             assertTrue("Should have a memory manager", memMgr != null);
-            assertEquals("UsageManager Config Error (limit)", 200000, memMgr.getLimit());
-            assertEquals("UsageManager Config Error (percentUsageMinDelta)", 20, memMgr.getPercentUsageMinDelta());
+            assertEquals("UsageManager Config Error (limit)", 200000, memMgr.getMemoryUsage().getLimit());
+            assertEquals("UsageManager Config Error (percentUsageMinDelta)", 20, memMgr.getMemoryUsage().getPercentUsageMinDelta());
             LOG.info("Success");
 
             LOG.info("Success");

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/hash/HashTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/hash/HashTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/hash/HashTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/hash/HashTest.java Mon Aug 20 03:37:29 2007
@@ -18,12 +18,14 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicLong;
 import junit.framework.TestCase;
 import org.apache.activemq.kaha.Store;
 import org.apache.activemq.kaha.impl.index.IndexItem;
 import org.apache.activemq.kaha.impl.index.IndexManager;
 import org.apache.activemq.util.IOHelper;
 
+
 /**
  * Test a HashIndex
  */
@@ -42,7 +44,7 @@
         super.setUp();
         directory = new File(IOHelper.getDefaultDataDirectory());
         directory.mkdirs();
-        indexManager = new IndexManager(directory, "im-hash-test", "rw", null);
+        indexManager = new IndexManager(directory, "im-hash-test", "rw", null, new AtomicLong());
         this.hashIndex = new HashIndex(directory, "testHash", indexManager);
         this.hashIndex.setKeyMarshaller(Store.STRING_MARSHALLER);
     }

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/tree/TreeTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/tree/TreeTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/tree/TreeTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/kaha/impl/index/tree/TreeTest.java Mon Aug 20 03:37:29 2007
@@ -18,6 +18,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicLong;
 
 import junit.framework.TestCase;
 import org.apache.activemq.kaha.Store;
@@ -43,7 +44,7 @@
         super.setUp();
         directory = new File("activemq-data");
         directory.mkdirs();
-        indexManager = new IndexManager(directory, "im-test", "rw", null);
+        indexManager = new IndexManager(directory, "im-test", "rw", null,new AtomicLong());
         this.tree = new TreeIndex(directory, "testTree", indexManager);
         this.tree.setKeyMarshaller(Store.STRING_MARSHALLER);
     }

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/MemoryBufferTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/MemoryBufferTestSupport.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/MemoryBufferTestSupport.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/MemoryBufferTestSupport.java Mon Aug 20 03:37:29 2007
@@ -19,6 +19,8 @@
 import junit.framework.TestCase;
 
 import org.apache.activemq.command.ActiveMQMessage;
+import org.apache.activemq.memory.buffer.MessageBuffer;
+import org.apache.activemq.memory.buffer.MessageQueue;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/OrderBasedMemoryBufferTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/OrderBasedMemoryBufferTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/OrderBasedMemoryBufferTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/OrderBasedMemoryBufferTest.java Mon Aug 20 03:37:29 2007
@@ -16,6 +16,9 @@
  */
 package org.apache.activemq.memory.buffer;
 
+import org.apache.activemq.memory.buffer.MessageBuffer;
+import org.apache.activemq.memory.buffer.OrderBasedMessageBuffer;
+
 
 /**
  *

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/SizeBasedMessageBufferTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/SizeBasedMessageBufferTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/SizeBasedMessageBufferTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/memory/buffer/SizeBasedMessageBufferTest.java Mon Aug 20 03:37:29 2007
@@ -16,6 +16,9 @@
  */
 package org.apache.activemq.memory.buffer;
 
+import org.apache.activemq.memory.buffer.MessageBuffer;
+import org.apache.activemq.memory.buffer.SizeBasedMessageBuffer;
+
 
 /**
  *

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkTestSupport.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkTestSupport.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkTestSupport.java Mon Aug 20 03:37:29 2007
@@ -28,11 +28,11 @@
 import org.apache.activemq.broker.BrokerTestSupport;
 import org.apache.activemq.broker.StubConnection;
 import org.apache.activemq.broker.TransportConnector;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
 import org.apache.activemq.transport.Transport;
 import org.apache.activemq.transport.TransportFactory;
+import org.apache.activemq.usage.SystemUsage;
 
 public class NetworkTestSupport extends BrokerTestSupport {
 
@@ -42,7 +42,7 @@
 
     protected PersistenceAdapter remotePersistenceAdapter;
     protected BrokerService remoteBroker;
-    protected UsageManager remoteMemoryManager;
+    protected SystemUsage remoteMemoryManager;
     protected TransportConnector remoteConnector;
 
     protected void setUp() throws Exception {

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/proxy/ProxyTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/proxy/ProxyTestSupport.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/proxy/ProxyTestSupport.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/proxy/ProxyTestSupport.java Mon Aug 20 03:37:29 2007
@@ -24,10 +24,10 @@
 import org.apache.activemq.broker.BrokerTestSupport;
 import org.apache.activemq.broker.StubConnection;
 import org.apache.activemq.broker.TransportConnector;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.transport.Transport;
 import org.apache.activemq.transport.TransportFactory;
+import org.apache.activemq.usage.SystemUsage;
 
 public class ProxyTestSupport extends BrokerTestSupport {
 
@@ -37,7 +37,7 @@
 
     protected PersistenceAdapter remotePersistenceAdapter;
     protected BrokerService remoteBroker;
-    protected UsageManager remoteMemoryManager;
+    protected SystemUsage remoteMemoryManager;
     protected TransportConnector remoteConnector;
     private ProxyConnector proxyConnector;
     private ProxyConnector remoteProxyConnector;

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQDeadlockTestW4Brokers.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQDeadlockTestW4Brokers.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQDeadlockTestW4Brokers.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQDeadlockTestW4Brokers.java Mon Aug 20 03:37:29 2007
@@ -40,10 +40,10 @@
 import org.apache.activemq.broker.TransportConnector;
 import org.apache.activemq.broker.region.policy.PolicyEntry;
 import org.apache.activemq.broker.region.policy.PolicyMap;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.network.DiscoveryNetworkConnector;
 import org.apache.activemq.network.NetworkConnector;
 import org.apache.activemq.pool.PooledConnectionFactory;
+import org.apache.activemq.usage.SystemUsage;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.jms.core.JmsTemplate;
@@ -173,9 +173,9 @@
         brokerService.setPersistent(false);
         brokerService.setUseJmx(true);
 
-        final UsageManager memoryManager = new UsageManager();
-        memoryManager.setLimit(100000000);
-        brokerService.setMemoryManager(memoryManager);
+        final SystemUsage memoryManager = new SystemUsage();
+        memoryManager.getMemoryUsage().setLimit(100000000);
+        brokerService.setUsageManager(memoryManager);
 
         final List<PolicyEntry> policyEntries = new ArrayList<PolicyEntry>();
 

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQFailoverIssue.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQFailoverIssue.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQFailoverIssue.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQFailoverIssue.java Mon Aug 20 03:37:29 2007
@@ -39,10 +39,10 @@
 import org.apache.activemq.broker.TransportConnector;
 import org.apache.activemq.broker.region.policy.PolicyEntry;
 import org.apache.activemq.broker.region.policy.PolicyMap;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.network.DiscoveryNetworkConnector;
 import org.apache.activemq.network.NetworkConnector;
 import org.apache.activemq.pool.PooledConnectionFactory;
+import org.apache.activemq.usage.SystemUsage;
 import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.core.MessageCreator;
 import org.springframework.jms.listener.DefaultMessageListenerContainer;
@@ -106,9 +106,9 @@
         brokerService.setBrokerName(brokerName);
         brokerService.setPersistent(false);
         brokerService.setUseJmx(true);
-        final UsageManager memoryManager = new UsageManager();
-        memoryManager.setLimit(5000000);
-        brokerService.setMemoryManager(memoryManager);
+        final SystemUsage memoryManager = new SystemUsage();
+        memoryManager.getMemoryUsage().setLimit(5000000);
+        brokerService.setUsageManager(memoryManager);
         final List<PolicyEntry> policyEntries = new ArrayList<PolicyEntry>();
         final PolicyEntry entry = new PolicyEntry();
         entry.setQueue(">");

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQStackOverFlowTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQStackOverFlowTest.java?rev=567647&r1=567646&r2=567647&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQStackOverFlowTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/AMQStackOverFlowTest.java Mon Aug 20 03:37:29 2007
@@ -33,9 +33,9 @@
 import org.apache.activemq.broker.TransportConnector;
 import org.apache.activemq.broker.region.policy.PolicyEntry;
 import org.apache.activemq.broker.region.policy.PolicyMap;
-import org.apache.activemq.memory.UsageManager;
 import org.apache.activemq.network.DiscoveryNetworkConnector;
 import org.apache.activemq.network.NetworkConnector;
+import org.apache.activemq.usage.SystemUsage;
 import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.core.MessageCreator;
 
@@ -117,9 +117,9 @@
         brokerService.setPersistent(false);
         brokerService.setUseJmx(true);
 
-        final UsageManager memoryManager = new UsageManager();
-        memoryManager.setLimit(10);
-        brokerService.setMemoryManager(memoryManager);
+        final SystemUsage memoryManager = new SystemUsage();
+        memoryManager.getMemoryUsage().setLimit(10);
+        brokerService.setUsageManager(memoryManager);
 
         final List<PolicyEntry> policyEntries = new ArrayList<PolicyEntry>();