@BeforeMethod
private void createAndInitStateReceiver() {
CommandsFactory commandsFactory = mock(CommandsFactory.class);
InternalDataContainer dataContainer = mock(InternalDataContainer.class);
RpcManager rpcManager = mock(RpcManager.class);
CacheNotifier cacheNotifier = mock(CacheNotifier.class);
ExecutorService stateTransferExecutor = Executors.newSingleThreadExecutor();
when(rpcManager.invokeRemotely(any(Collection.class), any(StateRequestCommand.class), any(RpcOptions.class)))
.thenAnswer(invocation -> {
Collection<Address> recipients = (Collection<Address>) invocation.getArguments()[0];
Address recipient = recipients.iterator().next();
StateRequestCommand cmd = (StateRequestCommand) invocation.getArguments()[1];
Map<Address, Response> results = new HashMap<>(1);
if (cmd.getType().equals(StateRequestCommand.Type.START_CONSISTENCY_CHECK)
|| cmd.getType().equals(StateRequestCommand.Type.CANCEL_CONSISTENCY_CHECK)) {
results.put(recipient, SuccessfulResponse.SUCCESSFUL_EMPTY_RESPONSE);
}
return results;
});
when(rpcManager.getRpcOptionsBuilder(any(ResponseMode.class))).thenAnswer(invocation -> {
Object[] args = invocation.getArguments();
return new RpcOptionsBuilder(10000, TimeUnit.MILLISECONDS, (ResponseMode) args[0], DeliverOrder.PER_SENDER);
});
StateReceiverImpl stateReceiver = new StateReceiverImpl();
TestingUtil.inject(stateReceiver, cacheNotifier, commandsFactory, dataContainer, rpcManager, stateTransferExecutor);
stateReceiver.start();
stateReceiver.onDataRehash(createEventImpl(2, 4, Event.Type.DATA_REHASHED));
this.localizedCacheTopology = createLocalizedCacheTopology(4);
this.stateReceiver = spy(stateReceiver);
}