OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/api/cast_channel/cast_transport.h" | 5 #include "extensions/browser/api/cast_channel/cast_transport.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <queue> | 10 #include <queue> |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 } | 139 } |
140 | 140 |
141 virtual int SetSendBufferSize(int32_t size) { | 141 virtual int SetSendBufferSize(int32_t size) { |
142 NOTREACHED(); | 142 NOTREACHED(); |
143 return 0; | 143 return 0; |
144 } | 144 } |
145 }; | 145 }; |
146 | 146 |
147 class CastTransportTest : public testing::Test { | 147 class CastTransportTest : public testing::Test { |
148 public: | 148 public: |
| 149 using ChannelError = ::cast_channel::ChannelError; |
| 150 using ChannelAuthType = ::cast_channel::ChannelAuthType; |
| 151 |
149 CastTransportTest() : logger_(new Logger()) { | 152 CastTransportTest() : logger_(new Logger()) { |
150 delegate_ = new MockCastTransportDelegate; | 153 delegate_ = new MockCastTransportDelegate; |
151 transport_.reset(new CastTransportImpl(&mock_socket_, kChannelId, | 154 transport_.reset(new CastTransportImpl(&mock_socket_, kChannelId, |
152 CreateIPEndPointForTest(), | 155 CreateIPEndPointForTest(), |
153 auth_type_, logger_)); | 156 auth_type_, logger_)); |
154 transport_->SetReadDelegate(base::WrapUnique(delegate_)); | 157 transport_->SetReadDelegate(base::WrapUnique(delegate_)); |
155 } | 158 } |
156 ~CastTransportTest() override {} | 159 ~CastTransportTest() override {} |
157 | 160 |
158 protected: | 161 protected: |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 output); | 237 output); |
235 } | 238 } |
236 | 239 |
237 TEST_F(CastTransportTest, TestWriteFailureAsync) { | 240 TEST_F(CastTransportTest, TestWriteFailureAsync) { |
238 CompletionQueue socket_cbs; | 241 CompletionQueue socket_cbs; |
239 CompleteHandler write_handler; | 242 CompleteHandler write_handler; |
240 CastMessage message = CreateCastMessage(); | 243 CastMessage message = CreateCastMessage(); |
241 EXPECT_CALL(mock_socket_, Write(NotNull(), _, _)).WillOnce( | 244 EXPECT_CALL(mock_socket_, Write(NotNull(), _, _)).WillOnce( |
242 DoAll(EnqueueCallback<2>(&socket_cbs), Return(net::ERR_IO_PENDING))); | 245 DoAll(EnqueueCallback<2>(&socket_cbs), Return(net::ERR_IO_PENDING))); |
243 EXPECT_CALL(write_handler, Complete(net::ERR_FAILED)); | 246 EXPECT_CALL(write_handler, Complete(net::ERR_FAILED)); |
244 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 247 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
245 transport_->SendMessage( | 248 transport_->SendMessage( |
246 message, | 249 message, |
247 base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler))); | 250 base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler))); |
248 RunPendingTasks(); | 251 RunPendingTasks(); |
249 socket_cbs.Pop(net::ERR_CONNECTION_RESET); | 252 socket_cbs.Pop(net::ERR_CONNECTION_RESET); |
250 RunPendingTasks(); | 253 RunPendingTasks(); |
251 EXPECT_EQ(proto::SOCKET_WRITE, logger_->GetLastErrors(kChannelId).event_type); | 254 EXPECT_EQ(proto::SOCKET_WRITE, logger_->GetLastErrors(kChannelId).event_type); |
252 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 255 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
253 logger_->GetLastErrors(kChannelId).net_return_value); | 256 logger_->GetLastErrors(kChannelId).net_return_value); |
254 } | 257 } |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 EXPECT_CALL(*delegate_, Start()); | 418 EXPECT_CALL(*delegate_, Start()); |
416 | 419 |
417 // Read bytes [0, 3]. | 420 // Read bytes [0, 3]. |
418 EXPECT_CALL(mock_socket_, | 421 EXPECT_CALL(mock_socket_, |
419 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) | 422 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) |
420 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), | 423 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), |
421 EnqueueCallback<2>(&socket_cbs), | 424 EnqueueCallback<2>(&socket_cbs), |
422 Return(net::ERR_IO_PENDING))) | 425 Return(net::ERR_IO_PENDING))) |
423 .RetiresOnSaturation(); | 426 .RetiresOnSaturation(); |
424 | 427 |
425 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 428 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
426 transport_->Start(); | 429 transport_->Start(); |
427 // Header read failure. | 430 // Header read failure. |
428 socket_cbs.Pop(net::ERR_CONNECTION_RESET); | 431 socket_cbs.Pop(net::ERR_CONNECTION_RESET); |
429 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); | 432 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); |
430 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 433 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
431 logger_->GetLastErrors(kChannelId).net_return_value); | 434 logger_->GetLastErrors(kChannelId).net_return_value); |
432 } | 435 } |
433 | 436 |
434 TEST_F(CastTransportTest, TestReadErrorInBodyAsync) { | 437 TEST_F(CastTransportTest, TestReadErrorInBodyAsync) { |
435 CompletionQueue socket_cbs; | 438 CompletionQueue socket_cbs; |
(...skipping 17 matching lines...) Expand all Loading... |
453 serialized_message.size() - | 456 serialized_message.size() - |
454 MessageFramer::MessageHeader::header_size(), | 457 MessageFramer::MessageHeader::header_size(), |
455 _)) | 458 _)) |
456 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 459 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
457 MessageFramer::MessageHeader::header_size(), | 460 MessageFramer::MessageHeader::header_size(), |
458 serialized_message.size() - | 461 serialized_message.size() - |
459 MessageFramer::MessageHeader::header_size() - 1)), | 462 MessageFramer::MessageHeader::header_size() - 1)), |
460 EnqueueCallback<2>(&socket_cbs), | 463 EnqueueCallback<2>(&socket_cbs), |
461 Return(net::ERR_IO_PENDING))) | 464 Return(net::ERR_IO_PENDING))) |
462 .RetiresOnSaturation(); | 465 .RetiresOnSaturation(); |
463 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 466 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
464 transport_->Start(); | 467 transport_->Start(); |
465 // Header read is OK. | 468 // Header read is OK. |
466 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); | 469 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); |
467 // Body read fails. | 470 // Body read fails. |
468 socket_cbs.Pop(net::ERR_CONNECTION_RESET); | 471 socket_cbs.Pop(net::ERR_CONNECTION_RESET); |
469 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); | 472 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); |
470 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 473 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
471 logger_->GetLastErrors(kChannelId).net_return_value); | 474 logger_->GetLastErrors(kChannelId).net_return_value); |
472 } | 475 } |
473 | 476 |
(...skipping 26 matching lines...) Expand all Loading... |
500 MessageFramer::MessageHeader::header_size(), | 503 MessageFramer::MessageHeader::header_size(), |
501 _)) | 504 _)) |
502 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 505 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
503 MessageFramer::MessageHeader::header_size(), | 506 MessageFramer::MessageHeader::header_size(), |
504 serialized_message.size() - | 507 serialized_message.size() - |
505 MessageFramer::MessageHeader::header_size() - 1)), | 508 MessageFramer::MessageHeader::header_size() - 1)), |
506 EnqueueCallback<2>(&socket_cbs), | 509 EnqueueCallback<2>(&socket_cbs), |
507 Return(net::ERR_IO_PENDING))) | 510 Return(net::ERR_IO_PENDING))) |
508 .RetiresOnSaturation(); | 511 .RetiresOnSaturation(); |
509 | 512 |
510 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_INVALID_MESSAGE)); | 513 EXPECT_CALL(*delegate_, OnError(ChannelError::INVALID_MESSAGE)); |
511 transport_->Start(); | 514 transport_->Start(); |
512 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); | 515 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); |
513 socket_cbs.Pop(serialized_message.size() - | 516 socket_cbs.Pop(serialized_message.size() - |
514 MessageFramer::MessageHeader::header_size()); | 517 MessageFramer::MessageHeader::header_size()); |
515 } | 518 } |
516 | 519 |
517 // ---------------------------------------------------------------------------- | 520 // ---------------------------------------------------------------------------- |
518 // Synchronous read tests | 521 // Synchronous read tests |
519 TEST_F(CastTransportTest, TestFullReadSync) { | 522 TEST_F(CastTransportTest, TestFullReadSync) { |
520 InSequence s; | 523 InSequence s; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); | 602 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); |
600 | 603 |
601 EXPECT_CALL(*delegate_, Start()); | 604 EXPECT_CALL(*delegate_, Start()); |
602 | 605 |
603 // Read bytes [0, 3]. | 606 // Read bytes [0, 3]. |
604 EXPECT_CALL(mock_socket_, | 607 EXPECT_CALL(mock_socket_, |
605 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) | 608 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) |
606 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), | 609 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), |
607 Return(net::ERR_CONNECTION_RESET))) | 610 Return(net::ERR_CONNECTION_RESET))) |
608 .RetiresOnSaturation(); | 611 .RetiresOnSaturation(); |
609 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 612 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
610 transport_->Start(); | 613 transport_->Start(); |
611 } | 614 } |
612 | 615 |
613 TEST_F(CastTransportTest, TestReadErrorInBodySync) { | 616 TEST_F(CastTransportTest, TestReadErrorInBodySync) { |
614 CastMessage message = CreateCastMessage(); | 617 CastMessage message = CreateCastMessage(); |
615 std::string serialized_message; | 618 std::string serialized_message; |
616 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); | 619 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); |
617 | 620 |
618 EXPECT_CALL(*delegate_, Start()); | 621 EXPECT_CALL(*delegate_, Start()); |
619 | 622 |
620 // Read bytes [0, 3]. | 623 // Read bytes [0, 3]. |
621 EXPECT_CALL(mock_socket_, | 624 EXPECT_CALL(mock_socket_, |
622 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) | 625 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) |
623 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), | 626 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), |
624 Return(MessageFramer::MessageHeader::header_size()))) | 627 Return(MessageFramer::MessageHeader::header_size()))) |
625 .RetiresOnSaturation(); | 628 .RetiresOnSaturation(); |
626 // Read bytes [4, n-1]. | 629 // Read bytes [4, n-1]. |
627 EXPECT_CALL(mock_socket_, | 630 EXPECT_CALL(mock_socket_, |
628 Read(NotNull(), | 631 Read(NotNull(), |
629 serialized_message.size() - | 632 serialized_message.size() - |
630 MessageFramer::MessageHeader::header_size(), | 633 MessageFramer::MessageHeader::header_size(), |
631 _)) | 634 _)) |
632 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 635 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
633 MessageFramer::MessageHeader::header_size(), | 636 MessageFramer::MessageHeader::header_size(), |
634 serialized_message.size() - | 637 serialized_message.size() - |
635 MessageFramer::MessageHeader::header_size() - 1)), | 638 MessageFramer::MessageHeader::header_size() - 1)), |
636 Return(net::ERR_CONNECTION_RESET))) | 639 Return(net::ERR_CONNECTION_RESET))) |
637 .RetiresOnSaturation(); | 640 .RetiresOnSaturation(); |
638 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 641 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
639 transport_->Start(); | 642 transport_->Start(); |
640 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); | 643 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); |
641 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 644 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
642 logger_->GetLastErrors(kChannelId).net_return_value); | 645 logger_->GetLastErrors(kChannelId).net_return_value); |
643 } | 646 } |
644 | 647 |
645 TEST_F(CastTransportTest, TestReadCorruptedMessageSync) { | 648 TEST_F(CastTransportTest, TestReadCorruptedMessageSync) { |
646 InSequence s; | 649 InSequence s; |
647 CastMessage message = CreateCastMessage(); | 650 CastMessage message = CreateCastMessage(); |
648 std::string serialized_message; | 651 std::string serialized_message; |
(...skipping 20 matching lines...) Expand all Loading... |
669 serialized_message.size() - | 672 serialized_message.size() - |
670 MessageFramer::MessageHeader::header_size(), | 673 MessageFramer::MessageHeader::header_size(), |
671 _)) | 674 _)) |
672 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 675 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
673 MessageFramer::MessageHeader::header_size(), | 676 MessageFramer::MessageHeader::header_size(), |
674 serialized_message.size() - | 677 serialized_message.size() - |
675 MessageFramer::MessageHeader::header_size() - 1)), | 678 MessageFramer::MessageHeader::header_size() - 1)), |
676 Return(serialized_message.size() - | 679 Return(serialized_message.size() - |
677 MessageFramer::MessageHeader::header_size()))) | 680 MessageFramer::MessageHeader::header_size()))) |
678 .RetiresOnSaturation(); | 681 .RetiresOnSaturation(); |
679 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_INVALID_MESSAGE)); | 682 EXPECT_CALL(*delegate_, OnError(ChannelError::INVALID_MESSAGE)); |
680 transport_->Start(); | 683 transport_->Start(); |
681 } | 684 } |
682 } // namespace cast_channel | 685 } // namespace cast_channel |
683 } // namespace api | 686 } // namespace api |
684 } // namespace extensions | 687 } // namespace extensions |
OLD | NEW |