|
@@ -44,6 +44,7 @@ import static org.junit.Assert.fail;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.lang.management.ManagementFactory;
|
|
import java.net.InetSocketAddress;
|
|
import java.net.InetSocketAddress;
|
|
import java.security.PrivilegedExceptionAction;
|
|
import java.security.PrivilegedExceptionAction;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -84,6 +85,7 @@ import org.apache.hadoop.hdfs.server.namenode.INode;
|
|
import org.apache.hadoop.hdfs.server.namenode.sps.BlockMovementListener;
|
|
import org.apache.hadoop.hdfs.server.namenode.sps.BlockMovementListener;
|
|
import org.apache.hadoop.hdfs.server.namenode.sps.BlockStorageMovementAttemptedItems;
|
|
import org.apache.hadoop.hdfs.server.namenode.sps.BlockStorageMovementAttemptedItems;
|
|
import org.apache.hadoop.hdfs.server.namenode.sps.StoragePolicySatisfier;
|
|
import org.apache.hadoop.hdfs.server.namenode.sps.StoragePolicySatisfier;
|
|
|
|
+import org.apache.hadoop.hdfs.server.sps.metrics.ExternalSPSBeanMetrics;
|
|
import org.apache.hadoop.http.HttpConfig;
|
|
import org.apache.hadoop.http.HttpConfig;
|
|
import org.apache.hadoop.minikdc.MiniKdc;
|
|
import org.apache.hadoop.minikdc.MiniKdc;
|
|
import org.apache.hadoop.security.SecurityUtil;
|
|
import org.apache.hadoop.security.SecurityUtil;
|
|
@@ -102,6 +104,8 @@ import org.junit.Test;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
+import javax.management.MBeanServer;
|
|
|
|
+import javax.management.ObjectName;
|
|
import java.util.function.Supplier;
|
|
import java.util.function.Supplier;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1817,4 +1821,34 @@ public class TestExternalStoragePolicySatisfier {
|
|
actualBlockMovements.clear();
|
|
actualBlockMovements.clear();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Test(timeout = 300000)
|
|
|
|
+ public void testExternalSPSMetrics() throws Exception {
|
|
|
|
+ try {
|
|
|
|
+ createCluster();
|
|
|
|
+ // Start JMX but stop SPS thread to prevent mock data from being consumed.
|
|
|
|
+ externalSps.stop(true);
|
|
|
|
+ externalCtxt.initMetrics(externalSps);
|
|
|
|
+
|
|
|
|
+ ExternalSPSBeanMetrics spsBeanMetrics = externalCtxt.getSpsBeanMetrics();
|
|
|
|
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
|
|
|
+ ObjectName mxBeanName = new ObjectName("Hadoop:service=ExternalSPS,name=ExternalSPS");
|
|
|
|
+ // Assert metrics before update.
|
|
|
|
+ assertEquals(0, mbs.getAttribute(mxBeanName, "AttemptedItemsCount"));
|
|
|
|
+ assertEquals(0, mbs.getAttribute(mxBeanName, "ProcessingQueueSize"));
|
|
|
|
+ assertEquals(0, mbs.getAttribute(mxBeanName, "MovementFinishedBlocksCount"));
|
|
|
|
+
|
|
|
|
+ // Update metrics.
|
|
|
|
+ spsBeanMetrics.updateAttemptedItemsCount();
|
|
|
|
+ spsBeanMetrics.updateProcessingQueueSize();
|
|
|
|
+ spsBeanMetrics.updateMovementFinishedBlocksCount();
|
|
|
|
+
|
|
|
|
+ // Assert metrics after update.
|
|
|
|
+ assertEquals(1, mbs.getAttribute(mxBeanName, "AttemptedItemsCount"));
|
|
|
|
+ assertEquals(1, mbs.getAttribute(mxBeanName, "ProcessingQueueSize"));
|
|
|
|
+ assertEquals(1, mbs.getAttribute(mxBeanName, "MovementFinishedBlocksCount"));
|
|
|
|
+ } finally {
|
|
|
|
+ shutdownCluster();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|