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

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

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