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

Unified Diff: net/udp/udp_socket_unittest.cc

Issue 12684008: Multicast socket API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix code style Created 7 years, 8 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 09a28063f2050bd158d84808032946c1d1c282ff..81290de2bb8c9ff67f5c0dea14957f78b172e30b 100644
--- a/net/udp/udp_socket_unittest.cc
+++ b/net/udp/udp_socket_unittest.cc
@@ -526,6 +526,58 @@ TEST_F(UDPSocketTest, CloseWithPendingRead) {
EXPECT_FALSE(callback.have_result());
}
+TEST_F(UDPSocketTest, JoinMulticastGroup) {
+ const int kPort = 9999;
+ IPEndPoint bind_address;
+ CreateUDPAddress("0.0.0.0", kPort, &bind_address);
+
+ const char* kGroup = "237.132.100.17";
+ net::IPAddressNumber groupIp;
mmenke 2013/04/16 18:09:49 nit: group_ip
Bei Zhang 2013/04/17 17:53:03 Done.
+ EXPECT_TRUE(net::ParseIPLiteralToNumber(kGroup, &groupIp));
+
+ scoped_ptr<UDPSocket> socket(
+ new UDPSocket(DatagramSocket::DEFAULT_BIND,
+ RandIntCallback(),
+ NULL,
+ NetLog::Source()));
+ EXPECT_EQ(OK, socket->Bind(bind_address));
+ EXPECT_EQ(OK, socket->JoinGroup(groupIp));
+ EXPECT_NE(OK, socket->JoinGroup(groupIp)); // Joining group multiple times.
+ EXPECT_EQ(OK, socket->LeaveGroup(groupIp));
+ EXPECT_NE(OK, socket->LeaveGroup(groupIp)); // Leaving group multiple times.
+
+ socket->Close();
+}
+
+TEST_F(UDPSocketTest, MulticastOptions) {
+ const int kPort = 9999;
+ IPEndPoint bind_address;
+ CreateUDPAddress("0.0.0.0", kPort, &bind_address);
+
+ scoped_ptr<UDPSocket> socket(
+ new UDPSocket(DatagramSocket::DEFAULT_BIND,
+ RandIntCallback(),
+ NULL,
+ NetLog::Source()));
+ // Before binding.
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(false));
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(true));
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(0));
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(3));
+ EXPECT_NE(OK, socket->SetMulticastTimeToLive(-1));
+
+ EXPECT_EQ(OK, socket->Bind(bind_address));
+
+ // After binding.
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(false));
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(true));
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(0));
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(3));
+ EXPECT_NE(OK, socket->SetMulticastTimeToLive(-1));
+
+ socket->Close();
+}
+
} // namespace
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698