| Index: blimp/net/blimp_message_pump_unittest.cc
|
| diff --git a/blimp/net/blimp_message_pump_unittest.cc b/blimp/net/blimp_message_pump_unittest.cc
|
| index 7f9ab114707549a294fd4c376a4661034dcb3a5c..20760af2376fd62dcd70da21488029f094e7cb22 100644
|
| --- a/blimp/net/blimp_message_pump_unittest.cc
|
| +++ b/blimp/net/blimp_message_pump_unittest.cc
|
| @@ -50,60 +50,34 @@ class BlimpMessagePumpTest : public testing::Test {
|
| scoped_ptr<BlimpMessagePump> message_pump_;
|
| };
|
|
|
| -// Reader completes reading one packet synchronously.
|
| -TEST_F(BlimpMessagePumpTest, SyncPacketRead) {
|
| - EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _));
|
| - EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| - .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - Return(message1_->ByteSize())));
|
| - message_pump_->SetMessageProcessor(&receiver_);
|
| -}
|
| -
|
| -// Reader completes reading two packets synchronously.
|
| -TEST_F(BlimpMessagePumpTest, SyncTwoPacketsRead) {
|
| - EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| - .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - Return(message1_->ByteSize())))
|
| - .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()),
|
| - Return(message2_->ByteSize())));
|
| - net::CompletionCallback process_msg_cb;
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
|
| - .WillOnce(SaveArg<1>(&process_msg_cb))
|
| - .RetiresOnSaturation();
|
| - EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message2_), _));
|
| - }
|
| - message_pump_->SetMessageProcessor(&receiver_);
|
| -
|
| - // Trigger next packet read
|
| - process_msg_cb.Run(net::OK);
|
| -}
|
| -
|
| // Reader completes reading one packet asynchronously.
|
| -TEST_F(BlimpMessagePumpTest, AsyncPacketRead) {
|
| +TEST_F(BlimpMessagePumpTest, ReadPacket) {
|
| net::CompletionCallback read_packet_cb;
|
| + EXPECT_CALL(reader_, ReadPacket(NotNull(), _));
|
| EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - SaveArg<1>(&read_packet_cb), Return(net::ERR_IO_PENDING)))
|
| - .WillOnce(Return(net::ERR_IO_PENDING));
|
| + SetBufferOffset<0>(message1_->ByteSize()),
|
| + SaveArg<1>(&read_packet_cb)))
|
| + .RetiresOnSaturation();
|
| net::CompletionCallback process_msg_cb;
|
| EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
|
| .WillOnce(SaveArg<1>(&process_msg_cb));
|
| message_pump_->SetMessageProcessor(&receiver_);
|
| - read_packet_cb.Run(message1_->ByteSize());
|
| + ASSERT_FALSE(read_packet_cb.is_null());
|
| + base::ResetAndReturn(&read_packet_cb).Run(net::OK);
|
| process_msg_cb.Run(net::OK);
|
| }
|
|
|
| // Reader completes reading two packets asynchronously.
|
| -TEST_F(BlimpMessagePumpTest, AsyncTwoPacketsRead) {
|
| +TEST_F(BlimpMessagePumpTest, ReadTwoPackets) {
|
| net::CompletionCallback read_packet_cb;
|
| EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - SaveArg<1>(&read_packet_cb), Return(net::ERR_IO_PENDING)))
|
| + SetBufferOffset<0>(message1_->ByteSize()),
|
| + SaveArg<1>(&read_packet_cb)))
|
| .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()),
|
| - SaveArg<1>(&read_packet_cb),
|
| - Return(net::ERR_IO_PENDING)));
|
| + SetBufferOffset<0>(message2_->ByteSize()),
|
| + SaveArg<1>(&read_packet_cb)));
|
| net::CompletionCallback process_msg_cb;
|
| {
|
| InSequence s;
|
| @@ -113,77 +87,54 @@ TEST_F(BlimpMessagePumpTest, AsyncTwoPacketsRead) {
|
| EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message2_), _));
|
| }
|
| message_pump_->SetMessageProcessor(&receiver_);
|
| - read_packet_cb.Run(message1_->ByteSize());
|
| + ASSERT_FALSE(read_packet_cb.is_null());
|
| + base::ResetAndReturn(&read_packet_cb).Run(net::OK);
|
|
|
| // Trigger next packet read
|
| process_msg_cb.Run(net::OK);
|
| - read_packet_cb.Run(message2_->ByteSize());
|
| + ASSERT_FALSE(read_packet_cb.is_null());
|
| + base::ResetAndReturn(&read_packet_cb).Run(net::OK);
|
| }
|
|
|
| // Reader completes reading two packets asynchronously.
|
| // The first read succeeds, and the second fails.
|
| -TEST_F(BlimpMessagePumpTest, AsyncTwoPacketsReadWithError) {
|
| +TEST_F(BlimpMessagePumpTest, ReadTwoPacketsWithError) {
|
| + net::CompletionCallback process_msg_cb;
|
| net::CompletionCallback read_packet_cb;
|
| EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - SaveArg<1>(&read_packet_cb), Return(net::ERR_IO_PENDING)))
|
| + SetBufferOffset<0>(message1_->ByteSize()),
|
| + SaveArg<1>(&read_packet_cb)))
|
| .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()),
|
| - SaveArg<1>(&read_packet_cb),
|
| - Return(net::ERR_IO_PENDING)));
|
| - net::CompletionCallback process_msg_cb;
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
|
| - .WillOnce(SaveArg<1>(&process_msg_cb));
|
| - EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED));
|
| - }
|
| + SetBufferOffset<0>(message2_->ByteSize()),
|
| + SaveArg<1>(&read_packet_cb)));
|
| + EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
|
| + .WillOnce(SaveArg<1>(&process_msg_cb));
|
| + EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED));
|
| +
|
| message_pump_->SetMessageProcessor(&receiver_);
|
| - read_packet_cb.Run(message1_->ByteSize());
|
| + ASSERT_FALSE(read_packet_cb.is_null());
|
| + base::ResetAndReturn(&read_packet_cb).Run(net::OK);
|
|
|
| // Trigger next packet read
|
| process_msg_cb.Run(net::OK);
|
| - read_packet_cb.Run(net::ERR_FAILED);
|
| + ASSERT_FALSE(read_packet_cb.is_null());
|
| + base::ResetAndReturn(&read_packet_cb).Run(net::ERR_FAILED);
|
| }
|
|
|
| // Reader completes reading one packet synchronously, but packet is invalid
|
| TEST_F(BlimpMessagePumpTest, InvalidPacket) {
|
| + net::CompletionCallback read_packet_cb;
|
| std::string test_msg("msg");
|
| EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| - .WillOnce(DoAll(FillBufferFromString<0>(test_msg), Return(1)));
|
| + .WillOnce(DoAll(FillBufferFromString<0>(test_msg),
|
| + SetBufferOffset<0>(test_msg.size()),
|
| + SaveArg<1>(&read_packet_cb)));
|
| EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED));
|
| - message_pump_->SetMessageProcessor(&receiver_);
|
| -}
|
| -
|
| -TEST_F(BlimpMessagePumpTest, ClearMessageProcessorAfterRead) {
|
| - net::CompletionCallback read_packet_cb;
|
| - EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| - .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - SaveArg<1>(&read_packet_cb),
|
| - Return(net::ERR_IO_PENDING)));
|
| - net::CompletionCallback process_msg_cb;
|
| - EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
|
| - .WillOnce(SaveArg<1>(&process_msg_cb));
|
| -
|
| - message_pump_->SetMessageProcessor(&receiver_);
|
| - base::ResetAndReturn(&read_packet_cb).Run(message1_->ByteSize());
|
| -
|
| - message_pump_->SetMessageProcessor(nullptr);
|
| -
|
| - // Completing message processing will not trigger next packet read.
|
| - base::ResetAndReturn(&process_msg_cb).Run(net::OK);
|
| -}
|
| -
|
| -TEST_F(BlimpMessagePumpTest, ClearMessageProcessorDuringRead) {
|
| - net::CompletionCallback read_packet_cb;
|
| - EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
|
| - .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
|
| - SaveArg<1>(&read_packet_cb),
|
| - Return(net::ERR_IO_PENDING)));
|
|
|
| - // Receiver will not get any message.
|
| message_pump_->SetMessageProcessor(&receiver_);
|
| - message_pump_->SetMessageProcessor(nullptr);
|
| - base::ResetAndReturn(&read_packet_cb).Run(message1_->ByteSize());
|
| + ASSERT_FALSE(read_packet_cb.is_null());
|
| + base::ResetAndReturn(&read_packet_cb).Run(net::OK);
|
| }
|
|
|
| } // namespace
|
|
|