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

Side by Side Diff: blimp/net/blimp_message_pump_unittest.cc

Issue 1452823011: Make PacketReader/PacketWriter interfaces async-only. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address wez,haibin feedback Created 5 years 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <string> 6 #include <string>
7 7
8 #include "blimp/common/proto/blimp_message.pb.h" 8 #include "blimp/common/proto/blimp_message.pb.h"
9 #include "blimp/net/blimp_message_pump.h" 9 #include "blimp/net/blimp_message_pump.h"
10 #include "blimp/net/common.h" 10 #include "blimp/net/common.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 protected: 42 protected:
43 scoped_ptr<BlimpMessage> message1_; 43 scoped_ptr<BlimpMessage> message1_;
44 scoped_ptr<BlimpMessage> message2_; 44 scoped_ptr<BlimpMessage> message2_;
45 45
46 testing::StrictMock<MockPacketReader> reader_; 46 testing::StrictMock<MockPacketReader> reader_;
47 testing::StrictMock<MockConnectionErrorObserver> error_observer_; 47 testing::StrictMock<MockConnectionErrorObserver> error_observer_;
48 testing::StrictMock<MockBlimpMessageProcessor> receiver_; 48 testing::StrictMock<MockBlimpMessageProcessor> receiver_;
49 scoped_ptr<BlimpMessagePump> message_pump_; 49 scoped_ptr<BlimpMessagePump> message_pump_;
50 }; 50 };
51 51
52 // Reader completes reading one packet synchronously. 52 // Reader completes reading one packet asynchronously.
53 TEST_F(BlimpMessagePumpTest, SyncPacketRead) { 53 TEST_F(BlimpMessagePumpTest, ReadPacket) {
54 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _)); 54 net::CompletionCallback read_packet_cb;
55 EXPECT_CALL(reader_, ReadPacket(NotNull(), _));
55 EXPECT_CALL(reader_, ReadPacket(NotNull(), _)) 56 EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
56 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()), 57 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
57 Return(message1_->ByteSize()))); 58 SetBufferOffset<0>(message1_->ByteSize()),
58 message_pump_->SetMessageProcessor(&receiver_); 59 SaveArg<1>(&read_packet_cb)))
59 } 60 .RetiresOnSaturation();
60
61 // Reader completes reading two packets synchronously.
62 TEST_F(BlimpMessagePumpTest, SyncTwoPacketsRead) {
63 EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
64 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
65 Return(message1_->ByteSize())))
66 .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()),
67 Return(message2_->ByteSize())));
68 net::CompletionCallback process_msg_cb;
69 {
70 InSequence s;
71 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
72 .WillOnce(SaveArg<1>(&process_msg_cb))
73 .RetiresOnSaturation();
74 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message2_), _));
75 }
76 message_pump_->SetMessageProcessor(&receiver_);
77
78 // Trigger next packet read
79 process_msg_cb.Run(net::OK);
80 }
81
82 // Reader completes reading one packet asynchronously.
83 TEST_F(BlimpMessagePumpTest, AsyncPacketRead) {
84 net::CompletionCallback read_packet_cb;
85 EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
86 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
87 SaveArg<1>(&read_packet_cb), Return(net::ERR_IO_PENDING)))
88 .WillOnce(Return(net::ERR_IO_PENDING));
89 net::CompletionCallback process_msg_cb; 61 net::CompletionCallback process_msg_cb;
90 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _)) 62 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
91 .WillOnce(SaveArg<1>(&process_msg_cb)); 63 .WillOnce(SaveArg<1>(&process_msg_cb));
92 message_pump_->SetMessageProcessor(&receiver_); 64 message_pump_->SetMessageProcessor(&receiver_);
93 read_packet_cb.Run(message1_->ByteSize()); 65 read_packet_cb.Run(net::OK);
94 process_msg_cb.Run(net::OK); 66 process_msg_cb.Run(net::OK);
95 } 67 }
96 68
97 // Reader completes reading two packets asynchronously. 69 // Reader completes reading two packets asynchronously.
98 TEST_F(BlimpMessagePumpTest, AsyncTwoPacketsRead) { 70 TEST_F(BlimpMessagePumpTest, ReadTwoPackets) {
99 net::CompletionCallback read_packet_cb; 71 net::CompletionCallback read_packet_cb;
100 EXPECT_CALL(reader_, ReadPacket(NotNull(), _)) 72 EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
101 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()), 73 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
102 SaveArg<1>(&read_packet_cb), Return(net::ERR_IO_PENDING))) 74 SetBufferOffset<0>(message1_->ByteSize()),
75 SaveArg<1>(&read_packet_cb)))
103 .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()), 76 .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()),
104 SaveArg<1>(&read_packet_cb), 77 SetBufferOffset<0>(message2_->ByteSize()),
105 Return(net::ERR_IO_PENDING))); 78 SaveArg<1>(&read_packet_cb)));
106 net::CompletionCallback process_msg_cb; 79 net::CompletionCallback process_msg_cb;
107 { 80 {
108 InSequence s; 81 InSequence s;
109 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _)) 82 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
110 .WillOnce(SaveArg<1>(&process_msg_cb)) 83 .WillOnce(SaveArg<1>(&process_msg_cb))
111 .RetiresOnSaturation(); 84 .RetiresOnSaturation();
112 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message2_), _)); 85 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message2_), _));
113 } 86 }
114 message_pump_->SetMessageProcessor(&receiver_); 87 message_pump_->SetMessageProcessor(&receiver_);
115 read_packet_cb.Run(message1_->ByteSize()); 88 read_packet_cb.Run(net::OK);
116 89
117 // Trigger next packet read 90 // Trigger next packet read
118 process_msg_cb.Run(net::OK); 91 process_msg_cb.Run(net::OK);
119 read_packet_cb.Run(message2_->ByteSize()); 92 read_packet_cb.Run(net::OK);
120 } 93 }
121 94
122 // Reader completes reading two packets asynchronously. 95 // Reader completes reading two packets asynchronously.
123 // The first read succeeds, and the second fails. 96 // The first read succeeds, and the second fails.
124 TEST_F(BlimpMessagePumpTest, AsyncTwoPacketsReadWithError) { 97 TEST_F(BlimpMessagePumpTest, ReadTwoPacketsWithError) {
98 net::CompletionCallback process_msg_cb;
125 net::CompletionCallback read_packet_cb; 99 net::CompletionCallback read_packet_cb;
126 EXPECT_CALL(reader_, ReadPacket(NotNull(), _)) 100 EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
127 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()), 101 .WillOnce(DoAll(FillBufferFromMessage<0>(message1_.get()),
128 SaveArg<1>(&read_packet_cb), Return(net::ERR_IO_PENDING))) 102 SetBufferOffset<0>(message1_->ByteSize()),
103 SaveArg<1>(&read_packet_cb)))
129 .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()), 104 .WillOnce(DoAll(FillBufferFromMessage<0>(message2_.get()),
130 SaveArg<1>(&read_packet_cb), 105 SetBufferOffset<0>(message2_->ByteSize()),
131 Return(net::ERR_IO_PENDING))); 106 SaveArg<1>(&read_packet_cb)));
132 net::CompletionCallback process_msg_cb; 107 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _))
133 { 108 .WillOnce(SaveArg<1>(&process_msg_cb));
134 InSequence s; 109 EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED));
135 EXPECT_CALL(receiver_, MockableProcessMessage(EqualsProto(*message1_), _)) 110
136 .WillOnce(SaveArg<1>(&process_msg_cb));
137 EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED));
138 }
139 message_pump_->SetMessageProcessor(&receiver_); 111 message_pump_->SetMessageProcessor(&receiver_);
140 read_packet_cb.Run(message1_->ByteSize()); 112 read_packet_cb.Run(net::OK);
141 113
142 // Trigger next packet read 114 // Trigger next packet read
143 process_msg_cb.Run(net::OK); 115 process_msg_cb.Run(net::OK);
144 read_packet_cb.Run(net::ERR_FAILED); 116 read_packet_cb.Run(net::ERR_FAILED);
145 } 117 }
146 118
147 // Reader completes reading one packet synchronously, but packet is invalid 119 // Reader completes reading one packet synchronously, but packet is invalid
148 TEST_F(BlimpMessagePumpTest, InvalidPacket) { 120 TEST_F(BlimpMessagePumpTest, InvalidPacket) {
121 net::CompletionCallback read_packet_cb;
149 std::string test_msg("msg"); 122 std::string test_msg("msg");
150 EXPECT_CALL(reader_, ReadPacket(NotNull(), _)) 123 EXPECT_CALL(reader_, ReadPacket(NotNull(), _))
151 .WillOnce(DoAll(FillBufferFromString<0>(test_msg), Return(1))); 124 .WillOnce(DoAll(FillBufferFromString<0>(test_msg),
125 SetBufferOffset<0>(test_msg.size()),
126 SaveArg<1>(&read_packet_cb)));
152 EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED)); 127 EXPECT_CALL(error_observer_, OnConnectionError(net::ERR_FAILED));
128
153 message_pump_->SetMessageProcessor(&receiver_); 129 message_pump_->SetMessageProcessor(&receiver_);
130 read_packet_cb.Run(net::OK);
154 } 131 }
155 132
156 } // namespace 133 } // namespace
157 134
158 } // namespace blimp 135 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698