|
@@ -30,6 +30,10 @@ import static org.mockito.Mockito.when;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.conf.Configuration;
|
|
import org.apache.hadoop.conf.Configuration;
|
|
|
|
|
|
|
|
+import javax.management.MBeanServer;
|
|
|
|
+import javax.management.ObjectName;
|
|
|
|
+import java.lang.management.ManagementFactory;
|
|
|
|
+
|
|
public class TestDecayRpcScheduler {
|
|
public class TestDecayRpcScheduler {
|
|
private Schedulable mockCall(String id) {
|
|
private Schedulable mockCall(String id) {
|
|
Schedulable mockCall = mock(Schedulable.class);
|
|
Schedulable mockCall = mock(Schedulable.class);
|
|
@@ -189,12 +193,14 @@ public class TestDecayRpcScheduler {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
@SuppressWarnings("deprecation")
|
|
@SuppressWarnings("deprecation")
|
|
- public void testPriority() {
|
|
|
|
|
|
+ public void testPriority() throws Exception {
|
|
Configuration conf = new Configuration();
|
|
Configuration conf = new Configuration();
|
|
- conf.set("ns." + DecayRpcScheduler.IPC_FCQ_DECAYSCHEDULER_PERIOD_KEY, "99999999"); // Never flush
|
|
|
|
- conf.set("ns." + DecayRpcScheduler.IPC_FCQ_DECAYSCHEDULER_THRESHOLDS_KEY,
|
|
|
|
- "25, 50, 75");
|
|
|
|
- scheduler = new DecayRpcScheduler(4, "ns", conf);
|
|
|
|
|
|
+ final String namespace = "ns";
|
|
|
|
+ conf.set(namespace + "." + DecayRpcScheduler
|
|
|
|
+ .IPC_FCQ_DECAYSCHEDULER_PERIOD_KEY, "99999999"); // Never flush
|
|
|
|
+ conf.set(namespace + "." + DecayRpcScheduler
|
|
|
|
+ .IPC_FCQ_DECAYSCHEDULER_THRESHOLDS_KEY, "25, 50, 75");
|
|
|
|
+ scheduler = new DecayRpcScheduler(4, namespace, conf);
|
|
|
|
|
|
assertEquals(0, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(0, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(2, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(2, scheduler.getPriorityLevel(mockCall("A")));
|
|
@@ -206,6 +212,20 @@ public class TestDecayRpcScheduler {
|
|
assertEquals(1, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(1, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(1, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(1, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(2, scheduler.getPriorityLevel(mockCall("A")));
|
|
assertEquals(2, scheduler.getPriorityLevel(mockCall("A")));
|
|
|
|
+
|
|
|
|
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
|
|
|
+ ObjectName mxbeanName = new ObjectName(
|
|
|
|
+ "Hadoop:service="+ namespace + ",name=DecayRpcScheduler");
|
|
|
|
+
|
|
|
|
+ String cvs1 = (String) mbs.getAttribute(mxbeanName, "CallVolumeSummary");
|
|
|
|
+ assertTrue("Get expected JMX of CallVolumeSummary before decay",
|
|
|
|
+ cvs1.equals("{\"A\":6,\"B\":2,\"C\":2}"));
|
|
|
|
+
|
|
|
|
+ scheduler.forceDecay();
|
|
|
|
+
|
|
|
|
+ String cvs2 = (String) mbs.getAttribute(mxbeanName, "CallVolumeSummary");
|
|
|
|
+ assertTrue("Get expected JMX for CallVolumeSummary after decay",
|
|
|
|
+ cvs2.equals("{\"A\":3,\"B\":1,\"C\":1}"));
|
|
}
|
|
}
|
|
|
|
|
|
@Test(timeout=2000)
|
|
@Test(timeout=2000)
|