Package net.windwards.dnsfrontend.util

Source Code of net.windwards.dnsfrontend.util.TestUtils

package net.windwards.dnsfrontend.util;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.config.CacheConfiguration;
import net.sf.ehcache.config.Configuration;
import net.sf.ehcache.config.PersistenceConfiguration;
import net.windwards.dnsfrontend.api.Sender;
import net.windwards.dnsfrontend.frontend.Query;
import net.windwards.dnsfrontend.frontend.UDPQuery;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.WriterAppender;
import org.xbill.DNS.ARecord;
import org.xbill.DNS.DClass;
import org.xbill.DNS.Message;
import org.xbill.DNS.Name;
import org.xbill.DNS.Record;
import org.xbill.DNS.TextParseException;
import org.xbill.DNS.Type;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.UnknownHostException;
import java.nio.channels.DatagramChannel;
import java.util.List;


public class TestUtils {
    private static int cacheNo = 0;

    public static Ehcache getEhcache() {
        CacheManager mgr = CacheManager.getInstance();
        CacheConfiguration conf = new CacheConfiguration("cache-" + cacheNo++, 0)
                .persistence(new PersistenceConfiguration()
                        .strategy(PersistenceConfiguration.Strategy.NONE));
        conf.setTimeToIdleSeconds(10);

        Cache cache = new Cache(conf);
        mgr.addCache(cache);

        return cache;
    }

    public static Query getQuery(final List<Message> replies) throws TextParseException, UnknownHostException {
        Message message = Message.newQuery(Record.newRecord(new Name("foo.example.com."), Type.A, DClass.IN));
        return getQuery(replies, message);
    }

    public static Query getQuery(final List<Message> replies, Message message) throws UnknownHostException {
        Sender sender = new Sender() {
            @Override
            public void send(byte[] data, InetSocketAddress recipient) throws IOException {
                replies.add(new Message(data));
            }
        };
        DatagramPacket packet = new DatagramPacket(
                message.toWire(), message.toWire().length, InetAddress.getByName("127.0.0.2"), 0);
        return new UDPQuery(packet, sender);
    }

    public static Record getReplyRecord() throws TextParseException, UnknownHostException {
        return new ARecord(
                new Name("foo.example.com."),
                DClass.IN,
                1800,
                InetAddress.getByName("127.0.0.1"));
    }

    public static DatagramChannel getDatagramChannel(int port) throws IOException {
        SocketAddress local = new InetSocketAddress(0);
        SocketAddress remote = new InetSocketAddress("localhost", port);

        DatagramChannel channel = DatagramChannel.open();
        channel.configureBlocking(false);
        DatagramSocket socket = channel.socket();
        socket.bind(local);
        channel.connect(remote);
        return channel;
    }

    public static void setupLogging() {
        Logger root = Logger.getRootLogger();
        WriterAppender appender = new ConsoleAppender();
        appender.setThreshold(Level.ALL);
        root.removeAllAppenders();
        root.addAppender(appender);
        appender.setName("dns-frontend");
        appender.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
        appender.activateOptions();

    }
}
TOP

Related Classes of net.windwards.dnsfrontend.util.TestUtils

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.