package org.infinispan.distribution; import static org.testng.AssertJUnit.assertEquals; import org.infinispan.atomic.TestDeltaAware; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.test.MultipleCacheManagersTest; import org.testng.annotations.Test; /** * JIRA: ISPN-7298 * * @author Pedro Ruivo * @since 9.0 */ @Test(groups = "functional", testName = "distribution.DeltaAwareAsResponseTest") public class DeltaAwareAsResponseTest extends MultipleCacheManagersTest { public void testOnPrimaryOwner() { doTest(new MagicKey(cache(0), cache(1))); } public void testOnBackupOwner() { doTest(new MagicKey(cache(1), cache(0))); } public void testOnNonOwner() { doTest(new MagicKey(cache(1), cache(2))); } @Override protected void createCacheManagers() throws Throwable { createCluster(getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC), 3); } private void doTest(MagicKey key) { cache(0).put(key, new TestDeltaAware()); Object response = cache(0).putIfAbsent(key, new TestDeltaAware()); assertEquals(TestDeltaAware.class, response.getClass()); ((TestDeltaAware) response).setFirstComponent("1"); ((TestDeltaAware) response).setSecondComponent("2"); response = cache(0).put(key, response); assertEquals(TestDeltaAware.class, response.getClass()); assertEquals("1", ((TestDeltaAware) response).getFirstComponent()); assertEquals("2", ((TestDeltaAware) response).getSecondComponent()); response = cache(0).get(key); assertEquals(TestDeltaAware.class, response.getClass()); assertEquals("1", ((TestDeltaAware) response).getFirstComponent()); assertEquals("2", ((TestDeltaAware) response).getSecondComponent()); } }