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

Unified Diff: net/udp/udp_socket_unittest.cc

Issue 10739002: Added broadcasting feature to UDP server sockets. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed Win code. Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: net/udp/udp_socket_unittest.cc
diff --git a/net/udp/udp_socket_unittest.cc b/net/udp/udp_socket_unittest.cc
index 1650709f58a6b63ae10f77214f6df9c834949bfc..2da866df97189af9455ebcfb8734b422c7bef0c7 100644
--- a/net/udp/udp_socket_unittest.cc
+++ b/net/udp/udp_socket_unittest.cc
@@ -201,6 +201,45 @@ TEST_F(UDPSocketTest, Connect) {
client_entries, 5, NetLog::TYPE_SOCKET_ALIVE));
}
+TEST_F(UDPSocketTest, Broadcast) {
+ const int kPort = 9999;
+ std::string first_message("first message"), second_message("second message");
+
+ IPEndPoint broadcast_address;
+ CreateUDPAddress("255.255.255.255", kPort, &broadcast_address);
+ IPEndPoint listen_address;
+ CreateUDPAddress("0.0.0.0", kPort, &listen_address);
+
+ CapturingNetLog server1_log, server2_log;
+ scoped_ptr<UDPServerSocket> server1(
+ new UDPServerSocket(&server1_log, NetLog::Source()));
+ scoped_ptr<UDPServerSocket> server2(
+ new UDPServerSocket(&server2_log, NetLog::Source()));
+ server1->AllowAddressReuse();
+ server1->AllowBroadcast();
+ server2->AllowAddressReuse();
+ server2->AllowBroadcast();
+
+ int rv = server1->Listen(listen_address);
+ EXPECT_EQ(OK, rv);
+ rv = server2->Listen(listen_address);
+ EXPECT_EQ(OK, rv);
+
+ rv = SendToSocket(server1.get(), first_message, broadcast_address);
+ EXPECT_EQ(static_cast<int>(first_message.size()), rv);
+ std::string str = RecvFromSocket(server1.get());
+ ASSERT_EQ(first_message, str);
+ str = RecvFromSocket(server2.get());
+ ASSERT_EQ(first_message, str);
+
+ rv = SendToSocket(server2.get(), second_message, broadcast_address);
+ EXPECT_EQ(static_cast<int>(second_message.size()), rv);
+ str = RecvFromSocket(server1.get());
+ ASSERT_EQ(second_message, str);
+ str = RecvFromSocket(server2.get());
+ ASSERT_EQ(second_message, str);
+}
+
// In this test, we verify that random binding logic works, which attempts
// to bind to a random port and returns if succeeds, otherwise retries for
// |kBindRetries| number of times.

Powered by Google App Engine
This is Rietveld 408576698