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..92e4e47306ca32ef7c78622dacb3d3cb65ff31a8 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()); |
} |
+#if defined(OS_ANDROID) |
+// Some Android devices does not support multicast socket. |
wtc
2013/04/22 19:19:53
Typo: does not => do not
socket => sockets
Bei Zhang
2013/04/23 17:26:53
Done.
|
+// Ones supporting multicast need WifiManager.MulitcastLock to enable it. |
wtc
2013/04/22 19:19:53
Typo: Ones => The ones
Bei Zhang
2013/04/23 17:26:53
Done.
|
+// http://goo.gl/jjAk9 |
+TEST_F(UDPSocketTest, DISABLED_JoinMulticastGroup) { |
+#else |
+TEST_F(UDPSocketTest, JoinMulticastGroup) { |
+#endif // defined(OS_ANDROID) |
wtc
2013/04/22 19:19:53
This is usually done as follows:
#if defined(OS_A
Bei Zhang
2013/04/23 17:26:53
Done.
|
+ const int kPort = 9999; |
+ const char* const kGroup = "237.132.100.17"; |
+ |
+ IPEndPoint bind_address; |
+ CreateUDPAddress("0.0.0.0", kPort, &bind_address); |
+ IPAddressNumber group_ip; |
+ EXPECT_TRUE(ParseIPLiteralToNumber(kGroup, &group_ip)); |
+ |
+ UDPSocket socket(DatagramSocket::DEFAULT_BIND, |
+ RandIntCallback(), |
+ NULL, |
+ NetLog::Source()); |
+ EXPECT_EQ(OK, socket.Bind(bind_address)); |
+ EXPECT_EQ(OK, socket.JoinGroup(group_ip)); |
+ // Joining group multiple times. |
+ EXPECT_NE(OK, socket.JoinGroup(group_ip)); |
wtc
2013/04/22 19:19:53
Why can't we check for a specific error code here
Bei Zhang
2013/04/23 17:26:53
The setsockopt function creates different errno on
wtc
2013/04/23 18:01:07
It is not necessary to get a consistent error code
|
+ EXPECT_EQ(OK, socket.LeaveGroup(group_ip)); |
+ // Leaving group multiple times. |
+ EXPECT_NE(OK, socket.LeaveGroup(group_ip)); |
+ |
+ socket.Close(); |
+} |
+ |
+TEST_F(UDPSocketTest, MulticastOptions) { |
+ const int kPort = 9999; |
+ IPEndPoint bind_address; |
+ CreateUDPAddress("0.0.0.0", kPort, &bind_address); |
+ |
+ UDPSocket socket(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)); |
+ |
+ socket.Close(); |
+} |
+ |
} // namespace |
} // namespace net |