/* * Copyright 2016 Red Hat, Inc. and/or its affiliates * and other contributors as indicated by the @author tags. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.keycloak.services.clientregistration.policies.impl; import java.net.InetAddress; /** * @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a> */ public class HostsTest { public static void main(String[] args) throws Exception { //Security.setProperty("networkaddress.cache.ttl", "5"); long start = System.currentTimeMillis(); for (int i=0 ; i<100 ; i++) { //Foo f = test1(); //Foo f = test2(); //Foo f = test3(); Foo f = test4(); //Foo f = test5(); //Foo f = test6(); long end = System.currentTimeMillis(); System.out.println("IPAddr=" + f.ipAddr + ", Hostname=" + f.hostname + ", Took: " + (end-start) + " ms"); } } // 2 ms private static Foo test1() throws Exception { Foo f = new Foo(); InetAddress addr = InetAddress.getByName("10.40.2.225"); f.ipAddr = addr.getHostAddress(); f.hostname = ""; return f; } // 231 ms - increasing linearly private static Foo test2() throws Exception { Foo f = new Foo(); InetAddress addr = InetAddress.getByName("10.40.2.225"); f.ipAddr = addr.getHostAddress(); f.hostname = addr.getHostName(); return f; } // 240 ms - increasing linearly private static Foo test3() throws Exception { Foo f = new Foo(); InetAddress addr = InetAddress.getByName("10.40.2.225"); f.ipAddr = addr.getHostAddress(); for (int i=0 ; i<10 ; i++) { f.hostname = addr.getHostName(); } return f; } // 27 ms (Everything at 1st call) private static Foo test4() throws Exception { Foo f = new Foo(); InetAddress addr = InetAddress.getByName("www.seznam.cz"); f.ipAddr = addr.getHostAddress(); f.hostname = addr.getHostName(); return f; } // 257 ms - increasing private static Foo test5() throws Exception { Foo f = new Foo(); InetAddress addr = InetAddress.getByName("77.75.77.53"); f.ipAddr = addr.getHostAddress(); f.hostname = addr.getHostName(); return f; } // Test DNS caching private static Foo test6() throws Exception { Thread.sleep(1000); return test4(); } private static class Foo { private String hostname; private String ipAddr; } }