OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ppapi/tests/test_udp_socket.h" | 5 #include "ppapi/tests/test_udp_socket.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "ppapi/cpp/pass_ref.h" | 9 #include "ppapi/cpp/pass_ref.h" |
10 #include "ppapi/cpp/tcp_socket.h" | 10 #include "ppapi/cpp/tcp_socket.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 net_address_is_available && | 76 net_address_is_available && |
77 init_address && | 77 init_address && |
78 CheckTestingInterface() && | 78 CheckTestingInterface() && |
79 EnsureRunningOverHTTP(); | 79 EnsureRunningOverHTTP(); |
80 } | 80 } |
81 | 81 |
82 void TestUDPSocket::RunTests(const std::string& filter) { | 82 void TestUDPSocket::RunTests(const std::string& filter) { |
83 RUN_CALLBACK_TEST(TestUDPSocket, ReadWrite, filter); | 83 RUN_CALLBACK_TEST(TestUDPSocket, ReadWrite, filter); |
84 RUN_CALLBACK_TEST(TestUDPSocket, Broadcast, filter); | 84 RUN_CALLBACK_TEST(TestUDPSocket, Broadcast, filter); |
85 RUN_CALLBACK_TEST(TestUDPSocket, SetOption, filter); | 85 RUN_CALLBACK_TEST(TestUDPSocket, SetOption, filter); |
| 86 RUN_CALLBACK_TEST(TestUDPSocket, Multicast, filter); |
86 } | 87 } |
87 | 88 |
88 std::string TestUDPSocket::GetLocalAddress(pp::NetAddress* address) { | 89 std::string TestUDPSocket::GetLocalAddress(pp::NetAddress* address) { |
89 pp::TCPSocket socket(instance_); | 90 pp::TCPSocket socket(instance_); |
90 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); | 91 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
91 callback.WaitForResult(socket.Connect(address_, callback.GetCallback())); | 92 callback.WaitForResult(socket.Connect(address_, callback.GetCallback())); |
92 CHECK_CALLBACK_BEHAVIOR(callback); | 93 CHECK_CALLBACK_BEHAVIOR(callback); |
93 ASSERT_EQ(PP_OK, callback.result()); | 94 ASSERT_EQ(PP_OK, callback.result()); |
94 *address = socket.GetLocalAddress(); | 95 *address = socket.GetLocalAddress(); |
95 ASSERT_NE(0, address->pp_resource()); | 96 ASSERT_NE(0, address->pp_resource()); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 &str)); | 179 &str)); |
179 | 180 |
180 callback.WaitForResult(rv); | 181 callback.WaitForResult(rv); |
181 CHECK_CALLBACK_BEHAVIOR(callback); | 182 CHECK_CALLBACK_BEHAVIOR(callback); |
182 ASSERT_FALSE(callback.result() < 0); | 183 ASSERT_FALSE(callback.result() < 0); |
183 ASSERT_EQ(message.size(), static_cast<size_t>(callback.result())); | 184 ASSERT_EQ(message.size(), static_cast<size_t>(callback.result())); |
184 ASSERT_EQ(message, str); | 185 ASSERT_EQ(message, str); |
185 PASS(); | 186 PASS(); |
186 } | 187 } |
187 | 188 |
| 189 std::string TestUDPSocket::SetMulticastOptions(pp::UDPSocket* socket) { |
| 190 TestCompletionCallback callback_1(instance_->pp_instance(), callback_type()); |
| 191 callback_1.WaitForResult(socket->SetOption( |
| 192 PP_UDPSOCKET_OPTION_MULTICAST_LOOP, pp::Var(true), |
| 193 callback_1.GetCallback())); |
| 194 CHECK_CALLBACK_BEHAVIOR(callback_1); |
| 195 ASSERT_EQ(PP_OK, callback_1.result()); |
| 196 |
| 197 TestCompletionCallback callback_2(instance_->pp_instance(), callback_type()); |
| 198 callback_2.WaitForResult(socket->SetOption( |
| 199 PP_UDPSOCKET_OPTION_MULTICAST_TTL, pp::Var(1), callback_2.GetCallback())); |
| 200 CHECK_CALLBACK_BEHAVIOR(callback_2); |
| 201 ASSERT_EQ(PP_OK, callback_2.result()); |
| 202 |
| 203 TestCompletionCallback callback_3(instance_->pp_instance(), callback_type()); |
| 204 callback_3.WaitForResult(socket->SetOption( |
| 205 PP_UDPSOCKET_OPTION_IF, pp::Var(1), callback_3.GetCallback())); |
| 206 CHECK_CALLBACK_BEHAVIOR(callback_3); |
| 207 ASSERT_EQ(PP_OK, callback_3.result()); |
| 208 |
| 209 PASS(); |
| 210 } |
| 211 |
188 std::string TestUDPSocket::TestReadWrite() { | 212 std::string TestUDPSocket::TestReadWrite() { |
189 pp::UDPSocket server_socket(instance_), client_socket(instance_); | 213 pp::UDPSocket server_socket(instance_), client_socket(instance_); |
190 pp::NetAddress server_address, client_address; | 214 pp::NetAddress server_address, client_address; |
191 | 215 |
192 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&server_socket, | 216 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&server_socket, |
193 &server_address)); | 217 &server_address)); |
194 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&client_socket, | 218 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&client_socket, |
195 &client_address)); | 219 &client_address)); |
196 const std::string message = "Simple message that will be sent via UDP"; | 220 const std::string message = "Simple message that will be sent via UDP"; |
197 pp::NetAddress recvfrom_address; | 221 pp::NetAddress recvfrom_address; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 | 276 |
253 server1.Close(); | 277 server1.Close(); |
254 server2.Close(); | 278 server2.Close(); |
255 PASS(); | 279 PASS(); |
256 } | 280 } |
257 | 281 |
258 std::string TestUDPSocket::TestSetOption() { | 282 std::string TestUDPSocket::TestSetOption() { |
259 pp::UDPSocket socket(instance_); | 283 pp::UDPSocket socket(instance_); |
260 | 284 |
261 ASSERT_SUBTEST_SUCCESS(SetBroadcastOptions(&socket)); | 285 ASSERT_SUBTEST_SUCCESS(SetBroadcastOptions(&socket)); |
| 286 ASSERT_SUBTEST_SUCCESS(SetMulticastOptions(&socket)); |
262 | 287 |
263 // Try to pass incorrect option value's type. | 288 // Try to pass incorrect option value's type. |
264 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); | 289 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
265 callback.WaitForResult(socket.SetOption( | 290 callback.WaitForResult(socket.SetOption( |
266 PP_UDPSOCKET_OPTION_ADDRESS_REUSE, pp::Var(1), callback.GetCallback())); | 291 PP_UDPSOCKET_OPTION_ADDRESS_REUSE, pp::Var(1), callback.GetCallback())); |
267 CHECK_CALLBACK_BEHAVIOR(callback); | 292 CHECK_CALLBACK_BEHAVIOR(callback); |
268 ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result()); | 293 ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result()); |
269 | 294 |
270 callback.WaitForResult(socket.SetOption( | 295 callback.WaitForResult(socket.SetOption( |
271 PP_UDPSOCKET_OPTION_BROADCAST, pp::Var(false), callback.GetCallback())); | 296 PP_UDPSOCKET_OPTION_BROADCAST, pp::Var(false), callback.GetCallback())); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 ASSERT_EQ(PP_OK, callback.result()); | 334 ASSERT_EQ(PP_OK, callback.result()); |
310 | 335 |
311 callback.WaitForResult(socket.SetOption( | 336 callback.WaitForResult(socket.SetOption( |
312 PP_UDPSOCKET_OPTION_RECV_BUFFER_SIZE, pp::Var(1024), | 337 PP_UDPSOCKET_OPTION_RECV_BUFFER_SIZE, pp::Var(1024), |
313 callback.GetCallback())); | 338 callback.GetCallback())); |
314 CHECK_CALLBACK_BEHAVIOR(callback); | 339 CHECK_CALLBACK_BEHAVIOR(callback); |
315 ASSERT_EQ(PP_OK, callback.result()); | 340 ASSERT_EQ(PP_OK, callback.result()); |
316 | 341 |
317 PASS(); | 342 PASS(); |
318 } | 343 } |
| 344 |
| 345 std::string TestUDPSocket::TestMulticast() { |
| 346 pp::UDPSocket server1(instance_), server2(instance_); |
| 347 |
| 348 ASSERT_SUBTEST_SUCCESS(SetMulticastOptions(&server1)); |
| 349 ASSERT_SUBTEST_SUCCESS(SetMulticastOptions(&server2)); |
| 350 PASS(); |
| 351 } |
OLD | NEW |