예제 #1
0
 @Test(expected = IllegalStateException.class)
 @TestDir
 public void illegalState1() throws Exception {
   Server server =
       new Server(
           "server", TestDirHelper.getTestDir().getAbsolutePath(), new Configuration(false));
   server.destroy();
 }
예제 #2
0
 @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();
 }
예제 #3
0
 @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"));
 }
예제 #4
0
 @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);
 }
예제 #5
0
  @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();
  }