@@ -1083,44 +1083,74 @@ public void testRefreshPreemptionProperties() throws Exception {
1083
1083
}
1084
1084
1085
1085
@ Test
1086
- public void testLeafQueueNameExtraction () throws Exception {
1087
- ProportionalCapacityPreemptionPolicy policy =
1088
- buildPolicy (Q_DATA_FOR_IGNORE );
1086
+ public void testLeafQueueNameExtractionWithFlexibleAQC () throws Exception {
1087
+ ProportionalCapacityPreemptionPolicy policy = buildPolicy (Q_DATA_FOR_IGNORE );
1089
1088
ParentQueue root = (ParentQueue ) mCS .getRootQueue ();
1089
+
1090
1090
root .addDynamicParentQueue ("childlessFlexible" );
1091
+ ParentQueue dynamicParent = setupDynamicParentQueue ("root.dynamicParent" , true );
1092
+ extendRootQueueWithMock (root , dynamicParent );
1093
+
1094
+ policy .editSchedule ();
1095
+ assertFalse (policy .getLeafQueueNames ().contains ( "root.dynamicParent" ),
1096
+ "root.dynamicLegacyParent" + " should not be a LeafQueue candidate" );
1097
+ }
1098
+
1099
+ @ Test
1100
+ public void testLeafQueueNameExtractionWithLegacyAQC () throws Exception {
1101
+ ProportionalCapacityPreemptionPolicy policy = buildPolicy (Q_DATA_FOR_IGNORE );
1102
+ ParentQueue root = (ParentQueue ) mCS .getRootQueue ();
1103
+
1104
+ root .addDynamicParentQueue ("childlessLegacy" );
1105
+ ParentQueue dynamicParent = setupDynamicParentQueue ("root.dynamicLegacyParent" , false );
1106
+ extendRootQueueWithMock (root , dynamicParent );
1107
+
1108
+ policy .editSchedule ();
1109
+ assertFalse (policy .getLeafQueueNames ().contains ( "root.dynamicLegacyParent" ),
1110
+ "root.dynamicLegacyParent" + " should not be a LeafQueue candidate" );
1111
+ }
1112
+
1113
+ private ParentQueue setupDynamicParentQueue (String queuePath , boolean isFlexible ) {
1114
+ ParentQueue dynamicParent = mockParentQueue (null , 0 , new LinkedList <>());
1115
+ mockQueueFields (dynamicParent , queuePath );
1116
+
1117
+ if (isFlexible ) {
1118
+ when (dynamicParent .isEligibleForAutoQueueCreation ()).thenReturn (true );
1119
+ } else {
1120
+ when (dynamicParent .isEligibleForLegacyAutoQueueCreation ()).thenReturn (true );
1121
+ }
1122
+
1123
+ return dynamicParent ;
1124
+ }
1125
+
1126
+ private void extendRootQueueWithMock (ParentQueue root , ParentQueue mockQueue ) {
1091
1127
List <CSQueue > queues = root .getChildQueues ();
1092
1128
ArrayList <CSQueue > extendedQueues = new ArrayList <>();
1093
- LinkedList <ParentQueue > pqs = new LinkedList <>();
1094
- ParentQueue dynamicParent = mockParentQueue (
1095
- null , 0 , pqs );
1096
- when (dynamicParent .getQueuePath ()).thenReturn ("root.dynamicParent" );
1097
- when (dynamicParent .getQueueCapacities ()).thenReturn (
1098
- new QueueCapacities (false ));
1099
- QueueResourceQuotas dynamicParentQr = new QueueResourceQuotas ();
1100
- dynamicParentQr .setEffectiveMaxResource (Resource .newInstance (1 , 1 ));
1101
- dynamicParentQr .setEffectiveMinResource (Resources .createResource (1 ));
1102
- dynamicParentQr .setEffectiveMaxResource (RMNodeLabelsManager .NO_LABEL ,
1103
- Resource .newInstance (1 , 1 ));
1104
- dynamicParentQr .setEffectiveMinResource (RMNodeLabelsManager .NO_LABEL ,
1105
- Resources .createResource (1 ));
1106
- when (dynamicParent .getQueueResourceQuotas ()).thenReturn (dynamicParentQr );
1107
- when (dynamicParent .getEffectiveCapacity (RMNodeLabelsManager .NO_LABEL ))
1108
- .thenReturn (Resources .createResource (1 ));
1109
- when (dynamicParent .getEffectiveMaxCapacity (RMNodeLabelsManager .NO_LABEL ))
1110
- .thenReturn (Resource .newInstance (1 , 1 ));
1111
- ResourceUsage resUsage = new ResourceUsage ();
1112
- resUsage .setUsed (Resources .createResource (1024 ));
1113
- resUsage .setReserved (Resources .createResource (1024 ));
1114
- when (dynamicParent .getQueueResourceUsage ()).thenReturn (resUsage );
1115
- when (dynamicParent .isEligibleForAutoQueueCreation ()).thenReturn (true );
1116
- extendedQueues .add (dynamicParent );
1129
+ extendedQueues .add (mockQueue );
1117
1130
extendedQueues .addAll (queues );
1118
1131
when (root .getChildQueues ()).thenReturn (extendedQueues );
1132
+ }
1119
1133
1120
- policy .editSchedule ();
1134
+ private void mockQueueFields (ParentQueue queue , String queuePath ) {
1135
+ when (queue .getQueuePath ()).thenReturn (queuePath );
1136
+ when (queue .getQueueCapacities ()).thenReturn (new QueueCapacities (false ));
1137
+
1138
+ QueueResourceQuotas qrq = new QueueResourceQuotas ();
1139
+ qrq .setEffectiveMaxResource (Resource .newInstance (1 , 1 ));
1140
+ qrq .setEffectiveMinResource (Resources .createResource (1 ));
1141
+ qrq .setEffectiveMaxResource (RMNodeLabelsManager .NO_LABEL , Resource .newInstance (1 , 1 ));
1142
+ qrq .setEffectiveMinResource (RMNodeLabelsManager .NO_LABEL , Resources .createResource (1 ));
1121
1143
1122
- assertFalse (policy .getLeafQueueNames ().contains ("root.dynamicParent" ),
1123
- "dynamicParent should not be a LeafQueue candidate" );
1144
+ when (queue .getQueueResourceQuotas ()).thenReturn (qrq );
1145
+ when (queue .getEffectiveCapacity (RMNodeLabelsManager .NO_LABEL ))
1146
+ .thenReturn (Resources .createResource (1 ));
1147
+ when (queue .getEffectiveMaxCapacity (RMNodeLabelsManager .NO_LABEL ))
1148
+ .thenReturn (Resource .newInstance (1 , 1 ));
1149
+
1150
+ ResourceUsage usage = new ResourceUsage ();
1151
+ usage .setUsed (Resources .createResource (1024 ));
1152
+ usage .setReserved (Resources .createResource (1024 ));
1153
+ when (queue .getQueueResourceUsage ()).thenReturn (usage );
1124
1154
}
1125
1155
1126
1156
static class IsPreemptionRequestFor
@@ -1369,6 +1399,10 @@ LeafQueue mockLeafQueue(ParentQueue p, Resource tot, int i, Resource[] abs,
1369
1399
Resource [] used , Resource [] pending , Resource [] reserved , int [] apps ,
1370
1400
Resource [] gran ) {
1371
1401
LeafQueue lq = mock (LeafQueue .class );
1402
+
1403
+ String queuePath = p .getQueuePath () + ".queue" + (char )('A' + i - 1 );
1404
+ when (mCS .getQueue (queuePath )).thenReturn (lq );
1405
+
1372
1406
ResourceCalculator rc = mCS .getResourceCalculator ();
1373
1407
List <ApplicationAttemptId > appAttemptIdList =
1374
1408
new ArrayList <ApplicationAttemptId >();
0 commit comments