Package org.ngrinder.dns

Source Code of org.ngrinder.dns.LocalManagedDnsTest

/*
* 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.ngrinder.dns;

import org.junit.Test;
import org.xbill.DNS.Cache;
import org.xbill.DNS.Name;
import org.xbill.DNS.RRset;
import org.xbill.DNS.SetResponse;

import java.net.InetAddress;
import java.net.UnknownHostException;

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;

/**
* To test the custom DNS, should to add vm arguments as below:
* -Dsun.net.spi.nameservice.provider.1=dns,LocalManagedDnsProxy
* -Dngrinder.etc.hosts=10.0.0.1:www.google.com,10.0.0.2:www.google2.com.
*
* @author JunHo Yoon
*/
public class LocalManagedDnsTest {

  private final LocalManagedDnsProxy localDNS = (LocalManagedDnsProxy) new LocalManagedDnsDescriptor().createNameService();


  @Test
  public void testCustomDNSLookup() throws UnknownHostException {
    System.setProperty("ngrinder.etc.hosts", "www.google.com:10.10.10.10,www.google.com:10.10.10.11");
    NameStore.getInstance().reset();
    InetAddress[] inetAddresses = localDNS.lookupAllHostAddr("www.google.com");
    assertThat(inetAddresses.length, is(2));
    System.setProperty("ngrinder.etc.hosts", "www.google.com:10.10.10.10,www.google.com:10.10.10.10");
    NameStore.getInstance().reset();
    assertThat(localDNS.lookupAllHostAddr("www.google.com").length, is(1));
    assertThat(localDNS.getHostByAddr(DnsUtils.textToNumericFormat("10.10.10.10")), is("www.google.com"));
  }


  @Test
  public void testNotRegisteredDNSLookup() throws UnknownHostException {
    System.setProperty("ngrinder.etc.hosts", "www.google.com:10.10.10.10,www.google.com:10.10.10.11");
    NameStore.getInstance().reset();
    assertThat(localDNS.lookupAllHostAddr("www.naver.com").length, greaterThan(1));
  }


  @Test(expected = UnknownHostException.class)
  public void testNotExistDNSLookup() throws UnknownHostException {
    NameStore.getInstance().reset();
    localDNS.lookupAllHostAddr("www.wowwowwowow11.com");
  }

  public RRset[] result = null;
  int count = 0;

  @Test
  public void testCache() throws UnknownHostException {

    final Cache cache = new Cache() {
      @Override
      public SetResponse lookupRecords(Name name, int type, int minCred) {
        final SetResponse setResponse = super.lookupRecords(name, type, minCred);
        if (count++ == 0) {
          assertThat(setResponse.isUnknown(), is(true));
        } else {
          assertThat(setResponse.isUnknown(), is(false));
        }
        return setResponse;    //To change body of overridden methods use File | Settings | File Templates.
      }

    };
    LocalManagedDnsImpl impl = new LocalManagedDnsImpl() {
      @Override
      protected Cache createCache() {
        return cache;
      }
    };
    assertThat(impl.lookupAllHostAddr("www.google.com"), notNullValue());
    assertThat(impl.lookupAllHostAddr("www.google.com"), notNullValue());
    assertThat(impl.lookupAllHostAddr("www.google.com"), notNullValue());
    assertThat(impl.lookupAllHostAddr("www.google.com"), notNullValue());
    assertThat(impl.lookupAllHostAddr("www.google.com"), notNullValue());
  }

}
TOP

Related Classes of org.ngrinder.dns.LocalManagedDnsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.