| 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 #include "net/tools/quic/test_tools/packet_dropping_test_writer.h" | 5 #include "net/tools/quic/test_tools/packet_dropping_test_writer.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/rand_util.h" | 9 #include "base/rand_util.h" |
| 10 #include "net/tools/quic/quic_epoll_connection_helper.h" | 10 #include "net/tools/quic/quic_epoll_connection_helper.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 | 39 |
| 40 virtual QuicTime OnAlarm() OVERRIDE { | 40 virtual QuicTime OnAlarm() OVERRIDE { |
| 41 return writer_->ReleaseOldPackets(); | 41 return writer_->ReleaseOldPackets(); |
| 42 } | 42 } |
| 43 | 43 |
| 44 private: | 44 private: |
| 45 PacketDroppingTestWriter* writer_; | 45 PacketDroppingTestWriter* writer_; |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 PacketDroppingTestWriter::PacketDroppingTestWriter() | 48 PacketDroppingTestWriter::PacketDroppingTestWriter() |
| 49 : clock_(NULL), | 49 : clock_(nullptr), |
| 50 cur_buffer_size_(0), | 50 cur_buffer_size_(0), |
| 51 config_mutex_(), | 51 config_mutex_(), |
| 52 fake_packet_loss_percentage_(0), | 52 fake_packet_loss_percentage_(0), |
| 53 fake_blocked_socket_percentage_(0), | 53 fake_blocked_socket_percentage_(0), |
| 54 fake_packet_reorder_percentage_(0), | 54 fake_packet_reorder_percentage_(0), |
| 55 fake_packet_delay_(QuicTime::Delta::Zero()), | 55 fake_packet_delay_(QuicTime::Delta::Zero()), |
| 56 fake_bandwidth_(QuicBandwidth::Zero()), | 56 fake_bandwidth_(QuicBandwidth::Zero()), |
| 57 buffer_size_(0) { | 57 buffer_size_(0) { |
| 58 uint32 seed = base::RandInt(0, std::numeric_limits<int32>::max()); | 58 uint32 seed = base::RandInt(0, std::numeric_limits<int32>::max()); |
| 59 VLOG(1) << "Seeding packet loss with " << seed; | 59 VLOG(1) << "Seeding packet loss with " << seed; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 83 base::AutoLock locked(config_mutex_); | 83 base::AutoLock locked(config_mutex_); |
| 84 if (fake_packet_loss_percentage_ > 0 && | 84 if (fake_packet_loss_percentage_ > 0 && |
| 85 simple_random_.RandUint64() % 100 < | 85 simple_random_.RandUint64() % 100 < |
| 86 static_cast<uint64>(fake_packet_loss_percentage_)) { | 86 static_cast<uint64>(fake_packet_loss_percentage_)) { |
| 87 DVLOG(1) << "Dropping packet."; | 87 DVLOG(1) << "Dropping packet."; |
| 88 return WriteResult(WRITE_STATUS_OK, buf_len); | 88 return WriteResult(WRITE_STATUS_OK, buf_len); |
| 89 } | 89 } |
| 90 if (fake_blocked_socket_percentage_ > 0 && | 90 if (fake_blocked_socket_percentage_ > 0 && |
| 91 simple_random_.RandUint64() % 100 < | 91 simple_random_.RandUint64() % 100 < |
| 92 static_cast<uint64>(fake_blocked_socket_percentage_)) { | 92 static_cast<uint64>(fake_blocked_socket_percentage_)) { |
| 93 CHECK(on_can_write_.get() != NULL); | 93 CHECK(on_can_write_.get() != nullptr); |
| 94 DVLOG(1) << "Blocking socket."; | 94 DVLOG(1) << "Blocking socket."; |
| 95 if (!write_unblocked_alarm_->IsSet()) { | 95 if (!write_unblocked_alarm_->IsSet()) { |
| 96 // Set the alarm to fire immediately. | 96 // Set the alarm to fire immediately. |
| 97 write_unblocked_alarm_->Set(clock_->ApproximateNow()); | 97 write_unblocked_alarm_->Set(clock_->ApproximateNow()); |
| 98 } | 98 } |
| 99 return WriteResult(WRITE_STATUS_BLOCKED, EAGAIN); | 99 return WriteResult(WRITE_STATUS_BLOCKED, EAGAIN); |
| 100 } | 100 } |
| 101 | 101 |
| 102 if (!fake_packet_delay_.IsZero() || !fake_bandwidth_.IsZero()) { | 102 if (!fake_packet_delay_.IsZero() || !fake_bandwidth_.IsZero()) { |
| 103 if (buffer_size_ > 0 && buf_len + cur_buffer_size_ > buffer_size_) { | 103 if (buffer_size_ > 0 && buf_len + cur_buffer_size_ > buffer_size_) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 127 } | 127 } |
| 128 | 128 |
| 129 return WriteResult(WRITE_STATUS_OK, buf_len); | 129 return WriteResult(WRITE_STATUS_OK, buf_len); |
| 130 } | 130 } |
| 131 | 131 |
| 132 return QuicPacketWriterWrapper::WritePacket( | 132 return QuicPacketWriterWrapper::WritePacket( |
| 133 buffer, buf_len, self_address, peer_address); | 133 buffer, buf_len, self_address, peer_address); |
| 134 } | 134 } |
| 135 | 135 |
| 136 bool PacketDroppingTestWriter::IsWriteBlocked() const { | 136 bool PacketDroppingTestWriter::IsWriteBlocked() const { |
| 137 if (write_unblocked_alarm_.get() != NULL && write_unblocked_alarm_->IsSet()) { | 137 if (write_unblocked_alarm_.get() != nullptr && |
| 138 write_unblocked_alarm_->IsSet()) { |
| 138 return true; | 139 return true; |
| 139 } | 140 } |
| 140 return QuicPacketWriterWrapper::IsWriteBlocked(); | 141 return QuicPacketWriterWrapper::IsWriteBlocked(); |
| 141 } | 142 } |
| 142 | 143 |
| 143 void PacketDroppingTestWriter::SetWritable() { | 144 void PacketDroppingTestWriter::SetWritable() { |
| 144 if (write_unblocked_alarm_.get() != NULL && write_unblocked_alarm_->IsSet()) { | 145 if (write_unblocked_alarm_.get() != nullptr && |
| 146 write_unblocked_alarm_->IsSet()) { |
| 145 write_unblocked_alarm_->Cancel(); | 147 write_unblocked_alarm_->Cancel(); |
| 146 } | 148 } |
| 147 QuicPacketWriterWrapper::SetWritable(); | 149 QuicPacketWriterWrapper::SetWritable(); |
| 148 } | 150 } |
| 149 | 151 |
| 150 QuicTime PacketDroppingTestWriter::ReleaseNextPacket() { | 152 QuicTime PacketDroppingTestWriter::ReleaseNextPacket() { |
| 151 if (delayed_packets_.empty()) { | 153 if (delayed_packets_.empty()) { |
| 152 return QuicTime::Zero(); | 154 return QuicTime::Zero(); |
| 153 } | 155 } |
| 154 base::AutoLock locked(config_mutex_); | 156 base::AutoLock locked(config_mutex_); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 : buffer(buffer, buf_len), | 206 : buffer(buffer, buf_len), |
| 205 self_address(self_address), | 207 self_address(self_address), |
| 206 peer_address(peer_address), | 208 peer_address(peer_address), |
| 207 send_time(send_time) {} | 209 send_time(send_time) {} |
| 208 | 210 |
| 209 PacketDroppingTestWriter::DelayedWrite::~DelayedWrite() {} | 211 PacketDroppingTestWriter::DelayedWrite::~DelayedWrite() {} |
| 210 | 212 |
| 211 } // namespace test | 213 } // namespace test |
| 212 } // namespace tools | 214 } // namespace tools |
| 213 } // namespace net | 215 } // namespace net |
| OLD | NEW |