YARN-10033. TestProportionalCapacityPreemptionPolicy not initializing vcores for effective max resources. Contributed by Eric Payne.

This commit is contained in:
Eric Badger 2019-12-17 17:10:53 +00:00
parent 24080666e5
commit f47dcf2d4c

View File

@ -940,8 +940,8 @@ public void testPreemptionWithVCoreResource() {
true); true);
policy.editSchedule(); policy.editSchedule();
// 5 containers will be preempted here // 4 containers will be preempted here
verify(mDisp, times(5)).handle(argThat(new IsPreemptionRequestFor(appA))); verify(mDisp, times(4)).handle(argThat(new IsPreemptionRequestFor(appA)));
} }
@Test @Test
@ -1094,7 +1094,8 @@ ProportionalCapacityPreemptionPolicy buildPolicy(int[][] qData) {
ProportionalCapacityPreemptionPolicy policy = new ProportionalCapacityPreemptionPolicy( ProportionalCapacityPreemptionPolicy policy = new ProportionalCapacityPreemptionPolicy(
rmContext, mCS, mClock); rmContext, mCS, mClock);
clusterResources = Resource.newInstance( clusterResources = Resource.newInstance(
leafAbsCapacities(qData[0], qData[7]), 0); leafAbsCapacities(qData[0], qData[7]),
leafAbsCapacities(qData[0], qData[7]));
ParentQueue mRoot = buildMockRootQueue(rand, qData); ParentQueue mRoot = buildMockRootQueue(rand, qData);
when(mCS.getRootQueue()).thenReturn(mRoot); when(mCS.getRootQueue()).thenReturn(mRoot);
@ -1173,7 +1174,7 @@ Resource[] parseResourceDetails(String[] resData) {
Resource[] generateResourceList(int[] qData) { Resource[] generateResourceList(int[] qData) {
List<Resource> resourceList = new ArrayList<Resource>(); List<Resource> resourceList = new ArrayList<Resource>();
for (int i = 0; i < qData.length; i++) { for (int i = 0; i < qData.length; i++) {
resourceList.add(Resource.newInstance(qData[i], 0)); resourceList.add(Resource.newInstance(qData[i], qData[i]));
} }
return resourceList.toArray(new Resource[resourceList.size()]); return resourceList.toArray(new Resource[resourceList.size()]);
} }
@ -1205,16 +1206,16 @@ ParentQueue mockNested(Resource[] abs, int[] maxCap, Resource[] used,
boolean preemptionDisabled = mockPreemptionStatus("root"); boolean preemptionDisabled = mockPreemptionStatus("root");
when(root.getPreemptionDisabled()).thenReturn(preemptionDisabled); when(root.getPreemptionDisabled()).thenReturn(preemptionDisabled);
QueueResourceQuotas rootQr = new QueueResourceQuotas(); QueueResourceQuotas rootQr = new QueueResourceQuotas();
rootQr.setEffectiveMaxResource(Resource.newInstance(maxCap[0], 0)); rootQr.setEffectiveMaxResource(Resource.newInstance(maxCap[0], maxCap[0]));
rootQr.setEffectiveMinResource(abs[0]); rootQr.setEffectiveMinResource(abs[0]);
rootQr.setEffectiveMaxResource(RMNodeLabelsManager.NO_LABEL, rootQr.setEffectiveMaxResource(RMNodeLabelsManager.NO_LABEL,
Resource.newInstance(maxCap[0], 0)); Resource.newInstance(maxCap[0], maxCap[0]));
rootQr.setEffectiveMinResource(RMNodeLabelsManager.NO_LABEL, abs[0]); rootQr.setEffectiveMinResource(RMNodeLabelsManager.NO_LABEL, abs[0]);
when(root.getQueueResourceQuotas()).thenReturn(rootQr); when(root.getQueueResourceQuotas()).thenReturn(rootQr);
when(root.getEffectiveCapacity(RMNodeLabelsManager.NO_LABEL)) when(root.getEffectiveCapacity(RMNodeLabelsManager.NO_LABEL))
.thenReturn(abs[0]); .thenReturn(abs[0]);
when(root.getEffectiveMaxCapacity(RMNodeLabelsManager.NO_LABEL)) when(root.getEffectiveMaxCapacity(RMNodeLabelsManager.NO_LABEL))
.thenReturn(Resource.newInstance(maxCap[0], 0)); .thenReturn(Resource.newInstance(maxCap[0], maxCap[0]));
for (int i = 1; i < queues.length; ++i) { for (int i = 1; i < queues.length; ++i) {
final CSQueue q; final CSQueue q;
@ -1246,16 +1247,16 @@ ParentQueue mockNested(Resource[] abs, int[] maxCap, Resource[] used,
when(q.getQueueCapacities()).thenReturn(qc); when(q.getQueueCapacities()).thenReturn(qc);
QueueResourceQuotas qr = new QueueResourceQuotas(); QueueResourceQuotas qr = new QueueResourceQuotas();
qr.setEffectiveMaxResource(Resource.newInstance(maxCap[i], 0)); qr.setEffectiveMaxResource(Resource.newInstance(maxCap[i], maxCap[i]));
qr.setEffectiveMinResource(abs[i]); qr.setEffectiveMinResource(abs[i]);
qr.setEffectiveMaxResource(RMNodeLabelsManager.NO_LABEL, qr.setEffectiveMaxResource(RMNodeLabelsManager.NO_LABEL,
Resource.newInstance(maxCap[i], 0)); Resource.newInstance(maxCap[i], maxCap[i]));
qr.setEffectiveMinResource(RMNodeLabelsManager.NO_LABEL, abs[i]); qr.setEffectiveMinResource(RMNodeLabelsManager.NO_LABEL, abs[i]);
when(q.getQueueResourceQuotas()).thenReturn(qr); when(q.getQueueResourceQuotas()).thenReturn(qr);
when(q.getEffectiveCapacity(RMNodeLabelsManager.NO_LABEL)) when(q.getEffectiveCapacity(RMNodeLabelsManager.NO_LABEL))
.thenReturn(abs[i]); .thenReturn(abs[i]);
when(q.getEffectiveMaxCapacity(RMNodeLabelsManager.NO_LABEL)) when(q.getEffectiveMaxCapacity(RMNodeLabelsManager.NO_LABEL))
.thenReturn(Resource.newInstance(maxCap[i], 0)); .thenReturn(Resource.newInstance(maxCap[i], maxCap[i]));
String parentPathName = p.getQueuePath(); String parentPathName = p.getQueuePath();
parentPathName = (parentPathName == null) ? "root" : parentPathName; parentPathName = (parentPathName == null) ? "root" : parentPathName;