public void testCacheMode() throws Exception { AdvancedCache<String, String> cache1 = advancedCache(0,"invalidation"); RpcManagerImpl rpcManager = (RpcManagerImpl) TestingUtil.extractComponent(cache1, RpcManager.class); Transport origTransport = TestingUtil.extractComponent(cache1, Transport.class); try { Transport mockTransport = mock(Transport.class); rpcManager.setTransport(mockTransport); Address addressOne = mock(Address.class); Address addressTwo = mock(Address.class); List<Address> members = new ArrayList<>(2); members.add(addressOne); members.add(addressTwo); when(mockTransport.getMembers()).thenReturn(members); when(mockTransport.getAddress()).thenReturn(addressOne); when(mockTransport.invokeCommandOnAll(any(), any(), any(), any(), anyLong(), any())) .thenReturn(CompletableFutures.completedNull()); cache1.put("k", "v"); } finally { if (rpcManager != null) rpcManager.setTransport(origTransport); } }
.thenReturn(mockBackupResponse(timeService)); rpcManager.setTransport(mockTransport); rpcManager.setTransport(originalTransport);
when(transport.invokeCommandOnAll(any(Collection.class), any(ReplicableCommand.class), any(ResponseCollector.class), any(DeliverOrder.class), anyLong(), any(TimeUnit.class))).thenThrow(new RuntimeException()); rpcManager.setTransport(transport); Exceptions.expectException(CacheException.class, () -> cache1.put(new MagicKey("a3", cache1), "b3")); Exceptions.expectException(CacheException.class, () -> cache1.put(new MagicKey("a4", cache2), "b4")); assertEquals(mBeanServer.getAttribute(rpcManager1, "SuccessRatio"), ("50%")); } finally { rpcManager.setTransport(originalTransport);
public void testForceAsyncFlagUsage() throws Exception { ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false); builder.clustering().hash().numSegments(1).consistentHashFactory(new ReplicatedControlledConsistentHashFactory(0)); createClusteredCaches(2, "replSync", builder); AdvancedCache<String, String> cache1 = this.<String, String>cache(0, "replSync").getAdvancedCache(); cache(1, "replSync").getAdvancedCache(); Transport originalTransport = TestingUtil.extractGlobalComponent(cache1.getCacheManager(), Transport.class); RpcManagerImpl rpcManager = (RpcManagerImpl) TestingUtil.extractComponent(cache1, RpcManager.class); Transport mockTransport = spy(originalTransport); rpcManager.setTransport(mockTransport); // check that the replication call was sync cache1.put("k", "v"); verify(mockTransport).invokeCommandOnAll(any(), any(), any(), any(), anyLong(), any()); reset(mockTransport); // verify FORCE_ASYNCHRONOUS flag on SYNC cache cache1.withFlags(Flag.FORCE_ASYNCHRONOUS).put("k", "v"); verify(mockTransport) .sendToAll(any(ReplicableCommand.class), any(DeliverOrder.class)); }
public void testForceSyncFlagUsage() throws Exception { ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.REPL_ASYNC, false); builder.clustering().hash().numSegments(1).consistentHashFactory(new ReplicatedControlledConsistentHashFactory(0)); createClusteredCaches(2, "replAsync", builder); AdvancedCache<String, String> cache1 = this.<String, String>cache(0, "replAsync").getAdvancedCache(); cache(1, "replAsync").getAdvancedCache(); Transport originalTransport = TestingUtil.extractGlobalComponent(cache1.getCacheManager(), Transport.class); RpcManagerImpl rpcManager = (RpcManagerImpl) TestingUtil.extractComponent(cache1, RpcManager.class); Transport mockTransport = spy(originalTransport); rpcManager.setTransport(mockTransport); cache1.put("k", "v"); verify(mockTransport) .sendToAll(any(ReplicableCommand.class), any(DeliverOrder.class)); reset(mockTransport); // verify FORCE_SYNCHRONOUS flag on ASYNC cache cache1.withFlags(Flag.FORCE_SYNCHRONOUS).put("k", "v"); verify(mockTransport).invokeCommandOnAll(any(), any(), any(), any(), anyLong(), any()); } }
rpcManager.setTransport(mockTransport); asyncRpcManager.setTransport(mockTransport); rpcManager.setTransport(originalTransport); if (asyncRpcManager != null) asyncRpcManager.setTransport(originalTransport);