package com.koushikdutta.async.test;
import com.koushikdutta.async.AsyncDatagramSocket;
import com.koushikdutta.async.AsyncServer;
import com.koushikdutta.async.AsyncSocket;
import com.koushikdutta.async.ByteBufferList;
import com.koushikdutta.async.DataEmitter;
import com.koushikdutta.async.callback.ConnectCallback;
import com.koushikdutta.async.callback.DataCallback;
import com.koushikdutta.async.dns.Dns;
import com.koushikdutta.async.dns.DnsResponse;
import com.koushikdutta.async.future.FutureCallback;
import junit.framework.TestCase;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;
import java.nio.channels.DatagramChannel;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
/**
* Created by koush on 10/20/13.
*/
public class DnsTests extends TestCase {
public void testLookup() throws Exception {
// final Semaphore semaphore = new Semaphore(0);
// Dns.lookup("google.com")
// .setCallback(new FutureCallback<DnsResponse>() {
// @Override
// public void onCompleted(Exception e, DnsResponse result) {
// semaphore.release();
// }
// });
//
// semaphore.tryAcquire(1000000, TimeUnit.MILLISECONDS);
}
public void testMulticastLookup() throws Exception {
// MulticastSocket socket = new MulticastSocket(5353);
// socket.joinGroup(InetAddress.getByName("224.0.0.251"));
// DatagramChannel channel = socket.getChannel();
// assertNotNull(channel);
// while (true) {
// DatagramPacket packet = new DatagramPacket(new byte[2048], 2048);
// socket.receive(packet);
// System.out.println(new String(packet.getData()));
// }
// AsyncDatagramSocket dgram = AsyncServer.getDefault().openDatagram(new InetSocketAddress(5353), true);
// ((DatagramSocket)dgram.getSocket()).setReuseAddress(true);
// dgram.setDataCallback(new DataCallback() {
// @Override
// public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {
// System.out.println(bb.readString());
// }
// });
// ((DatagramSocket)dgram.getSocket()).setBroadcast(true);
// final Semaphore semaphore = new Semaphore(0);
// Dns.multicastLookup("_airplay._tcp.local", new FutureCallback<DnsResponse>() {
// @Override
// public void onCompleted(Exception e, DnsResponse result) {
//// semaphore.release();
// }
// });
//
// semaphore.tryAcquire(1000000, TimeUnit.MILLISECONDS);
}
public void testNoDomain() throws Exception {
AsyncServer server = new AsyncServer();
try {
final Semaphore semaphore = new Semaphore(0);
server.connectSocket("www.clockworkmod-notfound.com", 8080, new ConnectCallback() {
@Override
public void onConnectCompleted(Exception ex, AsyncSocket socket) {
assertTrue(ex instanceof UnknownHostException);
semaphore.release();
}
});
assertTrue(semaphore.tryAcquire(5000, TimeUnit.MILLISECONDS));
}
finally {
server.stop();
}
}
}