package org.infinispan.server.memcached;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import org.infinispan.jmx.PerThreadMBeanServerLookup;
/**
* Connection statistic tests that are common to all
* Netty-based server implementations.
*
* @author Galder ZamarreƱo
* @since 5.2
*/
class ConnectionStatsTest {
public static void testSingleLocalConnection(String jmxDomain, String serverName)
throws MalformedObjectNameException, AttributeNotFoundException, MBeanException, ReflectionException,
InstanceNotFoundException {
MBeanServer mbeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
ObjectName on = new ObjectName(String.format("%s:type=Server,name=%s,component=Transport", jmxDomain, serverName));
// Now verify that via JMX as well, these stats are also as expected
assertTrue(Integer.parseInt(mbeanServer.getAttribute(on, "TotalBytesRead").toString()) > 0);
assertTrue(Integer.parseInt(mbeanServer.getAttribute(on, "TotalBytesWritten").toString()) > 0);
assertEquals(mbeanServer.getAttribute(on, "NumberOfLocalConnections"), 1);
}
public static void testMultipleLocalConnections(String jmxDomain, String serverName, int expectedTotalConns)
throws MalformedObjectNameException, AttributeNotFoundException, MBeanException, ReflectionException,
InstanceNotFoundException {
MBeanServer mbeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
ObjectName on = new ObjectName(String.format("%s:type=Server,name=%s,component=Transport", jmxDomain, serverName));
assertEquals(mbeanServer.getAttribute(on, "NumberOfLocalConnections"), expectedTotalConns);
}
public static void testGlobalConnections(String jmxDomain, String serverName, int expectedTotalConns,
MBeanServer mbeanServer) throws MalformedObjectNameException, AttributeNotFoundException, MBeanException,
ReflectionException, InstanceNotFoundException {
ObjectName on = new ObjectName(String.format("%s:type=Server,name=%s,component=Transport", jmxDomain, serverName));
// Now verify that via JMX as well, these stats are also as expected
assertEquals(mbeanServer.getAttribute(on, "NumberOfGlobalConnections"), expectedTotalConns);
}
}