@Test
public void testPerQueuePreemptionNotAllUntouchable() {

  int[][] qData = new int[][] {
    //  /      A                       E
    //               B     C     D           F     G     H
    { 2000, 1000,  800,  100,  100, 1000,  500,  300,  200 },  // abs
    { 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000 },  // maxCap
    { 2000, 1300,  300,  800,  200,  700,  500,    0,  200 },  // used
    {  300,    0,    0,    0,    0,  300,    0,  300,    0 },  // pending
    {    0,    0,    0,    0,    0,    0,    0,    0,    0 },  // reserved
    //             appA  appB  appC        appD  appE  appF
    {    6,    3,    1,    1,    1,    3,    1,    1,    1 },  // apps
    {   -1,   -1,    1,    1,    1,   -1,    1,    1,    1 },  // req granularity
    {    2,    3,    0,    0,    0,    3,    0,    0,    0 },  // subqueues
  };
  schedConf.setPreemptionDisabled("root.queueA.queueC", true);
  ProportionalCapacityPreemptionPolicy policy = buildPolicy(qData);
  policy.editSchedule();
  // Although queueC(appB) is way over capacity and is untouchable,
  // queueD(appC) is preemptable. Request should be filled from queueD(appC).
  verify(mDisp, times(100)).handle(argThat(new IsPreemptionRequestFor(appC)));
}