Chromium Code Reviews| 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 |