webrtc_m130/pc/channel_manager_unittest.cc

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

198 lines
7.4 KiB
C++
Raw Normal View History

/*
* Copyright 2008 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include <memory>
#include "absl/memory/memory.h"
#include "api/rtc_error.h"
Reland "Reland "Propagate media transport to media channel."" This is a reland of da65ed2adcfa57ff3288ce01c1602c973fcab00d Original change's description: > Reland "Propagate media transport to media channel." > > This reverts commit 37cf2455a420124b341ad06ac27fa3c4dbd29d3c. > > Reason for revert: <INSERT REASONING HERE> > > Original change's description: > > Revert "Propagate media transport to media channel." > > > > This reverts commit 8c16f745ab92cb6d305283e87fa8a661ae500ce4. > > > > Reason for revert: Breaks downstream project > > > > Original change's description: > > > Propagate media transport to media channel. > > > > > > 1. Pass media transport factory to JSEP transport controller. > > > 2. Pass media transport to voice media channel. > > > 3. Add basic unit test that make sure if peer connection is created with media transport, it is propagated to voice media channel. > > > > > > Change-Id: Ie922db78ade0efd893e019cd2b4441a9947a2f71 > > > Bug: webrtc:9719 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/105542 > > > Reviewed-by: Steve Anton <steveanton@webrtc.org> > > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > > Reviewed-by: Peter Slatala <psla@webrtc.org> > > > Commit-Queue: Anton Sukhanov <sukhanov@google.com> > > > Cr-Commit-Position: refs/heads/master@{#25152} > > > > TBR=steveanton@webrtc.org,nisse@webrtc.org,psla@webrtc.org,sukhanov@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: webrtc:9719 > > Change-Id: Ic78cdc142a2145682ad74eac8b72c71c50f0a5c1 > > Reviewed-on: https://webrtc-review.googlesource.com/c/105840 > > Reviewed-by: Oleh Prypin <oprypin@webrtc.org> > > Commit-Queue: Oleh Prypin <oprypin@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#25154} > > TBR=steveanton@webrtc.org,oprypin@webrtc.org,nisse@webrtc.org,sukhanov@webrtc.org,psla@webrtc.org,sukhanov@google.com > > Change-Id: I505ff3451eae81573531faef155ff35d7f894022 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9719 > Reviewed-on: https://webrtc-review.googlesource.com/c/106500 > Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org> > Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#25220} Bug: webrtc:9719 Tbr: Steve Anton <steveanton@webrtc.org> Tbr: Niels Moller <nisse@webrtc.org> Change-Id: Ib45691ba8be9abb89ff8c6dac1861bdf59be4c8d Reviewed-on: https://webrtc-review.googlesource.com/c/106561 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Peter Slatala <psla@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25240}
2018-10-17 13:15:42 -07:00
#include "api/test/fake_media_transport.h"
#include "media/base/fake_media_engine.h"
#include "media/base/test_utils.h"
#include "media/engine/fake_webrtc_call.h"
#include "p2p/base/dtls_transport_internal.h"
#include "p2p/base/fake_dtls_transport.h"
#include "p2p/base/p2p_constants.h"
#include "p2p/base/packet_transport_internal.h"
#include "pc/channel_manager.h"
#include "pc/dtls_srtp_transport.h"
#include "rtc_base/checks.h"
#include "rtc_base/thread.h"
#include "test/gtest.h"
namespace {
const bool kDefaultSrtpRequired = true;
}
namespace cricket {
static const AudioCodec kAudioCodecs[] = {
AudioCodec(97, "voice", 1, 2, 3), AudioCodec(111, "OPUS", 48000, 32000, 2),
};
static const VideoCodec kVideoCodecs[] = {
VideoCodec(99, "H264"), VideoCodec(100, "VP8"), VideoCodec(96, "rtx"),
};
class ChannelManagerTest : public testing::Test {
protected:
Reland of TransportController refactoring. (patchset #1 id:1 of https://codereview.webrtc.org/1358413003/ ) Reason for revert: This CL just landed: https://codereview.chromium.org/1323243006/ Which fixes the FYI bots for the original CL, and breaks them for this revert. Original issue's description: > Revert of TransportController refactoring. (patchset #6 id:100001 of https://codereview.webrtc.org/1350523003/ ) > > Reason for revert: > This CL causes problems with the WebRTC-in-Chromium FYI bots. Presumably it needs to be done in several steps, where removed files are emptied instead of removed in the first step. > > Original issue's description: > > TransportController refactoring. > > > > Getting rid of TransportProxy, and in its place adding a > > TransportController class which will facilitate access to and manage > > the lifetimes of Transports. These Transports will now be accessed > > solely from the worker thread, simplifying their implementation. > > > > This refactoring also pulls Transport-related code out of BaseSession. > > Which means that BaseChannels will now rely on the TransportController > > interface to create channels, rather than BaseSession. > > > > Committed: https://crrev.com/47ee2f3b9f33e8938948c482c921d4e13a3acd83 > > Cr-Commit-Position: refs/heads/master@{#10022} > > TBR=pthatcher@webrtc.org,deadbeef@webrtc.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Committed: https://crrev.com/a81a42f584baa0d93a4b93da9632415e8922450c > Cr-Commit-Position: refs/heads/master@{#10024} TBR=pthatcher@webrtc.org,torbjorng@webrtc.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.webrtc.org/1361773005 Cr-Commit-Position: refs/heads/master@{#10036}
2015-09-23 11:50:27 -07:00
ChannelManagerTest()
: network_(rtc::Thread::CreateWithSocketServer()),
worker_(rtc::Thread::Create()),
fme_(new cricket::FakeMediaEngine()),
fdme_(new cricket::FakeDataEngine()),
cm_(new cricket::ChannelManager(
std::unique_ptr<MediaEngineInterface>(fme_),
std::unique_ptr<DataEngineInterface>(fdme_),
rtc::Thread::Current(),
rtc::Thread::Current())),
fake_call_() {
fme_->SetAudioCodecs(MAKE_VECTOR(kAudioCodecs));
fme_->SetVideoCodecs(MAKE_VECTOR(kVideoCodecs));
}
std::unique_ptr<webrtc::RtpTransportInternal> CreateDtlsSrtpTransport() {
rtp_dtls_transport_ = absl::make_unique<FakeDtlsTransport>(
"fake_dtls_transport", cricket::ICE_CANDIDATE_COMPONENT_RTP);
auto dtls_srtp_transport = absl::make_unique<webrtc::DtlsSrtpTransport>(
/*rtcp_mux_required=*/true);
dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport_.get(),
/*rtcp_dtls_transport=*/nullptr);
return dtls_srtp_transport;
}
Reland "Reland "Propagate media transport to media channel."" This is a reland of da65ed2adcfa57ff3288ce01c1602c973fcab00d Original change's description: > Reland "Propagate media transport to media channel." > > This reverts commit 37cf2455a420124b341ad06ac27fa3c4dbd29d3c. > > Reason for revert: <INSERT REASONING HERE> > > Original change's description: > > Revert "Propagate media transport to media channel." > > > > This reverts commit 8c16f745ab92cb6d305283e87fa8a661ae500ce4. > > > > Reason for revert: Breaks downstream project > > > > Original change's description: > > > Propagate media transport to media channel. > > > > > > 1. Pass media transport factory to JSEP transport controller. > > > 2. Pass media transport to voice media channel. > > > 3. Add basic unit test that make sure if peer connection is created with media transport, it is propagated to voice media channel. > > > > > > Change-Id: Ie922db78ade0efd893e019cd2b4441a9947a2f71 > > > Bug: webrtc:9719 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/105542 > > > Reviewed-by: Steve Anton <steveanton@webrtc.org> > > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > > Reviewed-by: Peter Slatala <psla@webrtc.org> > > > Commit-Queue: Anton Sukhanov <sukhanov@google.com> > > > Cr-Commit-Position: refs/heads/master@{#25152} > > > > TBR=steveanton@webrtc.org,nisse@webrtc.org,psla@webrtc.org,sukhanov@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: webrtc:9719 > > Change-Id: Ic78cdc142a2145682ad74eac8b72c71c50f0a5c1 > > Reviewed-on: https://webrtc-review.googlesource.com/c/105840 > > Reviewed-by: Oleh Prypin <oprypin@webrtc.org> > > Commit-Queue: Oleh Prypin <oprypin@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#25154} > > TBR=steveanton@webrtc.org,oprypin@webrtc.org,nisse@webrtc.org,sukhanov@webrtc.org,psla@webrtc.org,sukhanov@google.com > > Change-Id: I505ff3451eae81573531faef155ff35d7f894022 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9719 > Reviewed-on: https://webrtc-review.googlesource.com/c/106500 > Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org> > Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#25220} Bug: webrtc:9719 Tbr: Steve Anton <steveanton@webrtc.org> Tbr: Niels Moller <nisse@webrtc.org> Change-Id: Ib45691ba8be9abb89ff8c6dac1861bdf59be4c8d Reviewed-on: https://webrtc-review.googlesource.com/c/106561 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Peter Slatala <psla@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25240}
2018-10-17 13:15:42 -07:00
std::unique_ptr<webrtc::MediaTransportInterface> CreateMediaTransport(
rtc::PacketTransportInternal* packet_transport) {
auto media_transport_result =
fake_media_transport_factory_.CreateMediaTransport(packet_transport,
network_.get(),
/*is_caller=*/true);
RTC_CHECK(media_transport_result.ok());
return media_transport_result.MoveValue();
}
void TestCreateDestroyChannels(
webrtc::RtpTransportInternal* rtp_transport,
webrtc::MediaTransportInterface* media_transport) {
cricket::VoiceChannel* voice_channel = cm_->CreateVoiceChannel(
Reland "Reland "Propagate media transport to media channel."" This is a reland of da65ed2adcfa57ff3288ce01c1602c973fcab00d Original change's description: > Reland "Propagate media transport to media channel." > > This reverts commit 37cf2455a420124b341ad06ac27fa3c4dbd29d3c. > > Reason for revert: <INSERT REASONING HERE> > > Original change's description: > > Revert "Propagate media transport to media channel." > > > > This reverts commit 8c16f745ab92cb6d305283e87fa8a661ae500ce4. > > > > Reason for revert: Breaks downstream project > > > > Original change's description: > > > Propagate media transport to media channel. > > > > > > 1. Pass media transport factory to JSEP transport controller. > > > 2. Pass media transport to voice media channel. > > > 3. Add basic unit test that make sure if peer connection is created with media transport, it is propagated to voice media channel. > > > > > > Change-Id: Ie922db78ade0efd893e019cd2b4441a9947a2f71 > > > Bug: webrtc:9719 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/105542 > > > Reviewed-by: Steve Anton <steveanton@webrtc.org> > > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > > Reviewed-by: Peter Slatala <psla@webrtc.org> > > > Commit-Queue: Anton Sukhanov <sukhanov@google.com> > > > Cr-Commit-Position: refs/heads/master@{#25152} > > > > TBR=steveanton@webrtc.org,nisse@webrtc.org,psla@webrtc.org,sukhanov@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: webrtc:9719 > > Change-Id: Ic78cdc142a2145682ad74eac8b72c71c50f0a5c1 > > Reviewed-on: https://webrtc-review.googlesource.com/c/105840 > > Reviewed-by: Oleh Prypin <oprypin@webrtc.org> > > Commit-Queue: Oleh Prypin <oprypin@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#25154} > > TBR=steveanton@webrtc.org,oprypin@webrtc.org,nisse@webrtc.org,sukhanov@webrtc.org,psla@webrtc.org,sukhanov@google.com > > Change-Id: I505ff3451eae81573531faef155ff35d7f894022 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9719 > Reviewed-on: https://webrtc-review.googlesource.com/c/106500 > Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org> > Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#25220} Bug: webrtc:9719 Tbr: Steve Anton <steveanton@webrtc.org> Tbr: Niels Moller <nisse@webrtc.org> Change-Id: Ib45691ba8be9abb89ff8c6dac1861bdf59be4c8d Reviewed-on: https://webrtc-review.googlesource.com/c/106561 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Peter Slatala <psla@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25240}
2018-10-17 13:15:42 -07:00
&fake_call_, cricket::MediaConfig(), rtp_transport, media_transport,
rtc::Thread::Current(), cricket::CN_AUDIO, kDefaultSrtpRequired,
Reland "Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h" Promotes rtc::CryptoOptions to webrtc::CryptoOptions converting it from class that only handles SRTP configuration to a more generic structure that can be used and extended for all per peer connection CryptoOptions that can be on a given PeerConnection. Now all SRTP related options are under webrtc::CryptoOptions::Srtp and can be accessed as crypto_options.srtp.whatever_option_name. This is more inline with other structures we have in WebRTC such as VideoConfig. As additional features are added over time this will allow the structure to remain compartmentalized and concerned components can only request a subset of the overall configuration structure e.g: void MySrtpFunction(const webrtc::CryptoOptions::Srtp& srtp_config); In addition to this it made little sense for sslstreamadapter.h to hold all Srtp related configuration options. The header has become loo large and takes on too many responsibilities and spilting this up will lead to more maintainable code going forward. This will be used in a future CL to enable configuration options for the newly supported Frame Crypto. Reland Fix: - cryptooptions.h - now has enable_aes128_sha1_32_crypto_cipher as an optional root level configuration. - peerconnectionfactory - If this optional is set will now overwrite the underyling value. This along with the other field will be deprecated once dependent projects are updated. TBR=sakal@webrtc.org,kthelgason@webrtc.org,emadomara@webrtc.org,qingsi@webrtc.org Bug: webrtc:9681 Change-Id: Iaa6b741baafb85d352e42f54226119f19d97151d Reviewed-on: https://webrtc-review.googlesource.com/c/105560 Reviewed-by: Benjamin Wright <benwright@webrtc.org> Reviewed-by: Steve Anton <steveanton@webrtc.org> Reviewed-by: Emad Omara <emadomara@webrtc.org> Commit-Queue: Benjamin Wright <benwright@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25135}
2018-10-11 15:33:17 -07:00
webrtc::CryptoOptions(), AudioOptions());
EXPECT_TRUE(voice_channel != nullptr);
cricket::VideoChannel* video_channel = cm_->CreateVideoChannel(
&fake_call_, cricket::MediaConfig(), rtp_transport, media_transport,
rtc::Thread::Current(), cricket::CN_VIDEO, kDefaultSrtpRequired,
Reland "Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h" Promotes rtc::CryptoOptions to webrtc::CryptoOptions converting it from class that only handles SRTP configuration to a more generic structure that can be used and extended for all per peer connection CryptoOptions that can be on a given PeerConnection. Now all SRTP related options are under webrtc::CryptoOptions::Srtp and can be accessed as crypto_options.srtp.whatever_option_name. This is more inline with other structures we have in WebRTC such as VideoConfig. As additional features are added over time this will allow the structure to remain compartmentalized and concerned components can only request a subset of the overall configuration structure e.g: void MySrtpFunction(const webrtc::CryptoOptions::Srtp& srtp_config); In addition to this it made little sense for sslstreamadapter.h to hold all Srtp related configuration options. The header has become loo large and takes on too many responsibilities and spilting this up will lead to more maintainable code going forward. This will be used in a future CL to enable configuration options for the newly supported Frame Crypto. Reland Fix: - cryptooptions.h - now has enable_aes128_sha1_32_crypto_cipher as an optional root level configuration. - peerconnectionfactory - If this optional is set will now overwrite the underyling value. This along with the other field will be deprecated once dependent projects are updated. TBR=sakal@webrtc.org,kthelgason@webrtc.org,emadomara@webrtc.org,qingsi@webrtc.org Bug: webrtc:9681 Change-Id: Iaa6b741baafb85d352e42f54226119f19d97151d Reviewed-on: https://webrtc-review.googlesource.com/c/105560 Reviewed-by: Benjamin Wright <benwright@webrtc.org> Reviewed-by: Steve Anton <steveanton@webrtc.org> Reviewed-by: Emad Omara <emadomara@webrtc.org> Commit-Queue: Benjamin Wright <benwright@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25135}
2018-10-11 15:33:17 -07:00
webrtc::CryptoOptions(), VideoOptions());
EXPECT_TRUE(video_channel != nullptr);
cricket::RtpDataChannel* rtp_data_channel = cm_->CreateRtpDataChannel(
cricket::MediaConfig(), rtp_transport, rtc::Thread::Current(),
Reland "Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h" Promotes rtc::CryptoOptions to webrtc::CryptoOptions converting it from class that only handles SRTP configuration to a more generic structure that can be used and extended for all per peer connection CryptoOptions that can be on a given PeerConnection. Now all SRTP related options are under webrtc::CryptoOptions::Srtp and can be accessed as crypto_options.srtp.whatever_option_name. This is more inline with other structures we have in WebRTC such as VideoConfig. As additional features are added over time this will allow the structure to remain compartmentalized and concerned components can only request a subset of the overall configuration structure e.g: void MySrtpFunction(const webrtc::CryptoOptions::Srtp& srtp_config); In addition to this it made little sense for sslstreamadapter.h to hold all Srtp related configuration options. The header has become loo large and takes on too many responsibilities and spilting this up will lead to more maintainable code going forward. This will be used in a future CL to enable configuration options for the newly supported Frame Crypto. Reland Fix: - cryptooptions.h - now has enable_aes128_sha1_32_crypto_cipher as an optional root level configuration. - peerconnectionfactory - If this optional is set will now overwrite the underyling value. This along with the other field will be deprecated once dependent projects are updated. TBR=sakal@webrtc.org,kthelgason@webrtc.org,emadomara@webrtc.org,qingsi@webrtc.org Bug: webrtc:9681 Change-Id: Iaa6b741baafb85d352e42f54226119f19d97151d Reviewed-on: https://webrtc-review.googlesource.com/c/105560 Reviewed-by: Benjamin Wright <benwright@webrtc.org> Reviewed-by: Steve Anton <steveanton@webrtc.org> Reviewed-by: Emad Omara <emadomara@webrtc.org> Commit-Queue: Benjamin Wright <benwright@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25135}
2018-10-11 15:33:17 -07:00
cricket::CN_DATA, kDefaultSrtpRequired, webrtc::CryptoOptions());
EXPECT_TRUE(rtp_data_channel != nullptr);
cm_->DestroyVideoChannel(video_channel);
cm_->DestroyVoiceChannel(voice_channel);
cm_->DestroyRtpDataChannel(rtp_data_channel);
cm_->Terminate();
}
std::unique_ptr<DtlsTransportInternal> rtp_dtls_transport_;
std::unique_ptr<rtc::Thread> network_;
std::unique_ptr<rtc::Thread> worker_;
// |fme_| and |fdme_| are actually owned by |cm_|.
cricket::FakeMediaEngine* fme_;
cricket::FakeDataEngine* fdme_;
std::unique_ptr<cricket::ChannelManager> cm_;
cricket::FakeCall fake_call_;
Reland "Reland "Propagate media transport to media channel."" This is a reland of da65ed2adcfa57ff3288ce01c1602c973fcab00d Original change's description: > Reland "Propagate media transport to media channel." > > This reverts commit 37cf2455a420124b341ad06ac27fa3c4dbd29d3c. > > Reason for revert: <INSERT REASONING HERE> > > Original change's description: > > Revert "Propagate media transport to media channel." > > > > This reverts commit 8c16f745ab92cb6d305283e87fa8a661ae500ce4. > > > > Reason for revert: Breaks downstream project > > > > Original change's description: > > > Propagate media transport to media channel. > > > > > > 1. Pass media transport factory to JSEP transport controller. > > > 2. Pass media transport to voice media channel. > > > 3. Add basic unit test that make sure if peer connection is created with media transport, it is propagated to voice media channel. > > > > > > Change-Id: Ie922db78ade0efd893e019cd2b4441a9947a2f71 > > > Bug: webrtc:9719 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/105542 > > > Reviewed-by: Steve Anton <steveanton@webrtc.org> > > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > > Reviewed-by: Peter Slatala <psla@webrtc.org> > > > Commit-Queue: Anton Sukhanov <sukhanov@google.com> > > > Cr-Commit-Position: refs/heads/master@{#25152} > > > > TBR=steveanton@webrtc.org,nisse@webrtc.org,psla@webrtc.org,sukhanov@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: webrtc:9719 > > Change-Id: Ic78cdc142a2145682ad74eac8b72c71c50f0a5c1 > > Reviewed-on: https://webrtc-review.googlesource.com/c/105840 > > Reviewed-by: Oleh Prypin <oprypin@webrtc.org> > > Commit-Queue: Oleh Prypin <oprypin@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#25154} > > TBR=steveanton@webrtc.org,oprypin@webrtc.org,nisse@webrtc.org,sukhanov@webrtc.org,psla@webrtc.org,sukhanov@google.com > > Change-Id: I505ff3451eae81573531faef155ff35d7f894022 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9719 > Reviewed-on: https://webrtc-review.googlesource.com/c/106500 > Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org> > Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#25220} Bug: webrtc:9719 Tbr: Steve Anton <steveanton@webrtc.org> Tbr: Niels Moller <nisse@webrtc.org> Change-Id: Ib45691ba8be9abb89ff8c6dac1861bdf59be4c8d Reviewed-on: https://webrtc-review.googlesource.com/c/106561 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Peter Slatala <psla@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25240}
2018-10-17 13:15:42 -07:00
webrtc::FakeMediaTransportFactory fake_media_transport_factory_;
};
// Test that we startup/shutdown properly.
TEST_F(ChannelManagerTest, StartupShutdown) {
EXPECT_FALSE(cm_->initialized());
EXPECT_EQ(rtc::Thread::Current(), cm_->worker_thread());
EXPECT_TRUE(cm_->Init());
EXPECT_TRUE(cm_->initialized());
cm_->Terminate();
EXPECT_FALSE(cm_->initialized());
}
// Test that we startup/shutdown properly with a worker thread.
TEST_F(ChannelManagerTest, StartupShutdownOnThread) {
network_->Start();
worker_->Start();
EXPECT_FALSE(cm_->initialized());
EXPECT_EQ(rtc::Thread::Current(), cm_->worker_thread());
EXPECT_TRUE(cm_->set_network_thread(network_.get()));
EXPECT_EQ(network_.get(), cm_->network_thread());
EXPECT_TRUE(cm_->set_worker_thread(worker_.get()));
EXPECT_EQ(worker_.get(), cm_->worker_thread());
EXPECT_TRUE(cm_->Init());
EXPECT_TRUE(cm_->initialized());
// Setting the network or worker thread while initialized should fail.
EXPECT_FALSE(cm_->set_network_thread(rtc::Thread::Current()));
EXPECT_FALSE(cm_->set_worker_thread(rtc::Thread::Current()));
cm_->Terminate();
EXPECT_FALSE(cm_->initialized());
}
TEST_F(ChannelManagerTest, SetVideoRtxEnabled) {
std::vector<VideoCodec> codecs;
const VideoCodec rtx_codec(96, "rtx");
// By default RTX is disabled.
cm_->GetSupportedVideoCodecs(&codecs);
EXPECT_FALSE(ContainsMatchingCodec(codecs, rtx_codec));
// Enable and check.
EXPECT_TRUE(cm_->SetVideoRtxEnabled(true));
cm_->GetSupportedVideoCodecs(&codecs);
EXPECT_TRUE(ContainsMatchingCodec(codecs, rtx_codec));
// Disable and check.
EXPECT_TRUE(cm_->SetVideoRtxEnabled(false));
cm_->GetSupportedVideoCodecs(&codecs);
EXPECT_FALSE(ContainsMatchingCodec(codecs, rtx_codec));
// Cannot toggle rtx after initialization.
EXPECT_TRUE(cm_->Init());
EXPECT_FALSE(cm_->SetVideoRtxEnabled(true));
EXPECT_FALSE(cm_->SetVideoRtxEnabled(false));
// Can set again after terminate.
cm_->Terminate();
EXPECT_TRUE(cm_->SetVideoRtxEnabled(true));
cm_->GetSupportedVideoCodecs(&codecs);
EXPECT_TRUE(ContainsMatchingCodec(codecs, rtx_codec));
}
TEST_F(ChannelManagerTest, CreateDestroyChannels) {
EXPECT_TRUE(cm_->Init());
auto rtp_transport = CreateDtlsSrtpTransport();
Reland "Reland "Propagate media transport to media channel."" This is a reland of da65ed2adcfa57ff3288ce01c1602c973fcab00d Original change's description: > Reland "Propagate media transport to media channel." > > This reverts commit 37cf2455a420124b341ad06ac27fa3c4dbd29d3c. > > Reason for revert: <INSERT REASONING HERE> > > Original change's description: > > Revert "Propagate media transport to media channel." > > > > This reverts commit 8c16f745ab92cb6d305283e87fa8a661ae500ce4. > > > > Reason for revert: Breaks downstream project > > > > Original change's description: > > > Propagate media transport to media channel. > > > > > > 1. Pass media transport factory to JSEP transport controller. > > > 2. Pass media transport to voice media channel. > > > 3. Add basic unit test that make sure if peer connection is created with media transport, it is propagated to voice media channel. > > > > > > Change-Id: Ie922db78ade0efd893e019cd2b4441a9947a2f71 > > > Bug: webrtc:9719 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/105542 > > > Reviewed-by: Steve Anton <steveanton@webrtc.org> > > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > > Reviewed-by: Peter Slatala <psla@webrtc.org> > > > Commit-Queue: Anton Sukhanov <sukhanov@google.com> > > > Cr-Commit-Position: refs/heads/master@{#25152} > > > > TBR=steveanton@webrtc.org,nisse@webrtc.org,psla@webrtc.org,sukhanov@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: webrtc:9719 > > Change-Id: Ic78cdc142a2145682ad74eac8b72c71c50f0a5c1 > > Reviewed-on: https://webrtc-review.googlesource.com/c/105840 > > Reviewed-by: Oleh Prypin <oprypin@webrtc.org> > > Commit-Queue: Oleh Prypin <oprypin@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#25154} > > TBR=steveanton@webrtc.org,oprypin@webrtc.org,nisse@webrtc.org,sukhanov@webrtc.org,psla@webrtc.org,sukhanov@google.com > > Change-Id: I505ff3451eae81573531faef155ff35d7f894022 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9719 > Reviewed-on: https://webrtc-review.googlesource.com/c/106500 > Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org> > Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#25220} Bug: webrtc:9719 Tbr: Steve Anton <steveanton@webrtc.org> Tbr: Niels Moller <nisse@webrtc.org> Change-Id: Ib45691ba8be9abb89ff8c6dac1861bdf59be4c8d Reviewed-on: https://webrtc-review.googlesource.com/c/106561 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Peter Slatala <psla@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25240}
2018-10-17 13:15:42 -07:00
TestCreateDestroyChannels(rtp_transport.get(), /*media_transport=*/nullptr);
}
TEST_F(ChannelManagerTest, CreateDestroyChannelsWithMediaTransport) {
EXPECT_TRUE(cm_->Init());
auto rtp_transport = CreateDtlsSrtpTransport();
auto media_transport =
CreateMediaTransport(rtp_transport->rtcp_packet_transport());
TestCreateDestroyChannels(rtp_transport.get(), media_transport.get());
}
TEST_F(ChannelManagerTest, CreateDestroyChannelsOnThread) {
network_->Start();
worker_->Start();
EXPECT_TRUE(cm_->set_worker_thread(worker_.get()));
EXPECT_TRUE(cm_->set_network_thread(network_.get()));
EXPECT_TRUE(cm_->Init());
auto rtp_transport = CreateDtlsSrtpTransport();
Reland "Reland "Propagate media transport to media channel."" This is a reland of da65ed2adcfa57ff3288ce01c1602c973fcab00d Original change's description: > Reland "Propagate media transport to media channel." > > This reverts commit 37cf2455a420124b341ad06ac27fa3c4dbd29d3c. > > Reason for revert: <INSERT REASONING HERE> > > Original change's description: > > Revert "Propagate media transport to media channel." > > > > This reverts commit 8c16f745ab92cb6d305283e87fa8a661ae500ce4. > > > > Reason for revert: Breaks downstream project > > > > Original change's description: > > > Propagate media transport to media channel. > > > > > > 1. Pass media transport factory to JSEP transport controller. > > > 2. Pass media transport to voice media channel. > > > 3. Add basic unit test that make sure if peer connection is created with media transport, it is propagated to voice media channel. > > > > > > Change-Id: Ie922db78ade0efd893e019cd2b4441a9947a2f71 > > > Bug: webrtc:9719 > > > Reviewed-on: https://webrtc-review.googlesource.com/c/105542 > > > Reviewed-by: Steve Anton <steveanton@webrtc.org> > > > Reviewed-by: Niels Moller <nisse@webrtc.org> > > > Reviewed-by: Peter Slatala <psla@webrtc.org> > > > Commit-Queue: Anton Sukhanov <sukhanov@google.com> > > > Cr-Commit-Position: refs/heads/master@{#25152} > > > > TBR=steveanton@webrtc.org,nisse@webrtc.org,psla@webrtc.org,sukhanov@google.com > > > > # Not skipping CQ checks because original CL landed > 1 day ago. > > > > Bug: webrtc:9719 > > Change-Id: Ic78cdc142a2145682ad74eac8b72c71c50f0a5c1 > > Reviewed-on: https://webrtc-review.googlesource.com/c/105840 > > Reviewed-by: Oleh Prypin <oprypin@webrtc.org> > > Commit-Queue: Oleh Prypin <oprypin@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#25154} > > TBR=steveanton@webrtc.org,oprypin@webrtc.org,nisse@webrtc.org,sukhanov@webrtc.org,psla@webrtc.org,sukhanov@google.com > > Change-Id: I505ff3451eae81573531faef155ff35d7f894022 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9719 > Reviewed-on: https://webrtc-review.googlesource.com/c/106500 > Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org> > Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#25220} Bug: webrtc:9719 Tbr: Steve Anton <steveanton@webrtc.org> Tbr: Niels Moller <nisse@webrtc.org> Change-Id: Ib45691ba8be9abb89ff8c6dac1861bdf59be4c8d Reviewed-on: https://webrtc-review.googlesource.com/c/106561 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Peter Slatala <psla@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25240}
2018-10-17 13:15:42 -07:00
TestCreateDestroyChannels(rtp_transport.get(), /*media_transport=*/nullptr);
}
} // namespace cricket