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

Side by Side Diff: net/tools/quic/test_tools/packet_dropping_test_writer.cc

Issue 1138443003: Land Recent QUIC Changes until 05/13/2015 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: compile error fixes Created 5 years, 7 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
OLDNEW
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
39 39
40 QuicTime OnAlarm() override { return writer_->ReleaseOldPackets(); } 40 QuicTime OnAlarm() override { return writer_->ReleaseOldPackets(); }
41 41
42 private: 42 private:
43 PacketDroppingTestWriter* writer_; 43 PacketDroppingTestWriter* writer_;
44 }; 44 };
45 45
46 PacketDroppingTestWriter::PacketDroppingTestWriter() 46 PacketDroppingTestWriter::PacketDroppingTestWriter()
47 : clock_(nullptr), 47 : clock_(nullptr),
48 cur_buffer_size_(0), 48 cur_buffer_size_(0),
49 num_calls_to_write_(0),
49 config_mutex_(), 50 config_mutex_(),
50 fake_packet_loss_percentage_(0), 51 fake_packet_loss_percentage_(0),
52 fake_drop_first_n_packets_(0),
51 fake_blocked_socket_percentage_(0), 53 fake_blocked_socket_percentage_(0),
52 fake_packet_reorder_percentage_(0), 54 fake_packet_reorder_percentage_(0),
53 fake_packet_delay_(QuicTime::Delta::Zero()), 55 fake_packet_delay_(QuicTime::Delta::Zero()),
54 fake_bandwidth_(QuicBandwidth::Zero()), 56 fake_bandwidth_(QuicBandwidth::Zero()),
55 buffer_size_(0) { 57 buffer_size_(0) {
56 uint32 seed = base::RandInt(0, std::numeric_limits<int32>::max()); 58 uint32 seed = base::RandInt(0, std::numeric_limits<int32>::max());
57 VLOG(1) << "Seeding packet loss with " << seed; 59 VLOG(1) << "Seeding packet loss with " << seed;
58 simple_random_.set_seed(seed); 60 simple_random_.set_seed(seed);
59 } 61 }
60 62
61 PacketDroppingTestWriter::~PacketDroppingTestWriter() {} 63 PacketDroppingTestWriter::~PacketDroppingTestWriter() {}
62 64
63 void PacketDroppingTestWriter::Initialize( 65 void PacketDroppingTestWriter::Initialize(
64 QuicConnectionHelperInterface* helper, 66 QuicConnectionHelperInterface* helper,
65 Delegate* on_can_write) { 67 Delegate* on_can_write) {
66 clock_ = helper->GetClock(); 68 clock_ = helper->GetClock();
67 write_unblocked_alarm_.reset( 69 write_unblocked_alarm_.reset(
68 helper->CreateAlarm(new WriteUnblockedAlarm(this))); 70 helper->CreateAlarm(new WriteUnblockedAlarm(this)));
69 delay_alarm_.reset( 71 delay_alarm_.reset(
70 helper->CreateAlarm(new DelayAlarm(this))); 72 helper->CreateAlarm(new DelayAlarm(this)));
71 on_can_write_.reset(on_can_write); 73 on_can_write_.reset(on_can_write);
72 } 74 }
73 75
74 WriteResult PacketDroppingTestWriter::WritePacket( 76 WriteResult PacketDroppingTestWriter::WritePacket(
75 const char* buffer, 77 const char* buffer,
76 size_t buf_len, 78 size_t buf_len,
77 const net::IPAddressNumber& self_address, 79 const net::IPAddressNumber& self_address,
78 const net::IPEndPoint& peer_address) { 80 const net::IPEndPoint& peer_address) {
81 ++num_calls_to_write_;
79 ReleaseOldPackets(); 82 ReleaseOldPackets();
80 83
81 base::AutoLock locked(config_mutex_); 84 base::AutoLock locked(config_mutex_);
85 if (fake_drop_first_n_packets_ > 0 &&
86 num_calls_to_write_ <= static_cast<uint64>(fake_drop_first_n_packets_)) {
87 DVLOG(1) << "Dropping first " << fake_drop_first_n_packets_
88 << " packets (packet number " << num_calls_to_write_ << ")";
89 return WriteResult(WRITE_STATUS_OK, buf_len);
90 }
82 if (fake_packet_loss_percentage_ > 0 && 91 if (fake_packet_loss_percentage_ > 0 &&
83 simple_random_.RandUint64() % 100 < 92 simple_random_.RandUint64() % 100 <
84 static_cast<uint64>(fake_packet_loss_percentage_)) { 93 static_cast<uint64>(fake_packet_loss_percentage_)) {
85 DVLOG(1) << "Dropping packet."; 94 DVLOG(1) << "Dropping packet.";
86 return WriteResult(WRITE_STATUS_OK, buf_len); 95 return WriteResult(WRITE_STATUS_OK, buf_len);
87 } 96 }
88 if (fake_blocked_socket_percentage_ > 0 && 97 if (fake_blocked_socket_percentage_ > 0 &&
89 simple_random_.RandUint64() % 100 < 98 simple_random_.RandUint64() % 100 <
90 static_cast<uint64>(fake_blocked_socket_percentage_)) { 99 static_cast<uint64>(fake_blocked_socket_percentage_)) {
91 CHECK(on_can_write_.get() != nullptr); 100 CHECK(on_can_write_.get() != nullptr);
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 : buffer(buffer, buf_len), 213 : buffer(buffer, buf_len),
205 self_address(self_address), 214 self_address(self_address),
206 peer_address(peer_address), 215 peer_address(peer_address),
207 send_time(send_time) {} 216 send_time(send_time) {}
208 217
209 PacketDroppingTestWriter::DelayedWrite::~DelayedWrite() {} 218 PacketDroppingTestWriter::DelayedWrite::~DelayedWrite() {}
210 219
211 } // namespace test 220 } // namespace test
212 } // namespace tools 221 } // namespace tools
213 } // namespace net 222 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/test_tools/packet_dropping_test_writer.h ('k') | net/tools/quic/test_tools/quic_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698