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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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, ParallelSend, filter); | 86 RUN_CALLBACK_TEST(TestUDPSocket, ParallelSend, filter); |
87 RUN_CALLBACK_TEST(TestUDPSocket, Multicast, filter); | |
87 } | 88 } |
88 | 89 |
89 std::string TestUDPSocket::GetLocalAddress(pp::NetAddress* address) { | 90 std::string TestUDPSocket::GetLocalAddress(pp::NetAddress* address) { |
90 pp::TCPSocket socket(instance_); | 91 pp::TCPSocket socket(instance_); |
91 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); | 92 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
92 callback.WaitForResult(socket.Connect(address_, callback.GetCallback())); | 93 callback.WaitForResult(socket.Connect(address_, callback.GetCallback())); |
93 CHECK_CALLBACK_BEHAVIOR(callback); | 94 CHECK_CALLBACK_BEHAVIOR(callback); |
94 ASSERT_EQ(PP_OK, callback.result()); | 95 ASSERT_EQ(PP_OK, callback.result()); |
95 *address = socket.GetLocalAddress(); | 96 *address = socket.GetLocalAddress(); |
96 ASSERT_NE(0, address->pp_resource()); | 97 ASSERT_NE(0, address->pp_resource()); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
179 &str)); | 180 &str)); |
180 | 181 |
181 callback.WaitForResult(rv); | 182 callback.WaitForResult(rv); |
182 CHECK_CALLBACK_BEHAVIOR(callback); | 183 CHECK_CALLBACK_BEHAVIOR(callback); |
183 ASSERT_FALSE(callback.result() < 0); | 184 ASSERT_FALSE(callback.result() < 0); |
184 ASSERT_EQ(message.size(), static_cast<size_t>(callback.result())); | 185 ASSERT_EQ(message.size(), static_cast<size_t>(callback.result())); |
185 ASSERT_EQ(message, str); | 186 ASSERT_EQ(message, str); |
186 PASS(); | 187 PASS(); |
187 } | 188 } |
188 | 189 |
190 std::string TestUDPSocket::SetMulticastOptions(pp::UDPSocket* socket) { | |
191 TestCompletionCallback callback_1(instance_->pp_instance(), callback_type()); | |
192 callback_1.WaitForResult(socket->SetOption( | |
193 PP_UDPSOCKET_OPTION_MULTICAST_LOOP, pp::Var(true), | |
194 callback_1.GetCallback())); | |
195 CHECK_CALLBACK_BEHAVIOR(callback_1); | |
196 ASSERT_EQ(PP_OK, callback_1.result()); | |
197 | |
198 TestCompletionCallback callback_2(instance_->pp_instance(), callback_type()); | |
199 callback_2.WaitForResult(socket->SetOption( | |
200 PP_UDPSOCKET_OPTION_MULTICAST_TTL, pp::Var(1), callback_2.GetCallback())); | |
201 CHECK_CALLBACK_BEHAVIOR(callback_2); | |
202 ASSERT_EQ(PP_OK, callback_2.result()); | |
203 | |
bbudge
2015/02/13 00:03:16
You should verify invalid types and values fail, e
etrunko
2015/02/13 20:19:58
Thankfully, TCP_Socket has similar test for differ
| |
204 PASS(); | |
205 } | |
206 | |
189 std::string TestUDPSocket::TestReadWrite() { | 207 std::string TestUDPSocket::TestReadWrite() { |
190 pp::UDPSocket server_socket(instance_), client_socket(instance_); | 208 pp::UDPSocket server_socket(instance_), client_socket(instance_); |
191 pp::NetAddress server_address, client_address; | 209 pp::NetAddress server_address, client_address; |
192 | 210 |
193 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&server_socket, | 211 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&server_socket, |
194 &server_address)); | 212 &server_address)); |
195 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&client_socket, | 213 ASSERT_SUBTEST_SUCCESS(LookupPortAndBindUDPSocket(&client_socket, |
196 &client_address)); | 214 &client_address)); |
197 const std::string message = "Simple message that will be sent via UDP"; | 215 const std::string message = "Simple message that will be sent via UDP"; |
198 pp::NetAddress recvfrom_address; | 216 pp::NetAddress recvfrom_address; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
253 | 271 |
254 server1.Close(); | 272 server1.Close(); |
255 server2.Close(); | 273 server2.Close(); |
256 PASS(); | 274 PASS(); |
257 } | 275 } |
258 | 276 |
259 std::string TestUDPSocket::TestSetOption() { | 277 std::string TestUDPSocket::TestSetOption() { |
260 pp::UDPSocket socket(instance_); | 278 pp::UDPSocket socket(instance_); |
261 | 279 |
262 ASSERT_SUBTEST_SUCCESS(SetBroadcastOptions(&socket)); | 280 ASSERT_SUBTEST_SUCCESS(SetBroadcastOptions(&socket)); |
281 ASSERT_SUBTEST_SUCCESS(SetMulticastOptions(&socket)); | |
263 | 282 |
264 // Try to pass incorrect option value's type. | 283 // Try to pass incorrect option value's type. |
265 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); | 284 TestCompletionCallback callback(instance_->pp_instance(), callback_type()); |
266 callback.WaitForResult(socket.SetOption( | 285 callback.WaitForResult(socket.SetOption( |
267 PP_UDPSOCKET_OPTION_ADDRESS_REUSE, pp::Var(1), callback.GetCallback())); | 286 PP_UDPSOCKET_OPTION_ADDRESS_REUSE, pp::Var(1), callback.GetCallback())); |
268 CHECK_CALLBACK_BEHAVIOR(callback); | 287 CHECK_CALLBACK_BEHAVIOR(callback); |
269 ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result()); | 288 ASSERT_EQ(PP_ERROR_BADARGUMENT, callback.result()); |
270 | 289 |
271 callback.WaitForResult(socket.SetOption( | 290 callback.WaitForResult(socket.SetOption( |
272 PP_UDPSOCKET_OPTION_BROADCAST, pp::Var(false), callback.GetCallback())); | 291 PP_UDPSOCKET_OPTION_BROADCAST, pp::Var(false), callback.GetCallback())); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
376 | 395 |
377 for (size_t i = 0; i < kParallelSends; i++) { | 396 for (size_t i = 0; i < kParallelSends; i++) { |
378 std::string str; | 397 std::string str; |
379 ASSERT_SUBTEST_SUCCESS( | 398 ASSERT_SUBTEST_SUCCESS( |
380 ReadSocket(&server_socket, &recvfrom_address, message.size(), &str)); | 399 ReadSocket(&server_socket, &recvfrom_address, message.size(), &str)); |
381 ASSERT_EQ(message, str); | 400 ASSERT_EQ(message, str); |
382 } | 401 } |
383 | 402 |
384 server_socket.Close(); | 403 server_socket.Close(); |
385 client_socket.Close(); | 404 client_socket.Close(); |
405 } | |
386 | 406 |
407 std::string TestUDPSocket::TestMulticast() { | |
408 pp::UDPSocket server1(instance_), server2(instance_); | |
409 | |
410 ASSERT_SUBTEST_SUCCESS(SetMulticastOptions(&server1)); | |
411 ASSERT_SUBTEST_SUCCESS(SetMulticastOptions(&server2)); | |
387 PASS(); | 412 PASS(); |
388 } | 413 } |
OLD | NEW |