use of org.wildfly.clustering.ejb.Bean in project wildfly by wildfly.
the class BeanEvictionSchedulerTestCase method test.
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
@org.junit.Ignore
public void test() throws Exception {
String name = "bean";
String evictedBeanId = "evicted";
String activeBeanId = "active";
CommandDispatcherFactory dispatcherFactory = mock(CommandDispatcherFactory.class);
CommandDispatcher<BeanGroupEvictionContext<String>> dispatcher = mock(CommandDispatcher.class);
Batcher<TransactionBatch> batcher = mock(Batcher.class);
TransactionBatch batch = mock(TransactionBatch.class);
Evictor<String> evictor = mock(Evictor.class);
PassivationConfiguration<Bean<String, Object>> config = mock(PassivationConfiguration.class);
BeanPassivationConfiguration passivationConfig = mock(BeanPassivationConfiguration.class);
ArgumentCaptor<Command> capturedCommand = ArgumentCaptor.forClass(Command.class);
ArgumentCaptor<BeanGroupEvictionContext> capturedContext = ArgumentCaptor.forClass(BeanGroupEvictionContext.class);
when(dispatcherFactory.createCommandDispatcher(same(name), (BeanGroupEvictionContext<String>) capturedContext.capture())).thenReturn(dispatcher);
when(config.getConfiguration()).thenReturn(passivationConfig);
when(passivationConfig.getMaxSize()).thenReturn(1);
try (Scheduler<String> scheduler = new BeanGroupEvictionScheduler<>(name, batcher, evictor, dispatcherFactory, config)) {
BeanGroupEvictionContext<String> context = capturedContext.getValue();
assertSame(scheduler, context);
scheduler.schedule(evictedBeanId);
verifyZeroInteractions(dispatcher);
scheduler.schedule(activeBeanId);
verify(dispatcher).submitOnCluster(capturedCommand.capture());
when(batcher.createBatch()).thenReturn(batch);
capturedCommand.getValue().execute(context);
verify(evictor).evict(evictedBeanId);
verify(evictor, never()).evict(activeBeanId);
verify(batch).close();
}
verify(dispatcher).close();
}
Aggregations