| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_flow_controller.h" | 5 #include "net/quic/quic_flow_controller.h" |
| 6 | 6 |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "net/quic/quic_flags.h" | 8 #include "net/quic/quic_flags.h" |
| 9 #include "net/quic/quic_utils.h" | 9 #include "net/quic/quic_utils.h" |
| 10 #include "net/quic/test_tools/quic_flow_controller_peer.h" | 10 #include "net/quic/test_tools/quic_flow_controller_peer.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 } | 90 } |
| 91 | 91 |
| 92 TEST_F(QuicFlowControllerTest, ReceivingBytes) { | 92 TEST_F(QuicFlowControllerTest, ReceivingBytes) { |
| 93 Initialize(); | 93 Initialize(); |
| 94 | 94 |
| 95 EXPECT_TRUE(flow_controller_->IsEnabled()); | 95 EXPECT_TRUE(flow_controller_->IsEnabled()); |
| 96 EXPECT_FALSE(flow_controller_->IsBlocked()); | 96 EXPECT_FALSE(flow_controller_->IsBlocked()); |
| 97 EXPECT_FALSE(flow_controller_->FlowControlViolation()); | 97 EXPECT_FALSE(flow_controller_->FlowControlViolation()); |
| 98 | 98 |
| 99 // Buffer some bytes, not enough to fill window. | 99 // Buffer some bytes, not enough to fill window. |
| 100 flow_controller_->AddBytesBuffered(receive_window_ / 2); | 100 EXPECT_TRUE( |
| 101 flow_controller_->UpdateHighestReceivedOffset(1 + receive_window_ / 2)); |
| 101 EXPECT_FALSE(flow_controller_->FlowControlViolation()); | 102 EXPECT_FALSE(flow_controller_->FlowControlViolation()); |
| 102 EXPECT_EQ(receive_window_ / 2, | 103 EXPECT_EQ((receive_window_ / 2) - 1, |
| 103 QuicFlowControllerPeer::ReceiveWindowSize(flow_controller_.get())); | 104 QuicFlowControllerPeer::ReceiveWindowSize(flow_controller_.get())); |
| 104 | 105 |
| 105 // Consume enough bytes to send a WINDOW_UPDATE frame. | 106 // Consume enough bytes to send a WINDOW_UPDATE frame. |
| 106 flow_controller_->RemoveBytesBuffered(receive_window_ / 2); | |
| 107 flow_controller_->AddBytesConsumed(1 + receive_window_ / 2); | 107 flow_controller_->AddBytesConsumed(1 + receive_window_ / 2); |
| 108 EXPECT_FALSE(flow_controller_->FlowControlViolation()); | 108 EXPECT_FALSE(flow_controller_->FlowControlViolation()); |
| 109 EXPECT_EQ((receive_window_ / 2) - 1, | 109 EXPECT_EQ((receive_window_ / 2) - 1, |
| 110 QuicFlowControllerPeer::ReceiveWindowSize(flow_controller_.get())); | 110 QuicFlowControllerPeer::ReceiveWindowSize(flow_controller_.get())); |
| 111 | 111 |
| 112 MockConnection connection(false); | 112 MockConnection connection(false); |
| 113 EXPECT_CALL(connection, SendWindowUpdate(stream_id_, _)).Times(1); | 113 EXPECT_CALL(connection, SendWindowUpdate(stream_id_, _)).Times(1); |
| 114 flow_controller_->MaybeSendWindowUpdate(&connection); | 114 flow_controller_->MaybeSendWindowUpdate(&connection); |
| 115 } | 115 } |
| 116 | 116 |
| 117 TEST_F(QuicFlowControllerTest, | 117 TEST_F(QuicFlowControllerTest, |
| 118 DisabledWhenQuicVersionDoesNotSupportFlowControl) { | 118 DisabledWhenQuicVersionDoesNotSupportFlowControl) { |
| 119 set_version(QUIC_VERSION_16); | 119 set_version(QUIC_VERSION_16); |
| 120 Initialize(); | 120 Initialize(); |
| 121 | 121 |
| 122 // Should not be enabled, and should not report as blocked. | 122 // Should not be enabled, and should not report as blocked. |
| 123 EXPECT_FALSE(flow_controller_->IsEnabled()); | 123 EXPECT_FALSE(flow_controller_->IsEnabled()); |
| 124 EXPECT_FALSE(flow_controller_->IsBlocked()); | 124 EXPECT_FALSE(flow_controller_->IsBlocked()); |
| 125 EXPECT_FALSE(flow_controller_->FlowControlViolation()); | 125 EXPECT_FALSE(flow_controller_->FlowControlViolation()); |
| 126 | 126 |
| 127 // Any attempts to add/remove bytes should have no effect. | 127 // Any attempts to add/remove bytes should have no effect. |
| 128 EXPECT_EQ(send_window_, flow_controller_->SendWindowSize()); | 128 EXPECT_EQ(send_window_, flow_controller_->SendWindowSize()); |
| 129 EXPECT_EQ(send_window_, | 129 EXPECT_EQ(send_window_, |
| 130 QuicFlowControllerPeer::SendWindowOffset(flow_controller_.get())); | 130 QuicFlowControllerPeer::SendWindowOffset(flow_controller_.get())); |
| 131 EXPECT_EQ(receive_window_, QuicFlowControllerPeer::ReceiveWindowOffset( | 131 EXPECT_EQ(receive_window_, QuicFlowControllerPeer::ReceiveWindowOffset( |
| 132 flow_controller_.get())); | 132 flow_controller_.get())); |
| 133 flow_controller_->AddBytesSent(123); | 133 flow_controller_->AddBytesSent(123); |
| 134 flow_controller_->AddBytesConsumed(456); | 134 flow_controller_->AddBytesConsumed(456); |
| 135 flow_controller_->AddBytesBuffered(789); | 135 flow_controller_->UpdateHighestReceivedOffset(789); |
| 136 flow_controller_->RemoveBytesBuffered(321); | |
| 137 EXPECT_EQ(send_window_, flow_controller_->SendWindowSize()); | 136 EXPECT_EQ(send_window_, flow_controller_->SendWindowSize()); |
| 138 EXPECT_EQ(send_window_, | 137 EXPECT_EQ(send_window_, |
| 139 QuicFlowControllerPeer::SendWindowOffset(flow_controller_.get())); | 138 QuicFlowControllerPeer::SendWindowOffset(flow_controller_.get())); |
| 140 EXPECT_EQ(receive_window_, QuicFlowControllerPeer::ReceiveWindowOffset( | 139 EXPECT_EQ(receive_window_, QuicFlowControllerPeer::ReceiveWindowOffset( |
| 141 flow_controller_.get())); | 140 flow_controller_.get())); |
| 142 | 141 |
| 143 // Any attempt to change offset should have no effect. | 142 // Any attempt to change offset should have no effect. |
| 144 EXPECT_EQ(send_window_, flow_controller_->SendWindowSize()); | 143 EXPECT_EQ(send_window_, flow_controller_->SendWindowSize()); |
| 145 EXPECT_EQ(send_window_, | 144 EXPECT_EQ(send_window_, |
| 146 QuicFlowControllerPeer::SendWindowOffset(flow_controller_.get())); | 145 QuicFlowControllerPeer::SendWindowOffset(flow_controller_.get())); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 flow_controller_->AddBytesSent(send_window_); | 209 flow_controller_->AddBytesSent(send_window_); |
| 211 EXPECT_TRUE(flow_controller_->IsBlocked()); | 210 EXPECT_TRUE(flow_controller_->IsBlocked()); |
| 212 EXPECT_EQ(0u, flow_controller_->SendWindowSize()); | 211 EXPECT_EQ(0u, flow_controller_->SendWindowSize()); |
| 213 | 212 |
| 214 // BLOCKED frame should get sent as send offset has changed. | 213 // BLOCKED frame should get sent as send offset has changed. |
| 215 flow_controller_->MaybeSendBlocked(&connection); | 214 flow_controller_->MaybeSendBlocked(&connection); |
| 216 } | 215 } |
| 217 | 216 |
| 218 } // namespace test | 217 } // namespace test |
| 219 } // namespace net | 218 } // namespace net |
| OLD | NEW |