OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef NET_TOOLS_QUIC_TEST_TOOLS_PACKET_DROPPING_TEST_WRITER_H_ | 5 #ifndef NET_TOOLS_QUIC_TEST_TOOLS_PACKET_DROPPING_TEST_WRITER_H_ |
6 #define NET_TOOLS_QUIC_TEST_TOOLS_PACKET_DROPPING_TEST_WRITER_H_ | 6 #define NET_TOOLS_QUIC_TEST_TOOLS_PACKET_DROPPING_TEST_WRITER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 QuicByteCount buffer_size) { | 114 QuicByteCount buffer_size) { |
115 DCHECK(clock_); | 115 DCHECK(clock_); |
116 base::AutoLock locked(config_mutex_); | 116 base::AutoLock locked(config_mutex_); |
117 fake_bandwidth_ = fake_bandwidth; | 117 fake_bandwidth_ = fake_bandwidth; |
118 buffer_size_ = buffer_size; | 118 buffer_size_ = buffer_size; |
119 } | 119 } |
120 | 120 |
121 // Useful for reproducing very flaky issues. | 121 // Useful for reproducing very flaky issues. |
122 void set_seed(uint64_t seed) { simple_random_.set_seed(seed); } | 122 void set_seed(uint64_t seed) { simple_random_.set_seed(seed); } |
123 | 123 |
124 // Sets the maximum allowed packet size to be sent. Packets larger than | |
125 // |packet_size| will cause the write to check-fail. | |
126 void set_max_allowed_packet_size(QuicByteCount packet_size) { | |
127 max_allowed_packet_size_ = packet_size; | |
128 } | |
129 | |
130 private: | 124 private: |
131 // Writes out the next packet to the contained writer and returns the time | 125 // Writes out the next packet to the contained writer and returns the time |
132 // for the next delayed packet to be written. | 126 // for the next delayed packet to be written. |
133 QuicTime ReleaseNextPacket(); | 127 QuicTime ReleaseNextPacket(); |
134 | 128 |
135 // A single packet which will be sent at the supplied send_time. | 129 // A single packet which will be sent at the supplied send_time. |
136 struct DelayedWrite { | 130 struct DelayedWrite { |
137 public: | 131 public: |
138 DelayedWrite(const char* buffer, | 132 DelayedWrite(const char* buffer, |
139 size_t buf_len, | 133 size_t buf_len, |
(...skipping 21 matching lines...) Expand all Loading... |
161 | 155 |
162 const QuicClock* clock_; | 156 const QuicClock* clock_; |
163 std::unique_ptr<QuicAlarm> write_unblocked_alarm_; | 157 std::unique_ptr<QuicAlarm> write_unblocked_alarm_; |
164 std::unique_ptr<QuicAlarm> delay_alarm_; | 158 std::unique_ptr<QuicAlarm> delay_alarm_; |
165 std::unique_ptr<Delegate> on_can_write_; | 159 std::unique_ptr<Delegate> on_can_write_; |
166 net::test::SimpleRandom simple_random_; | 160 net::test::SimpleRandom simple_random_; |
167 // Stored packets delayed by fake packet delay or bandwidth restrictions. | 161 // Stored packets delayed by fake packet delay or bandwidth restrictions. |
168 DelayedPacketList delayed_packets_; | 162 DelayedPacketList delayed_packets_; |
169 QuicByteCount cur_buffer_size_; | 163 QuicByteCount cur_buffer_size_; |
170 uint64_t num_calls_to_write_; | 164 uint64_t num_calls_to_write_; |
171 QuicByteCount max_allowed_packet_size_; | |
172 | 165 |
173 base::Lock config_mutex_; | 166 base::Lock config_mutex_; |
174 int32_t fake_packet_loss_percentage_; | 167 int32_t fake_packet_loss_percentage_; |
175 int32_t fake_drop_first_n_packets_; | 168 int32_t fake_drop_first_n_packets_; |
176 int32_t fake_blocked_socket_percentage_; | 169 int32_t fake_blocked_socket_percentage_; |
177 int32_t fake_packet_reorder_percentage_; | 170 int32_t fake_packet_reorder_percentage_; |
178 QuicTime::Delta fake_packet_delay_; | 171 QuicTime::Delta fake_packet_delay_; |
179 QuicBandwidth fake_bandwidth_; | 172 QuicBandwidth fake_bandwidth_; |
180 QuicByteCount buffer_size_; | 173 QuicByteCount buffer_size_; |
181 | 174 |
182 DISALLOW_COPY_AND_ASSIGN(PacketDroppingTestWriter); | 175 DISALLOW_COPY_AND_ASSIGN(PacketDroppingTestWriter); |
183 }; | 176 }; |
184 | 177 |
185 } // namespace test | 178 } // namespace test |
186 } // namespace net | 179 } // namespace net |
187 | 180 |
188 #endif // NET_TOOLS_QUIC_TEST_TOOLS_PACKET_DROPPING_TEST_WRITER_H_ | 181 #endif // NET_TOOLS_QUIC_TEST_TOOLS_PACKET_DROPPING_TEST_WRITER_H_ |
OLD | NEW |