package org.infinispan.remoting.transport.jgroups; import static org.testng.Assert.assertEquals; import java.util.Collections; import java.util.Map; import java.util.concurrent.CompletableFuture; import org.infinispan.commands.ReplicableCommand; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.remoting.inboundhandler.DeliverOrder; import org.infinispan.remoting.responses.CacheNotFoundResponse; import org.infinispan.remoting.responses.Response; import org.infinispan.remoting.rpc.ResponseMode; import org.infinispan.remoting.transport.Address; import org.infinispan.remoting.transport.Transport; import org.infinispan.test.MultipleCacheManagersTest; import org.infinispan.test.TestingUtil; import org.jgroups.util.UUID; import org.testng.annotations.Test; /** * @author Dan Berindei * @since 9.0 */ @Test public class JGroupsTransportTest extends MultipleCacheManagersTest { @Override protected void createCacheManagers() throws Throwable { ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.clustering().cacheMode(CacheMode.REPL_SYNC); createCluster(configurationBuilder, 2); } public void testSynchronousIgnoreLeaversInvocationToNonMembers() throws Exception { UUID randomUuid = UUID.randomUUID(); Address randomAddress = JGroupsTransport.fromJGroupsAddress(randomUuid); Transport transport = manager(0).getTransport(); ReplicableCommand command = TestingUtil.extractCommandsFactory(cache(0)).buildClusteredGetCommand("key", 0); CompletableFuture<Map<Address, Response>> future = transport .invokeRemotelyAsync(Collections.singletonList(randomAddress), command, ResponseMode.SYNCHRONOUS_IGNORE_LEAVERS, 1, null, DeliverOrder.NONE, true); assertEquals(CacheNotFoundResponse.INSTANCE, future.get().get(randomAddress)); } }