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

Side by Side Diff: net/websockets/websocket_deflate_stream_test.cc

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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/websockets/websocket_basic_stream_test.cc ('k') | net/websockets/websocket_errors_test.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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/websockets/websocket_deflate_stream.h" 5 #include "net/websockets/websocket_deflate_stream.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <deque> 10 #include <deque>
11 #include <iterator> 11 #include <iterator>
12 #include <memory> 12 #include <memory>
13 #include <string> 13 #include <string>
14 #include <utility> 14 #include <utility>
15 #include <vector> 15 #include <vector>
16 16
17 #include "base/bind.h" 17 #include "base/bind.h"
18 #include "base/macros.h" 18 #include "base/macros.h"
19 #include "base/memory/ptr_util.h" 19 #include "base/memory/ptr_util.h"
20 #include "base/memory/ref_counted.h" 20 #include "base/memory/ref_counted.h"
21 #include "net/base/completion_callback.h" 21 #include "net/base/completion_callback.h"
22 #include "net/base/io_buffer.h" 22 #include "net/base/io_buffer.h"
23 #include "net/base/net_errors.h" 23 #include "net/base/net_errors.h"
24 #include "net/test/gtest_util.h"
24 #include "net/websockets/websocket_deflate_parameters.h" 25 #include "net/websockets/websocket_deflate_parameters.h"
25 #include "net/websockets/websocket_deflate_predictor.h" 26 #include "net/websockets/websocket_deflate_predictor.h"
26 #include "net/websockets/websocket_deflater.h" 27 #include "net/websockets/websocket_deflater.h"
27 #include "net/websockets/websocket_frame.h" 28 #include "net/websockets/websocket_frame.h"
28 #include "net/websockets/websocket_inflater.h" 29 #include "net/websockets/websocket_inflater.h"
29 #include "net/websockets/websocket_stream.h" 30 #include "net/websockets/websocket_stream.h"
30 #include "net/websockets/websocket_test_util.h" 31 #include "net/websockets/websocket_test_util.h"
31 #include "testing/gmock/include/gmock/gmock.h" 32 #include "testing/gmock/include/gmock/gmock.h"
32 #include "testing/gtest/include/gtest/gtest.h" 33 #include "testing/gtest/include/gtest/gtest.h"
33 34
35 using net::test::IsError;
36 using net::test::IsOk;
37
34 namespace net { 38 namespace net {
35 namespace { 39 namespace {
36 40
37 typedef ::testing::MockFunction<void(int)> MockCallback; // NOLINT 41 typedef ::testing::MockFunction<void(int)> MockCallback; // NOLINT
38 using ::testing::_; 42 using ::testing::_;
39 using ::testing::InSequence; 43 using ::testing::InSequence;
40 using ::testing::Invoke; 44 using ::testing::Invoke;
41 using ::testing::Return; 45 using ::testing::Return;
42 46
43 typedef uint32_t FrameFlag; 47 typedef uint32_t FrameFlag;
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 }; 366 };
363 367
364 TEST_F(WebSocketDeflateStreamTest, ReadFailedImmediately) { 368 TEST_F(WebSocketDeflateStreamTest, ReadFailedImmediately) {
365 std::vector<std::unique_ptr<WebSocketFrame>> frames; 369 std::vector<std::unique_ptr<WebSocketFrame>> frames;
366 CompletionCallback callback; 370 CompletionCallback callback;
367 { 371 {
368 InSequence s; 372 InSequence s;
369 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 373 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
370 .WillOnce(Return(ERR_FAILED)); 374 .WillOnce(Return(ERR_FAILED));
371 } 375 }
372 EXPECT_EQ(ERR_FAILED, deflate_stream_->ReadFrames(&frames, callback)); 376 EXPECT_THAT(deflate_stream_->ReadFrames(&frames, callback),
377 IsError(ERR_FAILED));
373 } 378 }
374 379
375 TEST_F(WebSocketDeflateStreamTest, ReadUncompressedFrameImmediately) { 380 TEST_F(WebSocketDeflateStreamTest, ReadUncompressedFrameImmediately) {
376 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output; 381 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output;
377 AppendTo(&frames_to_output, 382 AppendTo(&frames_to_output,
378 WebSocketFrameHeader::kOpCodeText, 383 WebSocketFrameHeader::kOpCodeText,
379 kFinal, 384 kFinal,
380 "hello"); 385 "hello");
381 ReadFramesStub stub(OK, &frames_to_output); 386 ReadFramesStub stub(OK, &frames_to_output);
382 std::vector<std::unique_ptr<WebSocketFrame>> frames; 387 std::vector<std::unique_ptr<WebSocketFrame>> frames;
383 388
384 { 389 {
385 InSequence s; 390 InSequence s;
386 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 391 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
387 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 392 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
388 } 393 }
389 CompletionCallback callback; 394 CompletionCallback callback;
390 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 395 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
391 ASSERT_EQ(1u, frames.size()); 396 ASSERT_EQ(1u, frames.size());
392 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 397 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
393 EXPECT_TRUE(frames[0]->header.final); 398 EXPECT_TRUE(frames[0]->header.final);
394 EXPECT_FALSE(frames[0]->header.reserved1); 399 EXPECT_FALSE(frames[0]->header.reserved1);
395 EXPECT_EQ("hello", ToString(frames[0])); 400 EXPECT_EQ("hello", ToString(frames[0]));
396 } 401 }
397 402
398 TEST_F(WebSocketDeflateStreamTest, ReadUncompressedFrameAsync) { 403 TEST_F(WebSocketDeflateStreamTest, ReadUncompressedFrameAsync) {
399 ReadFramesStub stub(ERR_IO_PENDING); 404 ReadFramesStub stub(ERR_IO_PENDING);
400 std::vector<std::unique_ptr<WebSocketFrame>> frames; 405 std::vector<std::unique_ptr<WebSocketFrame>> frames;
401 MockCallback mock_callback, checkpoint; 406 MockCallback mock_callback, checkpoint;
402 CompletionCallback callback = 407 CompletionCallback callback =
403 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback)); 408 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback));
404 409
405 { 410 {
406 InSequence s; 411 InSequence s;
407 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 412 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
408 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 413 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
409 EXPECT_CALL(checkpoint, Call(0)); 414 EXPECT_CALL(checkpoint, Call(0));
410 EXPECT_CALL(mock_callback, Call(OK)); 415 EXPECT_CALL(mock_callback, Call(OK));
411 } 416 }
412 ASSERT_EQ(ERR_IO_PENDING, deflate_stream_->ReadFrames(&frames, callback)); 417 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback),
418 IsError(ERR_IO_PENDING));
413 ASSERT_EQ(0u, frames.size()); 419 ASSERT_EQ(0u, frames.size());
414 420
415 checkpoint.Call(0); 421 checkpoint.Call(0);
416 422
417 AppendTo(stub.frames_passed(), 423 AppendTo(stub.frames_passed(),
418 WebSocketFrameHeader::kOpCodeText, 424 WebSocketFrameHeader::kOpCodeText,
419 kFinal, 425 kFinal,
420 "hello"); 426 "hello");
421 stub.callback().Run(OK); 427 stub.callback().Run(OK);
422 ASSERT_EQ(1u, frames.size()); 428 ASSERT_EQ(1u, frames.size());
(...skipping 10 matching lines...) Expand all
433 CompletionCallback callback = 439 CompletionCallback callback =
434 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback)); 440 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback));
435 441
436 { 442 {
437 InSequence s; 443 InSequence s;
438 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 444 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
439 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 445 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
440 EXPECT_CALL(checkpoint, Call(0)); 446 EXPECT_CALL(checkpoint, Call(0));
441 EXPECT_CALL(mock_callback, Call(ERR_FAILED)); 447 EXPECT_CALL(mock_callback, Call(ERR_FAILED));
442 } 448 }
443 ASSERT_EQ(ERR_IO_PENDING, deflate_stream_->ReadFrames(&frames, callback)); 449 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback),
450 IsError(ERR_IO_PENDING));
444 ASSERT_EQ(0u, frames.size()); 451 ASSERT_EQ(0u, frames.size());
445 452
446 checkpoint.Call(0); 453 checkpoint.Call(0);
447 454
448 AppendTo(stub.frames_passed(), 455 AppendTo(stub.frames_passed(),
449 WebSocketFrameHeader::kOpCodeText, 456 WebSocketFrameHeader::kOpCodeText,
450 kFinal, 457 kFinal,
451 "hello"); 458 "hello");
452 stub.callback().Run(ERR_FAILED); 459 stub.callback().Run(ERR_FAILED);
453 ASSERT_EQ(0u, frames.size()); 460 ASSERT_EQ(0u, frames.size());
454 } 461 }
455 462
456 TEST_F(WebSocketDeflateStreamTest, ReadCompressedFrameImmediately) { 463 TEST_F(WebSocketDeflateStreamTest, ReadCompressedFrameImmediately) {
457 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output; 464 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output;
458 AppendTo(&frames_to_output, 465 AppendTo(&frames_to_output,
459 WebSocketFrameHeader::kOpCodeText, 466 WebSocketFrameHeader::kOpCodeText,
460 kFinal | kReserved1, 467 kFinal | kReserved1,
461 std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7)); 468 std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7));
462 ReadFramesStub stub(OK, &frames_to_output); 469 ReadFramesStub stub(OK, &frames_to_output);
463 CompletionCallback callback; 470 CompletionCallback callback;
464 std::vector<std::unique_ptr<WebSocketFrame>> frames; 471 std::vector<std::unique_ptr<WebSocketFrame>> frames;
465 { 472 {
466 InSequence s; 473 InSequence s;
467 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 474 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
468 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 475 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
469 } 476 }
470 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 477 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
471 ASSERT_EQ(1u, frames.size()); 478 ASSERT_EQ(1u, frames.size());
472 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 479 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
473 EXPECT_TRUE(frames[0]->header.final); 480 EXPECT_TRUE(frames[0]->header.final);
474 EXPECT_FALSE(frames[0]->header.reserved1); 481 EXPECT_FALSE(frames[0]->header.reserved1);
475 EXPECT_EQ("Hello", ToString(frames[0])); 482 EXPECT_EQ("Hello", ToString(frames[0]));
476 } 483 }
477 484
478 TEST_F(WebSocketDeflateStreamTest, ReadCompressedFrameAsync) { 485 TEST_F(WebSocketDeflateStreamTest, ReadCompressedFrameAsync) {
479 ReadFramesStub stub(ERR_IO_PENDING); 486 ReadFramesStub stub(ERR_IO_PENDING);
480 MockCallback mock_callback, checkpoint; 487 MockCallback mock_callback, checkpoint;
481 CompletionCallback callback = 488 CompletionCallback callback =
482 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback)); 489 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback));
483 std::vector<std::unique_ptr<WebSocketFrame>> frames; 490 std::vector<std::unique_ptr<WebSocketFrame>> frames;
484 { 491 {
485 InSequence s; 492 InSequence s;
486 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 493 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
487 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 494 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
488 EXPECT_CALL(checkpoint, Call(0)); 495 EXPECT_CALL(checkpoint, Call(0));
489 EXPECT_CALL(mock_callback, Call(OK)); 496 EXPECT_CALL(mock_callback, Call(OK));
490 } 497 }
491 ASSERT_EQ(ERR_IO_PENDING, deflate_stream_->ReadFrames(&frames, callback)); 498 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback),
499 IsError(ERR_IO_PENDING));
492 500
493 checkpoint.Call(0); 501 checkpoint.Call(0);
494 502
495 AppendTo(stub.frames_passed(), 503 AppendTo(stub.frames_passed(),
496 WebSocketFrameHeader::kOpCodeText, 504 WebSocketFrameHeader::kOpCodeText,
497 kFinal | kReserved1, 505 kFinal | kReserved1,
498 std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7)); 506 std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7));
499 stub.callback().Run(OK); 507 stub.callback().Run(OK);
500 508
501 ASSERT_EQ(1u, frames.size()); 509 ASSERT_EQ(1u, frames.size());
(...skipping 19 matching lines...) Expand all
521 std::vector<std::unique_ptr<WebSocketFrame>> frames; 529 std::vector<std::unique_ptr<WebSocketFrame>> frames;
522 530
523 { 531 {
524 InSequence s; 532 InSequence s;
525 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 533 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
526 .WillOnce(Invoke(&stub1, &ReadFramesStub::Call)) 534 .WillOnce(Invoke(&stub1, &ReadFramesStub::Call))
527 .WillOnce(Invoke(&stub2, &ReadFramesStub::Call)); 535 .WillOnce(Invoke(&stub2, &ReadFramesStub::Call));
528 EXPECT_CALL(checkpoint, Call(0)); 536 EXPECT_CALL(checkpoint, Call(0));
529 EXPECT_CALL(mock_callback, Call(OK)); 537 EXPECT_CALL(mock_callback, Call(OK));
530 } 538 }
531 ASSERT_EQ(ERR_IO_PENDING, deflate_stream_->ReadFrames(&frames, callback)); 539 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback),
540 IsError(ERR_IO_PENDING));
532 ASSERT_EQ(0u, frames.size()); 541 ASSERT_EQ(0u, frames.size());
533 542
534 AppendTo(stub2.frames_passed(), 543 AppendTo(stub2.frames_passed(),
535 WebSocketFrameHeader::kOpCodeText, 544 WebSocketFrameHeader::kOpCodeText,
536 kFinal, 545 kFinal,
537 data2); 546 data2);
538 547
539 checkpoint.Call(0); 548 checkpoint.Call(0);
540 stub2.callback().Run(OK); 549 stub2.callback().Run(OK);
541 550
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 data2); 590 data2);
582 ReadFramesStub stub(OK, &frames_to_output); 591 ReadFramesStub stub(OK, &frames_to_output);
583 CompletionCallback callback; 592 CompletionCallback callback;
584 std::vector<std::unique_ptr<WebSocketFrame>> frames; 593 std::vector<std::unique_ptr<WebSocketFrame>> frames;
585 594
586 { 595 {
587 InSequence s; 596 InSequence s;
588 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 597 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
589 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 598 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
590 } 599 }
591 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 600 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
592 ASSERT_EQ(1u, frames.size()); 601 ASSERT_EQ(1u, frames.size());
593 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 602 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
594 EXPECT_TRUE(frames[0]->header.final); 603 EXPECT_TRUE(frames[0]->header.final);
595 EXPECT_FALSE(frames[0]->header.reserved1); 604 EXPECT_FALSE(frames[0]->header.reserved1);
596 EXPECT_EQ("Hello", ToString(frames[0])); 605 EXPECT_EQ("Hello", ToString(frames[0]));
597 } 606 }
598 607
599 TEST_F(WebSocketDeflateStreamTest, ReadUncompressedEmptyFrames) { 608 TEST_F(WebSocketDeflateStreamTest, ReadUncompressedEmptyFrames) {
600 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output; 609 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output;
601 AppendTo(&frames_to_output, 610 AppendTo(&frames_to_output,
602 WebSocketFrameHeader::kOpCodeText, 611 WebSocketFrameHeader::kOpCodeText,
603 kNoFlag); 612 kNoFlag);
604 AppendTo(&frames_to_output, 613 AppendTo(&frames_to_output,
605 WebSocketFrameHeader::kOpCodeContinuation, 614 WebSocketFrameHeader::kOpCodeContinuation,
606 kFinal); 615 kFinal);
607 ReadFramesStub stub(OK, &frames_to_output); 616 ReadFramesStub stub(OK, &frames_to_output);
608 CompletionCallback callback; 617 CompletionCallback callback;
609 std::vector<std::unique_ptr<WebSocketFrame>> frames; 618 std::vector<std::unique_ptr<WebSocketFrame>> frames;
610 619
611 { 620 {
612 InSequence s; 621 InSequence s;
613 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 622 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
614 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 623 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
615 } 624 }
616 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 625 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
617 ASSERT_EQ(2u, frames.size()); 626 ASSERT_EQ(2u, frames.size());
618 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 627 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
619 EXPECT_FALSE(frames[0]->header.final); 628 EXPECT_FALSE(frames[0]->header.final);
620 EXPECT_FALSE(frames[0]->header.reserved1); 629 EXPECT_FALSE(frames[0]->header.reserved1);
621 EXPECT_EQ("", ToString(frames[0])); 630 EXPECT_EQ("", ToString(frames[0]));
622 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation, 631 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation,
623 frames[1]->header.opcode); 632 frames[1]->header.opcode);
624 EXPECT_TRUE(frames[1]->header.final); 633 EXPECT_TRUE(frames[1]->header.final);
625 EXPECT_FALSE(frames[1]->header.reserved1); 634 EXPECT_FALSE(frames[1]->header.reserved1);
626 EXPECT_EQ("", ToString(frames[1])); 635 EXPECT_EQ("", ToString(frames[1]));
(...skipping 10 matching lines...) Expand all
637 kFinal); 646 kFinal);
638 ReadFramesStub stub(OK, &frames_to_output); 647 ReadFramesStub stub(OK, &frames_to_output);
639 CompletionCallback callback; 648 CompletionCallback callback;
640 std::vector<std::unique_ptr<WebSocketFrame>> frames; 649 std::vector<std::unique_ptr<WebSocketFrame>> frames;
641 650
642 { 651 {
643 InSequence s; 652 InSequence s;
644 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 653 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
645 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 654 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
646 } 655 }
647 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 656 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
648 ASSERT_EQ(1u, frames.size()); 657 ASSERT_EQ(1u, frames.size());
649 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 658 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
650 EXPECT_TRUE(frames[0]->header.final); 659 EXPECT_TRUE(frames[0]->header.final);
651 EXPECT_FALSE(frames[0]->header.reserved1); 660 EXPECT_FALSE(frames[0]->header.reserved1);
652 EXPECT_EQ("", ToString(frames[0])); 661 EXPECT_EQ("", ToString(frames[0]));
653 } 662 }
654 663
655 TEST_F(WebSocketDeflateStreamTest, 664 TEST_F(WebSocketDeflateStreamTest,
656 ReadCompressedFrameFollowedByEmptyFrame) { 665 ReadCompressedFrameFollowedByEmptyFrame) {
657 const std::string data("\xf2\x48\xcd\xc9\xc9\x07\x00", 7); 666 const std::string data("\xf2\x48\xcd\xc9\xc9\x07\x00", 7);
658 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output; 667 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output;
659 AppendTo(&frames_to_output, 668 AppendTo(&frames_to_output,
660 WebSocketFrameHeader::kOpCodeText, 669 WebSocketFrameHeader::kOpCodeText,
661 kReserved1, 670 kReserved1,
662 data); 671 data);
663 AppendTo(&frames_to_output, 672 AppendTo(&frames_to_output,
664 WebSocketFrameHeader::kOpCodeContinuation, 673 WebSocketFrameHeader::kOpCodeContinuation,
665 kFinal); 674 kFinal);
666 ReadFramesStub stub(OK, &frames_to_output); 675 ReadFramesStub stub(OK, &frames_to_output);
667 CompletionCallback callback; 676 CompletionCallback callback;
668 std::vector<std::unique_ptr<WebSocketFrame>> frames; 677 std::vector<std::unique_ptr<WebSocketFrame>> frames;
669 678
670 { 679 {
671 InSequence s; 680 InSequence s;
672 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 681 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
673 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 682 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
674 } 683 }
675 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 684 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
676 ASSERT_EQ(1u, frames.size()); 685 ASSERT_EQ(1u, frames.size());
677 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 686 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
678 EXPECT_TRUE(frames[0]->header.final); 687 EXPECT_TRUE(frames[0]->header.final);
679 EXPECT_FALSE(frames[0]->header.reserved1); 688 EXPECT_FALSE(frames[0]->header.reserved1);
680 EXPECT_EQ("Hello", ToString(frames[0])); 689 EXPECT_EQ("Hello", ToString(frames[0]));
681 } 690 }
682 691
683 TEST_F(WebSocketDeflateStreamTest, ReadControlFrameBetweenDataFrames) { 692 TEST_F(WebSocketDeflateStreamTest, ReadControlFrameBetweenDataFrames) {
684 const std::string data1("\xf2\x48\xcd", 3); 693 const std::string data1("\xf2\x48\xcd", 3);
685 const std::string data2("\xc9\xc9\x07\x00", 4); 694 const std::string data2("\xc9\xc9\x07\x00", 4);
686 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output; 695 std::vector<std::unique_ptr<WebSocketFrame>> frames_to_output;
687 AppendTo(&frames_to_output, 696 AppendTo(&frames_to_output,
688 WebSocketFrameHeader::kOpCodeText, 697 WebSocketFrameHeader::kOpCodeText,
689 kReserved1, 698 kReserved1,
690 data1); 699 data1);
691 AppendTo(&frames_to_output, WebSocketFrameHeader::kOpCodePing, kFinal); 700 AppendTo(&frames_to_output, WebSocketFrameHeader::kOpCodePing, kFinal);
692 AppendTo(&frames_to_output, WebSocketFrameHeader::kOpCodeText, kFinal, data2); 701 AppendTo(&frames_to_output, WebSocketFrameHeader::kOpCodeText, kFinal, data2);
693 ReadFramesStub stub(OK, &frames_to_output); 702 ReadFramesStub stub(OK, &frames_to_output);
694 CompletionCallback callback; 703 CompletionCallback callback;
695 std::vector<std::unique_ptr<WebSocketFrame>> frames; 704 std::vector<std::unique_ptr<WebSocketFrame>> frames;
696 705
697 { 706 {
698 InSequence s; 707 InSequence s;
699 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 708 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
700 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 709 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
701 } 710 }
702 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 711 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
703 ASSERT_EQ(2u, frames.size()); 712 ASSERT_EQ(2u, frames.size());
704 EXPECT_EQ(WebSocketFrameHeader::kOpCodePing, frames[0]->header.opcode); 713 EXPECT_EQ(WebSocketFrameHeader::kOpCodePing, frames[0]->header.opcode);
705 EXPECT_TRUE(frames[0]->header.final); 714 EXPECT_TRUE(frames[0]->header.final);
706 EXPECT_FALSE(frames[0]->header.reserved1); 715 EXPECT_FALSE(frames[0]->header.reserved1);
707 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode); 716 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode);
708 EXPECT_TRUE(frames[1]->header.final); 717 EXPECT_TRUE(frames[1]->header.final);
709 EXPECT_FALSE(frames[1]->header.reserved1); 718 EXPECT_FALSE(frames[1]->header.reserved1);
710 EXPECT_EQ("Hello", ToString(frames[1])); 719 EXPECT_EQ("Hello", ToString(frames[1]));
711 } 720 }
712 721
(...skipping 13 matching lines...) Expand all
726 735
727 ReadFramesStub stub(OK, &frames_to_output); 736 ReadFramesStub stub(OK, &frames_to_output);
728 CompletionCallback callback; 737 CompletionCallback callback;
729 std::vector<std::unique_ptr<WebSocketFrame>> frames; 738 std::vector<std::unique_ptr<WebSocketFrame>> frames;
730 { 739 {
731 InSequence s; 740 InSequence s;
732 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 741 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
733 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 742 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
734 } 743 }
735 744
736 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 745 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
737 ASSERT_EQ(3u, frames.size()); 746 ASSERT_EQ(3u, frames.size());
738 EXPECT_EQ(WebSocketFrameHeader::kOpCodeBinary, frames[0]->header.opcode); 747 EXPECT_EQ(WebSocketFrameHeader::kOpCodeBinary, frames[0]->header.opcode);
739 EXPECT_FALSE(frames[0]->header.final); 748 EXPECT_FALSE(frames[0]->header.final);
740 EXPECT_FALSE(frames[0]->header.reserved1); 749 EXPECT_FALSE(frames[0]->header.reserved1);
741 EXPECT_EQ(kChunkSize, static_cast<size_t>(frames[0]->header.payload_length)); 750 EXPECT_EQ(kChunkSize, static_cast<size_t>(frames[0]->header.payload_length));
742 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation, 751 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation,
743 frames[1]->header.opcode); 752 frames[1]->header.opcode);
744 EXPECT_FALSE(frames[1]->header.final); 753 EXPECT_FALSE(frames[1]->header.final);
745 EXPECT_FALSE(frames[1]->header.reserved1); 754 EXPECT_FALSE(frames[1]->header.reserved1);
746 EXPECT_EQ(kChunkSize, static_cast<size_t>(frames[1]->header.payload_length)); 755 EXPECT_EQ(kChunkSize, static_cast<size_t>(frames[1]->header.payload_length));
(...skipping 25 matching lines...) Expand all
772 781
773 ReadFramesStub stub(OK, &frames_to_output); 782 ReadFramesStub stub(OK, &frames_to_output);
774 CompletionCallback callback; 783 CompletionCallback callback;
775 std::vector<std::unique_ptr<WebSocketFrame>> frames; 784 std::vector<std::unique_ptr<WebSocketFrame>> frames;
776 { 785 {
777 InSequence s; 786 InSequence s;
778 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 787 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
779 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 788 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
780 } 789 }
781 790
782 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 791 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
783 ASSERT_EQ(2u, frames.size()); 792 ASSERT_EQ(2u, frames.size());
784 EXPECT_EQ(WebSocketFrameHeader::kOpCodeBinary, frames[0]->header.opcode); 793 EXPECT_EQ(WebSocketFrameHeader::kOpCodeBinary, frames[0]->header.opcode);
785 EXPECT_FALSE(frames[0]->header.final); 794 EXPECT_FALSE(frames[0]->header.final);
786 EXPECT_FALSE(frames[0]->header.reserved1); 795 EXPECT_FALSE(frames[0]->header.reserved1);
787 EXPECT_EQ(kChunkSize, static_cast<size_t>(frames[0]->header.payload_length)); 796 EXPECT_EQ(kChunkSize, static_cast<size_t>(frames[0]->header.payload_length));
788 797
789 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation, 798 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation,
790 frames[1]->header.opcode); 799 frames[1]->header.opcode);
791 EXPECT_TRUE(frames[1]->header.final); 800 EXPECT_TRUE(frames[1]->header.final);
792 EXPECT_FALSE(frames[1]->header.reserved1); 801 EXPECT_FALSE(frames[1]->header.reserved1);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 std::string("\x4a\x86\x33\x8d\x00\x00", 6)); 866 std::string("\x4a\x86\x33\x8d\x00\x00", 6));
858 ReadFramesStub stub(OK, &frames_to_output); 867 ReadFramesStub stub(OK, &frames_to_output);
859 CompletionCallback callback; 868 CompletionCallback callback;
860 std::vector<std::unique_ptr<WebSocketFrame>> frames; 869 std::vector<std::unique_ptr<WebSocketFrame>> frames;
861 870
862 { 871 {
863 InSequence s; 872 InSequence s;
864 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 873 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
865 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 874 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
866 } 875 }
867 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 876 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
868 ASSERT_EQ(2u, frames.size()); 877 ASSERT_EQ(2u, frames.size());
869 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 878 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
870 EXPECT_TRUE(frames[0]->header.final); 879 EXPECT_TRUE(frames[0]->header.final);
871 EXPECT_FALSE(frames[0]->header.reserved1); 880 EXPECT_FALSE(frames[0]->header.reserved1);
872 EXPECT_EQ("compressed1", ToString(frames[0])); 881 EXPECT_EQ("compressed1", ToString(frames[0]));
873 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode); 882 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode);
874 EXPECT_TRUE(frames[1]->header.final); 883 EXPECT_TRUE(frames[1]->header.final);
875 EXPECT_FALSE(frames[1]->header.reserved1); 884 EXPECT_FALSE(frames[1]->header.reserved1);
876 EXPECT_EQ("compressed2", ToString(frames[1])); 885 EXPECT_EQ("compressed2", ToString(frames[1]));
877 } 886 }
(...skipping 10 matching lines...) Expand all
888 "uncompressed2"); 897 "uncompressed2");
889 ReadFramesStub stub(OK, &frames_to_output); 898 ReadFramesStub stub(OK, &frames_to_output);
890 CompletionCallback callback; 899 CompletionCallback callback;
891 std::vector<std::unique_ptr<WebSocketFrame>> frames; 900 std::vector<std::unique_ptr<WebSocketFrame>> frames;
892 901
893 { 902 {
894 InSequence s; 903 InSequence s;
895 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 904 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
896 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 905 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
897 } 906 }
898 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 907 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
899 ASSERT_EQ(2u, frames.size()); 908 ASSERT_EQ(2u, frames.size());
900 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 909 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
901 EXPECT_TRUE(frames[0]->header.final); 910 EXPECT_TRUE(frames[0]->header.final);
902 EXPECT_FALSE(frames[0]->header.reserved1); 911 EXPECT_FALSE(frames[0]->header.reserved1);
903 EXPECT_EQ("uncompressed1", ToString(frames[0])); 912 EXPECT_EQ("uncompressed1", ToString(frames[0]));
904 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode); 913 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode);
905 EXPECT_TRUE(frames[1]->header.final); 914 EXPECT_TRUE(frames[1]->header.final);
906 EXPECT_FALSE(frames[1]->header.reserved1); 915 EXPECT_FALSE(frames[1]->header.reserved1);
907 EXPECT_EQ("uncompressed2", ToString(frames[1])); 916 EXPECT_EQ("uncompressed2", ToString(frames[1]));
908 } 917 }
(...skipping 12 matching lines...) Expand all
921 "uncompressed"); 930 "uncompressed");
922 ReadFramesStub stub(OK, &frames_to_output); 931 ReadFramesStub stub(OK, &frames_to_output);
923 CompletionCallback callback; 932 CompletionCallback callback;
924 std::vector<std::unique_ptr<WebSocketFrame>> frames; 933 std::vector<std::unique_ptr<WebSocketFrame>> frames;
925 934
926 { 935 {
927 InSequence s; 936 InSequence s;
928 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 937 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
929 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 938 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
930 } 939 }
931 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 940 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
932 ASSERT_EQ(2u, frames.size()); 941 ASSERT_EQ(2u, frames.size());
933 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 942 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
934 EXPECT_TRUE(frames[0]->header.final); 943 EXPECT_TRUE(frames[0]->header.final);
935 EXPECT_FALSE(frames[0]->header.reserved1); 944 EXPECT_FALSE(frames[0]->header.reserved1);
936 EXPECT_EQ("compressed", ToString(frames[0])); 945 EXPECT_EQ("compressed", ToString(frames[0]));
937 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode); 946 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode);
938 EXPECT_TRUE(frames[1]->header.final); 947 EXPECT_TRUE(frames[1]->header.final);
939 EXPECT_FALSE(frames[1]->header.reserved1); 948 EXPECT_FALSE(frames[1]->header.reserved1);
940 EXPECT_EQ("uncompressed", ToString(frames[1])); 949 EXPECT_EQ("uncompressed", ToString(frames[1]));
941 } 950 }
(...skipping 12 matching lines...) Expand all
954 "\x4a\xce\xcf\x2d\x28\x4a\x2d\x2e\x4e\x4d\x01\x00", 12)); 963 "\x4a\xce\xcf\x2d\x28\x4a\x2d\x2e\x4e\x4d\x01\x00", 12));
955 ReadFramesStub stub(OK, &frames_to_output); 964 ReadFramesStub stub(OK, &frames_to_output);
956 CompletionCallback callback; 965 CompletionCallback callback;
957 std::vector<std::unique_ptr<WebSocketFrame>> frames; 966 std::vector<std::unique_ptr<WebSocketFrame>> frames;
958 967
959 { 968 {
960 InSequence s; 969 InSequence s;
961 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 970 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
962 .WillOnce(Invoke(&stub, &ReadFramesStub::Call)); 971 .WillOnce(Invoke(&stub, &ReadFramesStub::Call));
963 } 972 }
964 ASSERT_EQ(OK, deflate_stream_->ReadFrames(&frames, callback)); 973 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback), IsOk());
965 ASSERT_EQ(2u, frames.size()); 974 ASSERT_EQ(2u, frames.size());
966 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 975 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
967 EXPECT_TRUE(frames[0]->header.final); 976 EXPECT_TRUE(frames[0]->header.final);
968 EXPECT_FALSE(frames[0]->header.reserved1); 977 EXPECT_FALSE(frames[0]->header.reserved1);
969 EXPECT_EQ("uncompressed", ToString(frames[0])); 978 EXPECT_EQ("uncompressed", ToString(frames[0]));
970 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode); 979 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[1]->header.opcode);
971 EXPECT_TRUE(frames[1]->header.final); 980 EXPECT_TRUE(frames[1]->header.final);
972 EXPECT_FALSE(frames[1]->header.reserved1); 981 EXPECT_FALSE(frames[1]->header.reserved1);
973 EXPECT_EQ("compressed", ToString(frames[1])); 982 EXPECT_EQ("compressed", ToString(frames[1]));
974 } 983 }
(...skipping 12 matching lines...) Expand all
987 InSequence s; 996 InSequence s;
988 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 997 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
989 .WillOnce(Invoke(stub_vector[0].get(), &ReadFramesStub::Call)); 998 .WillOnce(Invoke(stub_vector[0].get(), &ReadFramesStub::Call));
990 999
991 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _)) 1000 EXPECT_CALL(*mock_stream_, ReadFrames(&frames, _))
992 .WillOnce(Invoke(stub_vector[1].get(), &ReadFramesStub::Call)); 1001 .WillOnce(Invoke(stub_vector[1].get(), &ReadFramesStub::Call));
993 1002
994 EXPECT_CALL(mock_callback, Call(OK)); 1003 EXPECT_CALL(mock_callback, Call(OK));
995 } 1004 }
996 1005
997 ASSERT_EQ(ERR_IO_PENDING, deflate_stream_->ReadFrames(&frames, callback)); 1006 ASSERT_THAT(deflate_stream_->ReadFrames(&frames, callback),
1007 IsError(ERR_IO_PENDING));
998 AppendTo(stub_vector[0]->frames_passed(), 1008 AppendTo(stub_vector[0]->frames_passed(),
999 WebSocketFrameHeader::kOpCodeText, 1009 WebSocketFrameHeader::kOpCodeText,
1000 kReserved1, 1010 kReserved1,
1001 std::string()); 1011 std::string());
1002 stub_vector[0]->callback().Run(OK); 1012 stub_vector[0]->callback().Run(OK);
1003 AppendTo(stub_vector[1]->frames_passed(), 1013 AppendTo(stub_vector[1]->frames_passed(),
1004 WebSocketFrameHeader::kOpCodeContinuation, 1014 WebSocketFrameHeader::kOpCodeContinuation,
1005 kFinal, 1015 kFinal,
1006 std::string("\x02\x00")); 1016 std::string("\x02\x00"));
1007 stub_vector[1]->callback().Run(OK); 1017 stub_vector[1]->callback().Run(OK);
1008 ASSERT_EQ(1u, frames.size()); 1018 ASSERT_EQ(1u, frames.size());
1009 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode); 1019 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames[0]->header.opcode);
1010 EXPECT_EQ("", ToString(frames[0])); 1020 EXPECT_EQ("", ToString(frames[0]));
1011 } 1021 }
1012 1022
1013 TEST_F(WebSocketDeflateStreamTest, WriteEmpty) { 1023 TEST_F(WebSocketDeflateStreamTest, WriteEmpty) {
1014 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1024 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1015 CompletionCallback callback; 1025 CompletionCallback callback;
1016 { 1026 {
1017 InSequence s; 1027 InSequence s;
1018 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)).Times(0); 1028 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)).Times(0);
1019 } 1029 }
1020 EXPECT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1030 EXPECT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1021 } 1031 }
1022 1032
1023 TEST_F(WebSocketDeflateStreamTest, WriteFailedImmediately) { 1033 TEST_F(WebSocketDeflateStreamTest, WriteFailedImmediately) {
1024 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1034 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1025 CompletionCallback callback; 1035 CompletionCallback callback;
1026 { 1036 {
1027 InSequence s; 1037 InSequence s;
1028 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1038 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1029 .WillOnce(Return(ERR_FAILED)); 1039 .WillOnce(Return(ERR_FAILED));
1030 } 1040 }
1031 1041
1032 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "hello"); 1042 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "hello");
1033 predictor_->AddFramesToBeInput(frames); 1043 predictor_->AddFramesToBeInput(frames);
1034 EXPECT_EQ(ERR_FAILED, deflate_stream_->WriteFrames(&frames, callback)); 1044 EXPECT_THAT(deflate_stream_->WriteFrames(&frames, callback),
1045 IsError(ERR_FAILED));
1035 predictor_->Clear(); 1046 predictor_->Clear();
1036 } 1047 }
1037 1048
1038 TEST_F(WebSocketDeflateStreamTest, WriteFrameImmediately) { 1049 TEST_F(WebSocketDeflateStreamTest, WriteFrameImmediately) {
1039 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1050 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1040 CompletionCallback callback; 1051 CompletionCallback callback;
1041 WriteFramesStub stub(predictor_, OK); 1052 WriteFramesStub stub(predictor_, OK);
1042 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello"); 1053 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello");
1043 predictor_->AddFramesToBeInput(frames); 1054 predictor_->AddFramesToBeInput(frames);
1044 { 1055 {
1045 InSequence s; 1056 InSequence s;
1046 EXPECT_CALL(*mock_stream_, WriteFrames(_, _)) 1057 EXPECT_CALL(*mock_stream_, WriteFrames(_, _))
1047 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1058 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1048 } 1059 }
1049 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1060 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1050 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1061 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1051 *stub.frames(); 1062 *stub.frames();
1052 ASSERT_EQ(1u, frames_passed.size()); 1063 ASSERT_EQ(1u, frames_passed.size());
1053 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1064 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1054 EXPECT_TRUE(frames_passed[0]->header.final); 1065 EXPECT_TRUE(frames_passed[0]->header.final);
1055 EXPECT_TRUE(frames_passed[0]->header.reserved1); 1066 EXPECT_TRUE(frames_passed[0]->header.reserved1);
1056 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7), 1067 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7),
1057 ToString(frames_passed[0])); 1068 ToString(frames_passed[0]));
1058 } 1069 }
1059 1070
1060 TEST_F(WebSocketDeflateStreamTest, WriteFrameAsync) { 1071 TEST_F(WebSocketDeflateStreamTest, WriteFrameAsync) {
1061 WriteFramesStub stub(predictor_, ERR_IO_PENDING); 1072 WriteFramesStub stub(predictor_, ERR_IO_PENDING);
1062 MockCallback mock_callback, checkpoint; 1073 MockCallback mock_callback, checkpoint;
1063 CompletionCallback callback = 1074 CompletionCallback callback =
1064 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback)); 1075 base::Bind(&MockCallback::Call, base::Unretained(&mock_callback));
1065 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1076 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1066 { 1077 {
1067 InSequence s; 1078 InSequence s;
1068 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1079 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1069 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1080 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1070 EXPECT_CALL(checkpoint, Call(0)); 1081 EXPECT_CALL(checkpoint, Call(0));
1071 EXPECT_CALL(mock_callback, Call(OK)); 1082 EXPECT_CALL(mock_callback, Call(OK));
1072 } 1083 }
1073 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello"); 1084 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello");
1074 predictor_->AddFramesToBeInput(frames); 1085 predictor_->AddFramesToBeInput(frames);
1075 ASSERT_EQ(ERR_IO_PENDING, deflate_stream_->WriteFrames(&frames, callback)); 1086 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback),
1087 IsError(ERR_IO_PENDING));
1076 1088
1077 checkpoint.Call(0); 1089 checkpoint.Call(0);
1078 stub.callback().Run(OK); 1090 stub.callback().Run(OK);
1079 1091
1080 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1092 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1081 *stub.frames(); 1093 *stub.frames();
1082 ASSERT_EQ(1u, frames_passed.size()); 1094 ASSERT_EQ(1u, frames_passed.size());
1083 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1095 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1084 EXPECT_TRUE(frames_passed[0]->header.final); 1096 EXPECT_TRUE(frames_passed[0]->header.final);
1085 EXPECT_TRUE(frames_passed[0]->header.reserved1); 1097 EXPECT_TRUE(frames_passed[0]->header.reserved1);
1086 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7), 1098 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7),
1087 ToString(frames_passed[0])); 1099 ToString(frames_passed[0]));
1088 } 1100 }
1089 1101
1090 TEST_F(WebSocketDeflateStreamTest, WriteControlFrameBetweenDataFrames) { 1102 TEST_F(WebSocketDeflateStreamTest, WriteControlFrameBetweenDataFrames) {
1091 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1103 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1092 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kNoFlag, "Hel"); 1104 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kNoFlag, "Hel");
1093 AppendTo(&frames, WebSocketFrameHeader::kOpCodePing, kFinal); 1105 AppendTo(&frames, WebSocketFrameHeader::kOpCodePing, kFinal);
1094 AppendTo(&frames, WebSocketFrameHeader::kOpCodeContinuation, kFinal, "lo"); 1106 AppendTo(&frames, WebSocketFrameHeader::kOpCodeContinuation, kFinal, "lo");
1095 predictor_->AddFramesToBeInput(frames); 1107 predictor_->AddFramesToBeInput(frames);
1096 WriteFramesStub stub(predictor_, OK); 1108 WriteFramesStub stub(predictor_, OK);
1097 CompletionCallback callback; 1109 CompletionCallback callback;
1098 1110
1099 { 1111 {
1100 InSequence s; 1112 InSequence s;
1101 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1113 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1102 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1114 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1103 } 1115 }
1104 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1116 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1105 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1117 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1106 *stub.frames(); 1118 *stub.frames();
1107 ASSERT_EQ(2u, frames_passed.size()); 1119 ASSERT_EQ(2u, frames_passed.size());
1108 EXPECT_EQ(WebSocketFrameHeader::kOpCodePing, frames_passed[0]->header.opcode); 1120 EXPECT_EQ(WebSocketFrameHeader::kOpCodePing, frames_passed[0]->header.opcode);
1109 EXPECT_TRUE(frames_passed[0]->header.final); 1121 EXPECT_TRUE(frames_passed[0]->header.final);
1110 EXPECT_FALSE(frames_passed[0]->header.reserved1); 1122 EXPECT_FALSE(frames_passed[0]->header.reserved1);
1111 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[1]->header.opcode); 1123 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[1]->header.opcode);
1112 EXPECT_TRUE(frames_passed[1]->header.final); 1124 EXPECT_TRUE(frames_passed[1]->header.final);
1113 EXPECT_TRUE(frames_passed[1]->header.reserved1); 1125 EXPECT_TRUE(frames_passed[1]->header.reserved1);
1114 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7), 1126 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7),
1115 ToString(frames_passed[1])); 1127 ToString(frames_passed[1]));
1116 } 1128 }
1117 1129
1118 TEST_F(WebSocketDeflateStreamTest, WriteEmptyMessage) { 1130 TEST_F(WebSocketDeflateStreamTest, WriteEmptyMessage) {
1119 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1131 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1120 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal); 1132 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal);
1121 predictor_->AddFramesToBeInput(frames); 1133 predictor_->AddFramesToBeInput(frames);
1122 WriteFramesStub stub(predictor_, OK); 1134 WriteFramesStub stub(predictor_, OK);
1123 CompletionCallback callback; 1135 CompletionCallback callback;
1124 1136
1125 { 1137 {
1126 InSequence s; 1138 InSequence s;
1127 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1139 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1128 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1140 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1129 } 1141 }
1130 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1142 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1131 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1143 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1132 *stub.frames(); 1144 *stub.frames();
1133 ASSERT_EQ(1u, frames_passed.size()); 1145 ASSERT_EQ(1u, frames_passed.size());
1134 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1146 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1135 EXPECT_TRUE(frames_passed[0]->header.final); 1147 EXPECT_TRUE(frames_passed[0]->header.final);
1136 EXPECT_TRUE(frames_passed[0]->header.reserved1); 1148 EXPECT_TRUE(frames_passed[0]->header.reserved1);
1137 EXPECT_EQ(std::string("\x00", 1), ToString(frames_passed[0])); 1149 EXPECT_EQ(std::string("\x00", 1), ToString(frames_passed[0]));
1138 } 1150 }
1139 1151
1140 TEST_F(WebSocketDeflateStreamTest, WriteUncompressedMessage) { 1152 TEST_F(WebSocketDeflateStreamTest, WriteUncompressedMessage) {
1141 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1153 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1142 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kNoFlag, "AAAA"); 1154 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kNoFlag, "AAAA");
1143 AppendTo(&frames, WebSocketFrameHeader::kOpCodeContinuation, kFinal, "AAA"); 1155 AppendTo(&frames, WebSocketFrameHeader::kOpCodeContinuation, kFinal, "AAA");
1144 predictor_->AddFramesToBeInput(frames); 1156 predictor_->AddFramesToBeInput(frames);
1145 WriteFramesStub stub(predictor_, OK); 1157 WriteFramesStub stub(predictor_, OK);
1146 CompletionCallback callback; 1158 CompletionCallback callback;
1147 1159
1148 predictor_->set_result(WebSocketDeflatePredictor::DO_NOT_DEFLATE); 1160 predictor_->set_result(WebSocketDeflatePredictor::DO_NOT_DEFLATE);
1149 1161
1150 { 1162 {
1151 InSequence s; 1163 InSequence s;
1152 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1164 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1153 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1165 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1154 } 1166 }
1155 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1167 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1156 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1168 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1157 *stub.frames(); 1169 *stub.frames();
1158 ASSERT_EQ(2u, frames_passed.size()); 1170 ASSERT_EQ(2u, frames_passed.size());
1159 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1171 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1160 EXPECT_FALSE(frames_passed[0]->header.final); 1172 EXPECT_FALSE(frames_passed[0]->header.final);
1161 EXPECT_FALSE(frames_passed[0]->header.reserved1); 1173 EXPECT_FALSE(frames_passed[0]->header.reserved1);
1162 EXPECT_EQ("AAAA", ToString(frames_passed[0])); 1174 EXPECT_EQ("AAAA", ToString(frames_passed[0]));
1163 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation, 1175 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation,
1164 frames_passed[1]->header.opcode); 1176 frames_passed[1]->header.opcode);
1165 EXPECT_TRUE(frames_passed[1]->header.final); 1177 EXPECT_TRUE(frames_passed[1]->header.final);
(...skipping 19 matching lines...) Expand all
1185 while (true) { 1197 while (true) {
1186 bool is_final = (total_compressed_frames.size() >= 2); 1198 bool is_final = (total_compressed_frames.size() >= 2);
1187 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1199 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1188 std::string data; 1200 std::string data;
1189 for (size_t i = 0; i < size; ++i) 1201 for (size_t i = 0; i < size; ++i)
1190 data += static_cast<char>(lcg.Generate()); 1202 data += static_cast<char>(lcg.Generate());
1191 deflater.AddBytes(data.data(), data.size()); 1203 deflater.AddBytes(data.data(), data.size());
1192 FrameFlag flag = is_final ? kFinal : kNoFlag; 1204 FrameFlag flag = is_final ? kFinal : kNoFlag;
1193 AppendTo(&frames, WebSocketFrameHeader::kOpCodeBinary, flag, data); 1205 AppendTo(&frames, WebSocketFrameHeader::kOpCodeBinary, flag, data);
1194 predictor_->AddFramesToBeInput(frames); 1206 predictor_->AddFramesToBeInput(frames);
1195 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1207 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1196 total_compressed_frames.insert( 1208 total_compressed_frames.insert(
1197 total_compressed_frames.end(), 1209 total_compressed_frames.end(),
1198 std::make_move_iterator(stub.frames()->begin()), 1210 std::make_move_iterator(stub.frames()->begin()),
1199 std::make_move_iterator(stub.frames()->end())); 1211 std::make_move_iterator(stub.frames()->end()));
1200 stub.frames()->clear(); 1212 stub.frames()->clear();
1201 if (is_final) 1213 if (is_final)
1202 break; 1214 break;
1203 } 1215 }
1204 deflater.Finish(); 1216 deflater.Finish();
1205 std::string total_deflated; 1217 std::string total_deflated;
(...skipping 23 matching lines...) Expand all
1229 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello"); 1241 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello");
1230 predictor_->AddFramesToBeInput(frames); 1242 predictor_->AddFramesToBeInput(frames);
1231 WriteFramesStub stub(predictor_, OK); 1243 WriteFramesStub stub(predictor_, OK);
1232 CompletionCallback callback; 1244 CompletionCallback callback;
1233 1245
1234 { 1246 {
1235 InSequence s; 1247 InSequence s;
1236 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1248 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1237 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1249 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1238 } 1250 }
1239 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1251 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1240 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1252 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1241 *stub.frames(); 1253 *stub.frames();
1242 ASSERT_EQ(2u, frames_passed.size()); 1254 ASSERT_EQ(2u, frames_passed.size());
1243 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1255 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1244 EXPECT_TRUE(frames_passed[0]->header.final); 1256 EXPECT_TRUE(frames_passed[0]->header.final);
1245 EXPECT_TRUE(frames_passed[0]->header.reserved1); 1257 EXPECT_TRUE(frames_passed[0]->header.reserved1);
1246 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7), 1258 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7),
1247 ToString(frames_passed[0])); 1259 ToString(frames_passed[0]));
1248 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[1]->header.opcode); 1260 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[1]->header.opcode);
1249 EXPECT_TRUE(frames_passed[1]->header.final); 1261 EXPECT_TRUE(frames_passed[1]->header.final);
1250 EXPECT_TRUE(frames_passed[1]->header.reserved1); 1262 EXPECT_TRUE(frames_passed[1]->header.reserved1);
1251 EXPECT_EQ(std::string("\xf2\x00\x11\x00\x00", 5), ToString(frames_passed[1])); 1263 EXPECT_EQ(std::string("\xf2\x00\x11\x00\x00", 5), ToString(frames_passed[1]));
1252 } 1264 }
1253 1265
1254 TEST_F(WebSocketDeflateStreamWithDoNotTakeOverContextTest, 1266 TEST_F(WebSocketDeflateStreamWithDoNotTakeOverContextTest,
1255 WriteMultipleMessages) { 1267 WriteMultipleMessages) {
1256 std::vector<std::unique_ptr<WebSocketFrame>> frames; 1268 std::vector<std::unique_ptr<WebSocketFrame>> frames;
1257 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello"); 1269 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello");
1258 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello"); 1270 AppendTo(&frames, WebSocketFrameHeader::kOpCodeText, kFinal, "Hello");
1259 predictor_->AddFramesToBeInput(frames); 1271 predictor_->AddFramesToBeInput(frames);
1260 WriteFramesStub stub(predictor_, OK); 1272 WriteFramesStub stub(predictor_, OK);
1261 CompletionCallback callback; 1273 CompletionCallback callback;
1262 1274
1263 { 1275 {
1264 InSequence s; 1276 InSequence s;
1265 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1277 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1266 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1278 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1267 } 1279 }
1268 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1280 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1269 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1281 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1270 *stub.frames(); 1282 *stub.frames();
1271 ASSERT_EQ(2u, frames_passed.size()); 1283 ASSERT_EQ(2u, frames_passed.size());
1272 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1284 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1273 EXPECT_TRUE(frames_passed[0]->header.final); 1285 EXPECT_TRUE(frames_passed[0]->header.final);
1274 EXPECT_TRUE(frames_passed[0]->header.reserved1); 1286 EXPECT_TRUE(frames_passed[0]->header.reserved1);
1275 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7), 1287 EXPECT_EQ(std::string("\xf2\x48\xcd\xc9\xc9\x07\x00", 7),
1276 ToString(frames_passed[0])); 1288 ToString(frames_passed[0]));
1277 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[1]->header.opcode); 1289 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[1]->header.opcode);
1278 EXPECT_TRUE(frames_passed[1]->header.final); 1290 EXPECT_TRUE(frames_passed[1]->header.final);
(...skipping 16 matching lines...) Expand all
1295 predictor_->AddFramesToBeInput(frames); 1307 predictor_->AddFramesToBeInput(frames);
1296 WriteFramesStub stub(predictor_, OK); 1308 WriteFramesStub stub(predictor_, OK);
1297 CompletionCallback callback; 1309 CompletionCallback callback;
1298 predictor_->set_result(WebSocketDeflatePredictor::TRY_DEFLATE); 1310 predictor_->set_result(WebSocketDeflatePredictor::TRY_DEFLATE);
1299 1311
1300 { 1312 {
1301 InSequence s; 1313 InSequence s;
1302 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _)) 1314 EXPECT_CALL(*mock_stream_, WriteFrames(&frames, _))
1303 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1315 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1304 } 1316 }
1305 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames, callback)); 1317 ASSERT_THAT(deflate_stream_->WriteFrames(&frames, callback), IsOk());
1306 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1318 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1307 *stub.frames(); 1319 *stub.frames();
1308 ASSERT_EQ(5u, frames_passed.size()); 1320 ASSERT_EQ(5u, frames_passed.size());
1309 1321
1310 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode); 1322 EXPECT_EQ(WebSocketFrameHeader::kOpCodeText, frames_passed[0]->header.opcode);
1311 EXPECT_FALSE(frames_passed[0]->header.final); 1323 EXPECT_FALSE(frames_passed[0]->header.final);
1312 EXPECT_FALSE(frames_passed[0]->header.reserved1); 1324 EXPECT_FALSE(frames_passed[0]->header.reserved1);
1313 EXPECT_EQ("He", ToString(frames_passed[0])); 1325 EXPECT_EQ("He", ToString(frames_passed[0]));
1314 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation, 1326 EXPECT_EQ(WebSocketFrameHeader::kOpCodeContinuation,
1315 frames_passed[1]->header.opcode); 1327 frames_passed[1]->header.opcode);
(...skipping 22 matching lines...) Expand all
1338 TEST_F(WebSocketDeflateStreamWithClientWindowBitsTest, WindowBits8) { 1350 TEST_F(WebSocketDeflateStreamWithClientWindowBitsTest, WindowBits8) {
1339 SetUpWithWindowBits(8); 1351 SetUpWithWindowBits(8);
1340 CompletionCallback callback; 1352 CompletionCallback callback;
1341 AddCompressibleFrameString(); 1353 AddCompressibleFrameString();
1342 WriteFramesStub stub(predictor_, OK); 1354 WriteFramesStub stub(predictor_, OK);
1343 { 1355 {
1344 InSequence s; 1356 InSequence s;
1345 EXPECT_CALL(*mock_stream_, WriteFrames(_, _)) 1357 EXPECT_CALL(*mock_stream_, WriteFrames(_, _))
1346 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1358 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1347 } 1359 }
1348 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames_, callback)); 1360 ASSERT_THAT(deflate_stream_->WriteFrames(&frames_, callback), IsOk());
1349 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1361 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1350 *stub.frames(); 1362 *stub.frames();
1351 ASSERT_EQ(1u, frames_passed.size()); 1363 ASSERT_EQ(1u, frames_passed.size());
1352 EXPECT_EQ(std::string("r\xce(\xca\xcf\xcd,\xcdM\x1c\xe1\xc0\x39\xa3" 1364 EXPECT_EQ(std::string("r\xce(\xca\xcf\xcd,\xcdM\x1c\xe1\xc0\x39\xa3"
1353 "(?7\xb3\x34\x17\x00", 21), 1365 "(?7\xb3\x34\x17\x00", 21),
1354 ToString(frames_passed[0])); 1366 ToString(frames_passed[0]));
1355 } 1367 }
1356 1368
1357 // The same input with window_bits=10 returns smaller output. 1369 // The same input with window_bits=10 returns smaller output.
1358 TEST_F(WebSocketDeflateStreamWithClientWindowBitsTest, WindowBits10) { 1370 TEST_F(WebSocketDeflateStreamWithClientWindowBitsTest, WindowBits10) {
1359 SetUpWithWindowBits(10); 1371 SetUpWithWindowBits(10);
1360 CompletionCallback callback; 1372 CompletionCallback callback;
1361 AddCompressibleFrameString(); 1373 AddCompressibleFrameString();
1362 WriteFramesStub stub(predictor_, OK); 1374 WriteFramesStub stub(predictor_, OK);
1363 { 1375 {
1364 InSequence s; 1376 InSequence s;
1365 EXPECT_CALL(*mock_stream_, WriteFrames(_, _)) 1377 EXPECT_CALL(*mock_stream_, WriteFrames(_, _))
1366 .WillOnce(Invoke(&stub, &WriteFramesStub::Call)); 1378 .WillOnce(Invoke(&stub, &WriteFramesStub::Call));
1367 } 1379 }
1368 ASSERT_EQ(OK, deflate_stream_->WriteFrames(&frames_, callback)); 1380 ASSERT_THAT(deflate_stream_->WriteFrames(&frames_, callback), IsOk());
1369 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed = 1381 const std::vector<std::unique_ptr<WebSocketFrame>>& frames_passed =
1370 *stub.frames(); 1382 *stub.frames();
1371 ASSERT_EQ(1u, frames_passed.size()); 1383 ASSERT_EQ(1u, frames_passed.size());
1372 EXPECT_EQ( 1384 EXPECT_EQ(
1373 std::string("r\xce(\xca\xcf\xcd,\xcdM\x1c\xe1\xc0\x19\x1a\x0e\0\0", 17), 1385 std::string("r\xce(\xca\xcf\xcd,\xcdM\x1c\xe1\xc0\x19\x1a\x0e\0\0", 17),
1374 ToString(frames_passed[0])); 1386 ToString(frames_passed[0]));
1375 } 1387 }
1376 1388
1377 } // namespace 1389 } // namespace
1378 1390
1379 } // namespace net 1391 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_basic_stream_test.cc ('k') | net/websockets/websocket_errors_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698