@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(); }
@Test public void testLifecycle() throws Exception { final MyApplication application=new MyApplication(); LOGGER.info("Setting up application..."); application.setup(environment, bootstrap); new Expectations() {{ resolverSession.find(ResourceSnapshot.class,application.dynamicResourceName(),DynamicResourceHandler.class);result=snapshot; snapshot.name();result=application.dynamicResourceName(); snapshot.templateId();result=DynamicResourceHandler.ID; snapshot.handlerClass();result=DynamicResourceHandler.class; 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; }}; application.initialize(initSession); application.shutdown(); DataSet dataSet = application.dynamicResourceHandler().get(snapshot); LOGGER.info("Updated resource:\n{}",dataSet); Individual<?,?> individual=dataSet.individualOfId(individualId(application.dynamicResourceName()));
@Override public void setup(Environment environment, Bootstrap<Configuration> bootstrap) throws ApplicationSetupException { super.setup(environment, bootstrap); bootstrap.addHandlerClass(BadResourceHandler.class); environment.publishResource(this.badResourceName, BadResourceHandler.class, ROOT_BAD_RESOURCE_PATH); }
relativesHandler.setHandler(resourceHandler); resourceHandler.add(this.personResourceName, getInitialData(PersonHandler.ID,PERSON_RESOURCE_NAME)); containerHandler.add(this.personContainerName, getInitialData(PersonContainerHandler.ID,PERSON_CONTAINER_NAME)); relativesHandler.add(this.relativeContainerResourceName, getInitialData(RelativeContainerHandler.ID,RELATIVE_CONTAINER_NAME)); queryableHandler.add(this.queryableResourceName, getInitialData(QueryableResourceHandler.ID,QUERYABLE_RESOURCE_NAME)); this.dynamicResourceHandler.add(this.dynamicResourceName, getInitialData(DynamicResourceHandler.ID,DYNAMIC_RESOURCE_NAME)); badDataHandler.add(this.badDataResourceName, badDataHandler.getRepresentation());
@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")); } }