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

Side by Side Diff: content/browser/renderer_host/p2p/socket_host_tcp_unittest.cc

Issue 193663003: Push remote hostname to P2P socket host. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/renderer_host/p2p/socket_host_tcp.h" 5 #include "content/browser/renderer_host/p2p/socket_host_tcp.h"
6 6
7 #include <deque> 7 #include <deque>
8 8
9 #include "base/sys_byteorder.h" 9 #include "base/sys_byteorder.h"
10 #include "content/browser/renderer_host/p2p/socket_host_test_utils.h" 10 #include "content/browser/renderer_host/p2p/socket_host_test_utils.h"
(...skipping 24 matching lines...) Expand all
35 &sender_, 0, P2P_SOCKET_TCP_CLIENT, NULL)); 35 &sender_, 0, P2P_SOCKET_TCP_CLIENT, NULL));
36 } else { 36 } else {
37 socket_host_.reset(new P2PSocketHostStunTcp( 37 socket_host_.reset(new P2PSocketHostStunTcp(
38 &sender_, 0, P2P_SOCKET_STUN_TCP_CLIENT, NULL)); 38 &sender_, 0, P2P_SOCKET_STUN_TCP_CLIENT, NULL));
39 } 39 }
40 40
41 socket_ = new FakeSocket(&sent_data_); 41 socket_ = new FakeSocket(&sent_data_);
42 socket_->SetLocalAddress(ParseAddress(kTestLocalIpAddress, kTestPort1)); 42 socket_->SetLocalAddress(ParseAddress(kTestLocalIpAddress, kTestPort1));
43 socket_host_->socket_.reset(socket_); 43 socket_host_->socket_.reset(socket_);
44 44
45 dest_ = ParseAddress(kTestIpAddress1, kTestPort1); 45 dest_.ip_address = ParseAddress(kTestIpAddress1, kTestPort1);
46 46
47 local_address_ = ParseAddress(kTestLocalIpAddress, kTestPort1); 47 local_address_ = ParseAddress(kTestLocalIpAddress, kTestPort1);
48 48
49 socket_host_->remote_address_ = dest_; 49 socket_host_->remote_address_ = dest_;
50 socket_host_->state_ = P2PSocketHost::STATE_CONNECTING; 50 socket_host_->state_ = P2PSocketHost::STATE_CONNECTING;
51 socket_host_->OnConnected(net::OK); 51 socket_host_->OnConnected(net::OK);
52 } 52 }
53 53
54 std::string IntToSize(int size) { 54 std::string IntToSize(int size) {
55 std::string result; 55 std::string result;
56 uint16 size16 = base::HostToNet16(size); 56 uint16 size16 = base::HostToNet16(size);
57 result.resize(sizeof(size16)); 57 result.resize(sizeof(size16));
58 memcpy(&result[0], &size16, sizeof(size16)); 58 memcpy(&result[0], &size16, sizeof(size16));
59 return result; 59 return result;
60 } 60 }
61 61
62 std::string sent_data_; 62 std::string sent_data_;
63 FakeSocket* socket_; // Owned by |socket_host_|. 63 FakeSocket* socket_; // Owned by |socket_host_|.
64 scoped_ptr<P2PSocketHostTcpBase> socket_host_; 64 scoped_ptr<P2PSocketHostTcpBase> socket_host_;
65 MockIPCSender sender_; 65 MockIPCSender sender_;
66 66
67 net::IPEndPoint local_address_; 67 net::IPEndPoint local_address_;
68 68 P2PHostAndIPEndPoint dest_;
69 net::IPEndPoint dest_;
70 net::IPEndPoint dest2_;
71
72 P2PSocketType socket_type_; 69 P2PSocketType socket_type_;
73 }; 70 };
74 71
75 class P2PSocketHostTcpTest : public P2PSocketHostTcpTestBase { 72 class P2PSocketHostTcpTest : public P2PSocketHostTcpTestBase {
76 protected: 73 protected:
77 P2PSocketHostTcpTest() : P2PSocketHostTcpTestBase(P2P_SOCKET_TCP_CLIENT) { } 74 P2PSocketHostTcpTest() : P2PSocketHostTcpTestBase(P2P_SOCKET_TCP_CLIENT) { }
78 }; 75 };
79 76
80 class P2PSocketHostStunTcpTest : public P2PSocketHostTcpTestBase { 77 class P2PSocketHostStunTcpTest : public P2PSocketHostTcpTestBase {
81 protected: 78 protected:
82 P2PSocketHostStunTcpTest() 79 P2PSocketHostStunTcpTest()
83 : P2PSocketHostTcpTestBase(P2P_SOCKET_STUN_TCP_CLIENT) { 80 : P2PSocketHostTcpTestBase(P2P_SOCKET_STUN_TCP_CLIENT) {
84 } 81 }
85 }; 82 };
86 83
87 // Verify that we can send STUN message and that they are formatted 84 // Verify that we can send STUN message and that they are formatted
88 // properly. 85 // properly.
89 TEST_F(P2PSocketHostTcpTest, SendStunNoAuth) { 86 TEST_F(P2PSocketHostTcpTest, SendStunNoAuth) {
90 EXPECT_CALL(sender_, Send( 87 EXPECT_CALL(sender_, Send(
91 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 88 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
92 .Times(3) 89 .Times(3)
93 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); 90 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true)));
94 91
95 talk_base::PacketOptions options; 92 talk_base::PacketOptions options;
96 std::vector<char> packet1; 93 std::vector<char> packet1;
97 CreateStunRequest(&packet1); 94 CreateStunRequest(&packet1);
98 socket_host_->Send(dest_, packet1, options, 0); 95 socket_host_->Send(dest_.ip_address, packet1, options, 0);
99 96
100 std::vector<char> packet2; 97 std::vector<char> packet2;
101 CreateStunResponse(&packet2); 98 CreateStunResponse(&packet2);
102 socket_host_->Send(dest_, packet2, options, 0); 99 socket_host_->Send(dest_.ip_address, packet2, options, 0);
103 100
104 std::vector<char> packet3; 101 std::vector<char> packet3;
105 CreateStunError(&packet3); 102 CreateStunError(&packet3);
106 socket_host_->Send(dest_, packet3, options, 0); 103 socket_host_->Send(dest_.ip_address, packet3, options, 0);
107 104
108 std::string expected_data; 105 std::string expected_data;
109 expected_data.append(IntToSize(packet1.size())); 106 expected_data.append(IntToSize(packet1.size()));
110 expected_data.append(packet1.begin(), packet1.end()); 107 expected_data.append(packet1.begin(), packet1.end());
111 expected_data.append(IntToSize(packet2.size())); 108 expected_data.append(IntToSize(packet2.size()));
112 expected_data.append(packet2.begin(), packet2.end()); 109 expected_data.append(packet2.begin(), packet2.end());
113 expected_data.append(IntToSize(packet3.size())); 110 expected_data.append(IntToSize(packet3.size()));
114 expected_data.append(packet3.begin(), packet3.end()); 111 expected_data.append(packet3.begin(), packet3.end());
115 112
116 EXPECT_EQ(expected_data, sent_data_); 113 EXPECT_EQ(expected_data, sent_data_);
117 } 114 }
118 115
119 // Verify that we can receive STUN messages from the socket, and that 116 // Verify that we can receive STUN messages from the socket, and that
120 // the messages are parsed properly. 117 // the messages are parsed properly.
121 TEST_F(P2PSocketHostTcpTest, ReceiveStun) { 118 TEST_F(P2PSocketHostTcpTest, ReceiveStun) {
122 EXPECT_CALL(sender_, Send( 119 EXPECT_CALL(sender_, Send(
123 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 120 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
124 .Times(3) 121 .Times(3)
125 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); 122 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true)));
126 123
127 talk_base::PacketOptions options; 124 talk_base::PacketOptions options;
128 std::vector<char> packet1; 125 std::vector<char> packet1;
129 CreateStunRequest(&packet1); 126 CreateStunRequest(&packet1);
130 socket_host_->Send(dest_, packet1, options, 0); 127 socket_host_->Send(dest_.ip_address, packet1, options, 0);
131 128
132 std::vector<char> packet2; 129 std::vector<char> packet2;
133 CreateStunResponse(&packet2); 130 CreateStunResponse(&packet2);
134 socket_host_->Send(dest_, packet2, options, 0); 131 socket_host_->Send(dest_.ip_address, packet2, options, 0);
135 132
136 std::vector<char> packet3; 133 std::vector<char> packet3;
137 CreateStunError(&packet3); 134 CreateStunError(&packet3);
138 socket_host_->Send(dest_, packet3, options, 0); 135 socket_host_->Send(dest_.ip_address, packet3, options, 0);
139 136
140 std::string received_data; 137 std::string received_data;
141 received_data.append(IntToSize(packet1.size())); 138 received_data.append(IntToSize(packet1.size()));
142 received_data.append(packet1.begin(), packet1.end()); 139 received_data.append(packet1.begin(), packet1.end());
143 received_data.append(IntToSize(packet2.size())); 140 received_data.append(IntToSize(packet2.size()));
144 received_data.append(packet2.begin(), packet2.end()); 141 received_data.append(packet2.begin(), packet2.end());
145 received_data.append(IntToSize(packet3.size())); 142 received_data.append(IntToSize(packet3.size()));
146 received_data.append(packet3.begin(), packet3.end()); 143 received_data.append(packet3.begin(), packet3.end());
147 144
148 EXPECT_CALL(sender_, Send(MatchPacketMessage(packet1))) 145 EXPECT_CALL(sender_, Send(MatchPacketMessage(packet1)))
(...skipping 18 matching lines...) Expand all
167 // Verify that we can't send data before we've received STUN response 164 // Verify that we can't send data before we've received STUN response
168 // from the other side. 165 // from the other side.
169 TEST_F(P2PSocketHostTcpTest, SendDataNoAuth) { 166 TEST_F(P2PSocketHostTcpTest, SendDataNoAuth) {
170 EXPECT_CALL(sender_, Send( 167 EXPECT_CALL(sender_, Send(
171 MatchMessage(static_cast<uint32>(P2PMsg_OnError::ID)))) 168 MatchMessage(static_cast<uint32>(P2PMsg_OnError::ID))))
172 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); 169 .WillOnce(DoAll(DeleteArg<0>(), Return(true)));
173 170
174 talk_base::PacketOptions options; 171 talk_base::PacketOptions options;
175 std::vector<char> packet; 172 std::vector<char> packet;
176 CreateRandomPacket(&packet); 173 CreateRandomPacket(&packet);
177 socket_host_->Send(dest_, packet, options, 0); 174 socket_host_->Send(dest_.ip_address, packet, options, 0);
178 175
179 EXPECT_EQ(0U, sent_data_.size()); 176 EXPECT_EQ(0U, sent_data_.size());
180 } 177 }
181 178
182 // Verify that we can send data after we've received STUN response 179 // Verify that we can send data after we've received STUN response
183 // from the other side. 180 // from the other side.
184 TEST_F(P2PSocketHostTcpTest, SendAfterStunRequest) { 181 TEST_F(P2PSocketHostTcpTest, SendAfterStunRequest) {
185 // Receive packet from |dest_|. 182 // Receive packet from |dest_|.
186 std::vector<char> request_packet; 183 std::vector<char> request_packet;
187 CreateStunRequest(&request_packet); 184 CreateStunRequest(&request_packet);
188 185
189 std::string received_data; 186 std::string received_data;
190 received_data.append(IntToSize(request_packet.size())); 187 received_data.append(IntToSize(request_packet.size()));
191 received_data.append(request_packet.begin(), request_packet.end()); 188 received_data.append(request_packet.begin(), request_packet.end());
192 189
193 EXPECT_CALL(sender_, Send( 190 EXPECT_CALL(sender_, Send(
194 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 191 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
195 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); 192 .WillOnce(DoAll(DeleteArg<0>(), Return(true)));
196 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) 193 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet)))
197 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); 194 .WillOnce(DoAll(DeleteArg<0>(), Return(true)));
198 socket_->AppendInputData(&received_data[0], received_data.size()); 195 socket_->AppendInputData(&received_data[0], received_data.size());
199 196
200 talk_base::PacketOptions options; 197 talk_base::PacketOptions options;
201 // Now we should be able to send any data to |dest_|. 198 // Now we should be able to send any data to |dest_|.
202 std::vector<char> packet; 199 std::vector<char> packet;
203 CreateRandomPacket(&packet); 200 CreateRandomPacket(&packet);
204 socket_host_->Send(dest_, packet, options, 0); 201 socket_host_->Send(dest_.ip_address, packet, options, 0);
205 202
206 std::string expected_data; 203 std::string expected_data;
207 expected_data.append(IntToSize(packet.size())); 204 expected_data.append(IntToSize(packet.size()));
208 expected_data.append(packet.begin(), packet.end()); 205 expected_data.append(packet.begin(), packet.end());
209 206
210 EXPECT_EQ(expected_data, sent_data_); 207 EXPECT_EQ(expected_data, sent_data_);
211 } 208 }
212 209
213 // Verify that asynchronous writes are handled correctly. 210 // Verify that asynchronous writes are handled correctly.
214 TEST_F(P2PSocketHostTcpTest, AsyncWrites) { 211 TEST_F(P2PSocketHostTcpTest, AsyncWrites) {
215 base::MessageLoop message_loop; 212 base::MessageLoop message_loop;
216 213
217 socket_->set_async_write(true); 214 socket_->set_async_write(true);
218 215
219 EXPECT_CALL(sender_, Send( 216 EXPECT_CALL(sender_, Send(
220 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 217 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
221 .Times(2) 218 .Times(2)
222 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); 219 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true)));
223 220
224 talk_base::PacketOptions options; 221 talk_base::PacketOptions options;
225 std::vector<char> packet1; 222 std::vector<char> packet1;
226 CreateStunRequest(&packet1); 223 CreateStunRequest(&packet1);
227 224
228 socket_host_->Send(dest_, packet1, options, 0); 225 socket_host_->Send(dest_.ip_address, packet1, options, 0);
229 226
230 std::vector<char> packet2; 227 std::vector<char> packet2;
231 CreateStunResponse(&packet2); 228 CreateStunResponse(&packet2);
232 socket_host_->Send(dest_, packet2, options, 0); 229 socket_host_->Send(dest_.ip_address, packet2, options, 0);
233 230
234 message_loop.RunUntilIdle(); 231 message_loop.RunUntilIdle();
235 232
236 std::string expected_data; 233 std::string expected_data;
237 expected_data.append(IntToSize(packet1.size())); 234 expected_data.append(IntToSize(packet1.size()));
238 expected_data.append(packet1.begin(), packet1.end()); 235 expected_data.append(packet1.begin(), packet1.end());
239 expected_data.append(IntToSize(packet2.size())); 236 expected_data.append(IntToSize(packet2.size()));
240 expected_data.append(packet2.begin(), packet2.end()); 237 expected_data.append(packet2.begin(), packet2.end());
241 238
242 EXPECT_EQ(expected_data, sent_data_); 239 EXPECT_EQ(expected_data, sent_data_);
243 } 240 }
244 241
245 // Verify that we can send STUN message and that they are formatted 242 // Verify that we can send STUN message and that they are formatted
246 // properly. 243 // properly.
247 TEST_F(P2PSocketHostStunTcpTest, SendStunNoAuth) { 244 TEST_F(P2PSocketHostStunTcpTest, SendStunNoAuth) {
248 EXPECT_CALL(sender_, Send( 245 EXPECT_CALL(sender_, Send(
249 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 246 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
250 .Times(3) 247 .Times(3)
251 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); 248 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true)));
252 249
253 talk_base::PacketOptions options; 250 talk_base::PacketOptions options;
254 std::vector<char> packet1; 251 std::vector<char> packet1;
255 CreateStunRequest(&packet1); 252 CreateStunRequest(&packet1);
256 socket_host_->Send(dest_, packet1, options, 0); 253 socket_host_->Send(dest_.ip_address, packet1, options, 0);
257 254
258 std::vector<char> packet2; 255 std::vector<char> packet2;
259 CreateStunResponse(&packet2); 256 CreateStunResponse(&packet2);
260 socket_host_->Send(dest_, packet2, options, 0); 257 socket_host_->Send(dest_.ip_address, packet2, options, 0);
261 258
262 std::vector<char> packet3; 259 std::vector<char> packet3;
263 CreateStunError(&packet3); 260 CreateStunError(&packet3);
264 socket_host_->Send(dest_, packet3, options, 0); 261 socket_host_->Send(dest_.ip_address, packet3, options, 0);
265 262
266 std::string expected_data; 263 std::string expected_data;
267 expected_data.append(packet1.begin(), packet1.end()); 264 expected_data.append(packet1.begin(), packet1.end());
268 expected_data.append(packet2.begin(), packet2.end()); 265 expected_data.append(packet2.begin(), packet2.end());
269 expected_data.append(packet3.begin(), packet3.end()); 266 expected_data.append(packet3.begin(), packet3.end());
270 267
271 EXPECT_EQ(expected_data, sent_data_); 268 EXPECT_EQ(expected_data, sent_data_);
272 } 269 }
273 270
274 // Verify that we can receive STUN messages from the socket, and that 271 // Verify that we can receive STUN messages from the socket, and that
275 // the messages are parsed properly. 272 // the messages are parsed properly.
276 TEST_F(P2PSocketHostStunTcpTest, ReceiveStun) { 273 TEST_F(P2PSocketHostStunTcpTest, ReceiveStun) {
277 EXPECT_CALL(sender_, Send( 274 EXPECT_CALL(sender_, Send(
278 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 275 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
279 .Times(3) 276 .Times(3)
280 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); 277 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true)));
281 278
282 talk_base::PacketOptions options; 279 talk_base::PacketOptions options;
283 std::vector<char> packet1; 280 std::vector<char> packet1;
284 CreateStunRequest(&packet1); 281 CreateStunRequest(&packet1);
285 socket_host_->Send(dest_, packet1, options, 0); 282 socket_host_->Send(dest_.ip_address, packet1, options, 0);
286 283
287 std::vector<char> packet2; 284 std::vector<char> packet2;
288 CreateStunResponse(&packet2); 285 CreateStunResponse(&packet2);
289 socket_host_->Send(dest_, packet2, options, 0); 286 socket_host_->Send(dest_.ip_address, packet2, options, 0);
290 287
291 std::vector<char> packet3; 288 std::vector<char> packet3;
292 CreateStunError(&packet3); 289 CreateStunError(&packet3);
293 socket_host_->Send(dest_, packet3, options, 0); 290 socket_host_->Send(dest_.ip_address, packet3, options, 0);
294 291
295 std::string received_data; 292 std::string received_data;
296 received_data.append(packet1.begin(), packet1.end()); 293 received_data.append(packet1.begin(), packet1.end());
297 received_data.append(packet2.begin(), packet2.end()); 294 received_data.append(packet2.begin(), packet2.end());
298 received_data.append(packet3.begin(), packet3.end()); 295 received_data.append(packet3.begin(), packet3.end());
299 296
300 EXPECT_CALL(sender_, Send(MatchPacketMessage(packet1))) 297 EXPECT_CALL(sender_, Send(MatchPacketMessage(packet1)))
301 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); 298 .WillOnce(DoAll(DeleteArg<0>(), Return(true)));
302 EXPECT_CALL(sender_, Send(MatchPacketMessage(packet2))) 299 EXPECT_CALL(sender_, Send(MatchPacketMessage(packet2)))
303 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); 300 .WillOnce(DoAll(DeleteArg<0>(), Return(true)));
(...skipping 15 matching lines...) Expand all
319 // Verify that we can't send data before we've received STUN response 316 // Verify that we can't send data before we've received STUN response
320 // from the other side. 317 // from the other side.
321 TEST_F(P2PSocketHostStunTcpTest, SendDataNoAuth) { 318 TEST_F(P2PSocketHostStunTcpTest, SendDataNoAuth) {
322 EXPECT_CALL(sender_, Send( 319 EXPECT_CALL(sender_, Send(
323 MatchMessage(static_cast<uint32>(P2PMsg_OnError::ID)))) 320 MatchMessage(static_cast<uint32>(P2PMsg_OnError::ID))))
324 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); 321 .WillOnce(DoAll(DeleteArg<0>(), Return(true)));
325 322
326 talk_base::PacketOptions options; 323 talk_base::PacketOptions options;
327 std::vector<char> packet; 324 std::vector<char> packet;
328 CreateRandomPacket(&packet); 325 CreateRandomPacket(&packet);
329 socket_host_->Send(dest_, packet, options, 0); 326 socket_host_->Send(dest_.ip_address, packet, options, 0);
330 327
331 EXPECT_EQ(0U, sent_data_.size()); 328 EXPECT_EQ(0U, sent_data_.size());
332 } 329 }
333 330
334 // Verify that asynchronous writes are handled correctly. 331 // Verify that asynchronous writes are handled correctly.
335 TEST_F(P2PSocketHostStunTcpTest, AsyncWrites) { 332 TEST_F(P2PSocketHostStunTcpTest, AsyncWrites) {
336 base::MessageLoop message_loop; 333 base::MessageLoop message_loop;
337 334
338 socket_->set_async_write(true); 335 socket_->set_async_write(true);
339 336
340 EXPECT_CALL(sender_, Send( 337 EXPECT_CALL(sender_, Send(
341 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID)))) 338 MatchMessage(static_cast<uint32>(P2PMsg_OnSendComplete::ID))))
342 .Times(2) 339 .Times(2)
343 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); 340 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true)));
344 341
345 talk_base::PacketOptions options; 342 talk_base::PacketOptions options;
346 std::vector<char> packet1; 343 std::vector<char> packet1;
347 CreateStunRequest(&packet1); 344 CreateStunRequest(&packet1);
348 socket_host_->Send(dest_, packet1, options, 0); 345 socket_host_->Send(dest_.ip_address, packet1, options, 0);
349 346
350 std::vector<char> packet2; 347 std::vector<char> packet2;
351 CreateStunResponse(&packet2); 348 CreateStunResponse(&packet2);
352 socket_host_->Send(dest_, packet2, options, 0); 349 socket_host_->Send(dest_.ip_address, packet2, options, 0);
353 350
354 message_loop.RunUntilIdle(); 351 message_loop.RunUntilIdle();
355 352
356 std::string expected_data; 353 std::string expected_data;
357 expected_data.append(packet1.begin(), packet1.end()); 354 expected_data.append(packet1.begin(), packet1.end());
358 expected_data.append(packet2.begin(), packet2.end()); 355 expected_data.append(packet2.begin(), packet2.end());
359 356
360 EXPECT_EQ(expected_data, sent_data_); 357 EXPECT_EQ(expected_data, sent_data_);
361 } 358 }
362 359
363 } // namespace content 360 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698