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

Side by Side Diff: net/quic/core/quic_client_promised_info_test.cc

Issue 2322233004: Landing Recent QUIC changes until Sun Sep 4 03:41:00 (Closed)
Patch Set: Remove simulation files from the build. Created 4 years, 3 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/quic/core/quic_client_promised_info.cc ('k') | net/quic/core/quic_connection.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/quic/core/quic_client_promised_info.h" 5 #include "net/quic/core/quic_client_promised_info.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/scoped_ptr.h" 10 #include "base/scoped_ptr.h"
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 } 264 }
265 265
266 TEST_F(QuicClientPromisedInfoTest, PushPromiseVaryWaits) { 266 TEST_F(QuicClientPromisedInfoTest, PushPromiseVaryWaits) {
267 ReceivePromise(promise_id_); 267 ReceivePromise(promise_id_);
268 268
269 QuicClientPromisedInfo* promised = session_.GetPromisedById(promise_id_); 269 QuicClientPromisedInfo* promised = session_.GetPromisedById(promise_id_);
270 ASSERT_NE(promised, nullptr); 270 ASSERT_NE(promised, nullptr);
271 271
272 // Now initiate rendezvous. 272 // Now initiate rendezvous.
273 PushPromiseDelegate delegate(/*match=*/true); 273 PushPromiseDelegate delegate(/*match=*/true);
274 promised->HandleClientRequest(std::move(client_request_), &delegate); 274 promised->HandleClientRequest(client_request_, &delegate);
275 275
276 // Promise is still there, waiting for response. 276 // Promise is still there, waiting for response.
277 EXPECT_NE(session_.GetPromisedById(promise_id_), nullptr); 277 EXPECT_NE(session_.GetPromisedById(promise_id_), nullptr);
278 278
279 // Send Response, should trigger promise validation and complete rendezvous 279 // Send Response, should trigger promise validation and complete rendezvous
280 QuicSpdyClientStream* promise_stream = static_cast<QuicSpdyClientStream*>( 280 QuicSpdyClientStream* promise_stream = static_cast<QuicSpdyClientStream*>(
281 session_.GetOrCreateStream(promise_id_)); 281 session_.GetOrCreateStream(promise_id_));
282 ASSERT_NE(promise_stream, nullptr); 282 ASSERT_NE(promise_stream, nullptr);
283 promise_stream->OnStreamHeaders(headers_string_); 283 promise_stream->OnStreamHeaders(headers_string_);
284 promise_stream->OnStreamHeadersComplete(false, headers_string_.size()); 284 promise_stream->OnStreamHeadersComplete(false, headers_string_.size());
(...skipping 11 matching lines...) Expand all
296 QuicSpdyClientStream* promise_stream = static_cast<QuicSpdyClientStream*>( 296 QuicSpdyClientStream* promise_stream = static_cast<QuicSpdyClientStream*>(
297 session_.GetOrCreateStream(promise_id_)); 297 session_.GetOrCreateStream(promise_id_));
298 ASSERT_NE(promise_stream, nullptr); 298 ASSERT_NE(promise_stream, nullptr);
299 299
300 // Send Response, should trigger promise validation and complete rendezvous 300 // Send Response, should trigger promise validation and complete rendezvous
301 promise_stream->OnStreamHeaders(headers_string_); 301 promise_stream->OnStreamHeaders(headers_string_);
302 promise_stream->OnStreamHeadersComplete(false, headers_string_.size()); 302 promise_stream->OnStreamHeadersComplete(false, headers_string_.size());
303 303
304 // Now initiate rendezvous. 304 // Now initiate rendezvous.
305 PushPromiseDelegate delegate(/*match=*/true); 305 PushPromiseDelegate delegate(/*match=*/true);
306 promised->HandleClientRequest(std::move(client_request_), &delegate); 306 promised->HandleClientRequest(client_request_, &delegate);
307 307
308 // Promise is gone 308 // Promise is gone
309 EXPECT_EQ(session_.GetPromisedById(promise_id_), nullptr); 309 EXPECT_EQ(session_.GetPromisedById(promise_id_), nullptr);
310 // Have a push stream 310 // Have a push stream
311 EXPECT_TRUE(delegate.rendezvous_fired()); 311 EXPECT_TRUE(delegate.rendezvous_fired());
312 312
313 EXPECT_NE(delegate.rendezvous_stream(), nullptr); 313 EXPECT_NE(delegate.rendezvous_stream(), nullptr);
314 } 314 }
315 315
316 TEST_F(QuicClientPromisedInfoTest, PushPromiseWaitCancels) { 316 TEST_F(QuicClientPromisedInfoTest, PushPromiseWaitCancels) {
317 ReceivePromise(promise_id_); 317 ReceivePromise(promise_id_);
318 318
319 QuicClientPromisedInfo* promised = session_.GetPromisedById(promise_id_); 319 QuicClientPromisedInfo* promised = session_.GetPromisedById(promise_id_);
320 ASSERT_NE(promised, nullptr); 320 ASSERT_NE(promised, nullptr);
321 321
322 // Now initiate rendezvous. 322 // Now initiate rendezvous.
323 PushPromiseDelegate delegate(/*match=*/true); 323 PushPromiseDelegate delegate(/*match=*/true);
324 promised->HandleClientRequest(std::move(client_request_), &delegate); 324 promised->HandleClientRequest(client_request_, &delegate);
325 325
326 // Promise is still there, waiting for response. 326 // Promise is still there, waiting for response.
327 EXPECT_NE(session_.GetPromisedById(promise_id_), nullptr); 327 EXPECT_NE(session_.GetPromisedById(promise_id_), nullptr);
328 328
329 // Create response stream, but no data yet. 329 // Create response stream, but no data yet.
330 session_.GetOrCreateStream(promise_id_); 330 session_.GetOrCreateStream(promise_id_);
331 331
332 // Fire the alarm that will cancel the promised stream. 332 // Fire the alarm that will cancel the promised stream.
333 EXPECT_CALL(session_, CloseStream(promise_id_)); 333 EXPECT_CALL(session_, CloseStream(promise_id_));
334 EXPECT_CALL(*connection_, 334 EXPECT_CALL(*connection_,
(...skipping 18 matching lines...) Expand all
353 promise_stream->OnStreamHeaders(headers_string_); 353 promise_stream->OnStreamHeaders(headers_string_);
354 promise_stream->OnStreamHeadersComplete(false, headers_string_.size()); 354 promise_stream->OnStreamHeadersComplete(false, headers_string_.size());
355 355
356 EXPECT_CALL(session_, CloseStream(promise_id_)); 356 EXPECT_CALL(session_, CloseStream(promise_id_));
357 EXPECT_CALL(*connection_, 357 EXPECT_CALL(*connection_,
358 SendRstStream(promise_id_, QUIC_STREAM_PEER_GOING_AWAY, 0)); 358 SendRstStream(promise_id_, QUIC_STREAM_PEER_GOING_AWAY, 0));
359 session_.SendRstStream(promise_id_, QUIC_STREAM_PEER_GOING_AWAY, 0); 359 session_.SendRstStream(promise_id_, QUIC_STREAM_PEER_GOING_AWAY, 0);
360 360
361 // Now initiate rendezvous. 361 // Now initiate rendezvous.
362 PushPromiseDelegate delegate(/*match=*/true); 362 PushPromiseDelegate delegate(/*match=*/true);
363 EXPECT_EQ( 363 EXPECT_EQ(promised->HandleClientRequest(client_request_, &delegate),
364 promised->HandleClientRequest(std::move(client_request_), &delegate), 364 QUIC_FAILURE);
365 QUIC_FAILURE);
366 365
367 // Got an indication of the stream failure, client should retry 366 // Got an indication of the stream failure, client should retry
368 // request. 367 // request.
369 EXPECT_FALSE(delegate.rendezvous_fired()); 368 EXPECT_FALSE(delegate.rendezvous_fired());
370 EXPECT_EQ(delegate.rendezvous_stream(), nullptr); 369 EXPECT_EQ(delegate.rendezvous_stream(), nullptr);
371 370
372 // Promise is gone 371 // Promise is gone
373 EXPECT_EQ(session_.GetPromisedById(promise_id_), nullptr); 372 EXPECT_EQ(session_.GetPromisedById(promise_id_), nullptr);
374 } 373 }
375 374
376 } // namespace 375 } // namespace
377 } // namespace test 376 } // namespace test
378 } // namespace net 377 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_client_promised_info.cc ('k') | net/quic/core/quic_connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698