Author: pferraro
Date: 2009-03-16 21:41:39 -0400 (Mon, 16 Mar 2009)
New Revision: 2364
Modified:
trunk/mod_cluster/src/main/java/org/jboss/modcluster/load/metric/impl/HeapMemoryUsageLoadMetric.java
trunk/mod_cluster/src/test/java/org/jboss/modcluster/load/metric/HeapMemoryUsageLoadMetricTestCase.java
Log:
[MODCLUSTER-62] HeapMemoryUsageLoadMetric fails if max heap is undefined
Modified:
trunk/mod_cluster/src/main/java/org/jboss/modcluster/load/metric/impl/HeapMemoryUsageLoadMetric.java
===================================================================
---
trunk/mod_cluster/src/main/java/org/jboss/modcluster/load/metric/impl/HeapMemoryUsageLoadMetric.java 2009-03-16
16:52:19 UTC (rev 2363)
+++
trunk/mod_cluster/src/main/java/org/jboss/modcluster/load/metric/impl/HeapMemoryUsageLoadMetric.java 2009-03-17
01:41:39 UTC (rev 2364)
@@ -54,7 +54,12 @@
public double getLoad(LoadContext context)
{
MemoryUsage usage = this.bean.getHeapMemoryUsage();
-
- return ((double) usage.getUsed()) / usage.getMax();
+
+ long max = usage.getMax();
+
+ // Max may be undefined, so fall back to committed
+ double total = (max >= 0) ? max : usage.getCommitted();
+
+ return usage.getUsed() / total;
}
}
Modified:
trunk/mod_cluster/src/test/java/org/jboss/modcluster/load/metric/HeapMemoryUsageLoadMetricTestCase.java
===================================================================
---
trunk/mod_cluster/src/test/java/org/jboss/modcluster/load/metric/HeapMemoryUsageLoadMetricTestCase.java 2009-03-16
16:52:19 UTC (rev 2363)
+++
trunk/mod_cluster/src/test/java/org/jboss/modcluster/load/metric/HeapMemoryUsageLoadMetricTestCase.java 2009-03-17
01:41:39 UTC (rev 2364)
@@ -57,6 +57,26 @@
EasyMock.reset(this.bean);
}
+
+ @Test
+ public void getLoadNoMax() throws Exception
+ {
+ LoadContext context = EasyMock.createMock(LoadContext.class);
+
+ MemoryUsage usage = new MemoryUsage(0, 1000, 2000, -1);
+
+ EasyMock.expect(this.bean.getHeapMemoryUsage()).andReturn(usage);
+
+ EasyMock.replay(this.bean);
+
+ double load = this.metric.getLoad(context);
+
+ EasyMock.verify(this.bean);
+
+ Assert.assertEquals(0.5, load, 0.0);
+
+ EasyMock.reset(this.bean);
+ }
@Test
public void createContext()
Show replies by date