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

Side by Side Diff: net/quic/test_tools/quic_test_utils.h

Issue 2856243003: Revert of Landing Recent QUIC changes until Sat Apr 29 00:22:04 2017 +0000 (Closed)
Patch Set: Created 3 years, 7 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/test_tools/quic_spdy_session_peer.cc ('k') | net/quic/test_tools/quic_test_utils.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Common utilities for Quic tests 5 // Common utilities for Quic tests
6 6
7 #ifndef NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ 7 #ifndef NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_
8 #define NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ 8 #define NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_
9 9
10 #include <cstdint> 10 #include <cstdint>
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <utility> 13 #include <utility>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "net/quic/core/congestion_control/loss_detection_interface.h" 17 #include "net/quic/core/congestion_control/loss_detection_interface.h"
18 #include "net/quic/core/congestion_control/send_algorithm_interface.h" 18 #include "net/quic/core/congestion_control/send_algorithm_interface.h"
19 #include "net/quic/core/quic_client_push_promise_index.h" 19 #include "net/quic/core/quic_client_push_promise_index.h"
20 #include "net/quic/core/quic_connection.h" 20 #include "net/quic/core/quic_connection.h"
21 #include "net/quic/core/quic_connection_close_delegate_interface.h" 21 #include "net/quic/core/quic_connection_close_delegate_interface.h"
22 #include "net/quic/core/quic_framer.h" 22 #include "net/quic/core/quic_framer.h"
23 #include "net/quic/core/quic_iovector.h" 23 #include "net/quic/core/quic_iovector.h"
24 #include "net/quic/core/quic_sent_packet_manager.h" 24 #include "net/quic/core/quic_sent_packet_manager.h"
25 #include "net/quic/core/quic_server_session_base.h" 25 #include "net/quic/core/quic_server_session_base.h"
26 #include "net/quic/core/quic_simple_buffer_allocator.h" 26 #include "net/quic/core/quic_simple_buffer_allocator.h"
27 #include "net/quic/platform/api/quic_ptr_util.h"
28 #include "net/quic/platform/api/quic_string_piece.h" 27 #include "net/quic/platform/api/quic_string_piece.h"
29 #include "net/quic/test_tools/mock_clock.h" 28 #include "net/quic/test_tools/mock_clock.h"
30 #include "net/quic/test_tools/mock_random.h" 29 #include "net/quic/test_tools/mock_random.h"
31 #include "net/test/gtest_util.h" 30 #include "net/test/gtest_util.h"
32 #include "net/tools/quic/quic_per_connection_packet_writer.h" 31 #include "net/tools/quic/quic_per_connection_packet_writer.h"
33 #include "net/tools/quic/test_tools/mock_quic_session_visitor.h" 32 #include "net/tools/quic/test_tools/mock_quic_session_visitor.h"
34 #include "testing/gmock/include/gmock/gmock.h" 33 #include "testing/gmock/include/gmock/gmock.h"
35 34
36 // EXPECT_QUIC_BUG is like EXPECT_DFATAL, except it ensures that no DFATAL 35 // EXPECT_QUIC_BUG is like EXPECT_DFATAL, except it ensures that no DFATAL
37 // logging is skipped due to exponential backoff. 36 // logging is skipped due to exponential backoff.
38 // 37 //
39 // For external QUIC, EXPECT_QUIC_BUG should be #defined to EXPECT_DFATAL. 38 // For external QUIC, EXPECT_QUIC_BUG should be #defined to EXPECT_DFATAL.
40 #define EXPECT_QUIC_BUG EXPECT_DFATAL 39 #define EXPECT_QUIC_BUG EXPECT_DFATAL
41 40
42 namespace net { 41 namespace net {
43 42
44 namespace test { 43 namespace test {
45 44
46 static const QuicConnectionId kTestConnectionId = 42; 45 static const QuicConnectionId kTestConnectionId = 42;
47 static const uint16_t kTestPort = 12345; 46 static const uint16_t kTestPort = 12345;
48 static const uint32_t kInitialStreamFlowControlWindowForTest = 47 static const uint32_t kInitialStreamFlowControlWindowForTest =
49 1024 * 1024; // 1 MB 48 1024 * 1024; // 1 MB
50 static const uint32_t kInitialSessionFlowControlWindowForTest = 49 static const uint32_t kInitialSessionFlowControlWindowForTest =
51 1536 * 1024; // 1.5 MB 50 1536 * 1024; // 1.5 MB
51 // Data stream IDs start at 5: the crypto stream is 1, headers stream is 3.
52 static const QuicStreamId kClientDataStreamId1 = 5;
53 static const QuicStreamId kClientDataStreamId2 = 7;
54 static const QuicStreamId kClientDataStreamId3 = 9;
55 static const QuicStreamId kServerDataStreamId1 = 4;
52 56
53 // Returns the test peer IP address. 57 // Returns the test peer IP address.
54 QuicIpAddress TestPeerIPAddress(); 58 QuicIpAddress TestPeerIPAddress();
55 59
56 // Upper limit on versions we support. 60 // Upper limit on versions we support.
57 QuicVersion QuicVersionMax(); 61 QuicVersion QuicVersionMax();
58 62
59 // Lower limit on versions we support. 63 // Lower limit on versions we support.
60 QuicVersion QuicVersionMin(); 64 QuicVersion QuicVersionMin();
61 65
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 const QuicCryptoStream* GetCryptoStream() const override { 476 const QuicCryptoStream* GetCryptoStream() const override {
473 return crypto_stream_.get(); 477 return crypto_stream_.get();
474 } 478 }
475 479
476 MOCK_METHOD3(OnConnectionClosed, 480 MOCK_METHOD3(OnConnectionClosed,
477 void(QuicErrorCode error, 481 void(QuicErrorCode error,
478 const std::string& error_details, 482 const std::string& error_details,
479 ConnectionCloseSource source)); 483 ConnectionCloseSource source));
480 MOCK_METHOD1(CreateIncomingDynamicStream, QuicStream*(QuicStreamId id)); 484 MOCK_METHOD1(CreateIncomingDynamicStream, QuicStream*(QuicStreamId id));
481 MOCK_METHOD1(CreateOutgoingDynamicStream, QuicStream*(SpdyPriority priority)); 485 MOCK_METHOD1(CreateOutgoingDynamicStream, QuicStream*(SpdyPriority priority));
482 MOCK_METHOD1(MaybeCreateIncomingDynamicStream, QuicStream*(QuicStreamId id));
483 MOCK_METHOD1(MaybeCreateOutgoingDynamicStream,
484 QuicStream*(SpdyPriority priority));
485 MOCK_METHOD1(ShouldCreateIncomingDynamicStream, bool(QuicStreamId id)); 486 MOCK_METHOD1(ShouldCreateIncomingDynamicStream, bool(QuicStreamId id));
486 MOCK_METHOD0(ShouldCreateOutgoingDynamicStream, bool()); 487 MOCK_METHOD0(ShouldCreateOutgoingDynamicStream, bool());
487 MOCK_METHOD6( 488 MOCK_METHOD6(
488 WritevData, 489 WritevData,
489 QuicConsumedData(QuicStream* stream, 490 QuicConsumedData(QuicStream* stream,
490 QuicStreamId id, 491 QuicStreamId id,
491 QuicIOVector data, 492 QuicIOVector data,
492 QuicStreamOffset offset, 493 QuicStreamOffset offset,
493 StreamSendingState state, 494 StreamSendingState state,
494 QuicReferenceCountedPointer<QuicAckListenerInterface>)); 495 QuicReferenceCountedPointer<QuicAckListenerInterface>));
495 496
496 MOCK_METHOD3(SendRstStream, 497 MOCK_METHOD3(SendRstStream,
497 void(QuicStreamId stream_id, 498 void(QuicStreamId stream_id,
498 QuicRstStreamErrorCode error, 499 QuicRstStreamErrorCode error,
499 QuicStreamOffset bytes_written)); 500 QuicStreamOffset bytes_written));
500 501
501 MOCK_METHOD2(OnStreamHeaders, 502 MOCK_METHOD2(OnStreamHeaders,
502 void(QuicStreamId stream_id, QuicStringPiece headers_data)); 503 void(QuicStreamId stream_id, QuicStringPiece headers_data));
503 MOCK_METHOD2(OnStreamHeadersPriority, 504 MOCK_METHOD2(OnStreamHeadersPriority,
504 void(QuicStreamId stream_id, SpdyPriority priority)); 505 void(QuicStreamId stream_id, SpdyPriority priority));
505 MOCK_METHOD3(OnStreamHeadersComplete, 506 MOCK_METHOD3(OnStreamHeadersComplete,
506 void(QuicStreamId stream_id, bool fin, size_t frame_len)); 507 void(QuicStreamId stream_id, bool fin, size_t frame_len));
507 MOCK_CONST_METHOD0(IsCryptoHandshakeConfirmed, bool()); 508 MOCK_CONST_METHOD0(IsCryptoHandshakeConfirmed, bool());
508 MOCK_METHOD1(CreateStream, std::unique_ptr<QuicStream>(QuicStreamId id));
509 509
510 using QuicSession::ActivateStream; 510 using QuicSession::ActivateStream;
511 511
512 // Returns a QuicConsumedData that indicates all of |data| (and |fin| if set) 512 // Returns a QuicConsumedData that indicates all of |data| (and |fin| if set)
513 // has been consumed. 513 // has been consumed.
514 static QuicConsumedData ConsumeAllData( 514 static QuicConsumedData ConsumeAllData(
515 QuicStream* stream, 515 QuicStream* stream,
516 QuicStreamId id, 516 QuicStreamId id,
517 const QuicIOVector& data, 517 const QuicIOVector& data,
518 QuicStreamOffset offset, 518 QuicStreamOffset offset,
(...skipping 24 matching lines...) Expand all
543 // From QuicSession. 543 // From QuicSession.
544 MOCK_METHOD3(OnConnectionClosed, 544 MOCK_METHOD3(OnConnectionClosed,
545 void(QuicErrorCode error, 545 void(QuicErrorCode error,
546 const std::string& error_details, 546 const std::string& error_details,
547 ConnectionCloseSource source)); 547 ConnectionCloseSource source));
548 MOCK_METHOD1(CreateIncomingDynamicStream, QuicSpdyStream*(QuicStreamId id)); 548 MOCK_METHOD1(CreateIncomingDynamicStream, QuicSpdyStream*(QuicStreamId id));
549 MOCK_METHOD1(CreateOutgoingDynamicStream, 549 MOCK_METHOD1(CreateOutgoingDynamicStream,
550 QuicSpdyStream*(SpdyPriority priority)); 550 QuicSpdyStream*(SpdyPriority priority));
551 MOCK_METHOD1(ShouldCreateIncomingDynamicStream, bool(QuicStreamId id)); 551 MOCK_METHOD1(ShouldCreateIncomingDynamicStream, bool(QuicStreamId id));
552 MOCK_METHOD0(ShouldCreateOutgoingDynamicStream, bool()); 552 MOCK_METHOD0(ShouldCreateOutgoingDynamicStream, bool());
553 MOCK_METHOD1(CreateStream, std::unique_ptr<QuicStream>(QuicStreamId id));
554 MOCK_METHOD6( 553 MOCK_METHOD6(
555 WritevData, 554 WritevData,
556 QuicConsumedData( 555 QuicConsumedData(
557 QuicStream* stream, 556 QuicStream* stream,
558 QuicStreamId id, 557 QuicStreamId id,
559 QuicIOVector data, 558 QuicIOVector data,
560 QuicStreamOffset offset, 559 QuicStreamOffset offset,
561 StreamSendingState state, 560 StreamSendingState state,
562 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener)); 561 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener));
563 562
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 const SpdyHeaderBlock& headers, 605 const SpdyHeaderBlock& headers,
607 bool fin, 606 bool fin,
608 SpdyPriority priority, 607 SpdyPriority priority,
609 const QuicReferenceCountedPointer<QuicAckListenerInterface>& 608 const QuicReferenceCountedPointer<QuicAckListenerInterface>&
610 ack_listener)); 609 ack_listener));
611 MOCK_METHOD1(OnHeadersHeadOfLineBlocking, void(QuicTime::Delta delta)); 610 MOCK_METHOD1(OnHeadersHeadOfLineBlocking, void(QuicTime::Delta delta));
612 MOCK_METHOD4( 611 MOCK_METHOD4(
613 OnStreamFrameData, 612 OnStreamFrameData,
614 void(QuicStreamId stream_id, const char* data, size_t len, bool fin)); 613 void(QuicStreamId stream_id, const char* data, size_t len, bool fin));
615 614
616 QuicSpdyStream* QuicSpdySessionMaybeCreateIncomingDynamicStream(
617 QuicStreamId id) {
618 return QuicSpdySession::MaybeCreateIncomingDynamicStream(id);
619 }
620
621 bool QuicSpdySessionShouldCreateIncomingDynamicStream2(QuicStreamId id) {
622 return QuicSpdySession::ShouldCreateIncomingDynamicStream2(id);
623 }
624
625 QuicSpdyStream* QuicSpdySessionMaybeCreateOutgoingDynamicStream(
626 SpdyPriority priority) {
627 return QuicSpdySession::MaybeCreateOutgoingDynamicStream(priority);
628 }
629
630 bool QuicSpdySessionShouldCreateOutgoingDynamicStream2() {
631 return QuicSpdySession::ShouldCreateOutgoingDynamicStream2();
632 }
633
634 using QuicSession::ActivateStream; 615 using QuicSession::ActivateStream;
635 616
636 private: 617 private:
637 std::unique_ptr<QuicCryptoStream> crypto_stream_; 618 std::unique_ptr<QuicCryptoStream> crypto_stream_;
638 SpdyHeaderBlock write_headers_; 619 SpdyHeaderBlock write_headers_;
639 620
640 DISALLOW_COPY_AND_ASSIGN(MockQuicSpdySession); 621 DISALLOW_COPY_AND_ASSIGN(MockQuicSpdySession);
641 }; 622 };
642 623
643 class TestQuicSpdyServerSession : public QuicServerSessionBase { 624 class TestQuicSpdyServerSession : public QuicServerSessionBase {
644 public: 625 public:
645 // Takes ownership of |connection|. 626 // Takes ownership of |connection|.
646 TestQuicSpdyServerSession(QuicConnection* connection, 627 TestQuicSpdyServerSession(QuicConnection* connection,
647 const QuicConfig& config, 628 const QuicConfig& config,
648 const QuicCryptoServerConfig* crypto_config, 629 const QuicCryptoServerConfig* crypto_config,
649 QuicCompressedCertsCache* compressed_certs_cache); 630 QuicCompressedCertsCache* compressed_certs_cache);
650 ~TestQuicSpdyServerSession() override; 631 ~TestQuicSpdyServerSession() override;
651 632
652 MOCK_METHOD1(CreateIncomingDynamicStream, QuicSpdyStream*(QuicStreamId id)); 633 MOCK_METHOD1(CreateIncomingDynamicStream, QuicSpdyStream*(QuicStreamId id));
653 MOCK_METHOD1(CreateOutgoingDynamicStream, 634 MOCK_METHOD1(CreateOutgoingDynamicStream,
654 QuicSpdyStream*(SpdyPriority priority)); 635 QuicSpdyStream*(SpdyPriority priority));
655 MOCK_METHOD1(CreateStream, std::unique_ptr<QuicStream>(QuicStreamId id));
656 QuicCryptoServerStreamBase* CreateQuicCryptoServerStream( 636 QuicCryptoServerStreamBase* CreateQuicCryptoServerStream(
657 const QuicCryptoServerConfig* crypto_config, 637 const QuicCryptoServerConfig* crypto_config,
658 QuicCompressedCertsCache* compressed_certs_cache) override; 638 QuicCompressedCertsCache* compressed_certs_cache) override;
659 639
660 QuicCryptoServerStream* GetMutableCryptoStream() override; 640 QuicCryptoServerStream* GetMutableCryptoStream() override;
661 641
662 const QuicCryptoServerStream* GetCryptoStream() const override; 642 const QuicCryptoServerStream* GetCryptoStream() const override;
663 643
664 MockQuicCryptoServerStreamHelper* helper() { return &helper_; } 644 MockQuicCryptoServerStreamHelper* helper() { return &helper_; }
665 645
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 MOCK_METHOD1(OnProofVerifyDetailsAvailable, 688 MOCK_METHOD1(OnProofVerifyDetailsAvailable,
709 void(const ProofVerifyDetails& verify_details)); 689 void(const ProofVerifyDetails& verify_details));
710 690
711 // TestQuicSpdyClientSession 691 // TestQuicSpdyClientSession
712 MOCK_METHOD1(CreateIncomingDynamicStream, QuicSpdyStream*(QuicStreamId id)); 692 MOCK_METHOD1(CreateIncomingDynamicStream, QuicSpdyStream*(QuicStreamId id));
713 MOCK_METHOD1(CreateOutgoingDynamicStream, 693 MOCK_METHOD1(CreateOutgoingDynamicStream,
714 QuicSpdyStream*(SpdyPriority priority)); 694 QuicSpdyStream*(SpdyPriority priority));
715 MOCK_METHOD1(ShouldCreateIncomingDynamicStream, bool(QuicStreamId id)); 695 MOCK_METHOD1(ShouldCreateIncomingDynamicStream, bool(QuicStreamId id));
716 MOCK_METHOD0(ShouldCreateOutgoingDynamicStream, bool()); 696 MOCK_METHOD0(ShouldCreateOutgoingDynamicStream, bool());
717 697
718 MOCK_METHOD1(CreateStream, std::unique_ptr<QuicStream>(QuicStreamId id));
719
720 QuicCryptoClientStream* GetMutableCryptoStream() override; 698 QuicCryptoClientStream* GetMutableCryptoStream() override;
721 const QuicCryptoClientStream* GetCryptoStream() const override; 699 const QuicCryptoClientStream* GetCryptoStream() const override;
722 700
723 private: 701 private:
724 std::unique_ptr<QuicCryptoClientStream> crypto_stream_; 702 std::unique_ptr<QuicCryptoClientStream> crypto_stream_;
725 QuicClientPushPromiseIndex push_promise_index_; 703 QuicClientPushPromiseIndex push_promise_index_;
726 704
727 DISALLOW_COPY_AND_ASSIGN(TestQuicSpdyClientSession); 705 DISALLOW_COPY_AND_ASSIGN(TestQuicSpdyClientSession);
728 }; 706 };
729 707
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 QuicServerId server_id, 941 QuicServerId server_id,
964 QuicTime::Delta connection_start_time, 942 QuicTime::Delta connection_start_time,
965 QuicVersionVector supported_versions, 943 QuicVersionVector supported_versions,
966 MockQuicConnectionHelper* helper, 944 MockQuicConnectionHelper* helper,
967 MockAlarmFactory* alarm_factory, 945 MockAlarmFactory* alarm_factory,
968 QuicCryptoServerConfig* crypto_server_config, 946 QuicCryptoServerConfig* crypto_server_config,
969 QuicCompressedCertsCache* compressed_certs_cache, 947 QuicCompressedCertsCache* compressed_certs_cache,
970 PacketSavingConnection** server_connection, 948 PacketSavingConnection** server_connection,
971 TestQuicSpdyServerSession** server_session); 949 TestQuicSpdyServerSession** server_session);
972 950
951 // Helper to generate client side stream ids, generalizes
952 // kClientDataStreamId1 etc. above.
953 QuicStreamId QuicClientDataStreamId(int i);
954
973 // Verifies that the relative error of |actual| with respect to |expected| is 955 // Verifies that the relative error of |actual| with respect to |expected| is
974 // no more than |margin|. 956 // no more than |margin|.
975 957
976 template <typename T> 958 template <typename T>
977 void ExpectApproxEq(T expected, T actual, float relative_margin) { 959 void ExpectApproxEq(T expected, T actual, float relative_margin) {
978 // If |relative_margin| > 1 and T is an unsigned type, the comparison will 960 // If |relative_margin| > 1 and T is an unsigned type, the comparison will
979 // underflow. 961 // underflow.
980 ASSERT_LE(relative_margin, 1); 962 ASSERT_LE(relative_margin, 1);
981 ASSERT_GE(relative_margin, 0); 963 ASSERT_GE(relative_margin, 0);
982 964
(...skipping 18 matching lines...) Expand all
1001 983
1002 // Utility function that returns an QuicIOVector object wrapped around |str|. 984 // Utility function that returns an QuicIOVector object wrapped around |str|.
1003 // // |str|'s data is stored in |iov|. 985 // // |str|'s data is stored in |iov|.
1004 inline QuicIOVector MakeIOVector(QuicStringPiece str, struct iovec* iov) { 986 inline QuicIOVector MakeIOVector(QuicStringPiece str, struct iovec* iov) {
1005 iov->iov_base = const_cast<char*>(str.data()); 987 iov->iov_base = const_cast<char*>(str.data());
1006 iov->iov_len = static_cast<size_t>(str.size()); 988 iov->iov_len = static_cast<size_t>(str.size());
1007 QuicIOVector quic_iov(iov, 1, str.size()); 989 QuicIOVector quic_iov(iov, 1, str.size());
1008 return quic_iov; 990 return quic_iov;
1009 } 991 }
1010 992
1011 // Utilities that will adapt stream ids when http stream pairs are
1012 // enabled.
1013 QuicStreamId NextStreamId(QuicVersion version);
1014 QuicStreamId GetNthClientInitiatedStreamId(QuicVersion version, int n);
1015 QuicStreamId GetNthServerInitiatedStreamId(QuicVersion version, int n);
1016
1017 } // namespace test 993 } // namespace test
1018 } // namespace net 994 } // namespace net
1019 995
1020 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ 996 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_
OLDNEW
« no previous file with comments | « net/quic/test_tools/quic_spdy_session_peer.cc ('k') | net/quic/test_tools/quic_test_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698