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

Side by Side Diff: talk/app/webrtc/webrtcsession_unittest.cc

Issue 1363573002: Wire up transport sequence number / send time callbacks to webrtc via libjingle. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleanup Created 5 years, 2 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 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 10 matching lines...) Expand all
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 #include <vector> 28 #include <vector>
29 29
30 #include "talk/app/webrtc/audiotrack.h" 30 #include "talk/app/webrtc/audiotrack.h"
31 #include "talk/app/webrtc/fakemediacontroller.h"
31 #include "talk/app/webrtc/fakemetricsobserver.h" 32 #include "talk/app/webrtc/fakemetricsobserver.h"
32 #include "talk/app/webrtc/jsepicecandidate.h" 33 #include "talk/app/webrtc/jsepicecandidate.h"
33 #include "talk/app/webrtc/jsepsessiondescription.h" 34 #include "talk/app/webrtc/jsepsessiondescription.h"
34 #include "talk/app/webrtc/mediastreamsignaling.h" 35 #include "talk/app/webrtc/mediastreamsignaling.h"
35 #include "talk/app/webrtc/streamcollection.h" 36 #include "talk/app/webrtc/streamcollection.h"
36 #include "talk/app/webrtc/test/fakeconstraints.h" 37 #include "talk/app/webrtc/test/fakeconstraints.h"
37 #include "talk/app/webrtc/test/fakedtlsidentitystore.h" 38 #include "talk/app/webrtc/test/fakedtlsidentitystore.h"
38 #include "talk/app/webrtc/test/fakemediastreamsignaling.h" 39 #include "talk/app/webrtc/test/fakemediastreamsignaling.h"
39 #include "talk/app/webrtc/videotrack.h" 40 #include "talk/app/webrtc/videotrack.h"
40 #include "talk/app/webrtc/webrtcsession.h" 41 #include "talk/app/webrtc/webrtcsession.h"
41 #include "talk/app/webrtc/webrtcsessiondescriptionfactory.h" 42 #include "talk/app/webrtc/webrtcsessiondescriptionfactory.h"
42 #include "talk/media/base/fakemediaengine.h" 43 #include "talk/media/base/fakemediaengine.h"
43 #include "talk/media/base/fakevideorenderer.h" 44 #include "talk/media/base/fakevideorenderer.h"
44 #include "talk/media/base/mediachannel.h" 45 #include "talk/media/base/mediachannel.h"
46 #include "talk/media/webrtc/fakewebrtccall.h"
45 #include "webrtc/p2p/base/stunserver.h" 47 #include "webrtc/p2p/base/stunserver.h"
46 #include "webrtc/p2p/base/teststunserver.h" 48 #include "webrtc/p2p/base/teststunserver.h"
47 #include "webrtc/p2p/base/testturnserver.h" 49 #include "webrtc/p2p/base/testturnserver.h"
48 #include "webrtc/p2p/base/transportchannel.h" 50 #include "webrtc/p2p/base/transportchannel.h"
49 #include "webrtc/p2p/client/basicportallocator.h" 51 #include "webrtc/p2p/client/basicportallocator.h"
50 #include "talk/session/media/channelmanager.h" 52 #include "talk/session/media/channelmanager.h"
51 #include "talk/session/media/mediasession.h" 53 #include "talk/session/media/mediasession.h"
52 #include "webrtc/base/fakenetwork.h" 54 #include "webrtc/base/fakenetwork.h"
53 #include "webrtc/base/firewallsocketserver.h" 55 #include "webrtc/base/firewallsocketserver.h"
54 #include "webrtc/base/gunit.h" 56 #include "webrtc/base/gunit.h"
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 228
227 bool oncandidatesready_; 229 bool oncandidatesready_;
228 std::vector<cricket::Candidate> mline_0_candidates_; 230 std::vector<cricket::Candidate> mline_0_candidates_;
229 std::vector<cricket::Candidate> mline_1_candidates_; 231 std::vector<cricket::Candidate> mline_1_candidates_;
230 PeerConnectionInterface::IceConnectionState ice_connection_state_; 232 PeerConnectionInterface::IceConnectionState ice_connection_state_;
231 PeerConnectionInterface::IceGatheringState ice_gathering_state_; 233 PeerConnectionInterface::IceGatheringState ice_gathering_state_;
232 }; 234 };
233 235
234 class WebRtcSessionForTest : public webrtc::WebRtcSession { 236 class WebRtcSessionForTest : public webrtc::WebRtcSession {
235 public: 237 public:
236 WebRtcSessionForTest(cricket::ChannelManager* cmgr, 238 WebRtcSessionForTest(webrtc::MediaControllerInterface* media_controller,
237 rtc::Thread* signaling_thread, 239 rtc::Thread* signaling_thread,
238 rtc::Thread* worker_thread, 240 rtc::Thread* worker_thread,
239 cricket::PortAllocator* port_allocator, 241 cricket::PortAllocator* port_allocator,
240 webrtc::IceObserver* ice_observer, 242 webrtc::IceObserver* ice_observer,
241 webrtc::MediaStreamSignaling* mediastream_signaling) 243 webrtc::MediaStreamSignaling* mediastream_signaling)
242 : WebRtcSession(cmgr, signaling_thread, worker_thread, port_allocator, 244 : WebRtcSession(media_controller,
243 mediastream_signaling) { 245 signaling_thread,
246 worker_thread,
247 port_allocator,
248 mediastream_signaling) {
244 RegisterIceObserver(ice_observer); 249 RegisterIceObserver(ice_observer);
245 } 250 }
246 virtual ~WebRtcSessionForTest() {} 251 virtual ~WebRtcSessionForTest() {}
247 252
248 // Note that these methods are only safe to use if the signaling thread 253 // Note that these methods are only safe to use if the signaling thread
249 // is the same as the worker thread 254 // is the same as the worker thread
250 cricket::TransportChannel* voice_rtp_transport_channel() { 255 cricket::TransportChannel* voice_rtp_transport_channel() {
251 return rtp_transport_channel(voice_channel()); 256 return rtp_transport_channel(voice_channel());
252 } 257 }
253 258
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 int channel_id_; 357 int channel_id_;
353 cricket::AudioRenderer::Sink* sink_; 358 cricket::AudioRenderer::Sink* sink_;
354 }; 359 };
355 360
356 class WebRtcSessionTest 361 class WebRtcSessionTest
357 : public testing::TestWithParam<RTCCertificateGenerationMethod> { 362 : public testing::TestWithParam<RTCCertificateGenerationMethod> {
358 protected: 363 protected:
359 // TODO Investigate why ChannelManager crashes, if it's created 364 // TODO Investigate why ChannelManager crashes, if it's created
360 // after stun_server. 365 // after stun_server.
361 WebRtcSessionTest() 366 WebRtcSessionTest()
362 : media_engine_(new cricket::FakeMediaEngine()), 367 : media_engine_(new cricket::FakeMediaEngine()),
363 data_engine_(new cricket::FakeDataEngine()), 368 data_engine_(new cricket::FakeDataEngine()),
364 channel_manager_(new cricket::ChannelManager( 369 channel_manager_(
365 media_engine_, data_engine_, new cricket::CaptureManager(), 370 new cricket::ChannelManager(media_engine_,
366 rtc::Thread::Current())), 371 data_engine_,
367 tdesc_factory_(new cricket::TransportDescriptionFactory()), 372 new cricket::CaptureManager(),
368 desc_factory_(new cricket::MediaSessionDescriptionFactory( 373 rtc::Thread::Current())),
369 channel_manager_.get(), tdesc_factory_.get())), 374 fake_call_(webrtc::Call::Config()),
370 pss_(new rtc::PhysicalSocketServer), 375 media_controller_(
371 vss_(new rtc::VirtualSocketServer(pss_.get())), 376 webrtc::MediaControllerInterface::Create(rtc::Thread::Current(),
372 fss_(new rtc::FirewallSocketServer(vss_.get())), 377 channel_manager_.get())),
373 ss_scope_(fss_.get()), 378 tdesc_factory_(new cricket::TransportDescriptionFactory()),
374 stun_socket_addr_(rtc::SocketAddress(kStunAddrHost, 379 desc_factory_(
375 cricket::STUN_SERVER_PORT)), 380 new cricket::MediaSessionDescriptionFactory(channel_manager_.get(),
376 stun_server_(cricket::TestStunServer::Create(Thread::Current(), 381 tdesc_factory_.get())),
377 stun_socket_addr_)), 382 pss_(new rtc::PhysicalSocketServer),
378 turn_server_(Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr), 383 vss_(new rtc::VirtualSocketServer(pss_.get())),
379 mediastream_signaling_(channel_manager_.get()), 384 fss_(new rtc::FirewallSocketServer(vss_.get())),
380 metrics_observer_(new rtc::RefCountedObject<FakeMetricsObserver>()) { 385 ss_scope_(fss_.get()),
386 stun_socket_addr_(
387 rtc::SocketAddress(kStunAddrHost, cricket::STUN_SERVER_PORT)),
388 stun_server_(cricket::TestStunServer::Create(Thread::Current(),
389 stun_socket_addr_)),
390 turn_server_(Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr),
391 mediastream_signaling_(channel_manager_.get()),
392 metrics_observer_(new rtc::RefCountedObject<FakeMetricsObserver>()) {
381 cricket::ServerAddresses stun_servers; 393 cricket::ServerAddresses stun_servers;
382 stun_servers.insert(stun_socket_addr_); 394 stun_servers.insert(stun_socket_addr_);
383 allocator_.reset(new cricket::BasicPortAllocator( 395 allocator_.reset(new cricket::BasicPortAllocator(
384 &network_manager_, 396 &network_manager_,
385 stun_servers, 397 stun_servers,
386 SocketAddress(), SocketAddress(), SocketAddress())); 398 SocketAddress(), SocketAddress(), SocketAddress()));
387 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP | 399 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
388 cricket::PORTALLOCATOR_DISABLE_RELAY); 400 cricket::PORTALLOCATOR_DISABLE_RELAY);
389 EXPECT_TRUE(channel_manager_->Init()); 401 EXPECT_TRUE(channel_manager_->Init());
390 desc_factory_->set_add_legacy_streams(false); 402 desc_factory_->set_add_legacy_streams(false);
391 allocator_->set_step_delay(cricket::kMinimumStepDelay); 403 allocator_->set_step_delay(cricket::kMinimumStepDelay);
392 } 404 }
393 405
394 void AddInterface(const SocketAddress& addr) { 406 void AddInterface(const SocketAddress& addr) {
395 network_manager_.AddInterface(addr); 407 network_manager_.AddInterface(addr);
396 } 408 }
397 409
398 // If |dtls_identity_store| != null or |rtc_configuration| contains 410 // If |dtls_identity_store| != null or |rtc_configuration| contains
399 // |certificates| then DTLS will be enabled unless explicitly disabled by 411 // |certificates| then DTLS will be enabled unless explicitly disabled by
400 // |rtc_configuration| options. When DTLS is enabled a certificate will be 412 // |rtc_configuration| options. When DTLS is enabled a certificate will be
401 // used if provided, otherwise one will be generated using the 413 // used if provided, otherwise one will be generated using the
402 // |dtls_identity_store|. 414 // |dtls_identity_store|.
403 void Init( 415 void Init(
404 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store, 416 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store,
405 const PeerConnectionInterface::RTCConfiguration& rtc_configuration) { 417 const PeerConnectionInterface::RTCConfiguration& rtc_configuration) {
406 ASSERT_TRUE(session_.get() == NULL); 418 ASSERT_TRUE(session_.get() == NULL);
407 session_.reset(new WebRtcSessionForTest( 419 session_.reset(new WebRtcSessionForTest(
408 channel_manager_.get(), rtc::Thread::Current(), 420 media_controller_.get(), rtc::Thread::Current(), rtc::Thread::Current(),
409 rtc::Thread::Current(), allocator_.get(), 421 allocator_.get(), &observer_, &mediastream_signaling_));
410 &observer_,
411 &mediastream_signaling_));
412 422
413 EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew, 423 EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew,
414 observer_.ice_connection_state_); 424 observer_.ice_connection_state_);
415 EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew, 425 EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew,
416 observer_.ice_gathering_state_); 426 observer_.ice_gathering_state_);
417 427
418 EXPECT_TRUE(session_->Initialize(options_, constraints_.get(), 428 EXPECT_TRUE(session_->Initialize(options_, constraints_.get(),
419 dtls_identity_store.Pass(), 429 dtls_identity_store.Pass(),
420 rtc_configuration)); 430 rtc_configuration));
421 session_->set_metrics_observer(metrics_observer_); 431 session_->set_metrics_observer(metrics_observer_);
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 // This code is placed in a method so that it can be invoked 1131 // This code is placed in a method so that it can be invoked
1122 // by multiple tests with different allocators (e.g. with and without BUNDLE). 1132 // by multiple tests with different allocators (e.g. with and without BUNDLE).
1123 // While running the call, this method also checks if the session goes through 1133 // While running the call, this method also checks if the session goes through
1124 // the correct sequence of ICE states when a connection is established, 1134 // the correct sequence of ICE states when a connection is established,
1125 // broken, and re-established. 1135 // broken, and re-established.
1126 // The Connection state should go: 1136 // The Connection state should go:
1127 // New -> Checking -> (Connected) -> Completed -> Disconnected -> Completed 1137 // New -> Checking -> (Connected) -> Completed -> Disconnected -> Completed
1128 // -> Failed. 1138 // -> Failed.
1129 // The Gathering state should go: New -> Gathering -> Completed. 1139 // The Gathering state should go: New -> Gathering -> Completed.
1130 1140
1131 void TestLoopbackCall(const LoopbackNetworkConfiguration& config) { 1141 void SetupLoopbackCall() {
1132 LoopbackNetworkManager loopback_network_manager(this, config);
1133 Init(); 1142 Init();
1134 mediastream_signaling_.SendAudioVideoStream1(); 1143 mediastream_signaling_.SendAudioVideoStream1();
1135 SessionDescriptionInterface* offer = CreateOffer(); 1144 SessionDescriptionInterface* offer = CreateOffer();
1136 1145
1137 EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew, 1146 EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew,
1138 observer_.ice_gathering_state_); 1147 observer_.ice_gathering_state_);
1139 SetLocalDescriptionWithoutError(offer); 1148 SetLocalDescriptionWithoutError(offer);
1140 EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew, 1149 EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew,
1141 observer_.ice_connection_state_); 1150 observer_.ice_connection_state_);
1142 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceGatheringGathering, 1151 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceGatheringGathering,
1143 observer_.ice_gathering_state_, 1152 observer_.ice_gathering_state_, kIceCandidatesTimeout);
1144 kIceCandidatesTimeout);
1145 EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout); 1153 EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout);
1146 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceGatheringComplete, 1154 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceGatheringComplete,
1147 observer_.ice_gathering_state_, 1155 observer_.ice_gathering_state_, kIceCandidatesTimeout);
1148 kIceCandidatesTimeout);
1149 1156
1150 std::string sdp; 1157 std::string sdp;
1151 offer->ToString(&sdp); 1158 offer->ToString(&sdp);
1152 SessionDescriptionInterface* desc = 1159 SessionDescriptionInterface* desc = webrtc::CreateSessionDescription(
1153 webrtc::CreateSessionDescription( 1160 JsepSessionDescription::kAnswer, sdp, nullptr);
1154 JsepSessionDescription::kAnswer, sdp, nullptr);
1155 ASSERT_TRUE(desc != NULL); 1161 ASSERT_TRUE(desc != NULL);
1156 SetRemoteDescriptionWithoutError(desc); 1162 SetRemoteDescriptionWithoutError(desc);
1157 1163
1158 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionChecking, 1164 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionChecking,
1159 observer_.ice_connection_state_, 1165 observer_.ice_connection_state_, kIceCandidatesTimeout);
1160 kIceCandidatesTimeout);
1161 1166
1162 // The ice connection state is "Connected" too briefly to catch in a test. 1167 // The ice connection state is "Connected" too briefly to catch in a test.
1163 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionCompleted, 1168 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionCompleted,
1164 observer_.ice_connection_state_, 1169 observer_.ice_connection_state_, kIceCandidatesTimeout);
1165 kIceCandidatesTimeout); 1170 }
1166 1171
1172 void TestLoopbackCall(const LoopbackNetworkConfiguration& config) {
1173 LoopbackNetworkManager loopback_network_manager(this, config);
1174 SetupLoopbackCall();
1167 config.VerifyBestConnectionAfterIceConverge(metrics_observer_); 1175 config.VerifyBestConnectionAfterIceConverge(metrics_observer_);
1168 // Adding firewall rule to block ping requests, which should cause 1176 // Adding firewall rule to block ping requests, which should cause
1169 // transport channel failure. 1177 // transport channel failure.
1170 1178
1171 loopback_network_manager.ApplyFirewallRules(fss_.get()); 1179 loopback_network_manager.ApplyFirewallRules(fss_.get());
1172 1180
1173 LOG(LS_INFO) << "Firewall Rules applied"; 1181 LOG(LS_INFO) << "Firewall Rules applied";
1174 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionDisconnected, 1182 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionDisconnected,
1175 observer_.ice_connection_state_, 1183 observer_.ice_connection_state_,
1176 kIceCandidatesTimeout); 1184 kIceCandidatesTimeout);
(...skipping 18 matching lines...) Expand all
1195 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionDisconnected, 1203 EXPECT_EQ_WAIT(PeerConnectionInterface::kIceConnectionDisconnected,
1196 observer_.ice_connection_state_, 1204 observer_.ice_connection_state_,
1197 kIceCandidatesTimeout + port_timeout); 1205 kIceCandidatesTimeout + port_timeout);
1198 } 1206 }
1199 1207
1200 void TestLoopbackCall() { 1208 void TestLoopbackCall() {
1201 LoopbackNetworkConfiguration config; 1209 LoopbackNetworkConfiguration config;
1202 TestLoopbackCall(config); 1210 TestLoopbackCall(config);
1203 } 1211 }
1204 1212
1213 void TestPacketOptions() {
1214 media_controller_.reset(
1215 new cricket::FakeMediaController(channel_manager_.get(), &fake_call_));
1216 LoopbackNetworkConfiguration config;
1217 LoopbackNetworkManager loopback_network_manager(this, config);
1218
1219 SetupLoopbackCall();
1220
1221 uint8_t test_packet[15] = {0};
1222 rtc::PacketOptions options;
1223 options.packet_id = 10;
1224 media_engine_->GetVideoChannel(0)
1225 ->SendRtp(test_packet, sizeof(test_packet), options);
1226
1227 const int kPacketTimeout = 2000;
1228 EXPECT_EQ_WAIT(fake_call_.last_sent_packet().packet_id, 10, kPacketTimeout);
1229 EXPECT_GT(fake_call_.last_sent_packet().send_time_ms, -1);
1230 }
1231
1205 // Adds CN codecs to FakeMediaEngine and MediaDescriptionFactory. 1232 // Adds CN codecs to FakeMediaEngine and MediaDescriptionFactory.
1206 void AddCNCodecs() { 1233 void AddCNCodecs() {
1207 const cricket::AudioCodec kCNCodec1(102, "CN", 8000, 0, 1, 0); 1234 const cricket::AudioCodec kCNCodec1(102, "CN", 8000, 0, 1, 0);
1208 const cricket::AudioCodec kCNCodec2(103, "CN", 16000, 0, 1, 0); 1235 const cricket::AudioCodec kCNCodec2(103, "CN", 16000, 0, 1, 0);
1209 1236
1210 // Add kCNCodec for dtmf test. 1237 // Add kCNCodec for dtmf test.
1211 std::vector<cricket::AudioCodec> codecs = media_engine_->audio_codecs();; 1238 std::vector<cricket::AudioCodec> codecs = media_engine_->audio_codecs();;
1212 codecs.push_back(kCNCodec1); 1239 codecs.push_back(kCNCodec1);
1213 codecs.push_back(kCNCodec2); 1240 codecs.push_back(kCNCodec2);
1214 media_engine_->SetAudioCodecs(codecs); 1241 media_engine_->SetAudioCodecs(codecs);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1295 relay_server.ports.push_back(cricket::ProtocolAddress( 1322 relay_server.ports.push_back(cricket::ProtocolAddress(
1296 kTurnUdpIntAddr, cricket::PROTO_UDP, false)); 1323 kTurnUdpIntAddr, cricket::PROTO_UDP, false));
1297 allocator_->AddRelay(relay_server); 1324 allocator_->AddRelay(relay_server);
1298 allocator_->set_step_delay(cricket::kMinimumStepDelay); 1325 allocator_->set_step_delay(cricket::kMinimumStepDelay);
1299 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP); 1326 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP);
1300 } 1327 }
1301 1328
1302 cricket::FakeMediaEngine* media_engine_; 1329 cricket::FakeMediaEngine* media_engine_;
1303 cricket::FakeDataEngine* data_engine_; 1330 cricket::FakeDataEngine* data_engine_;
1304 rtc::scoped_ptr<cricket::ChannelManager> channel_manager_; 1331 rtc::scoped_ptr<cricket::ChannelManager> channel_manager_;
1332 cricket::FakeCall fake_call_;
1333 rtc::scoped_ptr<webrtc::MediaControllerInterface> media_controller_;
1305 rtc::scoped_ptr<cricket::TransportDescriptionFactory> tdesc_factory_; 1334 rtc::scoped_ptr<cricket::TransportDescriptionFactory> tdesc_factory_;
1306 rtc::scoped_ptr<cricket::MediaSessionDescriptionFactory> desc_factory_; 1335 rtc::scoped_ptr<cricket::MediaSessionDescriptionFactory> desc_factory_;
1307 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; 1336 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_;
1308 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; 1337 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_;
1309 rtc::scoped_ptr<rtc::FirewallSocketServer> fss_; 1338 rtc::scoped_ptr<rtc::FirewallSocketServer> fss_;
1310 rtc::SocketServerScope ss_scope_; 1339 rtc::SocketServerScope ss_scope_;
1311 rtc::SocketAddress stun_socket_addr_; 1340 rtc::SocketAddress stun_socket_addr_;
1312 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; 1341 rtc::scoped_ptr<cricket::TestStunServer> stun_server_;
1313 cricket::TestTurnServer turn_server_; 1342 cricket::TestTurnServer turn_server_;
1314 rtc::FakeNetworkManager network_manager_; 1343 rtc::FakeNetworkManager network_manager_;
(...skipping 2710 matching lines...) Expand 10 before | Expand all | Expand 10 after
4025 4054
4026 for (auto& o : observers) { 4055 for (auto& o : observers) {
4027 // We expect to have received a notification now even if the session was 4056 // We expect to have received a notification now even if the session was
4028 // terminated. The offer creation may or may not have succeeded, but we 4057 // terminated. The offer creation may or may not have succeeded, but we
4029 // must have received a notification which, so the only invalid state 4058 // must have received a notification which, so the only invalid state
4030 // is kInit. 4059 // is kInit.
4031 EXPECT_NE(WebRtcSessionCreateSDPObserverForTest::kInit, o->state()); 4060 EXPECT_NE(WebRtcSessionCreateSDPObserverForTest::kInit, o->state());
4032 } 4061 }
4033 } 4062 }
4034 4063
4064 TEST_F(WebRtcSessionTest, TestPacketOptionsAndOnPacketSent) {
4065 TestPacketOptions();
4066 }
4067
4035 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test 4068 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test
4036 // currently fails because upon disconnection and reconnection OnIceComplete is 4069 // currently fails because upon disconnection and reconnection OnIceComplete is
4037 // called more than once without returning to IceGatheringGathering. 4070 // called more than once without returning to IceGatheringGathering.
4038 4071
4039 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, 4072 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests,
4040 WebRtcSessionTest, 4073 WebRtcSessionTest,
4041 testing::Values(ALREADY_GENERATED, 4074 testing::Values(ALREADY_GENERATED,
4042 DTLS_IDENTITY_STORE)); 4075 DTLS_IDENTITY_STORE));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698