package io.craft.atom.nio;
import io.craft.atom.io.IoAcceptor;
import io.craft.atom.io.IoAcceptorX;
import io.craft.atom.io.IoConnector;
import io.craft.atom.io.IoConnectorX;
import io.craft.atom.nio.api.NioFactory;
import io.craft.atom.test.AvailablePortFinder;
import io.craft.atom.test.CaseCounter;
import junit.framework.Assert;
import org.junit.Test;
/**
* @author mindwind
* @version 1.0, Dec 25, 2013
*/
public class TestNioMBean {
private static final String HOST = "127.0.0.1" ;
private static final int PORT1 = AvailablePortFinder.getNextAvailable();
private static final int PORT2 = AvailablePortFinder.getNextAvailable();
private static final int PORT3 = AvailablePortFinder.getNextAvailable();
@Test
public void testMBean() throws Exception {
IoAcceptor acceptor = NioFactory.newTcpAcceptor(new NioAcceptorHandler());
acceptor.bind(PORT1);
acceptor.bind(PORT2);
acceptor.bind(PORT3);
IoConnector connector = NioFactory.newTcpConnector(new NioConnectorHandler());
connector.connect(HOST, PORT1);
connector.connect(HOST, PORT2);
connector.connect(HOST, PORT3);
connector.connect(HOST, PORT3);
Thread.sleep(100);
IoAcceptorX iax = acceptor.x();
Assert.assertNotNull(iax);
Assert.assertNotNull(iax.boundAddresses());
Assert.assertEquals(3, iax.boundAddresses().size());
Assert.assertNotNull(iax.waitBindAddresses());
Assert.assertEquals(0, iax.waitBindAddresses().size());
Assert.assertNotNull(iax.waitUnbindAddresses());
Assert.assertEquals(0, iax.waitUnbindAddresses().size());
Assert.assertEquals(4, iax.aliveChannelCount());
IoConnectorX icx = connector.x();
Assert.assertNotNull(icx);
Assert.assertEquals(0, icx.connectingChannelCount());
Assert.assertEquals(0, icx.disconnectingChannelCount());
Assert.assertEquals(4, icx.aliveChannelCount());
System.out.println(String.format("[CRAFT-ATOM-NIO] (^_^) <%s> Case -> test nio mxbean. ", CaseCounter.incr(12)));
}
}