| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
package javax.jmdns.test; |
| 5 |
|
|
| 6 |
|
import static junit.framework.Assert.assertEquals; |
| 7 |
|
import static junit.framework.Assert.assertNotNull; |
| 8 |
|
import static junit.framework.Assert.assertTrue; |
| 9 |
|
|
| 10 |
|
import java.io.IOException; |
| 11 |
|
import java.net.DatagramPacket; |
| 12 |
|
import java.util.Date; |
| 13 |
|
|
| 14 |
|
import javax.jmdns.impl.DNSIncoming; |
| 15 |
|
import javax.jmdns.impl.DNSOutgoing; |
| 16 |
|
import javax.jmdns.impl.DNSQuestion; |
| 17 |
|
import javax.jmdns.impl.DNSRecord; |
| 18 |
|
import javax.jmdns.impl.constants.DNSConstants; |
| 19 |
|
import javax.jmdns.impl.constants.DNSRecordClass; |
| 20 |
|
import javax.jmdns.impl.constants.DNSRecordType; |
| 21 |
|
|
| 22 |
|
import org.junit.Before; |
| 23 |
|
import org.junit.Test; |
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
|
|
|
| 69.1% |
Uncovered Elements: 17 (55) |
Complexity: 8 |
Complexity Density: 0.19 |
|
| 28 |
|
public class DNSMessageTest { |
| 29 |
|
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
| 30 |
2
|
@Before... |
| 31 |
|
public void setup() { |
| 32 |
|
|
| 33 |
|
} |
| 34 |
|
|
|
|
|
| 100% |
Uncovered Elements: 0 (17) |
Complexity: 2 |
Complexity Density: 0.13 |
1
PASS
|
|
| 35 |
1
|
@Test... |
| 36 |
|
public void testCreateQuery() throws IOException { |
| 37 |
1
|
String serviceName = "_00000000-0b44-f234-48c8-071c565644b3._sub._home-sharing._tcp.local."; |
| 38 |
1
|
DNSOutgoing out = new DNSOutgoing(DNSConstants.FLAGS_QR_QUERY); |
| 39 |
1
|
assertNotNull("Could not create the outgoing message", out); |
| 40 |
1
|
out.addQuestion(DNSQuestion.newQuestion(serviceName, DNSRecordType.TYPE_ANY, DNSRecordClass.CLASS_IN, true)); |
| 41 |
1
|
byte[] data = out.data(); |
| 42 |
1
|
assertNotNull("Could not encode the outgoing message", data); |
| 43 |
1
|
byte[] expected = new byte[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x25, 0x5f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2d, 0x30, 0x62, 0x34, 0x34, 0x2d, 0x66, 0x32, 0x33, 0x34, 0x2d, 0x34, 0x38, 0x63, 0x38, |
| 44 |
|
0x2d, 0x30, 0x37, 0x31, 0x63, 0x35, 0x36, 0x35, 0x36, 0x34, 0x34, 0x62, 0x33, 0x4, 0x5f, 0x73, 0x75, 0x62, 0xd, 0x5f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x4, 0x5f, 0x74, 0x63, 0x70, 0x5, 0x6c, |
| 45 |
|
0x6f, 0x63, 0x61, 0x6c, 0x0, 0x0, (byte) 0xff, 0x0, 0x1 }; |
| 46 |
86
|
for (int i = 0; i < data.length; i++) { |
| 47 |
85
|
assertEquals("the encoded message is not what is expected at index " + i, expected[i], data[i]); |
| 48 |
|
} |
| 49 |
1
|
DatagramPacket packet = new DatagramPacket(data, 0, data.length); |
| 50 |
1
|
DNSIncoming in = new DNSIncoming(packet); |
| 51 |
1
|
assertTrue("Wrong packet type.", in.isQuery()); |
| 52 |
1
|
assertEquals("Wrong number of questions.", 1, in.getNumberOfQuestions()); |
| 53 |
1
|
for (DNSQuestion question : in.getQuestions()) { |
| 54 |
1
|
assertEquals("Wrong question name.", serviceName, question.getName()); |
| 55 |
|
} |
| 56 |
|
} |
| 57 |
|
|
|
|
|
| 100% |
Uncovered Elements: 0 (18) |
Complexity: 1 |
Complexity Density: 0.06 |
1
PASS
|
|
| 58 |
1
|
@Test... |
| 59 |
|
public void testCreateAnswer() throws IOException { |
| 60 |
1
|
String serviceType = "_home-sharing._tcp.local."; |
| 61 |
1
|
String serviceName = "Pierre." + serviceType; |
| 62 |
1
|
DNSOutgoing out = new DNSOutgoing(DNSConstants.FLAGS_QR_RESPONSE | DNSConstants.FLAGS_AA, false); |
| 63 |
1
|
assertNotNull("Could not create the outgoing message", out); |
| 64 |
1
|
out.addQuestion(DNSQuestion.newQuestion(serviceName, DNSRecordType.TYPE_ANY, DNSRecordClass.CLASS_IN, true)); |
| 65 |
1
|
long now = (new Date()).getTime(); |
| 66 |
1
|
out.addAnswer(new DNSRecord.Pointer(serviceType, DNSRecordClass.CLASS_IN, true, DNSConstants.DNS_TTL, serviceName), now); |
| 67 |
1
|
out.addAuthorativeAnswer(new DNSRecord.Service(serviceType, DNSRecordClass.CLASS_IN, true, DNSConstants.DNS_TTL, 1, 20, 8080, "panoramix.local.")); |
| 68 |
1
|
byte[] data = out.data(); |
| 69 |
1
|
assertNotNull("Could not encode the outgoing message", data); |
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
|
| 75 |
|
|
| 76 |
|
|
| 77 |
|
|
| 78 |
1
|
DatagramPacket packet = new DatagramPacket(data, 0, data.length); |
| 79 |
1
|
DNSIncoming in = new DNSIncoming(packet); |
| 80 |
1
|
assertTrue("Wrong packet type.", in.isResponse()); |
| 81 |
1
|
assertEquals("Wrong number of questions.", 1, in.getNumberOfQuestions()); |
| 82 |
1
|
assertEquals("Wrong number of answers.", 1, in.getNumberOfAnswers()); |
| 83 |
1
|
assertEquals("Wrong number of authorities.", 1, in.getNumberOfAuthorities()); |
| 84 |
1
|
for (DNSQuestion question : in.getQuestions()) { |
| 85 |
1
|
assertEquals("Wrong question name.", serviceName, question.getName()); |
| 86 |
|
} |
| 87 |
|
} |
| 88 |
|
|
|
|
|
| 0% |
Uncovered Elements: 16 (16) |
Complexity: 4 |
Complexity Density: 0.4 |
|
| 89 |
0
|
protected void print(byte[] data) {... |
| 90 |
0
|
System.out.print("{"); |
| 91 |
0
|
for (int i = 0; i < data.length; i++) { |
| 92 |
0
|
int value = data[i] & 0xFF; |
| 93 |
0
|
if (i > 0) { |
| 94 |
0
|
System.out.print(","); |
| 95 |
|
} |
| 96 |
0
|
System.out.print(" 0x"); |
| 97 |
0
|
System.out.print(Integer.toHexString(value)); |
| 98 |
0
|
if (i % 20 == 0) { |
| 99 |
0
|
System.out.print("\n"); |
| 100 |
|
} |
| 101 |
|
} |
| 102 |
0
|
System.out.print("}\n"); |
| 103 |
|
} |
| 104 |
|
} |