package org.infinispan.server.hotrod; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.assertSuccess; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.hotRodCacheConfiguration; import static org.infinispan.server.hotrod.test.HotRodTestingUtil.v; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; import java.lang.reflect.Method; import java.util.Map; import java.util.Objects; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.Test; /** * Tests stats operation against a Hot Rod server. * * @author Galder ZamarreƱo * @since 4.1 */ @Test(groups = "functional", testName = "server.hotrod.HotRodStatsTest") public class HotRodStatsTest extends HotRodSingleNodeTest { @Override public EmbeddedCacheManager createTestCacheManager() { ConfigurationBuilder cfg = hotRodCacheConfiguration(); cfg.jmxStatistics().enable(); EmbeddedCacheManager cm = TestCacheManagerFactory.createClusteredCacheManagerEnforceJmxDomain(jmxDomain(), cfg); cm.defineConfiguration(cacheName, cm.getDefaultCacheConfiguration()); return cm; } public void testStats(Method m) { int bytesRead = 0; int bytesWritten = 0; Map<String, String> s = client().stats(); // assertTrue(s.get("timeSinceStart") != "0") assertEquals(s.get("currentNumberOfEntries"), "0"); assertEquals(s.get("totalNumberOfEntries"), "0"); assertEquals(s.get("stores"), "0"); assertEquals(s.get("retrievals"), "0"); assertEquals(s.get("hits"), "0"); assertEquals(s.get("misses"), "0"); assertEquals(s.get("removeHits"), "0"); assertEquals(s.get("removeMisses"), "0"); bytesRead = assertHigherBytes(bytesRead, s.get("totalBytesRead")); // At time of request, no data had been written yet assertEquals(s.get("totalBytesWritten"), "0"); client().assertPut(m); s = client().stats(); assertEquals(s.get("currentNumberOfEntries"), "1"); assertEquals(s.get("totalNumberOfEntries"), "1"); assertEquals(s.get("stores"), "1"); bytesRead = assertHigherBytes(bytesRead, s.get("totalBytesRead")); bytesWritten = assertHigherBytes(bytesWritten, s.get("totalBytesWritten")); assertFalse(Objects.equals(s.get("totalBytesRead"), "0")); assertFalse(Objects.equals(s.get("totalBytesWritten"), "0")); assertSuccess(client().assertGet(m), v(m)); s = client().stats(); assertEquals(s.get("hits"), "1"); assertEquals(s.get("misses"), "0"); assertEquals(s.get("retrievals"), "1"); bytesRead = assertHigherBytes(bytesRead, s.get("totalBytesRead")); bytesWritten = assertHigherBytes(bytesWritten, s.get("totalBytesWritten")); client().clear(); s = client().stats(); assertEquals(s.get("totalNumberOfEntries"), "1"); assertEquals(s.get("currentNumberOfEntries"), "0"); } private int assertHigherBytes(int currentBytesRead, String bytesStr) { int bytesRead = Integer.valueOf(bytesStr); assertTrue(bytesRead > currentBytesRead); return bytesRead; } }