@Test
public void testHierarchicalLarge() {

  int[][] qData = new int[][] {
    //  /    A              D              G        
    //            B    C         E    F         H    I
    { 400, 200,  60, 140, 100,  70,  30, 100,  10,  90 },  // abs
    { 400, 400, 400, 400, 400, 400, 400, 400, 400, 400 },  // maxCap
    { 400, 210,  70, 140, 100,  50,  50,  90,  90,   0 },  // used
    {  15,   0,   0,   0,   0,   0,   0,   0,   0,  15 },  // pending
    {   0,   0,   0,   0,   0,   0,   0,   0,   0,   0 },  // reserved
    //          appA appB      appC appD      appE appF
    {   6,   2,   1,   1,   2,   1,   1,   2,   1,   1 },  // apps
    {  -1,  -1,   1,   1,  -1,   1,   1,  -1,   1,   1 },  // req granularity
    {   3,   2,   0,   0,   2,   0,   0,   2,   0,   0 },  // subqueues
  };
  ProportionalCapacityPreemptionPolicy policy = buildPolicy(qData);
  policy.editSchedule();
  // verify capacity taken from A1, not H1 despite H1 being far over
  // its absolute guaranteed capacity
  // XXX note: compensating for rounding error in Resources.multiplyTo
  // which is likely triggered since we use small numbers for readability
  verify(mDisp, times(7)).handle(argThat(new IsPreemptionRequestFor(appA)));
  verify(mDisp, times(5)).handle(argThat(new IsPreemptionRequestFor(appE)));
}