Refactore MDNS so it can be tested, and also added Junit test for it

This commit is contained in:
Ziver Koc 2017-02-07 18:41:35 +01:00
parent 6a3744eb99
commit 84a3b13b76
4 changed files with 150 additions and 17 deletions

View file

@ -0,0 +1,80 @@
package zutil.net.dns;
import org.junit.Test;
import zutil.net.dns.packet.DnsConstants;
import zutil.net.dns.packet.DnsPacket;
import zutil.net.dns.packet.DnsPacketQuestion;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import static org.junit.Assert.*;
/**
*
*/
public class MulticastDnsServerTest {
private MulticastDnsServer server = new MulticastDnsServer();
public MulticastDnsServerTest() throws IOException {}
@Test
public void domainLookupNoEntries(){
DnsPacket request = creatRequestDnsPacket(
"example.com",
DnsConstants.TYPE.A);
DnsPacket response = server.handleReceivedPacket(request);
assertNull(response);
}
@Test
public void domainLookup() throws UnknownHostException {
DnsPacket request = creatRequestDnsPacket(
"example.com",
DnsConstants.TYPE.A);
server.addEntry("example.com", InetAddress.getLocalHost());
DnsPacket response = server.handleReceivedPacket(request);
assertNotNull(response);
assertEquals("example.com", response.getAnswerRecords().get(0).name);
}
@Test
public void serviceDiscoveryNoEntries(){
DnsPacket request = creatRequestDnsPacket(
"_service._tcp.local",
DnsConstants.TYPE.PTR);
DnsPacket response = server.handleReceivedPacket(request);
assertNull(response);
}
@Test
public void serviceDiscovery() throws UnknownHostException {
DnsPacket request = creatRequestDnsPacket(
"_service._tcp.local",
DnsConstants.TYPE.PTR);
server.addEntry("_http._tcp.local", InetAddress.getLocalHost());
DnsPacket response = server.handleReceivedPacket(request);
assertNotNull(response);
}
private static DnsPacket creatRequestDnsPacket(String domain, int type){
DnsPacket request = new DnsPacket();
request.getHeader().setDefaultQueryData();
DnsPacketQuestion question = new DnsPacketQuestion();
question.name = domain;
question.type = type;
question.clazz = DnsConstants.CLASS.IN;
request.addQuestion(question);
return request;
}
}