You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/10/24 19:43:57 UTC
svn commit: r1535452 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java
test/java/org/apache/hadoop/hbase/master/metrics/
test/java/org/apache/hadoop/hbase/master/metrics/TestMasterStatistics.java
Author: tedyu
Date: Thu Oct 24 17:43:56 2013
New Revision: 1535452
URL: http://svn.apache.org/r1535452
Log:
HBASE-8397 improve unit-test coverage of package org.apache.hadoop.hbase.master.metrics (0.94)
Added:
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/master/metrics/
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/master/metrics/TestMasterStatistics.java
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java?rev=1535452&r1=1535451&r2=1535452&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java Thu Oct 24 17:43:56 2013
@@ -30,7 +30,6 @@ import org.apache.hadoop.metrics.Metrics
import org.apache.hadoop.metrics.MetricsUtil;
import org.apache.hadoop.metrics.Updater;
import org.apache.hadoop.metrics.jvm.JvmMetrics;
-import org.apache.hadoop.metrics.util.MetricsLongValue;
import org.apache.hadoop.metrics.util.MetricsRegistry;
@@ -90,7 +89,7 @@ public class MasterMetrics implements Up
// get custom attributes
try {
- Object m =
+ Object m =
ContextFactory.getFactory().getAttribute("hbase.extendedperiod");
if (m instanceof String) {
this.extendedPeriod = Long.parseLong((String) m)*1000;
@@ -135,7 +134,7 @@ public class MasterMetrics implements Up
public void resetAllMinMax() {
// Nothing to do
}
-
+
/**
* Record a single instance of a split
* @param time time that the split took
Added: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/master/metrics/TestMasterStatistics.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/master/metrics/TestMasterStatistics.java?rev=1535452&view=auto
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/master/metrics/TestMasterStatistics.java (added)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/master/metrics/TestMasterStatistics.java Thu Oct 24 17:43:56 2013
@@ -0,0 +1,116 @@
+/**
+ *
+ * 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.hadoop.hbase.master.metrics;
+
+import static org.junit.Assert.*;
+
+import java.lang.management.ManagementFactory;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.hadoop.hbase.SmallTests;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+/**
+ * Tests {@link MasterMetrics} and access to it through the
+ * {@link MasterStatistics} management bean.
+ */
+@Category(SmallTests.class)
+public class TestMasterStatistics {
+
+ @Test
+ public void testMasterStatistics() throws Exception {
+ // No timer updates started here since NullContext is
+ // instantiated by default for HBase:
+ MasterMetrics masterMetrics = new MasterMetrics("foo");
+ try {
+ final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ final ObjectName objectName = new ObjectName(
+ "hadoop:name=MasterStatistics,service=Master");
+
+ masterMetrics.doUpdates(null);
+
+ masterMetrics.resetAllMinMax();
+
+ masterMetrics.incrementRequests(10);
+ Thread.sleep(1001);
+
+ masterMetrics.addSnapshot(1L);
+ masterMetrics.addSnapshotClone(2L);
+ masterMetrics.addSnapshotRestore(3L);
+
+ // 3 times added split, average = (5+3+4)/3 = 4
+ masterMetrics.addSplit(4L, 5L);
+ masterMetrics.addSplit(2L, 3L);
+ masterMetrics.addSplit(13L, 4L);
+
+ masterMetrics.doUpdates(null);
+
+ final float f = masterMetrics.getRequests();
+ // f = 10/T, where T >= 1 sec. So, we assert that 0 < f <= 10:
+ if (f <= 0.0f || f > 10.0f) {
+ fail("Unexpected rate value: " + f);
+ }
+ Object attribute = server.getAttribute(objectName, "cluster_requests");
+ float f2 = ((Float) attribute).floatValue();
+ assertEquals("The value obtained through bean server should be equal to the one " +
+ "obtained directly.", f, f2, 1e-4);
+
+ // NB: these 3 metrics are not pushed upon masterMetrics.doUpdates(),
+ // so they always return null:
+ attribute = server.getAttribute(objectName, "snapshotTimeNumOps");
+ assertEquals(Integer.valueOf(0), attribute);
+ attribute = server.getAttribute(objectName, "snapshotRestoreTimeNumOps");
+ assertEquals(Integer.valueOf(0), attribute);
+ attribute = server.getAttribute(objectName, "snapshotCloneTimeNumOps");
+ assertEquals(Integer.valueOf(0), attribute);
+
+ attribute = server.getAttribute(objectName, "splitSizeNumOps");
+ assertEquals(Integer.valueOf(3), attribute);
+ attribute = server.getAttribute(objectName, "splitSizeAvgTime");
+ assertEquals(Long.valueOf(4), attribute);
+ } finally {
+ masterMetrics.shutdown();
+ }
+ }
+
+ @Test
+ public void testHBaseInfoBean() throws Exception {
+ MasterMetrics masterMetrics = new MasterMetrics("foo");
+ try {
+ final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ // Test Info bean:
+ final ObjectName objectName2 = new ObjectName(
+ "hadoop:name=Info,service=HBase");
+ Object attribute;
+ attribute = server.getAttribute(objectName2, "revision");
+ assertNotNull(attribute);
+ attribute = server.getAttribute(objectName2, "version");
+ assertNotNull(attribute);
+ attribute = server.getAttribute(objectName2, "hdfsUrl");
+ assertNotNull(attribute);
+ attribute = server.getAttribute(objectName2, "user");
+ assertNotNull(attribute);
+ } finally {
+ masterMetrics.shutdown();
+ }
+ }
+}