@Test
public void testAuxServices() {

  Configuration conf = new Configuration();
  conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, new String[] { "Asrv", "Bsrv" });
  conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, "Asrv"),
      ServiceA.class, Service.class);
  conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, "Bsrv"),
      ServiceB.class, Service.class);
  final AuxServices aux = new AuxServices();
  aux.init(conf);
  int latch = 1;
  for (Service s : aux.getServices()) {
    assertEquals(INITED, s.getServiceState());
    if (s instanceof ServiceA) { latch *= 2; }
    else if (s instanceof ServiceB) { latch *= 3; }
    else fail("Unexpected service type " + s.getClass());
  }
  assertEquals("Invalid mix of services", 6, latch);
  aux.start();
  for (Service s : aux.getServices()) {
    assertEquals(STARTED, s.getServiceState());
  }
  aux.stop();
  for (Service s : aux.getServices()) {
    assertEquals(STOPPED, s.getServiceState());
  }
}