@Test(expected = IllegalStateException.class) @TestDir public void illegalState1() throws Exception { Server server = new Server( "server", TestDirHelper.getTestDir().getAbsolutePath(), new Configuration(false)); server.destroy(); }
@Test @TestDir public void startWithStatusNotNormal() throws Exception { Configuration conf = new Configuration(false); conf.set("server.startup.status", "ADMIN"); Server server = createServer(conf); server.init(); assertEquals(server.getStatus(), Server.Status.ADMIN); server.destroy(); }
@Test @TestDir public void serviceLifeCycle() throws Exception { TestService.LIFECYCLE.clear(); Configuration conf = new Configuration(false); conf.set("server.services", TestService.class.getName()); Server server = createServer(conf); server.init(); assertNotNull(server.get(TestService.class)); server.destroy(); assertEquals( TestService.LIFECYCLE, Arrays.asList("init", "postInit", "serverStatusChange", "destroy")); }
@Test @TestDir public void lifeCycle() throws Exception { Configuration conf = new Configuration(false); conf.set("server.services", LifeCycleService.class.getName()); Server server = createServer(conf); assertEquals(server.getStatus(), Server.Status.UNDEF); server.init(); assertNotNull(server.get(LifeCycleService.class)); assertEquals(server.getStatus(), Server.Status.NORMAL); server.destroy(); assertEquals(server.getStatus(), Server.Status.SHUTDOWN); }
@Test @TestDir public void services() throws Exception { String dir = TestDirHelper.getTestDir().getAbsolutePath(); Configuration conf; Server server; // no services ORDER.clear(); conf = new Configuration(false); server = new Server("server", dir, dir, dir, dir, conf); server.init(); assertEquals(ORDER.size(), 0); // 2 services init/destroy ORDER.clear(); String services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService3.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); server.init(); assertEquals(server.get(MyService1.class).getInterface(), MyService1.class); assertEquals(server.get(MyService3.class).getInterface(), MyService3.class); assertEquals(ORDER.size(), 4); assertEquals(ORDER.get(0), "s1.init"); assertEquals(ORDER.get(1), "s3.init"); assertEquals(ORDER.get(2), "s1.postInit"); assertEquals(ORDER.get(3), "s3.postInit"); server.destroy(); assertEquals(ORDER.size(), 6); assertEquals(ORDER.get(4), "s3.destroy"); assertEquals(ORDER.get(5), "s1.destroy"); // 3 services, 2nd one fails on init ORDER.clear(); services = StringUtils.join( ",", Arrays.asList( MyService1.class.getName(), MyService2.class.getName(), MyService3.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); try { server.init(); fail(); } catch (ServerException ex) { assertEquals(MyService2.class, ex.getError().getClass()); } catch (Exception ex) { fail(); } assertEquals(ORDER.size(), 3); assertEquals(ORDER.get(0), "s1.init"); assertEquals(ORDER.get(1), "s2.init"); assertEquals(ORDER.get(2), "s1.destroy"); // 2 services one fails on destroy ORDER.clear(); services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService5.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); server.init(); assertEquals(ORDER.size(), 4); assertEquals(ORDER.get(0), "s1.init"); assertEquals(ORDER.get(1), "s5.init"); assertEquals(ORDER.get(2), "s1.postInit"); assertEquals(ORDER.get(3), "s5.postInit"); server.destroy(); assertEquals(ORDER.size(), 6); assertEquals(ORDER.get(4), "s5.destroy"); assertEquals(ORDER.get(5), "s1.destroy"); // service override via ext ORDER.clear(); services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService3.class.getName())); String servicesExt = StringUtils.join(",", Arrays.asList(MyService1a.class.getName())); conf = new Configuration(false); conf.set("server.services", services); conf.set("server.services.ext", servicesExt); server = new Server("server", dir, dir, dir, dir, conf); server.init(); assertEquals(server.get(MyService1.class).getClass(), MyService1a.class); assertEquals(ORDER.size(), 4); assertEquals(ORDER.get(0), "s1a.init"); assertEquals(ORDER.get(1), "s3.init"); assertEquals(ORDER.get(2), "s1a.postInit"); assertEquals(ORDER.get(3), "s3.postInit"); server.destroy(); assertEquals(ORDER.size(), 6); assertEquals(ORDER.get(4), "s3.destroy"); assertEquals(ORDER.get(5), "s1a.destroy"); // service override via setService ORDER.clear(); services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService3.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); server.init(); server.setService(MyService1a.class); assertEquals(ORDER.size(), 6); assertEquals(ORDER.get(4), "s1.destroy"); assertEquals(ORDER.get(5), "s1a.init"); assertEquals(server.get(MyService1.class).getClass(), MyService1a.class); server.destroy(); assertEquals(ORDER.size(), 8); assertEquals(ORDER.get(6), "s3.destroy"); assertEquals(ORDER.get(7), "s1a.destroy"); // service add via setService ORDER.clear(); services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService3.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); server.init(); server.setService(MyService5.class); assertEquals(ORDER.size(), 5); assertEquals(ORDER.get(4), "s5.init"); assertEquals(server.get(MyService5.class).getClass(), MyService5.class); server.destroy(); assertEquals(ORDER.size(), 8); assertEquals(ORDER.get(5), "s5.destroy"); assertEquals(ORDER.get(6), "s3.destroy"); assertEquals(ORDER.get(7), "s1.destroy"); // service add via setService exception ORDER.clear(); services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService3.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); server.init(); try { server.setService(MyService7.class); fail(); } catch (ServerException ex) { assertEquals(ServerException.ERROR.S09, ex.getError()); } catch (Exception ex) { fail(); } assertEquals(ORDER.size(), 6); assertEquals(ORDER.get(4), "s3.destroy"); assertEquals(ORDER.get(5), "s1.destroy"); // service with dependency ORDER.clear(); services = StringUtils.join( ",", Arrays.asList(MyService1.class.getName(), MyService6.class.getName())); conf = new Configuration(false); conf.set("server.services", services); server = new Server("server", dir, dir, dir, dir, conf); server.init(); assertEquals(server.get(MyService1.class).getInterface(), MyService1.class); assertEquals(server.get(MyService6.class).getInterface(), MyService6.class); server.destroy(); }