PeriodicRLESparseResourceAllocation extends RLESparseResourceAllocation { public Resource getCapacityAtTime(long tick) { long convertedTime = (tick % timePeriod); return super.getCapacityAtTime(convertedTime); } PeriodicRLESparseResourceAllocation(
      ResourceCalculator resourceCalculator, Long timePeriod);  PeriodicRLESparseResourceAllocation(
      ResourceCalculator resourceCalculator); @VisibleForTesting  PeriodicRLESparseResourceAllocation(
      RLESparseResourceAllocation rleVector, Long timePeriod); Resource getCapacityAtTime(long tick); boolean addInterval(ReservationInterval interval, Resource resource); boolean removeInterval(ReservationInterval interval,
      Resource resource); Resource getMaximumPeriodicCapacity(long tick, long period); long getTimePeriod(); @Override String toString(); @Override RLESparseResourceAllocation getRangeOverlapping(long start, long end);  }
@Test public void testMixPeriodicAndNonPeriodic() throws PlanningException { int[] alloc = { 2, 5, 0 }; long[] timeSteps = { 1L, 2L, 3L }; RLESparseResourceAllocation tempPeriodic = ReservationSystemTestUtil .generateRLESparseResourceAllocation(alloc, timeSteps); PeriodicRLESparseResourceAllocation periodic = new PeriodicRLESparseResourceAllocation(tempPeriodic, 10L); int[] alloc2 = { 10, 10, 0 }; long[] timeSteps2 = { 12L, 13L, 14L }; RLESparseResourceAllocation nonPeriodic = ReservationSystemTestUtil .generateRLESparseResourceAllocation(alloc2, timeSteps2); RLESparseResourceAllocation merged = RLESparseResourceAllocation.merge(nonPeriodic.getResourceCalculator(), Resource.newInstance(100 * 1024, 100), periodic, nonPeriodic, RLESparseResourceAllocation.RLEOperator.add, 2, 25); Assert.assertEquals(Resource.newInstance(5, 5), merged.getCapacityAtTime(2L)); Assert.assertEquals(Resource.newInstance(0, 0), merged.getCapacityAtTime(3L)); Assert.assertEquals(Resource.newInstance(2, 2), merged.getCapacityAtTime(11L)); Assert.assertEquals(Resource.newInstance(15, 15), merged.getCapacityAtTime(12L)); Assert.assertEquals(Resource.newInstance(10, 10), merged.getCapacityAtTime(13L)); Assert.assertEquals(Resource.newInstance(0, 0), merged.getCapacityAtTime(14L)); Assert.assertEquals(Resource.newInstance(2, 2), merged.getCapacityAtTime(21L)); Assert.assertEquals(Resource.newInstance(5, 5), merged.getCapacityAtTime(22L)); Assert.assertEquals(Resource.newInstance(0, 0), merged.getCapacityAtTime(23L)); }