Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: pkg/mdns/test/decode_test.dart

Issue 1416833009: Add multiple results and timeout handling to the Mac OS mDNS native extension (Closed) Base URL: git@github.com:dart-lang/fletch.git@master
Patch Set: Addressed review comments and added new SHA1 for native extension Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/mdns/lib/src/packet.dart ('k') | src/pkg/mdns/mdns_extension.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 import 'package:expect/expect.dart'; 5 import 'package:expect/expect.dart';
6 import 'package:mdns/src/constants.dart';
6 import 'package:mdns/src/packet.dart'; 7 import 'package:mdns/src/packet.dart';
7 8
8 main() { 9 main() {
9 testValidPackages(); 10 testValidPackages();
10 testBadPackages(); 11 testBadPackages();
11 testHexDumpList(); 12 testHexDumpList();
13 testPTRRData();
14 testSRVRData();
12 } 15 }
13 16
14 testValidPackages() { 17 testValidPackages() {
15 var result; 18 var result;
16 result = decodeMDnsResponse(package1); 19 result = decodeMDnsResponse(package1);
17 Expect.equals(1, result.length); 20 Expect.equals(1, result.length);
18 Expect.equals('raspberrypi.local', result[0].name); 21 Expect.equals('raspberrypi.local', result[0].name);
19 Expect.equals('192.168.1.191', result[0].address.address); 22 Expect.equals('192.168.1.191', result[0].address.address);
20 23
21 result = decodeMDnsResponse(package2); 24 result = decodeMDnsResponse(package2);
22 Expect.equals(2, result.length); 25 Expect.equals(2, result.length);
23 Expect.equals('raspberrypi.local', result[0].name); 26 Expect.equals('raspberrypi.local', result[0].name);
24 Expect.equals('192.168.1.191', result[0].address.address); 27 Expect.equals('192.168.1.191', result[0].address.address);
25 Expect.equals('raspberrypi.local', result[1].name); 28 Expect.equals('raspberrypi.local', result[1].name);
26 Expect.equals('169.254.95.83', result[1].address.address); 29 Expect.equals('169.254.95.83', result[1].address.address);
27 30
28 result = decodeMDnsResponse(package3); 31 result = decodeMDnsResponse(package3);
29 Expect.equals(8, result.length); 32 Expect.equals(8, result.length);
30 Expect.equals(""" 33 Expect.equals("""
31 RR 16 [0] 34 RR 16 [0]
karlklose 2015/11/12 10:37:06 These tests already test PTR, SRV, and TXT decodin
32 RR 12 raspberrypi._udisks-ssh._tcp.local 35 RR 12 raspberrypi._udisks-ssh._tcp.local
33 RR 33 raspberrypi.local 36 RR 33 raspberrypi.local
34 RR 16 [0] 37 RR 16 [0]
35 RR 12 _udisks-ssh._tcp.local 38 RR 12 _udisks-ssh._tcp.local
36 RR 12 raspberrypi [b8:27:eb:03:92:4b]._workstation._tcp.local 39 RR 12 raspberrypi [b8:27:eb:03:92:4b]._workstation._tcp.local
37 RR 33 raspberrypi.local 40 RR 33 raspberrypi.local
38 RR 12 _workstation._tcp.local""", 41 RR 12 _workstation._tcp.local""",
39 result.join('\n')); 42 result.join('\n'));
40 43
41 result = decodeMDnsResponse(packagePtrResponse); 44 result = decodeMDnsResponse(packagePtrResponse);
42 Expect.equals(6, result.length); 45 Expect.equals(6, result.length);
43 Expect.equals(""" 46 Expect.equals("""
44 RR 12 fletch-agent on raspberrypi._fletch_agent._tcp.local 47 RR 12 fletch-agent on raspberrypi._fletch_agent._tcp.local
45 RR 16 [0] 48 RR 16 [0]
46 RR 33 raspberrypi.local 49 RR 33 raspberrypi.local
47 RR 28 [254, 128, 0, 0, 0, 0, 0, 0, 186, 39, 235, 255, 254, 105, 110, 58] 50 RR 28 [254, 128, 0, 0, 0, 0, 0, 0, 186, 39, 235, 255, 254, 105, 110, 58]
48 RR 1 InternetAddress('192.168.1.1', IP_V4) 51 RR 1 InternetAddress('192.168.1.1', IP_V4)
49 RR 1 InternetAddress('169.254.167.172', IP_V4)""", 52 RR 1 InternetAddress('169.254.167.172', IP_V4)""",
50 result.join('\n')); 53 result.join('\n'));
51 } 54 }
52 55
53 testBadPackages() { 56 testBadPackages() {
54 for (var p in [package1, package2, package3]) { 57 for (var p in [package1, package2, package3]) {
55 for (int i = 0; i < p.length; i++) { 58 for (int i = 0; i < p.length; i++) {
56 decodeMDnsResponse(p.sublist(0, i)); 59 decodeMDnsResponse(p.sublist(0, i));
57 } 60 }
58 } 61 }
59 } 62 }
60 63
64 testPTRRData() {
65 Expect.equals(
66 'sgjesse-macbookpro2 [78:31:c1:b8:55:38]._workstation._tcp.local',
67 readFQDN(ptrRData));
68 print(readFQDN(ptrRData2));
69 Expect.equals('fletch-agent._fletch_agent._tcp.local', readFQDN(ptrRData2));
70 }
71
72 testSRVRData() {
73 Expect.equals('fletch.local', readFQDN(srvRData, srvHeaderSize));
74 }
75
61 testHexDumpList() { 76 testHexDumpList() {
62 // Call hexDumpList to get rid of hint. 77 // Call hexDumpList to get rid of hint.
63 formatHexStream(""); 78 formatHexStream("");
64 hexDumpList([]); 79 hexDumpList([]);
65 } 80 }
66 81
67 // One address. 82 // One address.
68 var package1 = [ 83 var package1 = [
69 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x01, 84 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x01,
70 0x00, 0x00, 0x00, 0x00, 0x0b, 0x72, 0x61, 0x73, 85 0x00, 0x00, 0x00, 0x00, 0x0b, 0x72, 0x61, 0x73,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 0x69, 0xc0, 0x1f, 0xc0, 0x6d, 0x00, 0x1c, 0x80, 152 0x69, 0xc0, 0x1f, 0xc0, 0x6d, 0x00, 0x1c, 0x80,
138 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x10, 0xfe, 153 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x10, 0xfe,
139 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 154 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba,
140 0x27, 0xeb, 0xff, 0xfe, 0x69, 0x6e, 0x3a, 0xc0, 155 0x27, 0xeb, 0xff, 0xfe, 0x69, 0x6e, 0x3a, 0xc0,
141 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 156 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00,
142 0x78, 0x00, 0x04, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 157 0x78, 0x00, 0x04, 0xc0, 0xa8, 0x01, 0x01, 0xc0,
143 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 158 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00,
144 0x78, 0x00, 0x04, 0xa9, 0xfe, 0xa7, 0xac 159 0x78, 0x00, 0x04, 0xa9, 0xfe, 0xa7, 0xac
145 ]; 160 ];
146 161
162 var ptrRData = <int>[
163 0x27, 0x73, 0x67, 0x6a, 0x65, 0x73, 0x73, 0x65,
164 0x2d, 0x6d, 0x61, 0x63, 0x62, 0x6f, 0x6f, 0x6b,
165 0x70, 0x72, 0x6f, 0x32, 0x20, 0x5b, 0x37, 0x38,
166 0x3a, 0x33, 0x31, 0x3a, 0x63, 0x31, 0x3a, 0x62,
167 0x38, 0x3a, 0x35, 0x35, 0x3a, 0x33, 0x38, 0x5d,
168 0x0c, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x74,
169 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x04, 0x5f, 0x74,
170 0x63, 0x70, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
171 0x00
172 ];
173
174 var ptrRData2 = <int>[
175 0x0c, 0x66, 0x6c, 0x65, 0x74, 0x63, 0x68, 0x2d,
176 0x61, 0x67, 0x65, 0x6e, 0x74, 0x0d, 0x5f, 0x66,
177 0x6c, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x67,
178 0x65, 0x6e, 0x74, 0x04, 0x5f, 0x74, 0x63, 0x70,
179 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x00
180 ];
181
182 var srvRData = <int> [
183 0x00, 0x00, 0x00, 0x00, 0x2f, 0x59, 0x06, 0x66,
184 0x6c, 0x65, 0x74, 0x63, 0x68, 0x05, 0x6c, 0x6f,
185 0x63, 0x61, 0x6c, 0x00
186 ];
187
147 // Support code to generate the hex-lists above from 188 // Support code to generate the hex-lists above from
148 // a hex-stream. 189 // a hex-stream.
149 void formatHexStream(String hexStream) { 190 void formatHexStream(String hexStream) {
150 var s = ''; 191 var s = '';
151 for (int i = 0; i < hexStream.length / 2; i++) { 192 for (int i = 0; i < hexStream.length / 2; i++) {
152 if (s.length != 0) s += ', '; 193 if (s.length != 0) s += ', ';
153 s += '0x'; 194 s += '0x';
154 var x = hexStream.substring(i * 2, i * 2 + 2); 195 var x = hexStream.substring(i * 2, i * 2 + 2);
155 s += x; 196 s += x;
156 if (((i + 1) % 8) == 0) { 197 if (((i + 1) % 8) == 0) {
(...skipping 15 matching lines...) Expand all
172 if (x.length == 1) s += '0'; 213 if (x.length == 1) s += '0';
173 s += x; 214 s += x;
174 if (((i + 1) % 8) == 0) { 215 if (((i + 1) % 8) == 0) {
175 s += ','; 216 s += ',';
176 print(s); 217 print(s);
177 s = ''; 218 s = '';
178 } 219 }
179 } 220 }
180 if (s.length != 0) print(s); 221 if (s.length != 0) print(s);
181 } 222 }
OLDNEW
« no previous file with comments | « pkg/mdns/lib/src/packet.dart ('k') | src/pkg/mdns/mdns_extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698