diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java index a451d42..37c3f2a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java @@ -30,13 +30,14 @@ public class NMLivelinessMonitor extends AbstractLivelinessMonitor { - private EventHandler dispatcher; + private final EventHandler dispatcher; public NMLivelinessMonitor(Dispatcher d) { super("NMLivelinessMonitor"); this.dispatcher = d.getEventHandler(); } + @Override public void serviceInit(Configuration conf) throws Exception { int expireIntvl = conf.getInt(YarnConfiguration.RM_NM_EXPIRY_INTERVAL_MS, YarnConfiguration.DEFAULT_RM_NM_EXPIRY_INTERVAL_MS); @@ -47,7 +48,6 @@ public void serviceInit(Configuration conf) throws Exception { @Override protected void expire(NodeId id) { - dispatcher.handle( - new RMNodeEvent(id, RMNodeEventType.EXPIRE)); + dispatcher.handle(new RMNodeEvent(id, RMNodeEventType.EXPIRE)); } -} \ No newline at end of file +} diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java index 7006e50..62f49a9 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java @@ -29,7 +29,7 @@ public class AMLivelinessMonitor extends AbstractLivelinessMonitor { - private EventHandler dispatcher; + private final EventHandler dispatcher; public AMLivelinessMonitor(Dispatcher d) { super("AMLivelinessMonitor"); @@ -41,6 +41,7 @@ public AMLivelinessMonitor(Dispatcher d, Clock clock) { this.dispatcher = d.getEventHandler(); } + @Override public void serviceInit(Configuration conf) throws Exception { super.serviceInit(conf); int expireIntvl = conf.getInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, @@ -51,7 +52,6 @@ public void serviceInit(Configuration conf) throws Exception { @Override protected void expire(ApplicationAttemptId id) { - dispatcher.handle( - new RMAppAttemptEvent(id, RMAppAttemptEventType.EXPIRE)); + dispatcher.handle(new RMAppAttemptEvent(id, RMAppAttemptEventType.EXPIRE)); } -} \ No newline at end of file +} diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java index 64427b7..b4faac7 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java @@ -174,7 +174,7 @@ public void serviceInit(Configuration conf) throws Exception { } @VisibleForTesting - public ClusterNodeTracker getNodeTracker() { + public ClusterNodeTracker getNodeTracker() { return nodeTracker; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java index e487f69..114c7d8 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ClusterNodeTracker.java @@ -299,7 +299,7 @@ private void updateMaxResources(SchedulerNode node, boolean add) { List sortedList = null; readLock.lock(); try { - sortedList = new ArrayList(nodes.values()); + sortedList = new ArrayList<>(nodes.values()); } finally { readLock.unlock(); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/distributed/NodeQueueLoadMonitor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/distributed/NodeQueueLoadMonitor.java index fb67270..b124e69 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/distributed/NodeQueueLoadMonitor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/distributed/NodeQueueLoadMonitor.java @@ -287,15 +287,17 @@ public void updateNodeResource(RMNode rmNode, ResourceOption resourceOption) { ReentrantReadWriteLock.ReadLock readLock = clusterNodesLock.readLock(); readLock.lock(); try { - ArrayList aList = new ArrayList<>(this.clusterNodes.values()); + ArrayList aList = + new ArrayList<>(this.clusterNodes.values()); List retList = new ArrayList<>(); - Object[] nodes = aList.toArray(); + ClusterNode[] nodes = aList.toArray(new ClusterNode[aList.size()]); + // Collections.sort would do something similar by calling Arrays.sort // internally but would finally iterate through the input list (aList) // to reset the value of each element. Since we don't really care about // 'aList', we can use the iteration to create the list of nodeIds which // is what we ultimately care about. - Arrays.sort(nodes, (Comparator)comparator); + Arrays.sort(nodes, (Comparator)comparator); for (int j=0; j < nodes.length; j++) { retList.add(((ClusterNode)nodes[j]).nodeId); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java index 9eda46c..873883a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java @@ -75,7 +75,7 @@ public static SchedulingPolicy getInstance(Class cla public static SchedulingPolicy parse(String policy) throws AllocationConfigurationException { @SuppressWarnings("rawtypes") - Class clazz; + Class clazz; String text = StringUtils.toLowerCase(policy); if (text.equalsIgnoreCase(FairSharePolicy.NAME)) { clazz = FairSharePolicy.class; @@ -85,10 +85,13 @@ public static SchedulingPolicy parse(String policy) clazz = DominantResourceFairnessPolicy.class; } else { try { - clazz = Class.forName(policy); + clazz = Class.forName(policy).asSubclass(SchedulingPolicy.class); } catch (ClassNotFoundException cnfe) { throw new AllocationConfigurationException(policy + " SchedulingPolicy class not found!"); + } catch (ClassCastException cce) { + throw new AllocationConfigurationException(policy + + " is not an instance of SchedulingPolicy!"); } } if (!SchedulingPolicy.class.isAssignableFrom(clazz)) { diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index bd0602b..3b617b1 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -616,6 +616,10 @@ public ActivitiesInfo getActivities(@Context HttpServletRequest hsr, return new ActivitiesInfo(errMessage, nodeId); } + // We suppress this warning instead of casting the scheduler to a FiCa + // scheduler because we only use it this once and the cast would be ugly + // and fragile. + @SuppressWarnings("unchecked") List nodeList = abstractYarnScheduler.getNodeTracker().getAllNodes(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java index 139e2da..bef833b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java @@ -130,13 +130,14 @@ import com.google.common.base.Supplier; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Sets; +import java.util.Collections; public class TestRMRestart extends ParameterizedSchedulerTestBase { private static final Log LOG = LogFactory.getLog(TestRMRestart.class); private final static File TEMP_DIR = new File(System.getProperty( "test.build.data", "/tmp"), "decommision"); - private File hostFile = new File(TEMP_DIR + File.separator + "hostFile.txt"); + private final File hostFile = + new File(TEMP_DIR + File.separator + "hostFile.txt"); private YarnConfiguration conf; // Fake rmAddr for token-renewal @@ -2234,14 +2235,16 @@ protected RMNodeLabelsManager createNodeLabelManager() { // Add node Label to Node h1->x NodeId n1 = NodeId.newInstance("h1", 0); - nodeLabelManager.addLabelsToNode(ImmutableMap.of(n1, toSet("x"))); + nodeLabelManager.addLabelsToNode(ImmutableMap.of(n1, + Collections.singleton("x"))); clusterNodeLabels.remove("z"); // Remove cluster label z - nodeLabelManager.removeFromClusterNodeLabels(toSet("z")); + nodeLabelManager.removeFromClusterNodeLabels(Collections.singleton("z")); // Replace nodelabel h1->x,y - nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, toSet("y"))); + nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, + Collections.singleton("y"))); // Wait for updating store.It is expected NodeStore update should happen // very fast since it has separate dispatcher. So waiting for max 5 seconds, @@ -2259,7 +2262,8 @@ protected RMNodeLabelsManager createNodeLabelManager() { Map> nodeLabels = nodeLabelManager.getNodeLabels(); Assert.assertEquals(1, nodeLabelManager.getNodeLabels().size()); - Assert.assertTrue(nodeLabels.get(n1).equals(toSet("y"))); + Assert.assertEquals("Node does not have expected label", + Collections.singleton("y"), nodeLabels.get(n1)); MockRM rm2 = new MockRM(conf, memStore) { @Override @@ -2278,7 +2282,8 @@ protected RMNodeLabelsManager createNodeLabelManager() { nodeLabels = nodeLabelManager.getNodeLabels(); Assert.assertEquals(1, nodeLabelManager.getNodeLabels().size()); - Assert.assertTrue(nodeLabels.get(n1).equals(toSet("y"))); + Assert.assertEquals("Node does not have expected label", + Collections.singleton("y"), nodeLabels.get(n1)); rm1.stop(); rm2.stop(); } @@ -2347,11 +2352,6 @@ public void testRMRestartFailAppAttempt() throws Exception { Assert.assertEquals(maxAttempt, loadedApp0.getAppAttempts().size()); } - private Set toSet(E... elements) { - Set set = Sets.newHashSet(elements); - return set; - } - @Test(timeout = 20000) public void testRMRestartNodeMapping() throws Exception { // Initial FS node label store root dir to a random tmp dir @@ -2390,10 +2390,14 @@ protected RMNodeLabelsManager createNodeLabelManager() { NodeId n1 = NodeId.newInstance("h1", 1234); NodeId n2 = NodeId.newInstance("h1", 1235); NodeId nihost = NodeId.newInstance("h1", 0); - nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, toSet("x"))); - nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n2, toSet("x"))); - nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(nihost, toSet("y"))); - nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, toSet("x"))); + nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, + Collections.singleton("x"))); + nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n2, + Collections.singleton("x"))); + nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(nihost, + Collections.singleton("y"))); + nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, + Collections.singleton("x"))); MockRM rm2 = null; for (int i = 0; i < 2; i++) { rm2 = new MockRM(conf, memStore) { @@ -2409,7 +2413,7 @@ protected RMNodeLabelsManager createNodeLabelManager() { nodeLabelManager = rm2.getRMContext().getNodeLabelManager(); Map> labelsToNodes = - nodeLabelManager.getLabelsToNodes(toSet("x")); + nodeLabelManager.getLabelsToNodes(Collections.singleton("x")); Assert.assertEquals(1, null == labelsToNodes.get("x") ? 0 : labelsToNodes.get("x").size()); } @@ -2564,7 +2568,8 @@ protected RMNodeLabelsManager createNodeLabelManager() { nodeLabelManager. addToCluserNodeLabelsWithDefaultExclusivity(clusterNodeLabels); nodeLabelManager.addLabelsToNode( - ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"))); + ImmutableMap.of(NodeId.newInstance("h1", 0), + Collections.singleton("x"))); MockNM nm1 = rm1.registerNode("h1:1234", 8000); // label = x // submit an application with specifying am node label expression as "x" diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/ProportionalCapacityPreemptionPolicyMockFramework.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/ProportionalCapacityPreemptionPolicyMockFramework.java index b2d7d16..f20775a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/ProportionalCapacityPreemptionPolicyMockFramework.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/ProportionalCapacityPreemptionPolicyMockFramework.java @@ -686,7 +686,7 @@ private void setupQueue(CSQueue queue, String q, String[] queueExprArray, } } - return Collections.EMPTY_MAP; + return Collections.emptyMap(); } /** diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java index 2b60ecf..5b518f4 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java @@ -171,18 +171,18 @@ private static final String B1 = B + ".b1"; private static final String B2 = B + ".b2"; private static final String B3 = B + ".b3"; - private static float A_CAPACITY = 10.5f; - private static float B_CAPACITY = 89.5f; + private static final float A_CAPACITY = 10.5f; + private static final float B_CAPACITY = 89.5f; private static final String P1 = CapacitySchedulerConfiguration.ROOT + ".p1"; private static final String P2 = CapacitySchedulerConfiguration.ROOT + ".p2"; private static final String X1 = P1 + ".x1"; private static final String X2 = P1 + ".x2"; private static final String Y1 = P2 + ".y1"; private static final String Y2 = P2 + ".y2"; - private static float A1_CAPACITY = 30; - private static float A2_CAPACITY = 70; - private static float B1_CAPACITY = 79.2f; - private static float B2_CAPACITY = 0.8f; + private static final float A1_CAPACITY = 30; + private static final float A2_CAPACITY = 70; + private static final float B1_CAPACITY = 79.2f; + private static final float B2_CAPACITY = 0.8f; private static float B3_CAPACITY = 20; private ResourceManager resourceManager = null; @@ -839,7 +839,7 @@ public void testAllocateReorder() throws Exception { LeafQueue q = (LeafQueue) cs.getQueue("default"); Assert.assertNotNull(q); - FairOrderingPolicy fop = new FairOrderingPolicy(); + FairOrderingPolicy fop = new FairOrderingPolicy<>(); fop.setSizeBasedWeight(true); q.setOrderingPolicy(fop); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java index bd038e8..14f3f4b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestLeafQueue.java @@ -274,9 +274,9 @@ static LeafQueue stubLeafQueue(LeafQueue queue) { // Stub out parent queue's accept and apply. doReturn(true).when(parent).accept(any(Resource.class), - any(ResourceCommitRequest.class)); + Matchers.>any()); doNothing().when(parent).apply(any(Resource.class), - any(ResourceCommitRequest.class)); + Matchers.>any()); return queue; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestParentQueue.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestParentQueue.java index 11fea82..75f5814 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestParentQueue.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestParentQueue.java @@ -29,7 +29,6 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; import java.util.HashMap; @@ -64,6 +63,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.InOrder; +import org.mockito.Matchers; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -130,13 +130,18 @@ private void applyAllocationToQueue(Resource clusterResource, int allocatedMem, CSQueue queue) { // Call accept & apply for queue - ResourceCommitRequest request = mock(ResourceCommitRequest.class); + @SuppressWarnings("unchecked") + ResourceCommitRequest request = + mock(ResourceCommitRequest.class); when(request.anythingAllocatedOrReserved()).thenReturn(true); - ContainerAllocationProposal allocation = mock( - ContainerAllocationProposal.class); + @SuppressWarnings("unchecked") + ContainerAllocationProposal allocation = + mock(ContainerAllocationProposal.class); when(request.getTotalReleasedResource()).thenReturn(Resources.none()); when(request.getFirstAllocatedOrReservedContainer()).thenReturn(allocation); - SchedulerContainer scontainer = mock(SchedulerContainer.class); + @SuppressWarnings("unchecked") + SchedulerContainer scontainer = + mock(SchedulerContainer.class); when(allocation.getAllocatedOrReservedContainer()).thenReturn(scontainer); when(allocation.getAllocatedOrReservedResource()).thenReturn( Resources.createResource(allocatedMem)); @@ -181,7 +186,8 @@ public CSAssignment answer(InvocationOnMock invocation) throws Throwable { // Next call - nothing if (allocation > 0) { doReturn(new CSAssignment(Resources.none(), type)).when(queue) - .assignContainers(eq(clusterResource), any(PlacementSet.class), + .assignContainers(eq(clusterResource), + Matchers.>any(), any(ResourceLimits.class), any(SchedulingMode.class)); // Mock the node's resource availability @@ -192,7 +198,8 @@ public CSAssignment answer(InvocationOnMock invocation) throws Throwable { return new CSAssignment(allocatedResource, type); } - }).when(queue).assignContainers(eq(clusterResource), any(PlacementSet.class), + }).when(queue).assignContainers(eq(clusterResource), + Matchers.>any(), any(ResourceLimits.class), any(SchedulingMode.class)); } @@ -274,13 +281,14 @@ public void testSingleLevelQueues() throws Exception { SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); InOrder allocationOrder = inOrder(a, b); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), + Matchers.>any(), anyResourceLimits(), any(SchedulingMode.class)); root.assignContainers(clusterResource, node_1, new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 2*GB, clusterResource); verifyQueueMetrics(b, 2*GB, clusterResource); @@ -294,9 +302,11 @@ public void testSingleLevelQueues() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(b, a); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 3*GB, clusterResource); verifyQueueMetrics(b, 4*GB, clusterResource); @@ -308,9 +318,11 @@ public void testSingleLevelQueues() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(b, a); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 3*GB, clusterResource); verifyQueueMetrics(b, 8*GB, clusterResource); @@ -326,9 +338,11 @@ public void testSingleLevelQueues() throws Exception { SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(a, b); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 4*GB, clusterResource); verifyQueueMetrics(b, 9*GB, clusterResource); } @@ -548,21 +562,24 @@ public void testMultiLevelQueues() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); InOrder allocationOrder = inOrder(a, c, b); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); applyAllocationToQueue(clusterResource, 1*GB, a); root.assignContainers(clusterResource, node_0, new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder.verify(c).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); applyAllocationToQueue(clusterResource, 2*GB, root); root.assignContainers(clusterResource, node_0, new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); applyAllocationToQueue(clusterResource, 2*GB, b); verifyQueueMetrics(a, 1*GB, clusterResource); verifyQueueMetrics(b, 6*GB, clusterResource); @@ -587,23 +604,27 @@ public void testMultiLevelQueues() throws Exception { SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(a, a2, a1, b, c); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(a2).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); applyAllocationToQueue(clusterResource, 2*GB, a); root.assignContainers(clusterResource, node_2, new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); applyAllocationToQueue(clusterResource, 2*GB, b); root.assignContainers(clusterResource, node_2, new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder.verify(c).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 3*GB, clusterResource); verifyQueueMetrics(b, 8*GB, clusterResource); verifyQueueMetrics(c, 4*GB, clusterResource); @@ -720,12 +741,14 @@ public void testOffSwitchScheduling() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); InOrder allocationOrder = inOrder(a); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); root.assignContainers(clusterResource, node_1, new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(b); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 2*GB, clusterResource); verifyQueueMetrics(b, 2*GB, clusterResource); @@ -738,9 +761,11 @@ public void testOffSwitchScheduling() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(b, a); allocationOrder.verify(b).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(a).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(a, 2*GB, clusterResource); verifyQueueMetrics(b, 4*GB, clusterResource); @@ -801,9 +826,11 @@ public void testOffSwitchSchedulingMultiLevelQueues() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); InOrder allocationOrder = inOrder(b2, b3); allocationOrder.verify(b2).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(b3).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(b2, 1*GB, clusterResource); verifyQueueMetrics(b3, 2*GB, clusterResource); @@ -816,9 +843,11 @@ public void testOffSwitchSchedulingMultiLevelQueues() throws Exception { new ResourceLimits(clusterResource), SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY); allocationOrder = inOrder(b3, b2); allocationOrder.verify(b3).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); allocationOrder.verify(b2).assignContainers(eq(clusterResource), - any(PlacementSet.class), anyResourceLimits(), any(SchedulingMode.class)); + Matchers.>any(), anyResourceLimits(), + any(SchedulingMode.class)); verifyQueueMetrics(b2, 1*GB, clusterResource); verifyQueueMetrics(b3, 3*GB, clusterResource); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java index 5e6548b..44d7171 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java @@ -78,6 +78,7 @@ import org.mockito.Mockito; import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.TestUtils.toSchedulerKey; +import org.mockito.Matchers; public class TestReservations { @@ -197,9 +198,9 @@ static LeafQueue stubLeafQueue(LeafQueue queue) { if (parent != null) { // Stub out parent queue's accept and apply. doReturn(true).when(parent).accept(any(Resource.class), - any(ResourceCommitRequest.class)); + Matchers.>any()); doNothing().when(parent).apply(any(Resource.class), - any(ResourceCommitRequest.class)); + Matchers.>any()); } return queue; }