package org.springside.modules.utils.net;
import static org.assertj.core.api.Assertions.*;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.UnknownHostException;
import javax.net.ServerSocketFactory;
import org.junit.Test;
import org.mockito.internal.util.io.IOUtil;
public class NetUtilTest {
@Test
public void localhost() {
assertThat(NetUtil.getLocalHost()).isNotEqualTo("127.0.0.1");
assertThat(NetUtil.getLocalAddress().getHostAddress()).isNotEqualTo("127.0.0.1");
}
@Test
public void portDetect() throws UnknownHostException, IOException {
int port = NetUtil.findRandomAvailablePort(20000, 20100);
assertThat(port).isBetween(20000, 20100);
System.out.println("random port:" + port);
assertThat(NetUtil.isPortAvailable(port)).isTrue();
int port2 = NetUtil.findAvailablePortFrom(port);
assertThat(port2).isEqualTo(port);
int port3 = NetUtil.findRandomAvailablePort();
assertThat(port3).isBetween(NetUtil.PORT_RANGE_MIN, NetUtil.PORT_RANGE_MAX);
System.out.println("random port:" + port3);
// 尝试占住一个端口
ServerSocket serverSocket = null;
try {
serverSocket = ServerSocketFactory.getDefault().createServerSocket(port, 1,
InetAddress.getByName("localhost"));
assertThat(NetUtil.isPortAvailable(port)).isFalse();
int port4 = NetUtil.findAvailablePortFrom(port);
assertThat(port4).isEqualTo(port + 1);
try {
int port5 = NetUtil.findRandomAvailablePort(port, port);
fail("should fail before");
} catch (Throwable t) {
assertThat(t).isInstanceOf(IllegalStateException.class);
}
} finally {
IOUtil.close(serverSocket);
}
}
}