@Test (timeout = 30000)
public void testNormalizeRequest() {

  ResourceCalculator resourceCalculator = new DefaultResourceCalculator();
  
  final int minMemory = 1024;
  final int maxMemory = 8192;
  Resource minResource = Resources.createResource(minMemory, 0);
  Resource maxResource = Resources.createResource(maxMemory, 0);
  
  ResourceRequest ask = new ResourceRequestPBImpl();
  // case negative memory
  ask.setCapability(Resources.createResource(-1024));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(minMemory, ask.getCapability().getMemory());
  // case zero memory
  ask.setCapability(Resources.createResource(0));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(minMemory, ask.getCapability().getMemory());
  // case memory is a multiple of minMemory
  ask.setCapability(Resources.createResource(2 * minMemory));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(2 * minMemory, ask.getCapability().getMemory());
  // case memory is not a multiple of minMemory
  ask.setCapability(Resources.createResource(minMemory + 10));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(2 * minMemory, ask.getCapability().getMemory());
  // case memory is equal to max allowed
  ask.setCapability(Resources.createResource(maxMemory));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(maxMemory, ask.getCapability().getMemory());
  // case memory is just less than max
  ask.setCapability(Resources.createResource(maxMemory - 10));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(maxMemory, ask.getCapability().getMemory());
  // max is not a multiple of min
  maxResource = Resources.createResource(maxMemory - 10, 0);
  ask.setCapability(Resources.createResource(maxMemory - 100));
  // multiple of minMemory > maxMemory, then reduce to maxMemory
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(maxResource.getMemory(), ask.getCapability().getMemory());
  // ask is more than max
  maxResource = Resources.createResource(maxMemory, 0);
  ask.setCapability(Resources.createResource(maxMemory + 100));
  SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource,
      maxResource);
  assertEquals(maxResource.getMemory(), ask.getCapability().getMemory());
}