From 694b67ae361e6e65833661e4d42bce177898e840 Mon Sep 17 00:00:00 2001 From: Michael Nitschinger Date: Wed, 16 Oct 2013 13:05:11 +0200 Subject: [PATCH] DATACOUCH-40 - Make ClusterInfo more reliable on the values returned. --- .../data/couchbase/monitor/ClusterInfo.java | 28 +++++++++++++++---- .../couchbase/monitor/ClusterInfoTests.java | 4 +-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/springframework/data/couchbase/monitor/ClusterInfo.java b/src/main/java/org/springframework/data/couchbase/monitor/ClusterInfo.java index e9cf5d01..a9e5700e 100644 --- a/src/main/java/org/springframework/data/couchbase/monitor/ClusterInfo.java +++ b/src/main/java/org/springframework/data/couchbase/monitor/ClusterInfo.java @@ -37,27 +37,27 @@ public class ClusterInfo extends AbstractMonitor { @ManagedMetric(description = "Total RAM assigned") public long getTotalRAMAssigned() { - return (Long) parseStorageTotals().get("ram").get("total"); + return convertPotentialLong(parseStorageTotals().get("ram").get("total")); } @ManagedMetric(description = "Total RAM used") public long getTotalRAMUsed() { - return (Long) parseStorageTotals().get("ram").get("used"); + return convertPotentialLong(parseStorageTotals().get("ram").get("used")); } @ManagedMetric(description = "Total Disk Space assigned") public long getTotalDiskAssigned() { - return (Long) parseStorageTotals().get("hdd").get("total"); + return convertPotentialLong(parseStorageTotals().get("hdd").get("total")); } @ManagedMetric(description = "Total Disk Space used") public long getTotalDiskUsed() { - return (Long) parseStorageTotals().get("hdd").get("used"); + return convertPotentialLong(parseStorageTotals().get("hdd").get("used")); } @ManagedMetric(description = "Total Disk Space free") public long getTotalDiskFree() { - return (Long) parseStorageTotals().get("hdd").get("free"); + return convertPotentialLong(parseStorageTotals().get("hdd").get("free")); } @ManagedAttribute(description = "Cluster is Balanced") @@ -75,6 +75,24 @@ public class ClusterInfo extends AbstractMonitor { return (Integer) fetchPoolInfo().get("maxBucketCount"); } + /** + * Depending on the value size, either int or long can be passed in and get + * converted to long. + * + * @param value the value to convert. + * + * @return the converted value. + */ + private long convertPotentialLong(Object value) { + if (value instanceof Integer) { + return new Long((Integer) value); + } else if (value instanceof Long) { + return (Long) value; + } else { + throw new IllegalStateException("Cannot convert value to long: " + value); + } + } + private HashMap fetchPoolInfo() { return getTemplate().getForObject("http://" + randomAvailableHostname() + ":8091/pools/default", HashMap.class); diff --git a/src/test/java/org/springframework/data/couchbase/monitor/ClusterInfoTests.java b/src/test/java/org/springframework/data/couchbase/monitor/ClusterInfoTests.java index 0b4b17f6..dafa7cf1 100644 --- a/src/test/java/org/springframework/data/couchbase/monitor/ClusterInfoTests.java +++ b/src/test/java/org/springframework/data/couchbase/monitor/ClusterInfoTests.java @@ -49,8 +49,8 @@ public class ClusterInfoTests { } @Test - public void totalRAMAssigned() { - assertThat(ci.getTotalRAMAssigned(), greaterThan(0L)); + public void totalDiskAssigned() { + assertThat(ci.getTotalDiskAssigned(), greaterThan(0L)); } @Test