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

Side by Side Diff: net/dns/mdns_client_unittest.cc

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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 | « net/dns/mdns_client_impl.cc ('k') | net/dns/mock_host_resolver.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <queue> 5 #include <queue>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/macros.h"
9 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
12 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
13 #include "base/thread_task_runner_handle.h" 14 #include "base/thread_task_runner_handle.h"
14 #include "base/time/clock.h" 15 #include "base/time/clock.h"
15 #include "base/time/default_clock.h" 16 #include "base/time/default_clock.h"
16 #include "base/timer/mock_timer.h" 17 #include "base/timer/mock_timer.h"
17 #include "net/base/rand_callback.h" 18 #include "net/base/rand_callback.h"
18 #include "net/base/test_completion_callback.h" 19 #include "net/base/test_completion_callback.h"
(...skipping 10 matching lines...) Expand all
29 using ::testing::NiceMock; 30 using ::testing::NiceMock;
30 using ::testing::Exactly; 31 using ::testing::Exactly;
31 using ::testing::Return; 32 using ::testing::Return;
32 using ::testing::SaveArg; 33 using ::testing::SaveArg;
33 using ::testing::_; 34 using ::testing::_;
34 35
35 namespace net { 36 namespace net {
36 37
37 namespace { 38 namespace {
38 39
39 const uint8 kSamplePacket1[] = { 40 const uint8_t kSamplePacket1[] = {
40 // Header
41 0x00, 0x00, // ID is zeroed out
42 0x81, 0x80, // Standard query response, RA, no error
43 0x00, 0x00, // No questions (for simplicity)
44 0x00, 0x02, // 2 RRs (answers)
45 0x00, 0x00, // 0 authority RRs
46 0x00, 0x00, // 0 additional RRs
47
48 // Answer 1
49 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
50 0x04, '_', 't', 'c', 'p',
51 0x05, 'l', 'o', 'c', 'a', 'l',
52 0x00,
53 0x00, 0x0c, // TYPE is PTR.
54 0x00, 0x01, // CLASS is IN.
55 0x00, 0x00, // TTL (4 bytes) is 1 second;
56 0x00, 0x01,
57 0x00, 0x08, // RDLENGTH is 8 bytes.
58 0x05, 'h', 'e', 'l', 'l', 'o',
59 0xc0, 0x0c,
60
61 // Answer 2
62 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
63 0xc0, 0x14, // Pointer to "._tcp.local"
64 0x00, 0x0c, // TYPE is PTR.
65 0x00, 0x01, // CLASS is IN.
66 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
67 0x24, 0x75,
68 0x00, 0x08, // RDLENGTH is 8 bytes.
69 0x05, 'h', 'e', 'l', 'l', 'o',
70 0xc0, 0x32
71 };
72
73 const uint8 kCorruptedPacketBadQuestion[] = {
74 // Header
75 0x00, 0x00, // ID is zeroed out
76 0x81, 0x80, // Standard query response, RA, no error
77 0x00, 0x01, // One question
78 0x00, 0x02, // 2 RRs (answers)
79 0x00, 0x00, // 0 authority RRs
80 0x00, 0x00, // 0 additional RRs
81
82 // Question is corrupted and cannot be read.
83 0x99, 'h', 'e', 'l', 'l', 'o',
84 0x00,
85 0x00, 0x00,
86 0x00, 0x00,
87
88 // Answer 1
89 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
90 0x04, '_', 't', 'c', 'p',
91 0x05, 'l', 'o', 'c', 'a', 'l',
92 0x00,
93 0x00, 0x0c, // TYPE is PTR.
94 0x00, 0x01, // CLASS is IN.
95 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
96 0x24, 0x74,
97 0x00, 0x99, // RDLENGTH is impossible
98 0x05, 'h', 'e', 'l', 'l', 'o',
99 0xc0, 0x0c,
100
101 // Answer 2
102 0x08, '_', 'p', 'r', // Useless trailing data.
103 };
104
105 const uint8 kCorruptedPacketUnsalvagable[] = {
106 // Header
107 0x00, 0x00, // ID is zeroed out
108 0x81, 0x80, // Standard query response, RA, no error
109 0x00, 0x00, // No questions (for simplicity)
110 0x00, 0x02, // 2 RRs (answers)
111 0x00, 0x00, // 0 authority RRs
112 0x00, 0x00, // 0 additional RRs
113
114 // Answer 1
115 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
116 0x04, '_', 't', 'c', 'p',
117 0x05, 'l', 'o', 'c', 'a', 'l',
118 0x00,
119 0x00, 0x0c, // TYPE is PTR.
120 0x00, 0x01, // CLASS is IN.
121 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
122 0x24, 0x74,
123 0x00, 0x99, // RDLENGTH is impossible
124 0x05, 'h', 'e', 'l', 'l', 'o',
125 0xc0, 0x0c,
126
127 // Answer 2
128 0x08, '_', 'p', 'r', // Useless trailing data.
129 };
130
131 const uint8 kCorruptedPacketDoubleRecord[] = {
132 // Header
133 0x00, 0x00, // ID is zeroed out
134 0x81, 0x80, // Standard query response, RA, no error
135 0x00, 0x00, // No questions (for simplicity)
136 0x00, 0x02, // 2 RRs (answers)
137 0x00, 0x00, // 0 authority RRs
138 0x00, 0x00, // 0 additional RRs
139
140 // Answer 1
141 0x06, 'p', 'r', 'i', 'v', 'e', 't',
142 0x05, 'l', 'o', 'c', 'a', 'l',
143 0x00,
144 0x00, 0x01, // TYPE is A.
145 0x00, 0x01, // CLASS is IN.
146 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
147 0x24, 0x74,
148 0x00, 0x04, // RDLENGTH is 4
149 0x05, 0x03,
150 0xc0, 0x0c,
151
152 // Answer 2 -- Same key
153 0x06, 'p', 'r', 'i', 'v', 'e', 't',
154 0x05, 'l', 'o', 'c', 'a', 'l',
155 0x00,
156 0x00, 0x01, // TYPE is A.
157 0x00, 0x01, // CLASS is IN.
158 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
159 0x24, 0x74,
160 0x00, 0x04, // RDLENGTH is 4
161 0x02, 0x03,
162 0x04, 0x05,
163 };
164
165 const uint8 kCorruptedPacketSalvagable[] = {
166 // Header
167 0x00, 0x00, // ID is zeroed out
168 0x81, 0x80, // Standard query response, RA, no error
169 0x00, 0x00, // No questions (for simplicity)
170 0x00, 0x02, // 2 RRs (answers)
171 0x00, 0x00, // 0 authority RRs
172 0x00, 0x00, // 0 additional RRs
173
174 // Answer 1
175 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
176 0x04, '_', 't', 'c', 'p',
177 0x05, 'l', 'o', 'c', 'a', 'l',
178 0x00,
179 0x00, 0x0c, // TYPE is PTR.
180 0x00, 0x01, // CLASS is IN.
181 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
182 0x24, 0x74,
183 0x00, 0x08, // RDLENGTH is 8 bytes.
184 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format.
185 0xc0, 0x0c,
186
187 // Answer 2
188 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
189 0xc0, 0x14, // Pointer to "._tcp.local"
190 0x00, 0x0c, // TYPE is PTR.
191 0x00, 0x01, // CLASS is IN.
192 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
193 0x24, 0x75,
194 0x00, 0x08, // RDLENGTH is 8 bytes.
195 0x05, 'h', 'e', 'l', 'l', 'o',
196 0xc0, 0x32
197 };
198
199 const uint8 kSamplePacket2[] = {
200 // Header
201 0x00, 0x00, // ID is zeroed out
202 0x81, 0x80, // Standard query response, RA, no error
203 0x00, 0x00, // No questions (for simplicity)
204 0x00, 0x02, // 2 RRs (answers)
205 0x00, 0x00, // 0 authority RRs
206 0x00, 0x00, // 0 additional RRs
207
208 // Answer 1
209 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
210 0x04, '_', 't', 'c', 'p',
211 0x05, 'l', 'o', 'c', 'a', 'l',
212 0x00,
213 0x00, 0x0c, // TYPE is PTR.
214 0x00, 0x01, // CLASS is IN.
215 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
216 0x24, 0x74,
217 0x00, 0x08, // RDLENGTH is 8 bytes.
218 0x05, 'z', 'z', 'z', 'z', 'z',
219 0xc0, 0x0c,
220
221 // Answer 2
222 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
223 0xc0, 0x14, // Pointer to "._tcp.local"
224 0x00, 0x0c, // TYPE is PTR.
225 0x00, 0x01, // CLASS is IN.
226 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
227 0x24, 0x74,
228 0x00, 0x08, // RDLENGTH is 8 bytes.
229 0x05, 'z', 'z', 'z', 'z', 'z',
230 0xc0, 0x32
231 };
232
233 const uint8 kSamplePacket3[] = {
234 // Header 41 // Header
235 0x00, 0x00, // ID is zeroed out 42 0x00, 0x00, // ID is zeroed out
236 0x81, 0x80, // Standard query response, RA, no error 43 0x81, 0x80, // Standard query response, RA, no error
44 0x00, 0x00, // No questions (for simplicity)
45 0x00, 0x02, // 2 RRs (answers)
46 0x00, 0x00, // 0 authority RRs
47 0x00, 0x00, // 0 additional RRs
48
49 // Answer 1
50 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
51 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
52 0x00, 0x01, // CLASS is IN.
53 0x00, 0x00, // TTL (4 bytes) is 1 second;
54 0x00, 0x01, 0x00, 0x08, // RDLENGTH is 8 bytes.
55 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
56
57 // Answer 2
58 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', 0xc0,
59 0x14, // Pointer to "._tcp.local"
60 0x00, 0x0c, // TYPE is PTR.
61 0x00, 0x01, // CLASS is IN.
62 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
63 0x24, 0x75, 0x00, 0x08, // RDLENGTH is 8 bytes.
64 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x32};
65
66 const uint8_t kCorruptedPacketBadQuestion[] = {
67 // Header
68 0x00, 0x00, // ID is zeroed out
69 0x81, 0x80, // Standard query response, RA, no error
70 0x00, 0x01, // One question
71 0x00, 0x02, // 2 RRs (answers)
72 0x00, 0x00, // 0 authority RRs
73 0x00, 0x00, // 0 additional RRs
74
75 // Question is corrupted and cannot be read.
76 0x99, 'h', 'e', 'l', 'l', 'o', 0x00, 0x00, 0x00, 0x00, 0x00,
77
78 // Answer 1
79 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
80 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
81 0x00, 0x01, // CLASS is IN.
82 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
83 0x24, 0x74, 0x00, 0x99, // RDLENGTH is impossible
84 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
85
86 // Answer 2
87 0x08, '_', 'p', 'r', // Useless trailing data.
88 };
89
90 const uint8_t kCorruptedPacketUnsalvagable[] = {
91 // Header
92 0x00, 0x00, // ID is zeroed out
93 0x81, 0x80, // Standard query response, RA, no error
94 0x00, 0x00, // No questions (for simplicity)
95 0x00, 0x02, // 2 RRs (answers)
96 0x00, 0x00, // 0 authority RRs
97 0x00, 0x00, // 0 additional RRs
98
99 // Answer 1
100 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
101 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
102 0x00, 0x01, // CLASS is IN.
103 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
104 0x24, 0x74, 0x00, 0x99, // RDLENGTH is impossible
105 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
106
107 // Answer 2
108 0x08, '_', 'p', 'r', // Useless trailing data.
109 };
110
111 const uint8_t kCorruptedPacketDoubleRecord[] = {
112 // Header
113 0x00, 0x00, // ID is zeroed out
114 0x81, 0x80, // Standard query response, RA, no error
115 0x00, 0x00, // No questions (for simplicity)
116 0x00, 0x02, // 2 RRs (answers)
117 0x00, 0x00, // 0 authority RRs
118 0x00, 0x00, // 0 additional RRs
119
120 // Answer 1
121 0x06, 'p', 'r', 'i', 'v', 'e', 't', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00,
122 0x00, 0x01, // TYPE is A.
123 0x00, 0x01, // CLASS is IN.
124 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
125 0x24, 0x74, 0x00, 0x04, // RDLENGTH is 4
126 0x05, 0x03, 0xc0, 0x0c,
127
128 // Answer 2 -- Same key
129 0x06, 'p', 'r', 'i', 'v', 'e', 't', 0x05, 'l', 'o', 'c', 'a', 'l', 0x00,
130 0x00, 0x01, // TYPE is A.
131 0x00, 0x01, // CLASS is IN.
132 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
133 0x24, 0x74, 0x00, 0x04, // RDLENGTH is 4
134 0x02, 0x03, 0x04, 0x05,
135 };
136
137 const uint8_t kCorruptedPacketSalvagable[] = {
138 // Header
139 0x00, 0x00, // ID is zeroed out
140 0x81, 0x80, // Standard query response, RA, no error
237 0x00, 0x00, // No questions (for simplicity) 141 0x00, 0x00, // No questions (for simplicity)
238 0x00, 0x02, // 2 RRs (answers) 142 0x00, 0x02, // 2 RRs (answers)
239 0x00, 0x00, // 0 authority RRs 143 0x00, 0x00, // 0 authority RRs
240 0x00, 0x00, // 0 additional RRs 144 0x00, 0x00, // 0 additional RRs
241 145
242 // Answer 1 146 // Answer 1
243 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', // 147 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
244 0x04, '_', 't', 'c', 'p', // 148 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
245 0x05, 'l', 'o', 'c', 'a', 'l', //
246 0x00, 0x00, 0x0c, // TYPE is PTR.
247 0x00, 0x01, // CLASS is IN. 149 0x00, 0x01, // CLASS is IN.
248 0x00, 0x00, // TTL (4 bytes) is 1 second; 150 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
249 0x00, 0x01, // 151 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
250 0x00, 0x08, // RDLENGTH is 8 bytes. 152 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format.
251 0x05, 'h', 'e', 'l', 'l', 'o', // 153 0xc0, 0x0c,
252 0xc0, 0x0c, //
253 154
254 // Answer 2 155 // Answer 2
255 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', // 156 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', 0xc0,
256 0xc0, 0x14, // Pointer to "._tcp.local" 157 0x14, // Pointer to "._tcp.local"
257 0x00, 0x0c, // TYPE is PTR. 158 0x00, 0x0c, // TYPE is PTR.
258 0x00, 0x01, // CLASS is IN. 159 0x00, 0x01, // CLASS is IN.
259 0x00, 0x00, // TTL (4 bytes) is 3 seconds. 160 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
260 0x00, 0x03, // 161 0x24, 0x75, 0x00, 0x08, // RDLENGTH is 8 bytes.
261 0x00, 0x08, // RDLENGTH is 8 bytes. 162 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x32};
262 0x05, 'h', 'e', 'l', 'l', 'o', // 163
164 const uint8_t kSamplePacket2[] = {
165 // Header
166 0x00, 0x00, // ID is zeroed out
167 0x81, 0x80, // Standard query response, RA, no error
168 0x00, 0x00, // No questions (for simplicity)
169 0x00, 0x02, // 2 RRs (answers)
170 0x00, 0x00, // 0 authority RRs
171 0x00, 0x00, // 0 additional RRs
172
173 // Answer 1
174 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
175 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
176 0x00, 0x01, // CLASS is IN.
177 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
178 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
179 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x0c,
180
181 // Answer 2
182 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', 0xc0,
183 0x14, // Pointer to "._tcp.local"
184 0x00, 0x0c, // TYPE is PTR.
185 0x00, 0x01, // CLASS is IN.
186 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
187 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
188 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x32};
189
190 const uint8_t kSamplePacket3[] = {
191 // Header
192 0x00, 0x00, // ID is zeroed out
193 0x81, 0x80, // Standard query response, RA, no error
194 0x00, 0x00, // No questions (for simplicity)
195 0x00, 0x02, // 2 RRs (answers)
196 0x00, 0x00, // 0 authority RRs
197 0x00, 0x00, // 0 additional RRs
198
199 // Answer 1
200 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', //
201 0x04, '_', 't', 'c', 'p', //
202 0x05, 'l', 'o', 'c', 'a', 'l', //
203 0x00, 0x00, 0x0c, // TYPE is PTR.
204 0x00, 0x01, // CLASS is IN.
205 0x00, 0x00, // TTL (4 bytes) is 1 second;
206 0x00, 0x01, //
207 0x00, 0x08, // RDLENGTH is 8 bytes.
208 0x05, 'h', 'e', 'l', 'l', 'o', //
209 0xc0, 0x0c, //
210
211 // Answer 2
212 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r', //
213 0xc0, 0x14, // Pointer to "._tcp.local"
214 0x00, 0x0c, // TYPE is PTR.
215 0x00, 0x01, // CLASS is IN.
216 0x00, 0x00, // TTL (4 bytes) is 3 seconds.
217 0x00, 0x03, //
218 0x00, 0x08, // RDLENGTH is 8 bytes.
219 0x05, 'h', 'e', 'l', 'l', 'o', //
263 0xc0, 0x32}; 220 0xc0, 0x32};
264 221
265 const uint8 kQueryPacketPrivet[] = { 222 const uint8_t kQueryPacketPrivet[] = {
266 // Header 223 // Header
267 0x00, 0x00, // ID is zeroed out 224 0x00, 0x00, // ID is zeroed out
268 0x00, 0x00, // No flags. 225 0x00, 0x00, // No flags.
269 0x00, 0x01, // One question. 226 0x00, 0x01, // One question.
270 0x00, 0x00, // 0 RRs (answers) 227 0x00, 0x00, // 0 RRs (answers)
271 0x00, 0x00, // 0 authority RRs 228 0x00, 0x00, // 0 authority RRs
272 0x00, 0x00, // 0 additional RRs 229 0x00, 0x00, // 0 additional RRs
273 230
274 // Question 231 // Question
275 // This part is echoed back from the respective query. 232 // This part is echoed back from the respective query.
276 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 233 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
277 0x04, '_', 't', 'c', 'p', 234 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
278 0x05, 'l', 'o', 'c', 'a', 'l', 235 0x00, 0x01, // CLASS is IN.
279 0x00,
280 0x00, 0x0c, // TYPE is PTR.
281 0x00, 0x01, // CLASS is IN.
282 }; 236 };
283 237
284 const uint8 kQueryPacketPrivetA[] = { 238 const uint8_t kQueryPacketPrivetA[] = {
285 // Header 239 // Header
286 0x00, 0x00, // ID is zeroed out 240 0x00, 0x00, // ID is zeroed out
287 0x00, 0x00, // No flags. 241 0x00, 0x00, // No flags.
288 0x00, 0x01, // One question. 242 0x00, 0x01, // One question.
289 0x00, 0x00, // 0 RRs (answers) 243 0x00, 0x00, // 0 RRs (answers)
290 0x00, 0x00, // 0 authority RRs 244 0x00, 0x00, // 0 authority RRs
291 0x00, 0x00, // 0 additional RRs 245 0x00, 0x00, // 0 additional RRs
292 246
293 // Question 247 // Question
294 // This part is echoed back from the respective query. 248 // This part is echoed back from the respective query.
295 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 249 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
296 0x04, '_', 't', 'c', 'p', 250 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A.
297 0x05, 'l', 'o', 'c', 'a', 'l', 251 0x00, 0x01, // CLASS is IN.
298 0x00,
299 0x00, 0x01, // TYPE is A.
300 0x00, 0x01, // CLASS is IN.
301 }; 252 };
302 253
303 const uint8 kSamplePacketAdditionalOnly[] = { 254 const uint8_t kSamplePacketAdditionalOnly[] = {
304 // Header 255 // Header
305 0x00, 0x00, // ID is zeroed out 256 0x00, 0x00, // ID is zeroed out
306 0x81, 0x80, // Standard query response, RA, no error 257 0x81, 0x80, // Standard query response, RA, no error
307 0x00, 0x00, // No questions (for simplicity) 258 0x00, 0x00, // No questions (for simplicity)
308 0x00, 0x00, // 2 RRs (answers) 259 0x00, 0x00, // 2 RRs (answers)
309 0x00, 0x00, // 0 authority RRs 260 0x00, 0x00, // 0 authority RRs
310 0x00, 0x01, // 0 additional RRs 261 0x00, 0x01, // 0 additional RRs
311 262
312 // Answer 1 263 // Answer 1
313 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 264 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
314 0x04, '_', 't', 'c', 'p', 265 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
315 0x05, 'l', 'o', 'c', 'a', 'l', 266 0x00, 0x01, // CLASS is IN.
316 0x00, 267 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
317 0x00, 0x0c, // TYPE is PTR. 268 0x24, 0x74, 0x00, 0x08, // RDLENGTH is 8 bytes.
318 0x00, 0x01, // CLASS is IN. 269 0x05, 'h', 'e', 'l', 'l', 'o', 0xc0, 0x0c,
319 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
320 0x24, 0x74,
321 0x00, 0x08, // RDLENGTH is 8 bytes.
322 0x05, 'h', 'e', 'l', 'l', 'o',
323 0xc0, 0x0c,
324 }; 270 };
325 271
326 const uint8 kSamplePacketNsec[] = { 272 const uint8_t kSamplePacketNsec[] = {
327 // Header 273 // Header
328 0x00, 0x00, // ID is zeroed out 274 0x00, 0x00, // ID is zeroed out
329 0x81, 0x80, // Standard query response, RA, no error 275 0x81, 0x80, // Standard query response, RA, no error
330 0x00, 0x00, // No questions (for simplicity) 276 0x00, 0x00, // No questions (for simplicity)
331 0x00, 0x01, // 1 RR (answers) 277 0x00, 0x01, // 1 RR (answers)
332 0x00, 0x00, // 0 authority RRs 278 0x00, 0x00, // 0 authority RRs
333 0x00, 0x00, // 0 additional RRs 279 0x00, 0x00, // 0 additional RRs
334 280
335 // Answer 1 281 // Answer 1
336 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 282 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
337 0x04, '_', 't', 'c', 'p', 283 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x2f, // TYPE is NSEC.
338 0x05, 'l', 'o', 'c', 'a', 'l', 284 0x00, 0x01, // CLASS is IN.
339 0x00, 285 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
340 0x00, 0x2f, // TYPE is NSEC. 286 0x24, 0x74, 0x00, 0x06, // RDLENGTH is 6 bytes.
341 0x00, 0x01, // CLASS is IN. 287 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x08 // Only A record present
342 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
343 0x24, 0x74,
344 0x00, 0x06, // RDLENGTH is 6 bytes.
345 0xc0, 0x0c,
346 0x00, 0x02, 0x00, 0x08 // Only A record present
347 }; 288 };
348 289
349 const uint8 kSamplePacketAPrivet[] = { 290 const uint8_t kSamplePacketAPrivet[] = {
350 // Header 291 // Header
351 0x00, 0x00, // ID is zeroed out 292 0x00, 0x00, // ID is zeroed out
352 0x81, 0x80, // Standard query response, RA, no error 293 0x81, 0x80, // Standard query response, RA, no error
353 0x00, 0x00, // No questions (for simplicity) 294 0x00, 0x00, // No questions (for simplicity)
354 0x00, 0x01, // 1 RR (answers) 295 0x00, 0x01, // 1 RR (answers)
355 0x00, 0x00, // 0 authority RRs 296 0x00, 0x00, // 0 authority RRs
356 0x00, 0x00, // 0 additional RRs 297 0x00, 0x00, // 0 additional RRs
357 298
358 // Answer 1 299 // Answer 1
359 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 300 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
360 0x04, '_', 't', 'c', 'p', 301 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x01, // TYPE is A.
361 0x05, 'l', 'o', 'c', 'a', 'l', 302 0x00, 0x01, // CLASS is IN.
362 0x00, 303 0x00, 0x00, // TTL (4 bytes) is 5 seconds
363 0x00, 0x01, // TYPE is A. 304 0x00, 0x05, 0x00, 0x04, // RDLENGTH is 4 bytes.
364 0x00, 0x01, // CLASS is IN. 305 0xc0, 0x0c, 0x00, 0x02,
365 0x00, 0x00, // TTL (4 bytes) is 5 seconds
366 0x00, 0x05,
367 0x00, 0x04, // RDLENGTH is 4 bytes.
368 0xc0, 0x0c,
369 0x00, 0x02,
370 }; 306 };
371 307
372 const uint8 kSamplePacketGoodbye[] = { 308 const uint8_t kSamplePacketGoodbye[] = {
373 // Header 309 // Header
374 0x00, 0x00, // ID is zeroed out 310 0x00, 0x00, // ID is zeroed out
375 0x81, 0x80, // Standard query response, RA, no error 311 0x81, 0x80, // Standard query response, RA, no error
376 0x00, 0x00, // No questions (for simplicity) 312 0x00, 0x00, // No questions (for simplicity)
377 0x00, 0x01, // 2 RRs (answers) 313 0x00, 0x01, // 2 RRs (answers)
378 0x00, 0x00, // 0 authority RRs 314 0x00, 0x00, // 0 authority RRs
379 0x00, 0x00, // 0 additional RRs 315 0x00, 0x00, // 0 additional RRs
380 316
381 // Answer 1 317 // Answer 1
382 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 318 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't', 0x04, '_', 't', 'c', 'p', 0x05,
383 0x04, '_', 't', 'c', 'p', 319 'l', 'o', 'c', 'a', 'l', 0x00, 0x00, 0x0c, // TYPE is PTR.
384 0x05, 'l', 'o', 'c', 'a', 'l', 320 0x00, 0x01, // CLASS is IN.
385 0x00, 321 0x00, 0x00, // TTL (4 bytes) is zero;
386 0x00, 0x0c, // TYPE is PTR. 322 0x00, 0x00, 0x00, 0x08, // RDLENGTH is 8 bytes.
387 0x00, 0x01, // CLASS is IN. 323 0x05, 'z', 'z', 'z', 'z', 'z', 0xc0, 0x0c,
388 0x00, 0x00, // TTL (4 bytes) is zero;
389 0x00, 0x00,
390 0x00, 0x08, // RDLENGTH is 8 bytes.
391 0x05, 'z', 'z', 'z', 'z', 'z',
392 0xc0, 0x0c,
393 }; 324 };
394 325
395 std::string MakeString(const uint8* data, unsigned size) { 326 std::string MakeString(const uint8_t* data, unsigned size) {
396 return std::string(reinterpret_cast<const char*>(data), size); 327 return std::string(reinterpret_cast<const char*>(data), size);
397 } 328 }
398 329
399 class PtrRecordCopyContainer { 330 class PtrRecordCopyContainer {
400 public: 331 public:
401 PtrRecordCopyContainer() {} 332 PtrRecordCopyContainer() {}
402 ~PtrRecordCopyContainer() {} 333 ~PtrRecordCopyContainer() {}
403 334
404 bool is_set() const { return set_; } 335 bool is_set() const { return set_; }
405 336
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 void RunFor(base::TimeDelta time_period); 404 void RunFor(base::TimeDelta time_period);
474 void Stop(); 405 void Stop();
475 406
476 MOCK_METHOD2(MockableRecordCallback, void(MDnsTransaction::Result result, 407 MOCK_METHOD2(MockableRecordCallback, void(MDnsTransaction::Result result,
477 const RecordParsed* record)); 408 const RecordParsed* record));
478 409
479 MOCK_METHOD2(MockableRecordCallback2, void(MDnsTransaction::Result result, 410 MOCK_METHOD2(MockableRecordCallback2, void(MDnsTransaction::Result result,
480 const RecordParsed* record)); 411 const RecordParsed* record));
481 412
482 protected: 413 protected:
483 void ExpectPacket(const uint8* packet, unsigned size); 414 void ExpectPacket(const uint8_t* packet, unsigned size);
484 void SimulatePacketReceive(const uint8* packet, unsigned size); 415 void SimulatePacketReceive(const uint8_t* packet, unsigned size);
485 416
486 scoped_ptr<MDnsClientImpl> test_client_; 417 scoped_ptr<MDnsClientImpl> test_client_;
487 IPEndPoint mdns_ipv4_endpoint_; 418 IPEndPoint mdns_ipv4_endpoint_;
488 StrictMock<MockMDnsSocketFactory> socket_factory_; 419 StrictMock<MockMDnsSocketFactory> socket_factory_;
489 420
490 // Transactions and listeners that can be deleted by class methods for 421 // Transactions and listeners that can be deleted by class methods for
491 // reentrancy tests. 422 // reentrancy tests.
492 scoped_ptr<MDnsTransaction> transaction_; 423 scoped_ptr<MDnsTransaction> transaction_;
493 scoped_ptr<MDnsListener> listener1_; 424 scoped_ptr<MDnsListener> listener1_;
494 scoped_ptr<MDnsListener> listener2_; 425 scoped_ptr<MDnsListener> listener2_;
495 }; 426 };
496 427
497 class MockListenerDelegate : public MDnsListener::Delegate { 428 class MockListenerDelegate : public MDnsListener::Delegate {
498 public: 429 public:
499 MOCK_METHOD2(OnRecordUpdate, 430 MOCK_METHOD2(OnRecordUpdate,
500 void(MDnsListener::UpdateType update, 431 void(MDnsListener::UpdateType update,
501 const RecordParsed* records)); 432 const RecordParsed* records));
502 MOCK_METHOD2(OnNsecRecord, void(const std::string&, unsigned)); 433 MOCK_METHOD2(OnNsecRecord, void(const std::string&, unsigned));
503 MOCK_METHOD0(OnCachePurged, void()); 434 MOCK_METHOD0(OnCachePurged, void());
504 }; 435 };
505 436
506 void MDnsTest::SetUp() { 437 void MDnsTest::SetUp() {
507 test_client_.reset(new MDnsClientImpl()); 438 test_client_.reset(new MDnsClientImpl());
508 test_client_->StartListening(&socket_factory_); 439 test_client_->StartListening(&socket_factory_);
509 } 440 }
510 441
511 void MDnsTest::SimulatePacketReceive(const uint8* packet, unsigned size) { 442 void MDnsTest::SimulatePacketReceive(const uint8_t* packet, unsigned size) {
512 socket_factory_.SimulateReceive(packet, size); 443 socket_factory_.SimulateReceive(packet, size);
513 } 444 }
514 445
515 void MDnsTest::ExpectPacket(const uint8* packet, unsigned size) { 446 void MDnsTest::ExpectPacket(const uint8_t* packet, unsigned size) {
516 EXPECT_CALL(socket_factory_, OnSendTo(MakeString(packet, size))) 447 EXPECT_CALL(socket_factory_, OnSendTo(MakeString(packet, size)))
517 .Times(2); 448 .Times(2);
518 } 449 }
519 450
520 void MDnsTest::DeleteTransaction() { 451 void MDnsTest::DeleteTransaction() {
521 transaction_.reset(); 452 transaction_.reset();
522 } 453 }
523 454
524 void MDnsTest::DeleteBothListeners() { 455 void MDnsTest::DeleteBothListeners() {
525 listener1_.reset(); 456 listener1_.reset();
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 SendToInternal(sample_packet_, "224.0.0.251:5353", _)) 1248 SendToInternal(sample_packet_, "224.0.0.251:5353", _))
1318 .Times(0); 1249 .Times(0);
1319 // Expect call for the second IPv6 packed. 1250 // Expect call for the second IPv6 packed.
1320 EXPECT_CALL(*socket_ipv6_, 1251 EXPECT_CALL(*socket_ipv6_,
1321 SendToInternal(sample_packet_, "[ff02::fb]:5353", _)) 1252 SendToInternal(sample_packet_, "[ff02::fb]:5353", _))
1322 .WillOnce(Return(OK)); 1253 .WillOnce(Return(OK));
1323 callback.Run(OK); 1254 callback.Run(OK);
1324 } 1255 }
1325 1256
1326 } // namespace net 1257 } // namespace net
OLDNEW
« no previous file with comments | « net/dns/mdns_client_impl.cc ('k') | net/dns/mock_host_resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698