Repository: tomee
Updated Branches:
  refs/heads/master 108abf0ff -> 118060ddc


TOMEE-2146 system usage configuration for AMQ broker


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/118060dd
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/118060dd
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/118060dd

Branch: refs/heads/master
Commit: 118060ddc20ae38dbfd5695ef1eb8ecf29abedcb
Parents: 108abf0
Author: Romain Manni-Bucau <rmannibu...@apache.org>
Authored: Wed Nov 1 18:53:55 2017 +0100
Committer: Romain Manni-Bucau <rmannibu...@apache.org>
Committed: Wed Nov 1 18:53:55 2017 +0100

----------------------------------------------------------------------
 .../resource/activemq/ActiveMQ5Factory.java     | 52 ++++++++++++++++++++
 .../resource/activemq/ActiveMQ5FactoryTest.java | 27 ++++++----
 2 files changed, 70 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/118060dd/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
index ffcd8cb..ae5fc43 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
@@ -28,6 +28,7 @@ import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.PersistenceAdapterFactory;
 import org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
 import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
+import org.apache.activemq.usage.SystemUsage;
 import org.apache.activemq.util.IntrospectionSupport;
 import org.apache.activemq.util.URISupport;
 import org.apache.openejb.loader.SystemInstance;
@@ -94,12 +95,24 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
                 persistenceAdapter = null;
             }
 
+            final String systemUsage = params.remove("systemUsage");
+            final SystemUsage systemUsageInstance;
+            if ("true".equalsIgnoreCase(systemUsage)) {
+                systemUsageInstance = newSystemUsage(params);
+            } else {
+                systemUsageInstance = null;
+            }
+
             final BrokerPlugin[] plugins = createPlugins(params);
             final URI uri = new 
URI(cleanUpUri(brokerURI.getRawSchemeSpecificPart(), 
compositeData.getParameters(), params));
             broker = "broker".equals(uri.getScheme()) ? newDefaultBroker(uri) 
: BrokerFactory.createBroker(uri);
             if (plugins != null) {
                 broker.setPlugins(plugins);
             }
+
+            if (systemUsageInstance != null) {
+                broker.setSystemUsage(systemUsageInstance);
+            }
             brokers.put(brokerURI, broker);
 
             if (persistenceAdapter != null) {
@@ -259,6 +272,45 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
         return broker;
     }
 
+    private SystemUsage newSystemUsage(final Map<String, String> params) {
+        final SystemUsage systemUsage = new SystemUsage();
+
+        {
+            final String memory = params.remove("systemUsage.memory.limit");
+            if (memory != null) {
+                
systemUsage.getMemoryUsage().setLimit(Integer.parseInt(memory.trim()));
+            } else {
+                systemUsage.getMemoryUsage().setLimit(1024L * 1024 * 1024);
+            }
+        }
+        {
+            final String memory = params.remove("systemUsage.temp.limit");
+            if (memory != null) {
+                
systemUsage.getTempUsage().setLimit(Integer.parseInt(memory.trim()));
+            } else {
+                systemUsage.getTempUsage().setLimit(1024L * 1024 * 1024 * 50);
+            }
+        }
+        {
+            final String memory = params.remove("systemUsage.store.limit");
+            if (memory != null) {
+                
systemUsage.getStoreUsage().setLimit(Integer.parseInt(memory.trim()));
+            } else {
+                systemUsage.getStoreUsage().setLimit(1024L * 1024 * 1024 * 
100);
+            }
+        }
+        {
+            final String memory = params.remove("systemUsage.scheduler.limit");
+            if (memory != null) {
+                
systemUsage.getJobSchedulerUsage().setLimit(Integer.parseInt(memory.trim()));
+            } else {
+                systemUsage.getJobSchedulerUsage().setLimit(1024L * 1024 * 
1024);
+            }
+        }
+
+        return systemUsage;
+    }
+
     // forking org.apache.activemq.broker.DefaultBrokerFactory.createBroker() 
to support network connector properties
     private BrokerService newDefaultBroker(final URI uri) throws Exception {
         final URISupport.CompositeData compositeData = 
URISupport.parseComposite(uri);

http://git-wip-us.apache.org/repos/asf/tomee/blob/118060dd/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQ5FactoryTest.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQ5FactoryTest.java
 
b/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQ5FactoryTest.java
index c554923..109dc35 100644
--- 
a/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQ5FactoryTest.java
+++ 
b/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQ5FactoryTest.java
@@ -1,19 +1,18 @@
 /**
- *
  * 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.
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.openejb.resource.activemq;
 
@@ -34,6 +33,16 @@ import static org.junit.Assert.assertTrue;
 
 public class ActiveMQ5FactoryTest {
     @Test
+    public void systemUsage() throws Exception {
+        final URI brokerURI = new URI("amq5factory:broker:(tcp://localhost:" + 
getNextAvailablePort() + ")?" +
+                "systemUsage=true&systemUsage.memory.limit=1024");
+        final BrokerService bs = new 
ActiveMQ5Factory().createBroker(brokerURI);
+        bs.stop();
+        ActiveMQ5Factory.brokers.remove(brokerURI);
+        assertEquals(1024, bs.getSystemUsage().getMemoryUsage().getLimit());
+    }
+
+    @Test
     public void setPlugins() throws Exception {
         final URI brokerURI = new URI("amq5factory:broker:(tcp://localhost:" + 
getNextAvailablePort() + ")?" +
                 "amq.plugins=jaas&" +

Reply via email to