package org.infinispan.stress; import static org.testng.AssertJUnit.assertNull; import java.util.concurrent.TimeUnit; import org.infinispan.Cache; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.MultipleCacheManagersTest; import org.testng.annotations.Test; /** * Test the performance of get operations in a replicated cache * * @author Dan Berindei * @since 7.0 */ @Test(groups = "stress", testName = "stress.ReplGetStressTest", timeOut = 15*60*1000) public class ReplGetStressTest extends MultipleCacheManagersTest { private static final int NUM_NODES = 4; private static final int NUM_ITERATIONS = Integer.getInteger("operationsCount", 10); private static final boolean explicitTxs = Boolean.getBoolean("explicitTxs"); protected void createCacheManagers() throws Throwable { // start the cache managers in the test itself } public void testStressGetEmptyCache() throws Exception { long start = System.nanoTime(); ConfigurationBuilder replConfig = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, true); for (int i = 0; i < NUM_NODES; i++) { EmbeddedCacheManager cm = addClusterEnabledCacheManager(); defineConfigurationOnAllManagers("repl", replConfig); cm.startCaches("repl"); } System.out.println("Caches created: " + manager(0).getMembers()); System.out.println("Explicit txs: " + explicitTxs); System.out.println("Operation count: " + NUM_ITERATIONS + "m"); // Test the performance of get operations in an empty cache Cache<Object, Object> replCache0 = cache(0, "repl"); for (int i = 0; i < NUM_ITERATIONS * 1000000; i++) { if (explicitTxs) tm(0, "repl").begin(); Object o = replCache0.get("k" + i); assertNull(o); if (explicitTxs) tm(0, "repl").commit(); } long end = System.nanoTime(); System.out.println("Test took " + TimeUnit.NANOSECONDS.toSeconds(end - start) + "s"); } }