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

Side by Side Diff: webrtc/p2p/quic/quictransportchannel_unittest.cc

Issue 1856943002: Allow TransportController to create a QuicTransportChannel (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Sync to upstream Created 4 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
« no previous file with comments | « webrtc/p2p/quic/quictransportchannel.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 }; 87 };
88 88
89 // Peer who establishes a handshake using a QuicTransportChannel, which wraps 89 // Peer who establishes a handshake using a QuicTransportChannel, which wraps
90 // a FailableTransportChannel to simulate network connectivity and ICE 90 // a FailableTransportChannel to simulate network connectivity and ICE
91 // negotiation. 91 // negotiation.
92 class QuicTestPeer : public sigslot::has_slots<> { 92 class QuicTestPeer : public sigslot::has_slots<> {
93 public: 93 public:
94 explicit QuicTestPeer(const std::string& name) 94 explicit QuicTestPeer(const std::string& name)
95 : name_(name), 95 : name_(name),
96 bytes_sent_(0), 96 bytes_sent_(0),
97 ice_channel_(name_, 0), 97 ice_channel_(new FailableTransportChannel(name_, 0)),
98 quic_channel_(&ice_channel_), 98 quic_channel_(ice_channel_),
99 incoming_stream_count_(0) { 99 incoming_stream_count_(0) {
100 quic_channel_.SignalReadPacket.connect( 100 quic_channel_.SignalReadPacket.connect(
101 this, &QuicTestPeer::OnTransportChannelReadPacket); 101 this, &QuicTestPeer::OnTransportChannelReadPacket);
102 quic_channel_.SignalIncomingStream.connect(this, 102 quic_channel_.SignalIncomingStream.connect(this,
103 &QuicTestPeer::OnIncomingStream); 103 &QuicTestPeer::OnIncomingStream);
104 quic_channel_.SignalClosed.connect(this, &QuicTestPeer::OnClosed); 104 quic_channel_.SignalClosed.connect(this, &QuicTestPeer::OnClosed);
105 ice_channel_.SetAsync(true); 105 ice_channel_->SetAsync(true);
106 rtc::scoped_refptr<rtc::RTCCertificate> local_cert = 106 rtc::scoped_refptr<rtc::RTCCertificate> local_cert =
107 rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>( 107 rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
108 rtc::SSLIdentity::Generate(name_, rtc::KT_DEFAULT))); 108 rtc::SSLIdentity::Generate(name_, rtc::KT_DEFAULT)));
109 quic_channel_.SetLocalCertificate(local_cert); 109 quic_channel_.SetLocalCertificate(local_cert);
110 local_fingerprint_.reset(CreateFingerprint(local_cert.get())); 110 local_fingerprint_.reset(CreateFingerprint(local_cert.get()));
111 } 111 }
112 112
113 // Connects |ice_channel_| to that of the other peer. 113 // Connects |ice_channel_| to that of the other peer.
114 void Connect(QuicTestPeer* other_peer) { 114 void Connect(QuicTestPeer* other_peer) {
115 ice_channel_.Connect(); 115 ice_channel_->Connect();
116 other_peer->ice_channel_.Connect(); 116 other_peer->ice_channel_->Connect();
117 ice_channel_.SetDestination(&other_peer->ice_channel_); 117 ice_channel_->SetDestination(other_peer->ice_channel_);
118 } 118 }
119 119
120 // Disconnects |ice_channel_|. 120 // Disconnects |ice_channel_|.
121 void Disconnect() { ice_channel_.SetDestination(nullptr); } 121 void Disconnect() { ice_channel_->SetDestination(nullptr); }
122 122
123 // Generates ICE credentials and passes them to |quic_channel_|. 123 // Generates ICE credentials and passes them to |quic_channel_|.
124 void SetIceParameters(IceRole local_ice_role, 124 void SetIceParameters(IceRole local_ice_role,
125 ConnectionRole local_connection_role, 125 ConnectionRole local_connection_role,
126 ConnectionRole remote_connection_role, 126 ConnectionRole remote_connection_role,
127 rtc::SSLFingerprint* remote_fingerprint) { 127 rtc::SSLFingerprint* remote_fingerprint) {
128 quic_channel_.SetIceRole(local_ice_role); 128 quic_channel_.SetIceRole(local_ice_role);
129 quic_channel_.SetIceTiebreaker( 129 quic_channel_.SetIceTiebreaker(
130 (local_ice_role == cricket::ICEROLE_CONTROLLING) ? 1 : 2); 130 (local_ice_role == cricket::ICEROLE_CONTROLLING) ? 1 : 2);
131 131
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 char packet[kPacketSize]; 182 char packet[kPacketSize];
183 packet[0] = 0x80; // Make the packet header look like RTP. 183 packet[0] = 0x80; // Make the packet header look like RTP.
184 return quic_channel_.SendPacket(&packet[0], kPacketSize, 184 return quic_channel_.SendPacket(&packet[0], kPacketSize,
185 rtc::PacketOptions(), 0); 185 rtc::PacketOptions(), 0);
186 } 186 }
187 187
188 void ClearBytesSent() { bytes_sent_ = 0; } 188 void ClearBytesSent() { bytes_sent_ = 0; }
189 189
190 void ClearBytesReceived() { bytes_received_ = 0; } 190 void ClearBytesReceived() { bytes_received_ = 0; }
191 191
192 void SetWriteError(int error) { ice_channel_.SetError(error); } 192 void SetWriteError(int error) { ice_channel_->SetError(error); }
193 193
194 size_t bytes_received() const { return bytes_received_; } 194 size_t bytes_received() const { return bytes_received_; }
195 195
196 size_t bytes_sent() const { return bytes_sent_; } 196 size_t bytes_sent() const { return bytes_sent_; }
197 197
198 FailableTransportChannel* ice_channel() { return &ice_channel_; } 198 FailableTransportChannel* ice_channel() { return ice_channel_; }
199 199
200 QuicTransportChannel* quic_channel() { return &quic_channel_; } 200 QuicTransportChannel* quic_channel() { return &quic_channel_; }
201 201
202 std::unique_ptr<rtc::SSLFingerprint>& local_fingerprint() { 202 std::unique_ptr<rtc::SSLFingerprint>& local_fingerprint() {
203 return local_fingerprint_; 203 return local_fingerprint_;
204 } 204 }
205 205
206 ReliableQuicStream* incoming_quic_stream() { return incoming_quic_stream_; } 206 ReliableQuicStream* incoming_quic_stream() { return incoming_quic_stream_; }
207 207
208 size_t incoming_stream_count() const { return incoming_stream_count_; } 208 size_t incoming_stream_count() const { return incoming_stream_count_; }
(...skipping 14 matching lines...) Expand all
223 } 223 }
224 void OnIncomingStream(ReliableQuicStream* stream) { 224 void OnIncomingStream(ReliableQuicStream* stream) {
225 incoming_quic_stream_ = stream; 225 incoming_quic_stream_ = stream;
226 ++incoming_stream_count_; 226 ++incoming_stream_count_;
227 } 227 }
228 void OnClosed() { signal_closed_emitted_ = true; } 228 void OnClosed() { signal_closed_emitted_ = true; }
229 229
230 std::string name_; // Channel name. 230 std::string name_; // Channel name.
231 size_t bytes_sent_; // Bytes sent by QUIC channel. 231 size_t bytes_sent_; // Bytes sent by QUIC channel.
232 size_t bytes_received_; // Bytes received by QUIC channel. 232 size_t bytes_received_; // Bytes received by QUIC channel.
233 FailableTransportChannel ice_channel_; // Simulates an ICE channel. 233 FailableTransportChannel* ice_channel_; // Simulates an ICE channel.
234 QuicTransportChannel quic_channel_; // QUIC channel to test. 234 QuicTransportChannel quic_channel_; // QUIC channel to test.
235 std::unique_ptr<rtc::SSLFingerprint> local_fingerprint_; 235 std::unique_ptr<rtc::SSLFingerprint> local_fingerprint_;
236 ReliableQuicStream* incoming_quic_stream_ = nullptr; 236 ReliableQuicStream* incoming_quic_stream_ = nullptr;
237 size_t incoming_stream_count_; 237 size_t incoming_stream_count_;
238 bool signal_closed_emitted_ = false; 238 bool signal_closed_emitted_ = false;
239 }; 239 };
240 240
241 class QuicTransportChannelTest : public testing::Test { 241 class QuicTransportChannelTest : public testing::Test {
242 public: 242 public:
243 QuicTransportChannelTest() : peer1_("P1"), peer2_("P2") {} 243 QuicTransportChannelTest() : peer1_("P1"), peer2_("P2") {}
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 Connect(); 547 Connect();
548 ASSERT_TRUE_WAIT(quic_connected(), kTimeoutMs); 548 ASSERT_TRUE_WAIT(quic_connected(), kTimeoutMs);
549 ASSERT_FALSE(peer1_.signal_closed_emitted()); 549 ASSERT_FALSE(peer1_.signal_closed_emitted());
550 ReliableQuicStream* stream = peer1_.quic_channel()->CreateQuicStream(); 550 ReliableQuicStream* stream = peer1_.quic_channel()->CreateQuicStream();
551 ASSERT_NE(nullptr, stream); 551 ASSERT_NE(nullptr, stream);
552 stream->CloseConnectionWithDetails(net::QuicErrorCode::QUIC_NO_ERROR, 552 stream->CloseConnectionWithDetails(net::QuicErrorCode::QUIC_NO_ERROR,
553 "Closing QUIC for testing"); 553 "Closing QUIC for testing");
554 EXPECT_TRUE(peer1_.signal_closed_emitted()); 554 EXPECT_TRUE(peer1_.signal_closed_emitted());
555 EXPECT_TRUE_WAIT(peer2_.signal_closed_emitted(), kTimeoutMs); 555 EXPECT_TRUE_WAIT(peer2_.signal_closed_emitted(), kTimeoutMs);
556 } 556 }
OLDNEW
« no previous file with comments | « webrtc/p2p/quic/quictransportchannel.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698