OLD | NEW |
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 "net/quic/congestion_control/quic_send_scheduler.h" | 10 #include "net/quic/congestion_control/quic_send_scheduler.h" |
11 #include "net/quic/quic_connection.h" | 11 #include "net/quic/quic_connection.h" |
12 #include "net/quic/quic_framer.h" | 12 #include "net/quic/quic_framer.h" |
13 #include "net/quic/quic_session.h" | |
14 #include "net/quic/test_tools/mock_clock.h" | |
15 #include "testing/gmock/include/gmock/gmock.h" | 13 #include "testing/gmock/include/gmock/gmock.h" |
16 | 14 |
17 namespace net { | 15 namespace net { |
18 | 16 |
19 namespace test { | 17 namespace test { |
20 | 18 |
21 void CompareCharArraysWithHexError(const std::string& description, | 19 void CompareCharArraysWithHexError(const std::string& description, |
22 const char* actual, | 20 const char* actual, |
23 const int actual_len, | 21 const int actual_len, |
24 const char* expected, | 22 const char* expected, |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 virtual void OnFecProtectedPayload(base::StringPiece payload) OVERRIDE {} | 59 virtual void OnFecProtectedPayload(base::StringPiece payload) OVERRIDE {} |
62 virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE {} | 60 virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE {} |
63 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE {} | 61 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE {} |
64 virtual void OnFecData(const QuicFecData& fec) OVERRIDE {} | 62 virtual void OnFecData(const QuicFecData& fec) OVERRIDE {} |
65 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE {} | 63 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE {} |
66 virtual void OnConnectionCloseFrame( | 64 virtual void OnConnectionCloseFrame( |
67 const QuicConnectionCloseFrame& frame) OVERRIDE {} | 65 const QuicConnectionCloseFrame& frame) OVERRIDE {} |
68 virtual void OnPacketComplete() OVERRIDE {} | 66 virtual void OnPacketComplete() OVERRIDE {} |
69 }; | 67 }; |
70 | 68 |
| 69 |
71 class FramerVisitorCapturingAcks : public NoOpFramerVisitor { | 70 class FramerVisitorCapturingAcks : public NoOpFramerVisitor { |
72 public: | 71 public: |
73 // NoOpFramerVisitor | 72 // NoOpFramerVisitor |
74 virtual bool OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; | 73 virtual bool OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; |
75 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE; | 74 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE; |
76 | 75 |
77 QuicPacketHeader* header() { return &header_; } | 76 QuicPacketHeader* header() { return &header_; } |
78 QuicAckFrame* frame() { return &frame_; } | 77 QuicAckFrame* frame() { return &frame_; } |
79 private: | 78 private: |
80 QuicPacketHeader header_; | 79 QuicPacketHeader header_; |
81 QuicAckFrame frame_; | 80 QuicAckFrame frame_; |
82 }; | 81 }; |
83 | 82 |
84 class MockConnectionVisitor : public QuicConnectionVisitorInterface { | 83 class MockConnectionVisitor : public QuicConnectionVisitorInterface { |
85 public: | 84 public: |
86 MockConnectionVisitor(); | 85 MockConnectionVisitor(); |
87 virtual ~MockConnectionVisitor(); | 86 ~MockConnectionVisitor(); |
88 MOCK_METHOD4(OnPacket, bool(const IPEndPoint& self_address, | 87 MOCK_METHOD4(OnPacket, bool(const IPEndPoint& self_address, |
89 const IPEndPoint& peer_address, | 88 const IPEndPoint& peer_address, |
90 const QuicPacketHeader& header, | 89 const QuicPacketHeader& header, |
91 const std::vector<QuicStreamFrame>& frame)); | 90 const std::vector<QuicStreamFrame>& frame)); |
92 MOCK_METHOD1(OnRstStream, void(const QuicRstStreamFrame& frame)); | 91 MOCK_METHOD1(OnRstStream, void(const QuicRstStreamFrame& frame)); |
93 MOCK_METHOD2(ConnectionClose, void(QuicErrorCode error, bool from_peer)); | 92 MOCK_METHOD2(ConnectionClose, void(QuicErrorCode error, bool from_peer)); |
94 MOCK_METHOD1(OnAck, void(AckedPackets acked_packets)); | 93 MOCK_METHOD1(OnAck, void(AckedPackets acked_packets)); |
95 }; | 94 }; |
96 | 95 |
97 class MockScheduler : public QuicSendScheduler { | 96 class MockScheduler : public QuicSendScheduler { |
98 public: | 97 public: |
99 MockScheduler(); | 98 MockScheduler(); |
100 virtual ~MockScheduler(); | 99 virtual ~MockScheduler(); |
101 | 100 |
102 MOCK_METHOD1(TimeUntilSend, int(bool)); | 101 MOCK_METHOD1(TimeUntilSend, int(bool)); |
103 MOCK_METHOD1(OnIncomingAckFrame, void(const QuicAckFrame&)); | 102 MOCK_METHOD1(OnIncomingAckFrame, void(const QuicAckFrame&)); |
104 MOCK_METHOD3(SentPacket, void(QuicPacketSequenceNumber, size_t, bool)); | 103 MOCK_METHOD3(SentPacket, void(QuicPacketSequenceNumber, size_t, bool)); |
105 }; | 104 }; |
106 | 105 |
107 class MockHelper : public QuicConnectionHelperInterface { | |
108 public: | |
109 MockHelper(); | |
110 virtual ~MockHelper(); | |
111 | |
112 MOCK_METHOD1(SetConnection, void(QuicConnection* connection)); | |
113 QuicClock* GetClock(); | |
114 MOCK_METHOD4(WritePacketToWire, int(QuicPacketSequenceNumber number, | |
115 const QuicEncryptedPacket& packet, | |
116 bool resend, | |
117 int* error)); | |
118 MOCK_METHOD2(SetResendAlarm, void(QuicPacketSequenceNumber sequence_number, | |
119 uint64 delay_in_us)); | |
120 MOCK_METHOD1(SetSendAlarm, void(uint64 delay_in_us)); | |
121 MOCK_METHOD1(SetTimeoutAlarm, void(uint64 delay_in_us)); | |
122 MOCK_METHOD0(IsSendAlarmSet, bool()); | |
123 MOCK_METHOD0(UnregisterSendAlarmIfRegistered, void()); | |
124 private: | |
125 MockClock clock_; | |
126 }; | |
127 | |
128 class MockConnection : public QuicConnection { | |
129 public: | |
130 MockConnection(QuicGuid guid, IPEndPoint address); | |
131 virtual ~MockConnection(); | |
132 | |
133 MOCK_METHOD3(ProcessUdpPacket, void(const IPEndPoint& self_address, | |
134 const IPEndPoint& peer_address, | |
135 const QuicEncryptedPacket& packet)); | |
136 MOCK_METHOD1(SendConnectionClose, void(QuicErrorCode error)); | |
137 | |
138 MOCK_METHOD3(SendRstStream, void(QuicStreamId id, | |
139 QuicErrorCode error, | |
140 QuicStreamOffset offset)); | |
141 | |
142 MOCK_METHOD0(OnCanWrite, bool()); | |
143 }; | |
144 | |
145 class PacketSavingConnection : public MockConnection { | |
146 public: | |
147 PacketSavingConnection(QuicGuid guid, IPEndPoint address); | |
148 virtual ~PacketSavingConnection(); | |
149 | |
150 virtual bool SendPacket(QuicPacketSequenceNumber number, | |
151 QuicPacket* packet, | |
152 bool resend, | |
153 bool force) OVERRIDE; | |
154 | |
155 std::vector<QuicPacket*> packets_; | |
156 }; | |
157 | |
158 class MockSession : public QuicSession { | |
159 public: | |
160 MockSession(QuicConnection* connection, bool is_server); | |
161 ~MockSession(); | |
162 | |
163 MOCK_METHOD4(OnPacket, bool(const IPEndPoint& seld_address, | |
164 const IPEndPoint& peer_address, | |
165 const QuicPacketHeader& header, | |
166 const std::vector<QuicStreamFrame>& frame)); | |
167 MOCK_METHOD2(ConnectionClose, void(QuicErrorCode error, bool from_peer)); | |
168 MOCK_METHOD1(CreateIncomingReliableStream, | |
169 ReliableQuicStream*(QuicStreamId id)); | |
170 MOCK_METHOD0(GetCryptoStream, QuicCryptoStream*()); | |
171 MOCK_METHOD0(CreateOutgoingReliableStream, ReliableQuicStream*()); | |
172 MOCK_METHOD3(WriteData, | |
173 void(QuicStreamId id, base::StringPiece data, bool fin)); | |
174 MOCK_METHOD4(WriteData, int(QuicStreamId id, base::StringPiece data, | |
175 QuicStreamOffset offset, bool fin)); | |
176 MOCK_METHOD0(IsHandshakeComplete, bool()); | |
177 }; | |
178 | |
179 } // namespace test | 106 } // namespace test |
180 | 107 |
181 } // namespace net | 108 } // namespace net |
182 | 109 |
183 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ | 110 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ |
OLD | NEW |