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

Side by Side Diff: net/spdy/spdy_write_queue_unittest.cc

Issue 2167253002: s/SYN_STREAM/HEADERS/ in frame types, method names, comments. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 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
« no previous file with comments | « net/spdy/spdy_test_util_common.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "net/spdy/spdy_write_queue.h" 5 #include "net/spdy/spdy_write_queue.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <cstring> 8 #include <cstring>
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 std::unique_ptr<SpdyBufferProducer> producer_low = StringToProducer("LOW"); 108 std::unique_ptr<SpdyBufferProducer> producer_low = StringToProducer("LOW");
109 std::unique_ptr<SpdyBufferProducer> producer_medium = 109 std::unique_ptr<SpdyBufferProducer> producer_medium =
110 StringToProducer("MEDIUM"); 110 StringToProducer("MEDIUM");
111 std::unique_ptr<SpdyBufferProducer> producer_highest = 111 std::unique_ptr<SpdyBufferProducer> producer_highest =
112 StringToProducer("HIGHEST"); 112 StringToProducer("HIGHEST");
113 113
114 std::unique_ptr<SpdyStream> stream_medium(MakeTestStream(MEDIUM)); 114 std::unique_ptr<SpdyStream> stream_medium(MakeTestStream(MEDIUM));
115 std::unique_ptr<SpdyStream> stream_highest(MakeTestStream(HIGHEST)); 115 std::unique_ptr<SpdyStream> stream_highest(MakeTestStream(HIGHEST));
116 116
117 // A NULL stream should still work. 117 // A NULL stream should still work.
118 write_queue.Enqueue(LOW, SYN_STREAM, std::move(producer_low), 118 write_queue.Enqueue(LOW, HEADERS, std::move(producer_low),
119 base::WeakPtr<SpdyStream>()); 119 base::WeakPtr<SpdyStream>());
120 write_queue.Enqueue(MEDIUM, SYN_REPLY, std::move(producer_medium), 120 write_queue.Enqueue(MEDIUM, HEADERS, std::move(producer_medium),
121 stream_medium->GetWeakPtr()); 121 stream_medium->GetWeakPtr());
122 write_queue.Enqueue(HIGHEST, RST_STREAM, std::move(producer_highest), 122 write_queue.Enqueue(HIGHEST, RST_STREAM, std::move(producer_highest),
123 stream_highest->GetWeakPtr()); 123 stream_highest->GetWeakPtr());
124 124
125 SpdyFrameType frame_type = DATA; 125 SpdyFrameType frame_type = DATA;
126 std::unique_ptr<SpdyBufferProducer> frame_producer; 126 std::unique_ptr<SpdyBufferProducer> frame_producer;
127 base::WeakPtr<SpdyStream> stream; 127 base::WeakPtr<SpdyStream> stream;
128 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 128 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
129 EXPECT_EQ(RST_STREAM, frame_type); 129 EXPECT_EQ(RST_STREAM, frame_type);
130 EXPECT_EQ("HIGHEST", ProducerToString(std::move(frame_producer))); 130 EXPECT_EQ("HIGHEST", ProducerToString(std::move(frame_producer)));
131 EXPECT_EQ(stream_highest.get(), stream.get()); 131 EXPECT_EQ(stream_highest.get(), stream.get());
132 132
133 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 133 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
134 EXPECT_EQ(SYN_REPLY, frame_type); 134 EXPECT_EQ(HEADERS, frame_type);
135 EXPECT_EQ("MEDIUM", ProducerToString(std::move(frame_producer))); 135 EXPECT_EQ("MEDIUM", ProducerToString(std::move(frame_producer)));
136 EXPECT_EQ(stream_medium.get(), stream.get()); 136 EXPECT_EQ(stream_medium.get(), stream.get());
137 137
138 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 138 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
139 EXPECT_EQ(SYN_STREAM, frame_type); 139 EXPECT_EQ(HEADERS, frame_type);
140 EXPECT_EQ("LOW", ProducerToString(std::move(frame_producer))); 140 EXPECT_EQ("LOW", ProducerToString(std::move(frame_producer)));
141 EXPECT_EQ(nullptr, stream.get()); 141 EXPECT_EQ(nullptr, stream.get());
142 142
143 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 143 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
144 } 144 }
145 145
146 // Add some frame producers with the same priority. The producers 146 // Add some frame producers with the same priority. The producers
147 // should be dequeued in FIFO order with their associated stream. 147 // should be dequeued in FIFO order with their associated stream.
148 TEST_F(SpdyWriteQueueTest, DequeuesFIFO) { 148 TEST_F(SpdyWriteQueueTest, DequeuesFIFO) {
149 SpdyWriteQueue write_queue; 149 SpdyWriteQueue write_queue;
150 150
151 std::unique_ptr<SpdyBufferProducer> producer1 = IntToProducer(1); 151 std::unique_ptr<SpdyBufferProducer> producer1 = IntToProducer(1);
152 std::unique_ptr<SpdyBufferProducer> producer2 = IntToProducer(2); 152 std::unique_ptr<SpdyBufferProducer> producer2 = IntToProducer(2);
153 std::unique_ptr<SpdyBufferProducer> producer3 = IntToProducer(3); 153 std::unique_ptr<SpdyBufferProducer> producer3 = IntToProducer(3);
154 154
155 std::unique_ptr<SpdyStream> stream1(MakeTestStream(DEFAULT_PRIORITY)); 155 std::unique_ptr<SpdyStream> stream1(MakeTestStream(DEFAULT_PRIORITY));
156 std::unique_ptr<SpdyStream> stream2(MakeTestStream(DEFAULT_PRIORITY)); 156 std::unique_ptr<SpdyStream> stream2(MakeTestStream(DEFAULT_PRIORITY));
157 std::unique_ptr<SpdyStream> stream3(MakeTestStream(DEFAULT_PRIORITY)); 157 std::unique_ptr<SpdyStream> stream3(MakeTestStream(DEFAULT_PRIORITY));
158 158
159 write_queue.Enqueue(DEFAULT_PRIORITY, SYN_STREAM, std::move(producer1), 159 write_queue.Enqueue(DEFAULT_PRIORITY, HEADERS, std::move(producer1),
160 stream1->GetWeakPtr()); 160 stream1->GetWeakPtr());
161 write_queue.Enqueue(DEFAULT_PRIORITY, SYN_REPLY, std::move(producer2), 161 write_queue.Enqueue(DEFAULT_PRIORITY, HEADERS, std::move(producer2),
162 stream2->GetWeakPtr()); 162 stream2->GetWeakPtr());
163 write_queue.Enqueue(DEFAULT_PRIORITY, RST_STREAM, std::move(producer3), 163 write_queue.Enqueue(DEFAULT_PRIORITY, RST_STREAM, std::move(producer3),
164 stream3->GetWeakPtr()); 164 stream3->GetWeakPtr());
165 165
166 SpdyFrameType frame_type = DATA; 166 SpdyFrameType frame_type = DATA;
167 std::unique_ptr<SpdyBufferProducer> frame_producer; 167 std::unique_ptr<SpdyBufferProducer> frame_producer;
168 base::WeakPtr<SpdyStream> stream; 168 base::WeakPtr<SpdyStream> stream;
169 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 169 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
170 EXPECT_EQ(SYN_STREAM, frame_type); 170 EXPECT_EQ(HEADERS, frame_type);
171 EXPECT_EQ(1, ProducerToInt(std::move(frame_producer))); 171 EXPECT_EQ(1, ProducerToInt(std::move(frame_producer)));
172 EXPECT_EQ(stream1.get(), stream.get()); 172 EXPECT_EQ(stream1.get(), stream.get());
173 173
174 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 174 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
175 EXPECT_EQ(SYN_REPLY, frame_type); 175 EXPECT_EQ(HEADERS, frame_type);
176 EXPECT_EQ(2, ProducerToInt(std::move(frame_producer))); 176 EXPECT_EQ(2, ProducerToInt(std::move(frame_producer)));
177 EXPECT_EQ(stream2.get(), stream.get()); 177 EXPECT_EQ(stream2.get(), stream.get());
178 178
179 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 179 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
180 EXPECT_EQ(RST_STREAM, frame_type); 180 EXPECT_EQ(RST_STREAM, frame_type);
181 EXPECT_EQ(3, ProducerToInt(std::move(frame_producer))); 181 EXPECT_EQ(3, ProducerToInt(std::move(frame_producer)));
182 EXPECT_EQ(stream3.get(), stream.get()); 182 EXPECT_EQ(stream3.get(), stream.get());
183 183
184 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 184 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
185 } 185 }
186 186
187 // Enqueue a bunch of writes and then call 187 // Enqueue a bunch of writes and then call
188 // RemovePendingWritesForStream() on one of the streams. No dequeued 188 // RemovePendingWritesForStream() on one of the streams. No dequeued
189 // write should be for that stream. 189 // write should be for that stream.
190 TEST_F(SpdyWriteQueueTest, RemovePendingWritesForStream) { 190 TEST_F(SpdyWriteQueueTest, RemovePendingWritesForStream) {
191 SpdyWriteQueue write_queue; 191 SpdyWriteQueue write_queue;
192 192
193 std::unique_ptr<SpdyStream> stream1(MakeTestStream(DEFAULT_PRIORITY)); 193 std::unique_ptr<SpdyStream> stream1(MakeTestStream(DEFAULT_PRIORITY));
194 std::unique_ptr<SpdyStream> stream2(MakeTestStream(DEFAULT_PRIORITY)); 194 std::unique_ptr<SpdyStream> stream2(MakeTestStream(DEFAULT_PRIORITY));
195 195
196 for (int i = 0; i < 100; ++i) { 196 for (int i = 0; i < 100; ++i) {
197 base::WeakPtr<SpdyStream> stream = 197 base::WeakPtr<SpdyStream> stream =
198 (((i % 3) == 0) ? stream1 : stream2)->GetWeakPtr(); 198 (((i % 3) == 0) ? stream1 : stream2)->GetWeakPtr();
199 write_queue.Enqueue(DEFAULT_PRIORITY, SYN_STREAM, IntToProducer(i), stream); 199 write_queue.Enqueue(DEFAULT_PRIORITY, HEADERS, IntToProducer(i), stream);
200 } 200 }
201 201
202 write_queue.RemovePendingWritesForStream(stream2->GetWeakPtr()); 202 write_queue.RemovePendingWritesForStream(stream2->GetWeakPtr());
203 203
204 for (int i = 0; i < 100; i += 3) { 204 for (int i = 0; i < 100; i += 3) {
205 SpdyFrameType frame_type = DATA; 205 SpdyFrameType frame_type = DATA;
206 std::unique_ptr<SpdyBufferProducer> frame_producer; 206 std::unique_ptr<SpdyBufferProducer> frame_producer;
207 base::WeakPtr<SpdyStream> stream; 207 base::WeakPtr<SpdyStream> stream;
208 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 208 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
209 EXPECT_EQ(SYN_STREAM, frame_type); 209 EXPECT_EQ(HEADERS, frame_type);
210 EXPECT_EQ(i, ProducerToInt(std::move(frame_producer))); 210 EXPECT_EQ(i, ProducerToInt(std::move(frame_producer)));
211 EXPECT_EQ(stream1.get(), stream.get()); 211 EXPECT_EQ(stream1.get(), stream.get());
212 } 212 }
213 213
214 SpdyFrameType frame_type = DATA; 214 SpdyFrameType frame_type = DATA;
215 std::unique_ptr<SpdyBufferProducer> frame_producer; 215 std::unique_ptr<SpdyBufferProducer> frame_producer;
216 base::WeakPtr<SpdyStream> stream; 216 base::WeakPtr<SpdyStream> stream;
217 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 217 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
218 } 218 }
219 219
(...skipping 11 matching lines...) Expand all
231 std::unique_ptr<SpdyStream> stream3(MakeTestStream(DEFAULT_PRIORITY)); 231 std::unique_ptr<SpdyStream> stream3(MakeTestStream(DEFAULT_PRIORITY));
232 stream3->set_stream_id(5); 232 stream3->set_stream_id(5);
233 // No stream id assigned. 233 // No stream id assigned.
234 std::unique_ptr<SpdyStream> stream4(MakeTestStream(DEFAULT_PRIORITY)); 234 std::unique_ptr<SpdyStream> stream4(MakeTestStream(DEFAULT_PRIORITY));
235 base::WeakPtr<SpdyStream> streams[] = { 235 base::WeakPtr<SpdyStream> streams[] = {
236 stream1->GetWeakPtr(), stream2->GetWeakPtr(), 236 stream1->GetWeakPtr(), stream2->GetWeakPtr(),
237 stream3->GetWeakPtr(), stream4->GetWeakPtr() 237 stream3->GetWeakPtr(), stream4->GetWeakPtr()
238 }; 238 };
239 239
240 for (int i = 0; i < 100; ++i) { 240 for (int i = 0; i < 100; ++i) {
241 write_queue.Enqueue(DEFAULT_PRIORITY, SYN_STREAM, IntToProducer(i), 241 write_queue.Enqueue(DEFAULT_PRIORITY, HEADERS, IntToProducer(i),
242 streams[i % arraysize(streams)]); 242 streams[i % arraysize(streams)]);
243 } 243 }
244 244
245 write_queue.RemovePendingWritesForStreamsAfter(stream1->stream_id()); 245 write_queue.RemovePendingWritesForStreamsAfter(stream1->stream_id());
246 246
247 for (int i = 0; i < 100; i += arraysize(streams)) { 247 for (int i = 0; i < 100; i += arraysize(streams)) {
248 SpdyFrameType frame_type = DATA; 248 SpdyFrameType frame_type = DATA;
249 std::unique_ptr<SpdyBufferProducer> frame_producer; 249 std::unique_ptr<SpdyBufferProducer> frame_producer;
250 base::WeakPtr<SpdyStream> stream; 250 base::WeakPtr<SpdyStream> stream;
251 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)) 251 ASSERT_TRUE(write_queue.Dequeue(&frame_type, &frame_producer, &stream))
252 << "Unable to Dequeue i: " << i; 252 << "Unable to Dequeue i: " << i;
253 EXPECT_EQ(SYN_STREAM, frame_type); 253 EXPECT_EQ(HEADERS, frame_type);
254 EXPECT_EQ(i, ProducerToInt(std::move(frame_producer))); 254 EXPECT_EQ(i, ProducerToInt(std::move(frame_producer)));
255 EXPECT_EQ(stream1.get(), stream.get()); 255 EXPECT_EQ(stream1.get(), stream.get());
256 } 256 }
257 257
258 SpdyFrameType frame_type = DATA; 258 SpdyFrameType frame_type = DATA;
259 std::unique_ptr<SpdyBufferProducer> frame_producer; 259 std::unique_ptr<SpdyBufferProducer> frame_producer;
260 base::WeakPtr<SpdyStream> stream; 260 base::WeakPtr<SpdyStream> stream;
261 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 261 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
262 } 262 }
263 263
264 // Enqueue a bunch of writes and then call Clear(). The write queue 264 // Enqueue a bunch of writes and then call Clear(). The write queue
265 // should clean up the memory properly, and Dequeue() should return 265 // should clean up the memory properly, and Dequeue() should return
266 // false. 266 // false.
267 TEST_F(SpdyWriteQueueTest, Clear) { 267 TEST_F(SpdyWriteQueueTest, Clear) {
268 SpdyWriteQueue write_queue; 268 SpdyWriteQueue write_queue;
269 269
270 for (int i = 0; i < 100; ++i) { 270 for (int i = 0; i < 100; ++i) {
271 write_queue.Enqueue(DEFAULT_PRIORITY, SYN_STREAM, IntToProducer(i), 271 write_queue.Enqueue(DEFAULT_PRIORITY, HEADERS, IntToProducer(i),
272 base::WeakPtr<SpdyStream>()); 272 base::WeakPtr<SpdyStream>());
273 } 273 }
274 274
275 write_queue.Clear(); 275 write_queue.Clear();
276 276
277 SpdyFrameType frame_type = DATA; 277 SpdyFrameType frame_type = DATA;
278 std::unique_ptr<SpdyBufferProducer> frame_producer; 278 std::unique_ptr<SpdyBufferProducer> frame_producer;
279 base::WeakPtr<SpdyStream> stream; 279 base::WeakPtr<SpdyStream> stream;
280 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream)); 280 EXPECT_FALSE(write_queue.Dequeue(&frame_type, &frame_producer, &stream));
281 } 281 }
282 282
283 TEST_F(SpdyWriteQueueTest, RequeingProducerWithoutReentrance) { 283 TEST_F(SpdyWriteQueueTest, RequeingProducerWithoutReentrance) {
284 SpdyWriteQueue queue; 284 SpdyWriteQueue queue;
285 queue.Enqueue( 285 queue.Enqueue(
286 DEFAULT_PRIORITY, SYN_STREAM, 286 DEFAULT_PRIORITY, HEADERS,
287 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)), 287 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)),
288 base::WeakPtr<SpdyStream>()); 288 base::WeakPtr<SpdyStream>());
289 { 289 {
290 SpdyFrameType frame_type; 290 SpdyFrameType frame_type;
291 std::unique_ptr<SpdyBufferProducer> producer; 291 std::unique_ptr<SpdyBufferProducer> producer;
292 base::WeakPtr<SpdyStream> stream; 292 base::WeakPtr<SpdyStream> stream;
293 293
294 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &stream)); 294 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &stream));
295 EXPECT_TRUE(queue.IsEmpty()); 295 EXPECT_TRUE(queue.IsEmpty());
296 EXPECT_EQ(string(kOriginal), producer->ProduceBuffer()->GetRemainingData()); 296 EXPECT_EQ(string(kOriginal), producer->ProduceBuffer()->GetRemainingData());
297 } 297 }
298 // |producer| was destroyed, and a buffer is re-queued. 298 // |producer| was destroyed, and a buffer is re-queued.
299 EXPECT_FALSE(queue.IsEmpty()); 299 EXPECT_FALSE(queue.IsEmpty());
300 300
301 SpdyFrameType frame_type; 301 SpdyFrameType frame_type;
302 std::unique_ptr<SpdyBufferProducer> producer; 302 std::unique_ptr<SpdyBufferProducer> producer;
303 base::WeakPtr<SpdyStream> stream; 303 base::WeakPtr<SpdyStream> stream;
304 304
305 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &stream)); 305 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &stream));
306 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData()); 306 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData());
307 } 307 }
308 308
309 TEST_F(SpdyWriteQueueTest, ReentranceOnClear) { 309 TEST_F(SpdyWriteQueueTest, ReentranceOnClear) {
310 SpdyWriteQueue queue; 310 SpdyWriteQueue queue;
311 queue.Enqueue( 311 queue.Enqueue(
312 DEFAULT_PRIORITY, SYN_STREAM, 312 DEFAULT_PRIORITY, HEADERS,
313 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)), 313 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)),
314 base::WeakPtr<SpdyStream>()); 314 base::WeakPtr<SpdyStream>());
315 315
316 queue.Clear(); 316 queue.Clear();
317 EXPECT_FALSE(queue.IsEmpty()); 317 EXPECT_FALSE(queue.IsEmpty());
318 318
319 SpdyFrameType frame_type; 319 SpdyFrameType frame_type;
320 std::unique_ptr<SpdyBufferProducer> producer; 320 std::unique_ptr<SpdyBufferProducer> producer;
321 base::WeakPtr<SpdyStream> stream; 321 base::WeakPtr<SpdyStream> stream;
322 322
323 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &stream)); 323 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &stream));
324 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData()); 324 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData());
325 } 325 }
326 326
327 TEST_F(SpdyWriteQueueTest, ReentranceOnRemovePendingWritesAfter) { 327 TEST_F(SpdyWriteQueueTest, ReentranceOnRemovePendingWritesAfter) {
328 std::unique_ptr<SpdyStream> stream(MakeTestStream(DEFAULT_PRIORITY)); 328 std::unique_ptr<SpdyStream> stream(MakeTestStream(DEFAULT_PRIORITY));
329 stream->set_stream_id(2); 329 stream->set_stream_id(2);
330 330
331 SpdyWriteQueue queue; 331 SpdyWriteQueue queue;
332 queue.Enqueue( 332 queue.Enqueue(
333 DEFAULT_PRIORITY, SYN_STREAM, 333 DEFAULT_PRIORITY, HEADERS,
334 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)), 334 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)),
335 stream->GetWeakPtr()); 335 stream->GetWeakPtr());
336 336
337 queue.RemovePendingWritesForStreamsAfter(1); 337 queue.RemovePendingWritesForStreamsAfter(1);
338 EXPECT_FALSE(queue.IsEmpty()); 338 EXPECT_FALSE(queue.IsEmpty());
339 339
340 SpdyFrameType frame_type; 340 SpdyFrameType frame_type;
341 std::unique_ptr<SpdyBufferProducer> producer; 341 std::unique_ptr<SpdyBufferProducer> producer;
342 base::WeakPtr<SpdyStream> weak_stream; 342 base::WeakPtr<SpdyStream> weak_stream;
343 343
344 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &weak_stream)); 344 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &weak_stream));
345 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData()); 345 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData());
346 } 346 }
347 347
348 TEST_F(SpdyWriteQueueTest, ReentranceOnRemovePendingWritesForStream) { 348 TEST_F(SpdyWriteQueueTest, ReentranceOnRemovePendingWritesForStream) {
349 std::unique_ptr<SpdyStream> stream(MakeTestStream(DEFAULT_PRIORITY)); 349 std::unique_ptr<SpdyStream> stream(MakeTestStream(DEFAULT_PRIORITY));
350 stream->set_stream_id(2); 350 stream->set_stream_id(2);
351 351
352 SpdyWriteQueue queue; 352 SpdyWriteQueue queue;
353 queue.Enqueue( 353 queue.Enqueue(
354 DEFAULT_PRIORITY, SYN_STREAM, 354 DEFAULT_PRIORITY, HEADERS,
355 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)), 355 std::unique_ptr<SpdyBufferProducer>(new RequeingBufferProducer(&queue)),
356 stream->GetWeakPtr()); 356 stream->GetWeakPtr());
357 357
358 queue.RemovePendingWritesForStream(stream->GetWeakPtr()); 358 queue.RemovePendingWritesForStream(stream->GetWeakPtr());
359 EXPECT_FALSE(queue.IsEmpty()); 359 EXPECT_FALSE(queue.IsEmpty());
360 360
361 SpdyFrameType frame_type; 361 SpdyFrameType frame_type;
362 std::unique_ptr<SpdyBufferProducer> producer; 362 std::unique_ptr<SpdyBufferProducer> producer;
363 base::WeakPtr<SpdyStream> weak_stream; 363 base::WeakPtr<SpdyStream> weak_stream;
364 364
365 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &weak_stream)); 365 EXPECT_TRUE(queue.Dequeue(&frame_type, &producer, &weak_stream));
366 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData()); 366 EXPECT_EQ(string(kRequeued), producer->ProduceBuffer()->GetRemainingData());
367 } 367 }
368 368
369 } // namespace 369 } // namespace
370 370
371 } // namespace net 371 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_test_util_common.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698