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

Side by Side Diff: net/quic/quic_connection_test.cc

Issue 11961022: Remove default constructors for QuicTime and QuicTime::Delta and used static Zero() methods instead… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
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 #include "net/quic/quic_connection.h" 5 #include "net/quic/quic_connection.h"
6 6
7 #include "net/base/net_errors.h" 7 #include "net/base/net_errors.h"
8 #include "net/quic/congestion_control/quic_receipt_metrics_collector.h" 8 #include "net/quic/congestion_control/quic_receipt_metrics_collector.h"
9 #include "net/quic/congestion_control/quic_send_scheduler.h" 9 #include "net/quic/congestion_control/quic_send_scheduler.h"
10 #include "net/quic/crypto/null_encrypter.h" 10 #include "net/quic/crypto/null_encrypter.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 QuicCongestionFeedbackFrame* feedback_; 57 QuicCongestionFeedbackFrame* feedback_;
58 58
59 DISALLOW_COPY_AND_ASSIGN(TestCollector); 59 DISALLOW_COPY_AND_ASSIGN(TestCollector);
60 }; 60 };
61 61
62 class TestConnectionHelper : public QuicConnectionHelperInterface { 62 class TestConnectionHelper : public QuicConnectionHelperInterface {
63 public: 63 public:
64 TestConnectionHelper(MockClock* clock, MockRandom* random_generator) 64 TestConnectionHelper(MockClock* clock, MockRandom* random_generator)
65 : clock_(clock), 65 : clock_(clock),
66 random_generator_(random_generator), 66 random_generator_(random_generator),
67 retransmission_alarm_(QuicTime::Zero()),
68 send_alarm_(QuicTime::Zero()),
69 timeout_alarm_(QuicTime::Zero()),
67 blocked_(false) { 70 blocked_(false) {
68 } 71 }
69 72
70 // QuicConnectionHelperInterface 73 // QuicConnectionHelperInterface
71 virtual void SetConnection(QuicConnection* connection) {} 74 virtual void SetConnection(QuicConnection* connection) {}
72 75
73 virtual const QuicClock* GetClock() const { 76 virtual const QuicClock* GetClock() const {
74 return clock_; 77 return clock_;
75 } 78 }
76 79
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 113
111 virtual void SetTimeoutAlarm(QuicTime::Delta delay) { 114 virtual void SetTimeoutAlarm(QuicTime::Delta delay) {
112 timeout_alarm_ = clock_->Now().Add(delay); 115 timeout_alarm_ = clock_->Now().Add(delay);
113 } 116 }
114 117
115 virtual bool IsSendAlarmSet() { 118 virtual bool IsSendAlarmSet() {
116 return send_alarm_ > clock_->Now(); 119 return send_alarm_ > clock_->Now();
117 } 120 }
118 121
119 virtual void UnregisterSendAlarmIfRegistered() { 122 virtual void UnregisterSendAlarmIfRegistered() {
120 send_alarm_ = QuicTime(); 123 send_alarm_ = QuicTime::Zero();
121 } 124 }
122 125
123 virtual void SetAckAlarm(QuicTime::Delta delay) {} 126 virtual void SetAckAlarm(QuicTime::Delta delay) {}
124 virtual void ClearAckAlarm() {} 127 virtual void ClearAckAlarm() {}
125 128
126 QuicTime retransmission_alarm() const { 129 QuicTime retransmission_alarm() const {
127 return retransmission_alarm_; 130 return retransmission_alarm_;
128 } 131 }
129 132
130 QuicTime timeout_alarm() const { return timeout_alarm_; } 133 QuicTime timeout_alarm() const { return timeout_alarm_; }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 helper_(new TestConnectionHelper(&clock_, &random_generator_)), 197 helper_(new TestConnectionHelper(&clock_, &random_generator_)),
195 connection_(guid_, IPEndPoint(), helper_.get()), 198 connection_(guid_, IPEndPoint(), helper_.get()),
196 frame1_(1, false, 0, data1), 199 frame1_(1, false, 0, data1),
197 frame2_(1, false, 3, data2), 200 frame2_(1, false, 3, data2),
198 accept_packet_(true) { 201 accept_packet_(true) {
199 connection_.set_visitor(&visitor_); 202 connection_.set_visitor(&visitor_);
200 connection_.SetScheduler(scheduler_); 203 connection_.SetScheduler(scheduler_);
201 // Simplify tests by not sending feedback unless specifically configured. 204 // Simplify tests by not sending feedback unless specifically configured.
202 SetFeedback(NULL); 205 SetFeedback(NULL);
203 EXPECT_CALL(*scheduler_, TimeUntilSend(_)).WillRepeatedly(Return( 206 EXPECT_CALL(*scheduler_, TimeUntilSend(_)).WillRepeatedly(Return(
204 QuicTime::Delta())); 207 QuicTime::Delta::Zero()));
205 EXPECT_CALL(*collector_, 208 EXPECT_CALL(*collector_,
206 RecordIncomingPacket(_, _, _, _)).Times(AnyNumber()); 209 RecordIncomingPacket(_, _, _, _)).Times(AnyNumber());
207 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)).Times(AnyNumber()); 210 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)).Times(AnyNumber());
208 } 211 }
209 212
210 QuicAckFrame* outgoing_ack() { 213 QuicAckFrame* outgoing_ack() {
211 return QuicConnectionPeer::GetOutgoingAck(&connection_); 214 return QuicConnectionPeer::GetOutgoingAck(&connection_);
212 } 215 }
213 216
214 QuicAckFrame* last_ack() { 217 QuicAckFrame* last_ack() {
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 clock_.Now()); 898 clock_.Now());
896 EXPECT_TRUE(connection_.CheckForTimeout()); 899 EXPECT_TRUE(connection_.CheckForTimeout());
897 EXPECT_FALSE(connection_.connected()); 900 EXPECT_FALSE(connection_.connected());
898 } 901 }
899 902
900 // TODO(ianswett): Add scheduler tests when should_retransmit is false. 903 // TODO(ianswett): Add scheduler tests when should_retransmit is false.
901 TEST_F(QuicConnectionTest, SendScheduler) { 904 TEST_F(QuicConnectionTest, SendScheduler) {
902 // Test that if we send a packet without delay, it is not queued. 905 // Test that if we send a packet without delay, it is not queued.
903 QuicPacket* packet = ConstructDataPacket(1, 0); 906 QuicPacket* packet = ConstructDataPacket(1, 0);
904 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return( 907 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return(
905 QuicTime::Delta())); 908 QuicTime::Delta::Zero()));
906 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)); 909 EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
907 connection_.SendPacket(1, packet, true, false, false); 910 connection_.SendPacket(1, packet, true, false, false);
908 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 911 EXPECT_EQ(0u, connection_.NumQueuedPackets());
909 } 912 }
910 913
911 TEST_F(QuicConnectionTest, SendSchedulerDelay) { 914 TEST_F(QuicConnectionTest, SendSchedulerDelay) {
912 // Test that if we send a packet with a delay, it ends up queued. 915 // Test that if we send a packet with a delay, it ends up queued.
913 QuicPacket* packet = ConstructDataPacket(1, 0); 916 QuicPacket* packet = ConstructDataPacket(1, 0);
914 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return( 917 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return(
915 QuicTime::Delta::FromMicroseconds(1))); 918 QuicTime::Delta::FromMicroseconds(1)));
916 EXPECT_CALL(*scheduler_, SentPacket(1, _, _)).Times(0); 919 EXPECT_CALL(*scheduler_, SentPacket(1, _, _)).Times(0);
917 connection_.SendPacket(1, packet, true, false, false); 920 connection_.SendPacket(1, packet, true, false, false);
918 EXPECT_EQ(1u, connection_.NumQueuedPackets()); 921 EXPECT_EQ(1u, connection_.NumQueuedPackets());
919 } 922 }
920 923
921 TEST_F(QuicConnectionTest, SendSchedulerForce) { 924 TEST_F(QuicConnectionTest, SendSchedulerForce) {
922 // Test that if we force send a packet, it is not queued. 925 // Test that if we force send a packet, it is not queued.
923 QuicPacket* packet = ConstructDataPacket(1, 0); 926 QuicPacket* packet = ConstructDataPacket(1, 0);
924 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).Times(0); 927 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).Times(0);
925 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)); 928 EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
926 connection_.SendPacket(1, packet, true, true, false); 929 connection_.SendPacket(1, packet, true, true, false);
927 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 930 EXPECT_EQ(0u, connection_.NumQueuedPackets());
928 } 931 }
929 932
930 // TODO(rch): Enable after we get non-blocking sockets. 933 // TODO(rch): Enable after we get non-blocking sockets.
931 TEST_F(QuicConnectionTest, DISABLED_SendSchedulerEAGAIN) { 934 TEST_F(QuicConnectionTest, DISABLED_SendSchedulerEAGAIN) {
932 QuicPacket* packet = ConstructDataPacket(1, 0); 935 QuicPacket* packet = ConstructDataPacket(1, 0);
933 helper_->set_blocked(true); 936 helper_->set_blocked(true);
934 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return( 937 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return(
935 QuicTime::Delta())); 938 QuicTime::Delta::Zero()));
936 EXPECT_CALL(*scheduler_, SentPacket(1, _, _)).Times(0); 939 EXPECT_CALL(*scheduler_, SentPacket(1, _, _)).Times(0);
937 connection_.SendPacket(1, packet, true, false, false); 940 connection_.SendPacket(1, packet, true, false, false);
938 EXPECT_EQ(1u, connection_.NumQueuedPackets()); 941 EXPECT_EQ(1u, connection_.NumQueuedPackets());
939 } 942 }
940 943
941 TEST_F(QuicConnectionTest, SendSchedulerDelayThenSend) { 944 TEST_F(QuicConnectionTest, SendSchedulerDelayThenSend) {
942 // Test that if we send a packet with a delay, it ends up queued. 945 // Test that if we send a packet with a delay, it ends up queued.
943 QuicPacket* packet = ConstructDataPacket(1, 0); 946 QuicPacket* packet = ConstructDataPacket(1, 0);
944 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return( 947 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return(
945 QuicTime::Delta::FromMicroseconds(1))); 948 QuicTime::Delta::FromMicroseconds(1)));
946 connection_.SendPacket(1, packet, true, false, false); 949 connection_.SendPacket(1, packet, true, false, false);
947 EXPECT_EQ(1u, connection_.NumQueuedPackets()); 950 EXPECT_EQ(1u, connection_.NumQueuedPackets());
948 951
949 // Advance the clock to fire the alarm, and configure the scheduler 952 // Advance the clock to fire the alarm, and configure the scheduler
950 // to permit the packet to be sent. 953 // to permit the packet to be sent.
951 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return( 954 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return(
952 QuicTime::Delta())); 955 QuicTime::Delta::Zero()));
953 clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(1)); 956 clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(1));
954 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)); 957 EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
955 EXPECT_CALL(visitor_, OnCanWrite()); 958 EXPECT_CALL(visitor_, OnCanWrite());
956 connection_.OnCanWrite(); 959 connection_.OnCanWrite();
957 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 960 EXPECT_EQ(0u, connection_.NumQueuedPackets());
958 } 961 }
959 962
960 TEST_F(QuicConnectionTest, SendSchedulerDelayThenRetransmit) { 963 TEST_F(QuicConnectionTest, SendSchedulerDelayThenRetransmit) {
961 // Test that if we send a retransmit with a delay, it ends up queued. 964 // Test that if we send a retransmit with a delay, it ends up queued.
962 QuicPacket* packet = ConstructDataPacket(1, 0); 965 QuicPacket* packet = ConstructDataPacket(1, 0);
963 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return( 966 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(
964 QuicTime::Delta::FromMicroseconds(1))); 967 QuicTime::Delta::FromMicroseconds(1)));
965 connection_.SendPacket(1, packet, true, false, true); 968 connection_.SendPacket(1, packet, true, false, true);
966 EXPECT_EQ(1u, connection_.NumQueuedPackets()); 969 EXPECT_EQ(1u, connection_.NumQueuedPackets());
967 970
968 // Advance the clock to fire the alarm, and configure the scheduler 971 // Advance the clock to fire the alarm, and configure the scheduler
969 // to permit the packet to be sent. 972 // to permit the packet to be sent.
970 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return( 973 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(
971 QuicTime::Delta())); 974 QuicTime::Delta::Zero()));
972 975
973 // Ensure the scheduler is notified this is a retransmit. 976 // Ensure the scheduler is notified this is a retransmit.
974 EXPECT_CALL(*scheduler_, SentPacket(1, _, true)); 977 EXPECT_CALL(*scheduler_, SentPacket(1, _, true));
975 clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(1)); 978 clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(1));
976 EXPECT_CALL(visitor_, OnCanWrite()); 979 EXPECT_CALL(visitor_, OnCanWrite());
977 connection_.OnCanWrite(); 980 connection_.OnCanWrite();
978 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 981 EXPECT_EQ(0u, connection_.NumQueuedPackets());
979 } 982 }
980 983
981 TEST_F(QuicConnectionTest, SendSchedulerDelayAndQueue) { 984 TEST_F(QuicConnectionTest, SendSchedulerDelayAndQueue) {
(...skipping 13 matching lines...) Expand all
995 QuicPacket* packet = ConstructDataPacket(1, 0); 998 QuicPacket* packet = ConstructDataPacket(1, 0);
996 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return( 999 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillOnce(testing::Return(
997 QuicTime::Delta::FromMicroseconds(10))); 1000 QuicTime::Delta::FromMicroseconds(10)));
998 connection_.SendPacket(1, packet, true, false, false); 1001 connection_.SendPacket(1, packet, true, false, false);
999 EXPECT_EQ(1u, connection_.NumQueuedPackets()); 1002 EXPECT_EQ(1u, connection_.NumQueuedPackets());
1000 1003
1001 // Now send non-retransmitting information, that we're not going to 1004 // Now send non-retransmitting information, that we're not going to
1002 // retransmit 3. The far end should stop waiting for it. 1005 // retransmit 3. The far end should stop waiting for it.
1003 QuicAckFrame frame(0, 1); 1006 QuicAckFrame frame(0, 1);
1004 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillRepeatedly(testing::Return( 1007 EXPECT_CALL(*scheduler_, TimeUntilSend(false)).WillRepeatedly(testing::Return(
1005 QuicTime::Delta())); 1008 QuicTime::Delta::Zero()));
1006 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)); 1009 EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
1007 EXPECT_CALL(visitor_, OnCanWrite()); 1010 EXPECT_CALL(visitor_, OnCanWrite());
1008 ProcessAckPacket(&frame); 1011 ProcessAckPacket(&frame);
1009 1012
1010 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 1013 EXPECT_EQ(0u, connection_.NumQueuedPackets());
1011 // Ensure alarm is not set 1014 // Ensure alarm is not set
1012 EXPECT_FALSE(helper_->IsSendAlarmSet()); 1015 EXPECT_FALSE(helper_->IsSendAlarmSet());
1013 } 1016 }
1014 1017
1015 TEST_F(QuicConnectionTest, SendSchedulerDelayThenAckAndHold) { 1018 TEST_F(QuicConnectionTest, SendSchedulerDelayThenAckAndHold) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 1068
1066 // Queue the first packet. 1069 // Queue the first packet.
1067 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)).Times(17); 1070 EXPECT_CALL(*scheduler_, SentPacket(_, _, _)).Times(17);
1068 EXPECT_EQ(17u, connection_.SendStreamData( 1071 EXPECT_EQ(17u, connection_.SendStreamData(
1069 1, "EnoughDataToQueue", 0, false, NULL).bytes_consumed); 1072 1, "EnoughDataToQueue", 0, false, NULL).bytes_consumed);
1070 } 1073 }
1071 1074
1072 } // namespace 1075 } // namespace
1073 } // namespace test 1076 } // namespace test
1074 } // namespace net 1077 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698