AutoEndpointTypeResolverTest.java
package redis.clients.jedis;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.MaintenanceNotificationsConfig.EndpointType;
import redis.clients.jedis.MaintenanceNotificationsConfig.EndpointTypeResolver;
@Tag("unit")
public class AutoEndpointTypeResolverTest {
private static final EndpointTypeResolver RESOLVER = MaintenanceNotificationsConfig.builder()
.build().getEndpointTypeResolver();
private static SocketAddress addr(String host) {
return new InetSocketAddress(host, 6379);
}
private static EndpointType resolve(SocketAddress address) {
return RESOLVER.getEndpointType(address, false);
}
@Test
public void privateIpv4RangesResolveInternal() {
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("10.0.0.1")));
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("172.16.0.1")));
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("192.168.1.1")));
}
@Test
public void loopbackAndLinkLocalResolveInternal() {
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("127.0.0.1")));
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("169.254.0.1")));
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("::1")));
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("fe80::1")));
}
@Test
public void ipv6UniqueLocalResolvesInternal() {
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("fc00::1")));
assertEquals(EndpointType.INTERNAL_IP, resolve(addr("fd12:3456:789a::1")));
}
@Test
public void publicAddressesResolveExternal() {
assertEquals(EndpointType.EXTERNAL_IP, resolve(addr("8.8.8.8")));
assertEquals(EndpointType.EXTERNAL_IP, resolve(addr("2001:4860:4860::8888")));
}
@Test
public void wildcardUnresolvedAndNonInetResolveExternal() {
assertEquals(EndpointType.EXTERNAL_IP, resolve(addr("0.0.0.0")));
assertEquals(EndpointType.EXTERNAL_IP,
resolve(InetSocketAddress.createUnresolved("intranet.local", 6379)));
assertEquals(EndpointType.EXTERNAL_IP, resolve(null));
assertEquals(EndpointType.EXTERNAL_IP, resolve(new SocketAddress() {
}));
}
@Test
public void tlsSelectsFqdnVariants() {
assertEquals(EndpointType.INTERNAL_FQDN, RESOLVER.getEndpointType(addr("10.0.0.1"), true));
assertEquals(EndpointType.EXTERNAL_FQDN, RESOLVER.getEndpointType(addr("8.8.8.8"), true));
}
}