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

Side by Side Diff: net/udp/udp_socket_unittest.cc

Issue 721273002: Remove timing limitation to set Broadcast, ReceiveBuffer, and SendBuffer options from UDPSocket. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
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 "net/udp/udp_socket.h" 5 #include "net/udp/udp_socket.h"
6 6
7 #include "net/udp/udp_client_socket.h" 7 #include "net/udp/udp_client_socket.h"
8 #include "net/udp/udp_server_socket.h" 8 #include "net/udp/udp_server_socket.h"
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 TEST_F(UDPSocketTest, DISABLED_Broadcast) { 210 TEST_F(UDPSocketTest, DISABLED_Broadcast) {
211 #elif defined(OS_ANDROID) 211 #elif defined(OS_ANDROID)
212 // It is also disabled for Android because it is extremely flaky. 212 // It is also disabled for Android because it is extremely flaky.
213 // The first call to SendToSocket returns -109 (Address not reachable) 213 // The first call to SendToSocket returns -109 (Address not reachable)
214 // in some unpredictable cases. crbug.com/139144. 214 // in some unpredictable cases. crbug.com/139144.
215 TEST_F(UDPSocketTest, DISABLED_Broadcast) { 215 TEST_F(UDPSocketTest, DISABLED_Broadcast) {
216 #else 216 #else
217 TEST_F(UDPSocketTest, Broadcast) { 217 TEST_F(UDPSocketTest, Broadcast) {
218 #endif 218 #endif
219 const int kPort = 9999; 219 const int kPort = 9999;
220 std::string first_message("first message"), second_message("second message"); 220 std::string first_message("first message");
221 std::string second_message("second message");
222 std::string third_message("third message");
223 std::string fourth_message("fourth message");
221 224
222 IPEndPoint broadcast_address; 225 IPEndPoint broadcast_address;
223 CreateUDPAddress("255.255.255.255", kPort, &broadcast_address); 226 CreateUDPAddress("255.255.255.255", kPort, &broadcast_address);
224 IPEndPoint listen_address; 227 IPEndPoint listen_address;
225 CreateUDPAddress("0.0.0.0", kPort, &listen_address); 228 CreateUDPAddress("0.0.0.0", kPort, &listen_address);
226 229
227 CapturingNetLog server1_log, server2_log; 230 CapturingNetLog server1_log, server2_log;
228 scoped_ptr<UDPServerSocket> server1( 231 scoped_ptr<UDPServerSocket> server1(
229 new UDPServerSocket(&server1_log, NetLog::Source())); 232 new UDPServerSocket(&server1_log, NetLog::Source()));
230 scoped_ptr<UDPServerSocket> server2( 233 scoped_ptr<UDPServerSocket> server2(
231 new UDPServerSocket(&server2_log, NetLog::Source())); 234 new UDPServerSocket(&server2_log, NetLog::Source()));
232 server1->AllowAddressReuse(); 235 server1->AllowAddressReuse();
233 server1->AllowBroadcast(); 236 int rv = server1->SetBroadcast(true);
237 ASSERT_EQ(OK, rv);
234 server2->AllowAddressReuse(); 238 server2->AllowAddressReuse();
235 server2->AllowBroadcast(); 239 rv = server2->SetBroadcast(true);
240 ASSERT_EQ(OK, rv);
236 241
237 int rv = server1->Listen(listen_address); 242 rv = server1->Listen(listen_address);
238 EXPECT_EQ(OK, rv); 243 EXPECT_EQ(OK, rv);
239 rv = server2->Listen(listen_address); 244 rv = server2->Listen(listen_address);
240 EXPECT_EQ(OK, rv); 245 EXPECT_EQ(OK, rv);
241 246
242 rv = SendToSocket(server1.get(), first_message, broadcast_address); 247 rv = SendToSocket(server1.get(), first_message, broadcast_address);
243 ASSERT_EQ(static_cast<int>(first_message.size()), rv); 248 ASSERT_EQ(static_cast<int>(first_message.size()), rv);
244 std::string str = RecvFromSocket(server1.get()); 249 std::string str = RecvFromSocket(server1.get());
245 ASSERT_EQ(first_message, str); 250 ASSERT_EQ(first_message, str);
246 str = RecvFromSocket(server2.get()); 251 str = RecvFromSocket(server2.get());
247 ASSERT_EQ(first_message, str); 252 ASSERT_EQ(first_message, str);
248 253
249 rv = SendToSocket(server2.get(), second_message, broadcast_address); 254 rv = SendToSocket(server2.get(), second_message, broadcast_address);
250 ASSERT_EQ(static_cast<int>(second_message.size()), rv); 255 ASSERT_EQ(static_cast<int>(second_message.size()), rv);
251 str = RecvFromSocket(server1.get()); 256 str = RecvFromSocket(server1.get());
252 ASSERT_EQ(second_message, str); 257 ASSERT_EQ(second_message, str);
253 str = RecvFromSocket(server2.get()); 258 str = RecvFromSocket(server2.get());
254 ASSERT_EQ(second_message, str); 259 ASSERT_EQ(second_message, str);
260
261 rv = server1->SetBroadcast(false);
262 ASSERT_EQ(OK, rv);
263 rv = server2->SetBroadcast(false);
264 ASSERT_EQ(OK, rv);
265 rv = SendToSocket(server1.get(), third_message, broadcast_address);
266 ASSERT_LT(rv, 0);
267 rv = SendToSocket(server2.get(), fourth_message, broadcast_address);
268 ASSERT_LT(rv, 0);
255 } 269 }
256 270
257 // In this test, we verify that random binding logic works, which attempts 271 // In this test, we verify that random binding logic works, which attempts
258 // to bind to a random port and returns if succeeds, otherwise retries for 272 // to bind to a random port and returns if succeeds, otherwise retries for
259 // |kBindRetries| number of times. 273 // |kBindRetries| number of times.
260 274
261 // To generate the scenario, we first create |kBindRetries| number of 275 // To generate the scenario, we first create |kBindRetries| number of
262 // UDPClientSockets with default binding policy and connect to the same 276 // UDPClientSockets with default binding policy and connect to the same
263 // peer and save the used port numbers. Then we get rid of the last 277 // peer and save the used port numbers. Then we get rid of the last
264 // socket, making sure that the local port it was bound to is available. 278 // socket, making sure that the local port it was bound to is available.
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 g_expected_traffic_type = QOSTrafficTypeExcellentEffort; 746 g_expected_traffic_type = QOSTrafficTypeExcellentEffort;
733 EXPECT_EQ(OK, client.SetDiffServCodePoint(DSCP_NO_CHANGE)); 747 EXPECT_EQ(OK, client.SetDiffServCodePoint(DSCP_NO_CHANGE));
734 g_expected_dscp = DSCP_DEFAULT; 748 g_expected_dscp = DSCP_DEFAULT;
735 g_expected_traffic_type = QOSTrafficTypeBestEffort; 749 g_expected_traffic_type = QOSTrafficTypeBestEffort;
736 EXPECT_EQ(OK, client.SetDiffServCodePoint(DSCP_DEFAULT)); 750 EXPECT_EQ(OK, client.SetDiffServCodePoint(DSCP_DEFAULT));
737 client.Close(); 751 client.Close();
738 } 752 }
739 #endif 753 #endif
740 754
741 } // namespace net 755 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698