package org.infinispan.client.hotrod; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNotSame; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; import org.infinispan.client.hotrod.test.HotRodClientTestingUtil; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.server.hotrod.HotRodServer; import org.infinispan.test.SingleCacheManagerTest; import org.infinispan.test.fwk.CleanupAfterMethod; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; @Test(testName = "client.hotrod.ForceReturnValuesTest", groups = "functional") @CleanupAfterMethod public class ForceReturnValuesTest extends SingleCacheManagerTest { private HotRodServer hotRodServer; private RemoteCacheManager remoteCacheManager; @Override protected EmbeddedCacheManager createCacheManager() throws Exception { cacheManager = TestCacheManagerFactory.createCacheManager(hotRodCacheConfiguration()); cache = cacheManager.getCache(); hotRodServer = HotRodClientTestingUtil.startHotRodServer(cacheManager); org.infinispan.client.hotrod.configuration.ConfigurationBuilder clientBuilder = new org.infinispan.client.hotrod.configuration.ConfigurationBuilder(); clientBuilder.addServer().host("localhost").port(hotRodServer.getPort()); remoteCacheManager = new RemoteCacheManager(clientBuilder.build()); return cacheManager; } @AfterMethod void shutdown() { HotRodClientTestingUtil.killRemoteCacheManager(remoteCacheManager); HotRodClientTestingUtil.killServers(hotRodServer); } public void testDontForceReturnValues() { RemoteCache<String, String> rc = remoteCacheManager.getCache(); String rv = rc.put("Key", "Value"); assert rv == null; rv = rc.put("Key", "Value2"); assert rv == null; } public void testForceReturnValues() { RemoteCache<String, String> rc = remoteCacheManager.getCache(true); String rv = rc.put("Key", "Value"); assert rv == null; rv = rc.put("Key", "Value2"); assert rv != null; assert "Value".equals(rv); } public void testSameInstanceForSameForceReturnValues() { RemoteCache<String, String> rcDontForceReturn = remoteCacheManager.getCache(false); RemoteCache<String, String> rcDontForceReturn2 = remoteCacheManager.getCache(false); assertSame("RemoteCache instances should be the same", rcDontForceReturn, rcDontForceReturn2); RemoteCache<String, String> rcForceReturn = remoteCacheManager.getCache(true); RemoteCache<String, String> rcForceReturn2 = remoteCacheManager.getCache(true); assertSame("RemoteCache instances should be the same", rcForceReturn, rcForceReturn2); } public void testDifferentInstancesForDifferentForceReturnValues() { RemoteCache<String, String> rcDontForceReturn = remoteCacheManager.getCache(false); RemoteCache<String, String> rcForceReturn = remoteCacheManager.getCache(true); assertNotSame("RemoteCache instances should not be the same", rcDontForceReturn, rcForceReturn); String rv = rcDontForceReturn.put("Key", "Value"); assertNull(rv); rv = rcDontForceReturn.put("Key", "Value2"); assertNull(rv); rv = rcForceReturn.put("Key2", "Value"); assertNull(rv); rv = rcForceReturn.put("Key2", "Value2"); assertNotNull(rv); assertEquals("Previous value should be 'Value'", "Value", rv); } }