| 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 <vector> |
| 11 |
| 10 #include "net/quic/congestion_control/send_algorithm_interface.h" | 12 #include "net/quic/congestion_control/send_algorithm_interface.h" |
| 11 #include "net/quic/quic_connection.h" | 13 #include "net/quic/quic_connection.h" |
| 12 #include "net/quic/quic_framer.h" | 14 #include "net/quic/quic_framer.h" |
| 13 #include "net/quic/quic_session.h" | 15 #include "net/quic/quic_session.h" |
| 14 #include "net/quic/test_tools/mock_clock.h" | 16 #include "net/quic/test_tools/mock_clock.h" |
| 15 #include "net/quic/test_tools/mock_random.h" | 17 #include "net/quic/test_tools/mock_random.h" |
| 16 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 17 | 19 |
| 18 namespace net { | 20 namespace net { |
| 19 | 21 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 MOCK_METHOD1(OnPacketHeader, bool(const QuicPacketHeader& header)); | 58 MOCK_METHOD1(OnPacketHeader, bool(const QuicPacketHeader& header)); |
| 57 MOCK_METHOD1(OnFecProtectedPayload, void(base::StringPiece payload)); | 59 MOCK_METHOD1(OnFecProtectedPayload, void(base::StringPiece payload)); |
| 58 MOCK_METHOD1(OnStreamFrame, void(const QuicStreamFrame& frame)); | 60 MOCK_METHOD1(OnStreamFrame, void(const QuicStreamFrame& frame)); |
| 59 MOCK_METHOD1(OnAckFrame, void(const QuicAckFrame& frame)); | 61 MOCK_METHOD1(OnAckFrame, void(const QuicAckFrame& frame)); |
| 60 MOCK_METHOD1(OnCongestionFeedbackFrame, | 62 MOCK_METHOD1(OnCongestionFeedbackFrame, |
| 61 void(const QuicCongestionFeedbackFrame& frame)); | 63 void(const QuicCongestionFeedbackFrame& frame)); |
| 62 MOCK_METHOD1(OnFecData, void(const QuicFecData& fec)); | 64 MOCK_METHOD1(OnFecData, void(const QuicFecData& fec)); |
| 63 MOCK_METHOD1(OnRstStreamFrame, void(const QuicRstStreamFrame& frame)); | 65 MOCK_METHOD1(OnRstStreamFrame, void(const QuicRstStreamFrame& frame)); |
| 64 MOCK_METHOD1(OnConnectionCloseFrame, | 66 MOCK_METHOD1(OnConnectionCloseFrame, |
| 65 void(const QuicConnectionCloseFrame& frame)); | 67 void(const QuicConnectionCloseFrame& frame)); |
| 68 MOCK_METHOD1(OnGoAwayFrame, void(const QuicGoAwayFrame& frame)); |
| 66 MOCK_METHOD0(OnPacketComplete, void()); | 69 MOCK_METHOD0(OnPacketComplete, void()); |
| 67 | 70 |
| 68 private: | 71 private: |
| 69 DISALLOW_COPY_AND_ASSIGN(MockFramerVisitor); | 72 DISALLOW_COPY_AND_ASSIGN(MockFramerVisitor); |
| 70 }; | 73 }; |
| 71 | 74 |
| 72 class NoOpFramerVisitor : public QuicFramerVisitorInterface { | 75 class NoOpFramerVisitor : public QuicFramerVisitorInterface { |
| 73 public: | 76 public: |
| 74 NoOpFramerVisitor() {} | 77 NoOpFramerVisitor() {} |
| 75 | 78 |
| 76 virtual void OnError(QuicFramer* framer) OVERRIDE {} | 79 virtual void OnError(QuicFramer* framer) OVERRIDE {} |
| 77 virtual void OnPacket() OVERRIDE {} | 80 virtual void OnPacket() OVERRIDE {} |
| 78 virtual void OnPublicResetPacket( | 81 virtual void OnPublicResetPacket( |
| 79 const QuicPublicResetPacket& packet) OVERRIDE {} | 82 const QuicPublicResetPacket& packet) OVERRIDE {} |
| 80 virtual void OnRevivedPacket() OVERRIDE {} | 83 virtual void OnRevivedPacket() OVERRIDE {} |
| 81 virtual bool OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; | 84 virtual bool OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; |
| 82 virtual void OnFecProtectedPayload(base::StringPiece payload) OVERRIDE {} | 85 virtual void OnFecProtectedPayload(base::StringPiece payload) OVERRIDE {} |
| 83 virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE {} | 86 virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE {} |
| 84 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE {} | 87 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE {} |
| 85 virtual void OnCongestionFeedbackFrame( | 88 virtual void OnCongestionFeedbackFrame( |
| 86 const QuicCongestionFeedbackFrame& frame) OVERRIDE {} | 89 const QuicCongestionFeedbackFrame& frame) OVERRIDE {} |
| 87 virtual void OnFecData(const QuicFecData& fec) OVERRIDE {} | 90 virtual void OnFecData(const QuicFecData& fec) OVERRIDE {} |
| 88 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE {} | 91 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE {} |
| 89 virtual void OnConnectionCloseFrame( | 92 virtual void OnConnectionCloseFrame( |
| 90 const QuicConnectionCloseFrame& frame) OVERRIDE {} | 93 const QuicConnectionCloseFrame& frame) OVERRIDE {} |
| 94 virtual void OnGoAwayFrame(const QuicGoAwayFrame& frame) OVERRIDE {} |
| 91 virtual void OnPacketComplete() OVERRIDE {} | 95 virtual void OnPacketComplete() OVERRIDE {} |
| 92 | 96 |
| 93 private: | 97 private: |
| 94 DISALLOW_COPY_AND_ASSIGN(NoOpFramerVisitor); | 98 DISALLOW_COPY_AND_ASSIGN(NoOpFramerVisitor); |
| 95 }; | 99 }; |
| 96 | 100 |
| 97 class FramerVisitorCapturingAcks : public NoOpFramerVisitor { | |
| 98 public: | |
| 99 FramerVisitorCapturingAcks(); | |
| 100 virtual ~FramerVisitorCapturingAcks(); | |
| 101 | |
| 102 // NoOpFramerVisitor | |
| 103 virtual bool OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; | |
| 104 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE; | |
| 105 virtual void OnCongestionFeedbackFrame( | |
| 106 const QuicCongestionFeedbackFrame& frame) OVERRIDE; | |
| 107 | |
| 108 QuicPacketHeader* header() { return &header_; } | |
| 109 | |
| 110 QuicAckFrame* ack() { return ack_.get(); } | |
| 111 QuicCongestionFeedbackFrame* feedback() { return feedback_.get(); } | |
| 112 | |
| 113 private: | |
| 114 QuicPacketHeader header_; | |
| 115 scoped_ptr<QuicAckFrame> ack_; | |
| 116 scoped_ptr<QuicCongestionFeedbackFrame> feedback_; | |
| 117 | |
| 118 DISALLOW_COPY_AND_ASSIGN(FramerVisitorCapturingAcks); | |
| 119 }; | |
| 120 | |
| 121 class FramerVisitorCapturingPublicReset : public NoOpFramerVisitor { | 101 class FramerVisitorCapturingPublicReset : public NoOpFramerVisitor { |
| 122 public: | 102 public: |
| 123 FramerVisitorCapturingPublicReset(); | 103 FramerVisitorCapturingPublicReset(); |
| 124 virtual ~FramerVisitorCapturingPublicReset(); | 104 virtual ~FramerVisitorCapturingPublicReset(); |
| 125 | 105 |
| 126 virtual void OnPublicResetPacket( | 106 virtual void OnPublicResetPacket( |
| 127 const QuicPublicResetPacket& packet) OVERRIDE; | 107 const QuicPublicResetPacket& packet) OVERRIDE; |
| 128 | 108 |
| 129 const QuicPublicResetPacket public_reset_packet() { | 109 const QuicPublicResetPacket public_reset_packet() { |
| 130 return public_reset_packet_; | 110 return public_reset_packet_; |
| 131 } | 111 } |
| 132 | 112 |
| 133 private: | 113 private: |
| 134 QuicPublicResetPacket public_reset_packet_; | 114 QuicPublicResetPacket public_reset_packet_; |
| 135 }; | 115 }; |
| 136 | 116 |
| 117 class FramerVisitorCapturingFrames : public NoOpFramerVisitor { |
| 118 public: |
| 119 FramerVisitorCapturingFrames(); |
| 120 virtual ~FramerVisitorCapturingFrames(); |
| 121 |
| 122 // NoOpFramerVisitor |
| 123 |
| 124 virtual bool OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; |
| 125 virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE; |
| 126 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE; |
| 127 virtual void OnCongestionFeedbackFrame( |
| 128 const QuicCongestionFeedbackFrame& frame) OVERRIDE; |
| 129 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE; |
| 130 virtual void OnConnectionCloseFrame( |
| 131 const QuicConnectionCloseFrame& frame) OVERRIDE; |
| 132 virtual void OnGoAwayFrame(const QuicGoAwayFrame& frame) OVERRIDE; |
| 133 |
| 134 size_t frame_count() { return frame_count_; } |
| 135 QuicPacketHeader* header() { return &header_; } |
| 136 const std::vector<QuicStreamFrame>* stream_frames() { |
| 137 return &stream_frames_; |
| 138 } |
| 139 QuicAckFrame* ack() { return ack_.get(); } |
| 140 QuicCongestionFeedbackFrame* feedback() { return feedback_.get(); } |
| 141 QuicRstStreamFrame* rst() { return rst_.get(); } |
| 142 QuicConnectionCloseFrame* close() { return close_.get(); } |
| 143 QuicGoAwayFrame* goaway() { return goaway_.get(); } |
| 144 |
| 145 private: |
| 146 size_t frame_count_; |
| 147 QuicPacketHeader header_; |
| 148 std::vector<QuicStreamFrame> stream_frames_; |
| 149 scoped_ptr<QuicAckFrame> ack_; |
| 150 scoped_ptr<QuicCongestionFeedbackFrame> feedback_; |
| 151 scoped_ptr<QuicRstStreamFrame> rst_; |
| 152 scoped_ptr<QuicConnectionCloseFrame> close_; |
| 153 scoped_ptr<QuicGoAwayFrame> goaway_; |
| 154 |
| 155 DISALLOW_COPY_AND_ASSIGN(FramerVisitorCapturingFrames); |
| 156 }; |
| 157 |
| 137 class MockConnectionVisitor : public QuicConnectionVisitorInterface { | 158 class MockConnectionVisitor : public QuicConnectionVisitorInterface { |
| 138 public: | 159 public: |
| 139 MockConnectionVisitor(); | 160 MockConnectionVisitor(); |
| 140 virtual ~MockConnectionVisitor(); | 161 virtual ~MockConnectionVisitor(); |
| 141 | 162 |
| 142 MOCK_METHOD4(OnPacket, bool(const IPEndPoint& self_address, | 163 MOCK_METHOD4(OnPacket, bool(const IPEndPoint& self_address, |
| 143 const IPEndPoint& peer_address, | 164 const IPEndPoint& peer_address, |
| 144 const QuicPacketHeader& header, | 165 const QuicPacketHeader& header, |
| 145 const std::vector<QuicStreamFrame>& frame)); | 166 const std::vector<QuicStreamFrame>& frame)); |
| 146 MOCK_METHOD1(OnRstStream, void(const QuicRstStreamFrame& frame)); | 167 MOCK_METHOD1(OnRstStream, void(const QuicRstStreamFrame& frame)); |
| 168 MOCK_METHOD1(OnGoAway, void(const QuicGoAwayFrame& frame)); |
| 147 MOCK_METHOD2(ConnectionClose, void(QuicErrorCode error, bool from_peer)); | 169 MOCK_METHOD2(ConnectionClose, void(QuicErrorCode error, bool from_peer)); |
| 148 MOCK_METHOD1(OnAck, void(AckedPackets acked_packets)); | 170 MOCK_METHOD1(OnAck, void(const SequenceNumberSet& acked_packets)); |
| 149 MOCK_METHOD0(OnCanWrite, bool()); | 171 MOCK_METHOD0(OnCanWrite, bool()); |
| 150 | 172 |
| 151 private: | 173 private: |
| 152 DISALLOW_COPY_AND_ASSIGN(MockConnectionVisitor); | 174 DISALLOW_COPY_AND_ASSIGN(MockConnectionVisitor); |
| 153 }; | 175 }; |
| 154 | 176 |
| 155 class MockHelper : public QuicConnectionHelperInterface { | 177 class MockHelper : public QuicConnectionHelperInterface { |
| 156 public: | 178 public: |
| 157 MockHelper(); | 179 MockHelper(); |
| 158 virtual ~MockHelper(); | 180 virtual ~MockHelper(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 181 MockConnection(QuicGuid guid, | 203 MockConnection(QuicGuid guid, |
| 182 IPEndPoint address, | 204 IPEndPoint address, |
| 183 QuicConnectionHelperInterface* helper); | 205 QuicConnectionHelperInterface* helper); |
| 184 virtual ~MockConnection(); | 206 virtual ~MockConnection(); |
| 185 | 207 |
| 186 MOCK_METHOD3(ProcessUdpPacket, void(const IPEndPoint& self_address, | 208 MOCK_METHOD3(ProcessUdpPacket, void(const IPEndPoint& self_address, |
| 187 const IPEndPoint& peer_address, | 209 const IPEndPoint& peer_address, |
| 188 const QuicEncryptedPacket& packet)); | 210 const QuicEncryptedPacket& packet)); |
| 189 MOCK_METHOD1(SendConnectionClose, void(QuicErrorCode error)); | 211 MOCK_METHOD1(SendConnectionClose, void(QuicErrorCode error)); |
| 190 | 212 |
| 191 MOCK_METHOD3(SendRstStream, void(QuicStreamId id, | 213 MOCK_METHOD2(SendRstStream, void(QuicStreamId id, |
| 192 QuicErrorCode error, | 214 QuicErrorCode error)); |
| 193 QuicStreamOffset offset)); | 215 MOCK_METHOD3(SendGoAway, void(QuicErrorCode error, |
| 194 | 216 QuicStreamId last_good_stream_id, |
| 217 const string& reason)); |
| 195 MOCK_METHOD0(OnCanWrite, bool()); | 218 MOCK_METHOD0(OnCanWrite, bool()); |
| 196 | 219 |
| 197 void ProcessUdpPacketInternal(const IPEndPoint& self_address, | 220 void ProcessUdpPacketInternal(const IPEndPoint& self_address, |
| 198 const IPEndPoint& peer_address, | 221 const IPEndPoint& peer_address, |
| 199 const QuicEncryptedPacket& packet) { | 222 const QuicEncryptedPacket& packet) { |
| 200 QuicConnection::ProcessUdpPacket(self_address, peer_address, packet); | 223 QuicConnection::ProcessUdpPacket(self_address, peer_address, packet); |
| 201 } | 224 } |
| 202 | 225 |
| 203 private: | 226 private: |
| 204 scoped_ptr<QuicConnectionHelperInterface> helper_; | 227 scoped_ptr<QuicConnectionHelperInterface> helper_; |
| 205 DISALLOW_COPY_AND_ASSIGN(MockConnection); | 228 DISALLOW_COPY_AND_ASSIGN(MockConnection); |
| 206 }; | 229 }; |
| 207 | 230 |
| 208 class PacketSavingConnection : public MockConnection { | 231 class PacketSavingConnection : public MockConnection { |
| 209 public: | 232 public: |
| 210 PacketSavingConnection(QuicGuid guid, IPEndPoint address); | 233 PacketSavingConnection(QuicGuid guid, IPEndPoint address); |
| 211 virtual ~PacketSavingConnection(); | 234 virtual ~PacketSavingConnection(); |
| 212 | 235 |
| 213 virtual bool SendOrQueuePacket(QuicPacketSequenceNumber sequence_number, | 236 virtual bool SendOrQueuePacket(QuicPacketSequenceNumber sequence_number, |
| 214 QuicPacket* packet, | 237 QuicPacket* packet, |
| 215 bool force) OVERRIDE; | 238 QuicPacketEntropyHash entropy_hash) OVERRIDE; |
| 216 | 239 |
| 217 std::vector<QuicPacket*> packets_; | 240 std::vector<QuicPacket*> packets_; |
| 218 | 241 |
| 219 private: | 242 private: |
| 220 DISALLOW_COPY_AND_ASSIGN(PacketSavingConnection); | 243 DISALLOW_COPY_AND_ASSIGN(PacketSavingConnection); |
| 221 }; | 244 }; |
| 222 | 245 |
| 223 class MockSession : public QuicSession { | 246 class MockSession : public QuicSession { |
| 224 public: | 247 public: |
| 225 MockSession(QuicConnection* connection, bool is_server); | 248 MockSession(QuicConnection* connection, bool is_server); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 242 | 265 |
| 243 private: | 266 private: |
| 244 DISALLOW_COPY_AND_ASSIGN(MockSession); | 267 DISALLOW_COPY_AND_ASSIGN(MockSession); |
| 245 }; | 268 }; |
| 246 | 269 |
| 247 class MockSendAlgorithm : public SendAlgorithmInterface { | 270 class MockSendAlgorithm : public SendAlgorithmInterface { |
| 248 public: | 271 public: |
| 249 MockSendAlgorithm(); | 272 MockSendAlgorithm(); |
| 250 virtual ~MockSendAlgorithm(); | 273 virtual ~MockSendAlgorithm(); |
| 251 | 274 |
| 252 MOCK_METHOD2(OnIncomingQuicCongestionFeedbackFrame, | 275 MOCK_METHOD4(OnIncomingQuicCongestionFeedbackFrame, |
| 253 void(const QuicCongestionFeedbackFrame&, const SentPacketsMap&)); | 276 void(const QuicCongestionFeedbackFrame&, |
| 277 QuicTime feedback_receive_time, |
| 278 QuicBandwidth sent_bandwidth, |
| 279 const SentPacketsMap&)); |
| 254 MOCK_METHOD3(OnIncomingAck, | 280 MOCK_METHOD3(OnIncomingAck, |
| 255 void(QuicPacketSequenceNumber, QuicByteCount, QuicTime::Delta)); | 281 void(QuicPacketSequenceNumber, QuicByteCount, QuicTime::Delta)); |
| 256 MOCK_METHOD1(OnIncomingLoss, void(int number_of_lost_packets)); | 282 MOCK_METHOD1(OnIncomingLoss, void(QuicTime)); |
| 257 MOCK_METHOD3(SentPacket, void(QuicPacketSequenceNumber, QuicByteCount, bool)); | 283 MOCK_METHOD4(SentPacket, void(QuicTime sent_time, QuicPacketSequenceNumber, |
| 258 MOCK_METHOD1(TimeUntilSend, QuicTime::Delta(bool)); | 284 QuicByteCount, bool)); |
| 285 MOCK_METHOD2(TimeUntilSend, QuicTime::Delta(QuicTime now, bool)); |
| 259 MOCK_METHOD0(BandwidthEstimate, QuicBandwidth(void)); | 286 MOCK_METHOD0(BandwidthEstimate, QuicBandwidth(void)); |
| 260 | 287 |
| 261 private: | 288 private: |
| 262 DISALLOW_COPY_AND_ASSIGN(MockSendAlgorithm); | 289 DISALLOW_COPY_AND_ASSIGN(MockSendAlgorithm); |
| 263 }; | 290 }; |
| 264 | 291 |
| 292 class TestEntropyCalculator : |
| 293 public QuicReceivedEntropyHashCalculatorInterface { |
| 294 public: |
| 295 TestEntropyCalculator() { } |
| 296 virtual ~TestEntropyCalculator() { } |
| 297 |
| 298 virtual QuicPacketEntropyHash ReceivedEntropyHash( |
| 299 QuicPacketSequenceNumber sequence_number) const OVERRIDE; |
| 300 |
| 301 }; |
| 302 |
| 265 } // namespace test | 303 } // namespace test |
| 266 | 304 |
| 267 } // namespace net | 305 } // namespace net |
| 268 | 306 |
| 269 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ | 307 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_UTILS_H_ |
| OLD | NEW |