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 #include "net/quic/quic_connection.h" | 5 #include "net/quic/quic_connection.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 | 50 |
51 const char data1[] = "foo"; | 51 const char data1[] = "foo"; |
52 const char data2[] = "bar"; | 52 const char data2[] = "bar"; |
53 | 53 |
54 const bool kFin = true; | 54 const bool kFin = true; |
55 const bool kEntropyFlag = true; | 55 const bool kEntropyFlag = true; |
56 | 56 |
57 const QuicPacketEntropyHash kTestEntropyHash = 76; | 57 const QuicPacketEntropyHash kTestEntropyHash = 76; |
58 | 58 |
59 const int kDefaultRetransmissionTimeMs = 500; | 59 const int kDefaultRetransmissionTimeMs = 500; |
60 const int kMinRetransmissionTimeMs = 200; | |
61 | 60 |
62 class TestReceiveAlgorithm : public ReceiveAlgorithmInterface { | 61 class TestReceiveAlgorithm : public ReceiveAlgorithmInterface { |
63 public: | 62 public: |
64 explicit TestReceiveAlgorithm(QuicCongestionFeedbackFrame* feedback) | 63 explicit TestReceiveAlgorithm(QuicCongestionFeedbackFrame* feedback) |
65 : feedback_(feedback) { | 64 : feedback_(feedback) { |
66 } | 65 } |
67 | 66 |
68 bool GenerateCongestionFeedback( | 67 bool GenerateCongestionFeedback( |
69 QuicCongestionFeedbackFrame* congestion_feedback) { | 68 QuicCongestionFeedbackFrame* congestion_feedback) { |
70 if (feedback_ == NULL) { | 69 if (feedback_ == NULL) { |
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 void SetFeedback(QuicCongestionFeedbackFrame* feedback) { | 877 void SetFeedback(QuicCongestionFeedbackFrame* feedback) { |
879 receive_algorithm_ = new TestReceiveAlgorithm(feedback); | 878 receive_algorithm_ = new TestReceiveAlgorithm(feedback); |
880 connection_.SetReceiveAlgorithm(receive_algorithm_); | 879 connection_.SetReceiveAlgorithm(receive_algorithm_); |
881 } | 880 } |
882 | 881 |
883 QuicTime::Delta DefaultRetransmissionTime() { | 882 QuicTime::Delta DefaultRetransmissionTime() { |
884 return QuicTime::Delta::FromMilliseconds(kDefaultRetransmissionTimeMs); | 883 return QuicTime::Delta::FromMilliseconds(kDefaultRetransmissionTimeMs); |
885 } | 884 } |
886 | 885 |
887 QuicTime::Delta DefaultDelayedAckTime() { | 886 QuicTime::Delta DefaultDelayedAckTime() { |
888 return QuicTime::Delta::FromMilliseconds(kMinRetransmissionTimeMs/2); | 887 return QuicTime::Delta::FromMilliseconds(kMaxDelayedAckTime); |
889 } | 888 } |
890 | 889 |
891 // Initialize a frame acknowledging all packets up to largest_observed. | 890 // Initialize a frame acknowledging all packets up to largest_observed. |
892 const QuicAckFrame InitAckFrame(QuicPacketSequenceNumber largest_observed) { | 891 const QuicAckFrame InitAckFrame(QuicPacketSequenceNumber largest_observed) { |
893 QuicAckFrame frame(MakeAckFrame(largest_observed)); | 892 QuicAckFrame frame(MakeAckFrame(largest_observed)); |
894 if (largest_observed > 0) { | 893 if (largest_observed > 0) { |
895 frame.entropy_hash = | 894 frame.entropy_hash = |
896 QuicConnectionPeer::GetSentEntropyHash(&connection_, | 895 QuicConnectionPeer::GetSentEntropyHash(&connection_, |
897 largest_observed); | 896 largest_observed); |
898 } | 897 } |
(...skipping 3056 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3955 connection_.OnPacketHeader(header); | 3954 connection_.OnPacketHeader(header); |
3956 } | 3955 } |
3957 | 3956 |
3958 TEST_P(QuicConnectionTest, Pacing) { | 3957 TEST_P(QuicConnectionTest, Pacing) { |
3959 ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, true); | 3958 ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, true); |
3960 | 3959 |
3961 TestConnection server(connection_id_, IPEndPoint(), helper_.get(), | 3960 TestConnection server(connection_id_, IPEndPoint(), helper_.get(), |
3962 writer_.get(), true, version()); | 3961 writer_.get(), true, version()); |
3963 TestConnection client(connection_id_, IPEndPoint(), helper_.get(), | 3962 TestConnection client(connection_id_, IPEndPoint(), helper_.get(), |
3964 writer_.get(), false, version()); | 3963 writer_.get(), false, version()); |
3965 EXPECT_TRUE(client.sent_packet_manager().using_pacing()); | 3964 EXPECT_FALSE(client.sent_packet_manager().using_pacing()); |
3966 EXPECT_FALSE(server.sent_packet_manager().using_pacing()); | 3965 EXPECT_FALSE(server.sent_packet_manager().using_pacing()); |
3967 } | 3966 } |
3968 | 3967 |
3969 TEST_P(QuicConnectionTest, ControlFramesInstigateAcks) { | 3968 TEST_P(QuicConnectionTest, ControlFramesInstigateAcks) { |
3970 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 3969 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
3971 | 3970 |
3972 // Send a WINDOW_UPDATE frame. | 3971 // Send a WINDOW_UPDATE frame. |
3973 QuicWindowUpdateFrame window_update; | 3972 QuicWindowUpdateFrame window_update; |
3974 window_update.stream_id = 3; | 3973 window_update.stream_id = 3; |
3975 window_update.byte_offset = 1234; | 3974 window_update.byte_offset = 1234; |
3976 EXPECT_CALL(visitor_, OnWindowUpdateFrames(_)); | 3975 EXPECT_CALL(visitor_, OnWindowUpdateFrames(_)); |
3977 ProcessFramePacket(QuicFrame(&window_update)); | 3976 ProcessFramePacket(QuicFrame(&window_update)); |
3978 | 3977 |
3979 // Ensure that this has caused the ACK alarm to be set. | 3978 // Ensure that this has caused the ACK alarm to be set. |
3980 QuicAlarm* ack_alarm = QuicConnectionPeer::GetAckAlarm(&connection_); | 3979 QuicAlarm* ack_alarm = QuicConnectionPeer::GetAckAlarm(&connection_); |
3981 EXPECT_TRUE(ack_alarm->IsSet()); | 3980 EXPECT_TRUE(ack_alarm->IsSet()); |
3982 | 3981 |
3983 // Cancel alarm, and try again with BLOCKED frame. | 3982 // Cancel alarm, and try again with BLOCKED frame. |
3984 ack_alarm->Cancel(); | 3983 ack_alarm->Cancel(); |
3985 QuicBlockedFrame blocked; | 3984 QuicBlockedFrame blocked; |
3986 blocked.stream_id = 3; | 3985 blocked.stream_id = 3; |
3987 EXPECT_CALL(visitor_, OnBlockedFrames(_)); | 3986 EXPECT_CALL(visitor_, OnBlockedFrames(_)); |
3988 ProcessFramePacket(QuicFrame(&blocked)); | 3987 ProcessFramePacket(QuicFrame(&blocked)); |
3989 EXPECT_TRUE(ack_alarm->IsSet()); | 3988 EXPECT_TRUE(ack_alarm->IsSet()); |
3990 } | 3989 } |
3991 | 3990 |
3992 } // namespace | 3991 } // namespace |
3993 } // namespace test | 3992 } // namespace test |
3994 } // namespace net | 3993 } // namespace net |
OLD | NEW |