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

Side by Side Diff: remoting/protocol/jingle_session_unittest.cc

Issue 7508044: Remove video_channel() from Session interface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/file_path.h" 6 #include "base/file_path.h"
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
11 #include "crypto/nss_util.h" 11 #include "crypto/nss_util.h"
12 #include "net/base/completion_callback.h" 12 #include "net/base/completion_callback.h"
13 #include "net/base/io_buffer.h" 13 #include "net/base/io_buffer.h"
14 #include "net/base/net_errors.h" 14 #include "net/base/net_errors.h"
15 #include "net/socket/socket.h" 15 #include "net/socket/socket.h"
16 #include "net/socket/stream_socket.h"
16 #include "remoting/protocol/jingle_session.h" 17 #include "remoting/protocol/jingle_session.h"
17 #include "remoting/protocol/jingle_session_manager.h" 18 #include "remoting/protocol/jingle_session_manager.h"
18 #include "remoting/jingle_glue/jingle_thread.h" 19 #include "remoting/jingle_glue/jingle_thread.h"
19 #include "remoting/jingle_glue/fake_signal_strategy.h" 20 #include "remoting/jingle_glue/fake_signal_strategy.h"
20 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" 23 #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h"
23 24
24 using testing::_; 25 using testing::_;
25 using testing::AtMost; 26 using testing::AtMost;
(...skipping 20 matching lines...) Expand all
46 47
47 namespace { 48 namespace {
48 49
49 // Send 100 messages 1024 bytes each. UDP messages are sent with 10ms delay 50 // Send 100 messages 1024 bytes each. UDP messages are sent with 10ms delay
50 // between messages (about 1 second for 100 messages). 51 // between messages (about 1 second for 100 messages).
51 const int kMessageSize = 1024; 52 const int kMessageSize = 1024;
52 const int kMessages = 100; 53 const int kMessages = 100;
53 const int kTestDataSize = kMessages * kMessageSize; 54 const int kTestDataSize = kMessages * kMessageSize;
54 const int kUdpWriteDelayMs = 10; 55 const int kUdpWriteDelayMs = 10;
55 const char kTestToken[] = "a_dummy_token"; 56 const char kTestToken[] = "a_dummy_token";
57 const char kChannelName[] = "test_channel";
56 58
57 const char kHostJid[] = "host1@gmail.com/123"; 59 const char kHostJid[] = "host1@gmail.com/123";
58 const char kClientJid[] = "host2@gmail.com/321"; 60 const char kClientJid[] = "host2@gmail.com/321";
59 61
60 const char kTestHostPublicKey[] = 62 const char kTestHostPublicKey[] =
61 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3nk/8ILc0JBqHgOS0UCOIl4m" 63 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3nk/8ILc0JBqHgOS0UCOIl4m"
62 "0GUd2FIiZ/6Fc9D/iiyUgli+FIY5dwsrSoNJ87sYGifVDh8a5fdZNV5y58CcrapI5fJI" 64 "0GUd2FIiZ/6Fc9D/iiyUgli+FIY5dwsrSoNJ87sYGifVDh8a5fdZNV5y58CcrapI5fJI"
63 "FpXviSW4g8d/t1gcZkoz1ppmjzbgXm6ckw9Td0yRD0cHu732Ijs+eo8wT0pt4KiHkbyR" 65 "FpXviSW4g8d/t1gcZkoz1ppmjzbgXm6ckw9Td0yRD0cHu732Ijs+eo8wT0pt4KiHkbyR"
64 "iAvjrvkNDlfiEk7tiY7YzD9zTi3146GX6KLz5GQAd/3I8I5QW3ftF1s/m93AHuc383GZ" 66 "iAvjrvkNDlfiEk7tiY7YzD9zTi3146GX6KLz5GQAd/3I8I5QW3ftF1s/m93AHuc383GZ"
65 "A78Oi+IbcJf/jJUZO119VNnRKGiPsf5GZIoHyXX8O5OUQk5soKdQPeK1FwWkeZu6fuXl" 67 "A78Oi+IbcJf/jJUZO119VNnRKGiPsf5GZIoHyXX8O5OUQk5soKdQPeK1FwWkeZu6fuXl"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 209
208 EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _)) 210 EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _))
209 .WillOnce(DoAll( 211 .WillOnce(DoAll(
210 WithArg<0>(Invoke( 212 WithArg<0>(Invoke(
211 this, &JingleSessionTest::SetHostSession)), 213 this, &JingleSessionTest::SetHostSession)),
212 SetArgumentPointee<1>(protocol::SessionManager::ACCEPT))); 214 SetArgumentPointee<1>(protocol::SessionManager::ACCEPT)));
213 215
214 { 216 {
215 InSequence dummy; 217 InSequence dummy;
216 218
217 EXPECT_CALL(host_connection_callback_,
218 OnStateChange(Session::CONNECTING))
219 .Times(1);
220 if (shared_secret == kTestSharedSecret) { 219 if (shared_secret == kTestSharedSecret) {
221 EXPECT_CALL(host_connection_callback_, 220 EXPECT_CALL(host_connection_callback_,
222 OnStateChange(Session::CONNECTED)) 221 OnStateChange(Session::CONNECTED))
222 .Times(1);
223 EXPECT_CALL(host_connection_callback_,
224 OnStateChange(Session::CONNECTED_CHANNELS))
223 .Times(1) 225 .Times(1)
224 .WillOnce(QuitThreadOnCounter(&not_connected_peers)); 226 .WillOnce(QuitThreadOnCounter(&not_connected_peers));
225 // Expect that the connection will be closed eventually. 227 // Expect that the connection will be closed eventually.
226 EXPECT_CALL(host_connection_callback_, 228 EXPECT_CALL(host_connection_callback_,
227 OnStateChange(Session::CLOSED)) 229 OnStateChange(Session::CLOSED))
228 .Times(1); 230 .Times(1);
229 } else { 231 } else {
230 // Might pass through the CONNECTED state. 232 // Might pass through the CONNECTED state.
231 EXPECT_CALL(host_connection_callback_, 233 EXPECT_CALL(host_connection_callback_,
232 OnStateChange(Session::CONNECTED)) 234 OnStateChange(Session::CONNECTED))
233 .Times(AtMost(1)); 235 .Times(AtMost(1));
236 EXPECT_CALL(host_connection_callback_,
237 OnStateChange(Session::CONNECTED_CHANNELS))
238 .Times(AtMost(1));
234 // Expect that the connection will be closed eventually. 239 // Expect that the connection will be closed eventually.
235 EXPECT_CALL(host_connection_callback_, 240 EXPECT_CALL(host_connection_callback_,
236 OnStateChange(Session::FAILED)) 241 OnStateChange(Session::FAILED))
237 .Times(1) 242 .Times(1)
238 .WillOnce(InvokeWithoutArgs(&QuitCurrentThread)); 243 .WillOnce(InvokeWithoutArgs(&QuitCurrentThread));
239 } 244 }
240 } 245 }
241 246
242 { 247 {
243 InSequence dummy; 248 InSequence dummy;
244 249
245 EXPECT_CALL(client_connection_callback_, 250 EXPECT_CALL(client_connection_callback_,
246 OnStateChange(Session::CONNECTING)) 251 OnStateChange(Session::CONNECTING))
247 .Times(1); 252 .Times(1);
248 if (shared_secret == kTestSharedSecret) { 253 if (shared_secret == kTestSharedSecret) {
249 EXPECT_CALL(client_connection_callback_, 254 EXPECT_CALL(client_connection_callback_,
250 OnStateChange(Session::CONNECTED)) 255 OnStateChange(Session::CONNECTED))
256 .Times(1);
257 EXPECT_CALL(client_connection_callback_,
258 OnStateChange(Session::CONNECTED_CHANNELS))
251 .Times(1) 259 .Times(1)
252 .WillOnce(QuitThreadOnCounter(&not_connected_peers)); 260 .WillOnce(QuitThreadOnCounter(&not_connected_peers));
253 } else { 261 } else {
254 EXPECT_CALL(client_connection_callback_, 262 EXPECT_CALL(client_connection_callback_,
255 OnStateChange(Session::CONNECTED)) 263 OnStateChange(Session::CONNECTED))
256 .Times(AtMost(1)); 264 .Times(AtMost(1));
265 EXPECT_CALL(client_connection_callback_,
266 OnStateChange(Session::CONNECTED_CHANNELS))
267 .Times(AtMost(1));
257 } 268 }
258 // Expect that the connection will be closed eventually. 269 // Expect that the connection will be closed eventually.
259 EXPECT_CALL(client_connection_callback_, 270 EXPECT_CALL(client_connection_callback_,
260 OnStateChange(Session::CLOSED)) 271 OnStateChange(Session::CLOSED))
261 .Times(1); 272 .Times(1);
262 } 273 }
263 274
264 client_session_.reset(client_server_->Connect( 275 client_session_.reset(client_server_->Connect(
265 kHostJid, kTestHostPublicKey, kTestToken, 276 kHostJid, kTestHostPublicKey, kTestToken,
266 CandidateSessionConfig::CreateDefault(), 277 CandidateSessionConfig::CreateDefault(),
(...skipping 18 matching lines...) Expand all
285 MockSessionManagerListener client_server_listener_; 296 MockSessionManagerListener client_server_listener_;
286 297
287 scoped_ptr<Session> host_session_; 298 scoped_ptr<Session> host_session_;
288 MockSessionCallback host_connection_callback_; 299 MockSessionCallback host_connection_callback_;
289 scoped_ptr<Session> client_session_; 300 scoped_ptr<Session> client_session_;
290 MockSessionCallback client_connection_callback_; 301 MockSessionCallback client_connection_callback_;
291 }; 302 };
292 303
293 class ChannelTesterBase : public base::RefCountedThreadSafe<ChannelTesterBase> { 304 class ChannelTesterBase : public base::RefCountedThreadSafe<ChannelTesterBase> {
294 public: 305 public:
295 enum ChannelType {
296 CONTROL,
297 EVENT,
298 VIDEO,
299 VIDEO_RTP,
300 VIDEO_RTCP,
301 };
302
303 ChannelTesterBase(Session* host_session, 306 ChannelTesterBase(Session* host_session,
304 Session* client_session) 307 Session* client_session)
305 : host_session_(host_session), 308 : host_session_(host_session),
306 client_session_(client_session), 309 client_session_(client_session),
307 done_(false) { 310 done_(false) {
308 } 311 }
309 312
310 virtual ~ChannelTesterBase() { } 313 virtual ~ChannelTesterBase() { }
311 314
312 void Start(ChannelType channel) { 315 void Start() {
313 MessageLoop::current()->PostTask( 316 MessageLoop::current()->PostTask(
314 FROM_HERE, NewRunnableMethod(this, &ChannelTesterBase::DoStart, 317 FROM_HERE, NewRunnableMethod(this, &ChannelTesterBase::DoStart));
315 channel));
316 } 318 }
317 319
318 bool WaitFinished() { 320 bool WaitFinished() {
319 return RunMessageLoopWithTimeout(TestTimeouts::action_max_timeout_ms()); 321 return RunMessageLoopWithTimeout(TestTimeouts::action_max_timeout_ms());
320 } 322 }
321 323
322 virtual void CheckResults() = 0; 324 virtual void CheckResults() = 0;
323 325
324 protected: 326 protected:
325 void DoStart(ChannelType channel) { 327 void DoStart() {
326 socket_1_ = SelectChannel(host_session_, channel); 328 InitChannels();
327 socket_2_ = SelectChannel(client_session_, channel); 329 }
328 330
329 InitBuffers(); 331 virtual void InitChannels() = 0;
330 DoRead();
331 DoWrite();
332 }
333 332
334 void Done() { 333 void Done() {
335 done_ = true; 334 done_ = true;
336 MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitCurrentThread)); 335 MessageLoop::current()->PostTask(FROM_HERE, base::Bind(&QuitCurrentThread));
337 } 336 }
338 337
339 virtual void InitBuffers() = 0; 338 virtual void InitBuffers() = 0;
340 virtual void DoWrite() = 0; 339 virtual void DoWrite() = 0;
341 virtual void DoRead() = 0; 340 virtual void DoRead() = 0;
342 341
343 net::Socket* SelectChannel(Session* session,
344 ChannelType channel) {
345 switch (channel) {
346 case CONTROL:
347 return session->control_channel();
348 case EVENT:
349 return session->event_channel();
350 case VIDEO:
351 return session->video_channel();
352 case VIDEO_RTP:
353 return session->video_rtp_channel();
354 case VIDEO_RTCP:
355 return session->video_rtcp_channel();
356 default:
357 NOTREACHED();
358 return NULL;
359 }
360 }
361
362 Session* host_session_; 342 Session* host_session_;
363 Session* client_session_; 343 Session* client_session_;
364 net::Socket* socket_1_; 344 scoped_ptr<net::Socket> sockets_[2];
365 net::Socket* socket_2_;
366 bool done_; 345 bool done_;
367 }; 346 };
368 347
369 class TCPChannelTester : public ChannelTesterBase { 348 class TCPChannelTester : public ChannelTesterBase {
370 public: 349 public:
371 TCPChannelTester(Session* host_session, 350 TCPChannelTester(Session* host_session,
372 Session* client_session, 351 Session* client_session,
373 int message_size, 352 int message_size,
374 int message_count) 353 int message_count)
375 : ChannelTesterBase(host_session, client_session), 354 : ChannelTesterBase(host_session, client_session),
(...skipping 17 matching lines...) Expand all
393 ASSERT_EQ(test_data_size_, input_buffer_->offset()); 372 ASSERT_EQ(test_data_size_, input_buffer_->offset());
394 373
395 output_buffer_->SetOffset(0); 374 output_buffer_->SetOffset(0);
396 ASSERT_EQ(test_data_size_, output_buffer_->size()); 375 ASSERT_EQ(test_data_size_, output_buffer_->size());
397 376
398 EXPECT_EQ(0, memcmp(output_buffer_->data(), 377 EXPECT_EQ(0, memcmp(output_buffer_->data(),
399 input_buffer_->StartOfBuffer(), test_data_size_)); 378 input_buffer_->StartOfBuffer(), test_data_size_));
400 } 379 }
401 380
402 protected: 381 protected:
382 virtual void InitChannels() OVERRIDE {
383 host_session_->CreateStreamChannel(
384 kChannelName,
385 base::Bind(&TCPChannelTester::OnChannelReady,
386 base::Unretained(this), 0));
387 client_session_->CreateStreamChannel(
388 kChannelName,
389 base::Bind(&TCPChannelTester::OnChannelReady,
390 base::Unretained(this), 1));
391 }
392
393 void OnChannelReady(int id, const std::string name,
394 net::StreamSocket* socket) {
395 ASSERT_TRUE(socket);
396 ASSERT_EQ(name, kChannelName);
397 if (!socket) {
398 Done();
399 return;
400 }
401
402 DCHECK(id >= 0 && id < 2);
403 sockets_[id].reset(socket);
404
405 if (sockets_[0].get() && sockets_[1].get()) {
406 InitBuffers();
407 DoRead();
408 DoWrite();
409 }
410 }
411
403 virtual void InitBuffers() { 412 virtual void InitBuffers() {
404 output_buffer_ = new net::DrainableIOBuffer( 413 output_buffer_ = new net::DrainableIOBuffer(
405 new net::IOBuffer(test_data_size_), test_data_size_); 414 new net::IOBuffer(test_data_size_), test_data_size_);
406 memset(output_buffer_->data(), 123, test_data_size_); 415 memset(output_buffer_->data(), 123, test_data_size_);
407 416
408 input_buffer_ = new net::GrowableIOBuffer(); 417 input_buffer_ = new net::GrowableIOBuffer();
409 } 418 }
410 419
411 virtual void DoWrite() { 420 virtual void DoWrite() {
412 int result = 1; 421 int result = 1;
413 while (result > 0) { 422 while (result > 0) {
414 if (output_buffer_->BytesRemaining() == 0) 423 if (output_buffer_->BytesRemaining() == 0)
415 break; 424 break;
416 int bytes_to_write = std::min(output_buffer_->BytesRemaining(), 425 int bytes_to_write = std::min(output_buffer_->BytesRemaining(),
417 message_size_); 426 message_size_);
418 result = socket_1_->Write(output_buffer_, bytes_to_write, &write_cb_); 427 result = sockets_[0]->Write(output_buffer_, bytes_to_write, &write_cb_);
419 HandleWriteResult(result); 428 HandleWriteResult(result);
420 }; 429 };
421 } 430 }
422 431
423 void OnWritten(int result) { 432 void OnWritten(int result) {
424 HandleWriteResult(result); 433 HandleWriteResult(result);
425 DoWrite(); 434 DoWrite();
426 } 435 }
427 436
428 void HandleWriteResult(int result) { 437 void HandleWriteResult(int result) {
429 if (result <= 0 && result != net::ERR_IO_PENDING) { 438 if (result <= 0 && result != net::ERR_IO_PENDING) {
430 LOG(ERROR) << "Received error " << result << " when trying to write"; 439 LOG(ERROR) << "Received error " << result << " when trying to write";
431 write_errors_++; 440 write_errors_++;
432 Done(); 441 Done();
433 } else if (result > 0) { 442 } else if (result > 0) {
434 output_buffer_->DidConsume(result); 443 output_buffer_->DidConsume(result);
435 } 444 }
436 } 445 }
437 446
438 virtual void DoRead() { 447 virtual void DoRead() {
439 int result = 1; 448 int result = 1;
440 while (result > 0) { 449 while (result > 0) {
441 input_buffer_->SetCapacity(input_buffer_->offset() + message_size_); 450 input_buffer_->SetCapacity(input_buffer_->offset() + message_size_);
442 result = socket_2_->Read(input_buffer_, message_size_, &read_cb_); 451 result = sockets_[1]->Read(input_buffer_, message_size_, &read_cb_);
443 HandleReadResult(result); 452 HandleReadResult(result);
444 }; 453 };
445 } 454 }
446 455
447 void OnRead(int result) { 456 void OnRead(int result) {
448 HandleReadResult(result); 457 HandleReadResult(result);
449 if (!done_) 458 if (!done_)
450 DoRead(); // Don't try to read again when we are done reading. 459 DoRead(); // Don't try to read again when we are done reading.
451 } 460 }
452 461
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 538
530 EXPECT_EQ(0, broken_packets_); 539 EXPECT_EQ(0, broken_packets_);
531 540
532 // Verify that we've received at least one packet. 541 // Verify that we've received at least one packet.
533 EXPECT_GT(packets_received_, 0); 542 EXPECT_GT(packets_received_, 0);
534 LOG(INFO) << "Received " << packets_received_ << " packets out of " 543 LOG(INFO) << "Received " << packets_received_ << " packets out of "
535 << kMessages; 544 << kMessages;
536 } 545 }
537 546
538 protected: 547 protected:
548 virtual void InitChannels() OVERRIDE {
549 host_session_->CreateDatagramChannel(
550 kChannelName,
551 base::Bind(&UDPChannelTester::OnChannelReady,
552 base::Unretained(this), 0));
553 client_session_->CreateDatagramChannel(
554 kChannelName,
555 base::Bind(&UDPChannelTester::OnChannelReady,
556 base::Unretained(this), 1));
557 }
558
559 void OnChannelReady(int id, const std::string name, net::Socket* socket) {
560 ASSERT_TRUE(socket);
561 ASSERT_EQ(name, kChannelName);
562 if (!socket) {
563 Done();
564 return;
565 }
566
567 DCHECK(id >= 0 && id < 2);
568 sockets_[id].reset(socket);
569
570 if (sockets_[0].get() && sockets_[1].get()) {
571 InitBuffers();
572 DoRead();
573 DoWrite();
574 }
575 }
576
577
539 virtual void InitBuffers() { 578 virtual void InitBuffers() {
540 } 579 }
541 580
542 virtual void DoWrite() { 581 virtual void DoWrite() {
543 if (packets_sent_ >= kMessages) { 582 if (packets_sent_ >= kMessages) {
544 Done(); 583 Done();
545 return; 584 return;
546 } 585 }
547 586
548 scoped_refptr<net::IOBuffer> packet(new net::IOBuffer(kMessageSize)); 587 scoped_refptr<net::IOBuffer> packet(new net::IOBuffer(kMessageSize));
549 memset(packet->data(), 123, kMessageSize); 588 memset(packet->data(), 123, kMessageSize);
550 sent_packets_[packets_sent_] = packet; 589 sent_packets_[packets_sent_] = packet;
551 // Put index of this packet in the beginning of the packet body. 590 // Put index of this packet in the beginning of the packet body.
552 memcpy(packet->data(), &packets_sent_, sizeof(packets_sent_)); 591 memcpy(packet->data(), &packets_sent_, sizeof(packets_sent_));
553 592
554 int result = socket_1_->Write(packet, kMessageSize, &write_cb_); 593 int result = sockets_[0]->Write(packet, kMessageSize, &write_cb_);
555 HandleWriteResult(result); 594 HandleWriteResult(result);
556 } 595 }
557 596
558 void OnWritten(int result) { 597 void OnWritten(int result) {
559 HandleWriteResult(result); 598 HandleWriteResult(result);
560 } 599 }
561 600
562 void HandleWriteResult(int result) { 601 void HandleWriteResult(int result) {
563 if (result <= 0 && result != net::ERR_IO_PENDING) { 602 if (result <= 0 && result != net::ERR_IO_PENDING) {
564 LOG(ERROR) << "Received error " << result << " when trying to write"; 603 LOG(ERROR) << "Received error " << result << " when trying to write";
565 write_errors_++; 604 write_errors_++;
566 Done(); 605 Done();
567 } else if (result > 0) { 606 } else if (result > 0) {
568 EXPECT_EQ(kMessageSize, result); 607 EXPECT_EQ(kMessageSize, result);
569 packets_sent_++; 608 packets_sent_++;
570 MessageLoop::current()->PostDelayedTask( 609 MessageLoop::current()->PostDelayedTask(
571 FROM_HERE, NewRunnableMethod(this, &UDPChannelTester::DoWrite), 610 FROM_HERE, NewRunnableMethod(this, &UDPChannelTester::DoWrite),
572 kUdpWriteDelayMs); 611 kUdpWriteDelayMs);
573 } 612 }
574 } 613 }
575 614
576 virtual void DoRead() { 615 virtual void DoRead() {
577 int result = 1; 616 int result = 1;
578 while (result > 0) { 617 while (result > 0) {
579 int kReadSize = kMessageSize * 2; 618 int kReadSize = kMessageSize * 2;
580 read_buffer_ = new net::IOBuffer(kReadSize); 619 read_buffer_ = new net::IOBuffer(kReadSize);
581 620
582 result = socket_2_->Read(read_buffer_, kReadSize, &read_cb_); 621 result = sockets_[1]->Read(read_buffer_, kReadSize, &read_cb_);
583 HandleReadResult(result); 622 HandleReadResult(result);
584 }; 623 };
585 } 624 }
586 625
587 void OnRead(int result) { 626 void OnRead(int result) {
588 HandleReadResult(result); 627 HandleReadResult(result);
589 DoRead(); 628 DoRead();
590 } 629 }
591 630
592 void HandleReadResult(int result) { 631 void HandleReadResult(int result) {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 ASSERT_TRUE(InitiateConnection(kTestSharedSecret)); 710 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
672 } 711 }
673 712
674 // Verify that we can't connect two endpoints with mismatched secrets. 713 // Verify that we can't connect two endpoints with mismatched secrets.
675 TEST_F(JingleSessionTest, ConnectBadChannelAuth) { 714 TEST_F(JingleSessionTest, ConnectBadChannelAuth) {
676 CreateServerPair(); 715 CreateServerPair();
677 ASSERT_TRUE(InitiateConnection(kTestSharedSecretBad)); 716 ASSERT_TRUE(InitiateConnection(kTestSharedSecretBad));
678 } 717 }
679 718
680 // Verify that data can be transmitted over the event channel. 719 // Verify that data can be transmitted over the event channel.
681 TEST_F(JingleSessionTest, TestControlChannel) { 720 TEST_F(JingleSessionTest, TestTcpChannel) {
682 CreateServerPair(); 721 CreateServerPair();
683 ASSERT_TRUE(InitiateConnection(kTestSharedSecret)); 722 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
684 scoped_refptr<TCPChannelTester> tester( 723 scoped_refptr<TCPChannelTester> tester(
685 new TCPChannelTester(host_session_.get(), client_session_.get(), 724 new TCPChannelTester(host_session_.get(), client_session_.get(),
686 kMessageSize, kMessages)); 725 kMessageSize, kMessages));
687 tester->Start(ChannelTesterBase::CONTROL); 726 tester->Start();
688 ASSERT_TRUE(tester->WaitFinished()); 727 ASSERT_TRUE(tester->WaitFinished());
689 tester->CheckResults(); 728 tester->CheckResults();
690 729
691 // Connections must be closed while |tester| still exists.
692 CloseSessions();
693 }
694
695 // Verify that data can be transmitted over the video channel.
696 TEST_F(JingleSessionTest, TestVideoChannel) {
697 CreateServerPair();
698 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
699 scoped_refptr<TCPChannelTester> tester(
700 new TCPChannelTester(host_session_.get(), client_session_.get(),
701 kMessageSize, kMessageSize));
702 tester->Start(ChannelTesterBase::VIDEO);
703 ASSERT_TRUE(tester->WaitFinished());
704 tester->CheckResults();
705
706 // Connections must be closed while |tester| still exists.
707 CloseSessions();
708 }
709
710 // Verify that data can be transmitted over the event channel.
711 TEST_F(JingleSessionTest, TestEventChannel) {
712 CreateServerPair();
713 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
714 scoped_refptr<TCPChannelTester> tester(
715 new TCPChannelTester(host_session_.get(), client_session_.get(),
716 kMessageSize, kMessageSize));
717 tester->Start(ChannelTesterBase::EVENT);
718 ASSERT_TRUE(tester->WaitFinished());
719 tester->CheckResults();
720
721 // Connections must be closed while |tester| still exists. 730 // Connections must be closed while |tester| still exists.
722 CloseSessions(); 731 CloseSessions();
723 } 732 }
724 733
725 // Verify that data can be transmitted over the video RTP channel. 734 // Verify that data can be transmitted over the video RTP channel.
726 // Disabled because RTP support is disabled, see crbug.com/91538 . 735 TEST_F(JingleSessionTest, TestUdpChannel) {
727 TEST_F(JingleSessionTest, DISABLED_TestVideoRtpChannel) {
728 CreateServerPair(); 736 CreateServerPair();
729 ASSERT_TRUE(InitiateConnection(kTestSharedSecret)); 737 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
730 scoped_refptr<UDPChannelTester> tester( 738 scoped_refptr<UDPChannelTester> tester(
731 new UDPChannelTester(host_session_.get(), client_session_.get())); 739 new UDPChannelTester(host_session_.get(), client_session_.get()));
732 tester->Start(ChannelTesterBase::VIDEO_RTP); 740 tester->Start();
733 ASSERT_TRUE(tester->WaitFinished()); 741 ASSERT_TRUE(tester->WaitFinished());
734 tester->CheckResults(); 742 tester->CheckResults();
735 743
736 // Connections must be closed while |tester| still exists. 744 // Connections must be closed while |tester| still exists.
737 CloseSessions(); 745 CloseSessions();
738 } 746 }
739 747
740 // Send packets of different size to get the latency for sending data 748 // Send packets of different size to get the latency for sending data
741 // using sockets from JingleSession. 749 // using sockets from JingleSession.
742 TEST_F(JingleSessionTest, TestSpeed) { 750 TEST_F(JingleSessionTest, TestSpeed) {
743 CreateServerPair(); 751 CreateServerPair();
744 ASSERT_TRUE(InitiateConnection(kTestSharedSecret)); 752 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
745 scoped_refptr<ChannelSpeedTester> tester; 753 scoped_refptr<ChannelSpeedTester> tester;
746 754
747 tester = new ChannelSpeedTester(host_session_.get(), 755 tester = new ChannelSpeedTester(host_session_.get(),
748 client_session_.get(), 512); 756 client_session_.get(), 512);
749 tester->Start(ChannelTesterBase::VIDEO); 757 tester->Start();
750 ASSERT_TRUE(tester->WaitFinished()); 758 ASSERT_TRUE(tester->WaitFinished());
751 LOG(INFO) << "Time for 512 bytes " 759 LOG(INFO) << "Time for 512 bytes "
752 << tester->GetElapsedTime().InMilliseconds() << " ms."; 760 << tester->GetElapsedTime().InMilliseconds() << " ms.";
753 761
762 CloseSessions();
763 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
764
754 tester = new ChannelSpeedTester(host_session_.get(), 765 tester = new ChannelSpeedTester(host_session_.get(),
755 client_session_.get(), 1024); 766 client_session_.get(), 1024);
756 tester->Start(ChannelTesterBase::VIDEO); 767 tester->Start();
757 ASSERT_TRUE(tester->WaitFinished()); 768 ASSERT_TRUE(tester->WaitFinished());
758 LOG(INFO) << "Time for 1024 bytes " 769 LOG(INFO) << "Time for 1024 bytes "
759 << tester->GetElapsedTime().InMilliseconds() << " ms."; 770 << tester->GetElapsedTime().InMilliseconds() << " ms.";
760 771
772 CloseSessions();
773 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
774
761 tester = new ChannelSpeedTester(host_session_.get(), 775 tester = new ChannelSpeedTester(host_session_.get(),
762 client_session_.get(), 51200); 776 client_session_.get(), 51200);
763 tester->Start(ChannelTesterBase::VIDEO); 777 tester->Start();
764 ASSERT_TRUE(tester->WaitFinished()); 778 ASSERT_TRUE(tester->WaitFinished());
765 LOG(INFO) << "Time for 50k bytes " 779 LOG(INFO) << "Time for 50k bytes "
766 << tester->GetElapsedTime().InMilliseconds() << " ms."; 780 << tester->GetElapsedTime().InMilliseconds() << " ms.";
767 781
782 CloseSessions();
783 ASSERT_TRUE(InitiateConnection(kTestSharedSecret));
784
768 tester = new ChannelSpeedTester(host_session_.get(), 785 tester = new ChannelSpeedTester(host_session_.get(),
769 client_session_.get(), 512000); 786 client_session_.get(), 512000);
770 tester->Start(ChannelTesterBase::VIDEO); 787 tester->Start();
771 ASSERT_TRUE(tester->WaitFinished()); 788 ASSERT_TRUE(tester->WaitFinished());
772 LOG(INFO) << "Time for 500k bytes " 789 LOG(INFO) << "Time for 500k bytes "
773 << tester->GetElapsedTime().InMilliseconds() << " ms."; 790 << tester->GetElapsedTime().InMilliseconds() << " ms.";
774 791
775 // Connections must be closed while |tester| still exists. 792 // Connections must be closed while |tester| still exists.
776 CloseSessions(); 793 CloseSessions();
777 } 794 }
778 795
779 } // namespace protocol 796 } // namespace protocol
780 } // namespace remoting 797 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698