@Test public void testLifecycle$initalizeFailure() throws Exception { final MyApplication application=new MyApplication(); LOGGER.info("Setting up application..."); application.setup(environment, bootstrap); new Expectations() {{ // For the application initialization initSession.find(ResourceSnapshot.class,application.personResourceName(),PersonHandler.class);result=personSnapshot; personSnapshot.createAttachedResource(ContainerSnapshot.class,PersonHandler.RELATIVES_ID,application.relativeContainerResourceName(),RelativeContainerHandler.class);result=null; initSession.find(ResourceSnapshot.class,application.personContainerName(),PersonContainerHandler.class);result=personContainerSnapshot; initSession.saveChanges();result=new WriteSessionException("FAILURE"); }}; LOGGER.info("Initializing application..."); try { application.initialize(initSession); fail("Should not initialize the application if the session fails"); } catch (ApplicationInitializationException e) { assertThat(e.getCause(),instanceOf(WriteSessionException.class)); assertThat(e.getCause().getMessage(),equalTo("FAILURE")); } }
@Test public void testLifecycle$shutdownFailure(@Mocked final ScheduledExecutorService executor) throws Exception { final MyApplication application=new MyApplication(); new MockUp<Executors>() { @Mock public ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory) { return executor; } }; LOGGER.info("Setting up application..."); application.setup(environment, bootstrap); new Expectations() {{ // For the application initialization initSession.find(ResourceSnapshot.class,application.personResourceName(),PersonHandler.class);result=personSnapshot; personSnapshot.createAttachedResource(ContainerSnapshot.class,PersonHandler.RELATIVES_ID,application.relativeContainerResourceName(),RelativeContainerHandler.class);result=null; initSession.find(ResourceSnapshot.class,application.personContainerName(),PersonContainerHandler.class);result=personContainerSnapshot; executor.isTerminated();result=false; executor.awaitTermination(anyLong,(TimeUnit)any);result=new InterruptedException("EXIT"); }}; LOGGER.info("Initializing application..."); application.initialize(initSession); LOGGER.info("Shutting down application..."); application.shutdown(); }
application.initialize(initSession);