Use a FakeVideoTrackSource instead of nullptr in all VideoTrack tests.

Extracted from cl 1790633002.

BUG=webrtc:5426

Review URL: https://codereview.webrtc.org/1818963002

Cr-Commit-Position: refs/heads/master@{#12074}
This commit is contained in:
nisse 2016-03-21 08:20:42 -07:00 committed by Commit bot
parent c5dabdd3fb
commit af510afc91
5 changed files with 79 additions and 39 deletions

View File

@ -13,6 +13,7 @@
#include "webrtc/api/audiotrack.h"
#include "webrtc/api/mediastream.h"
#include "webrtc/api/videotrack.h"
#include "webrtc/api/test/fakevideotracksource.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "webrtc/base/gunit.h"
@ -56,7 +57,8 @@ class MediaStreamTest: public testing::Test {
stream_ = MediaStream::Create(kStreamLabel1);
ASSERT_TRUE(stream_.get() != NULL);
video_track_ = VideoTrack::Create(kVideoTrackId, NULL);
video_track_ =
VideoTrack::Create(kVideoTrackId, FakeVideoTrackSource::Create());
ASSERT_TRUE(video_track_.get() != NULL);
EXPECT_EQ(MediaStreamTrackInterface::kInitializing, video_track_->state());

View File

@ -25,6 +25,7 @@
#endif
#include "webrtc/api/test/fakeconstraints.h"
#include "webrtc/api/test/fakedtlsidentitystore.h"
#include "webrtc/api/test/fakevideotracksource.h"
#include "webrtc/api/test/mockpeerconnectionobservers.h"
#include "webrtc/api/test/testsdpstrings.h"
#include "webrtc/api/videocapturertracksource.h"
@ -341,7 +342,8 @@ rtc::scoped_refptr<StreamCollection> CreateStreamCollection(
// Add a local video track.
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
webrtc::VideoTrack::Create(kVideoTracks[i], nullptr));
webrtc::VideoTrack::Create(kVideoTracks[i],
webrtc::FakeVideoTrackSource::Create()));
stream->AddTrack(video_track);
local_collection->AddStream(stream);
@ -630,7 +632,9 @@ class PeerConnectionInterfaceTest : public testing::Test {
audio_track_label, static_cast<AudioSourceInterface*>(NULL)));
stream->AddTrack(audio_track.get());
scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack(video_track_label, NULL));
pc_factory_->CreateVideoTrack(
video_track_label,
pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
stream->AddTrack(video_track.get());
EXPECT_TRUE(pc_->AddStream(stream));
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
@ -899,7 +903,8 @@ class PeerConnectionInterfaceTest : public testing::Test {
void AddVideoTrack(const std::string& track_id,
MediaStreamInterface* stream) {
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
webrtc::VideoTrack::Create(track_id, nullptr));
webrtc::VideoTrack::Create(track_id,
webrtc::FakeVideoTrackSource::Create()));
ASSERT_TRUE(stream->AddTrack(video_track));
}
@ -1010,8 +1015,9 @@ TEST_F(PeerConnectionInterfaceTest, AddTrackRemoveTrack) {
stream_list.push_back(stream.get());
scoped_refptr<AudioTrackInterface> audio_track(
pc_factory_->CreateAudioTrack("audio_track", nullptr));
scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack("video_track", nullptr));
scoped_refptr<VideoTrackInterface> video_track(pc_factory_->CreateVideoTrack(
"video_track",
pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
auto audio_sender = pc_->AddTrack(audio_track, stream_list);
auto video_sender = pc_->AddTrack(video_track, stream_list);
EXPECT_EQ(kStreamLabel1, audio_sender->stream_id());
@ -1077,8 +1083,9 @@ TEST_F(PeerConnectionInterfaceTest, AddTrackWithoutStream) {
// Create a dummy stream, so tracks share a stream label.
scoped_refptr<AudioTrackInterface> audio_track(
pc_factory_->CreateAudioTrack("audio_track", nullptr));
scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack("video_track", nullptr));
scoped_refptr<VideoTrackInterface> video_track(pc_factory_->CreateVideoTrack(
"video_track",
pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
auto audio_sender =
pc_->AddTrack(audio_track, std::vector<MediaStreamInterface*>());
auto video_sender =
@ -1237,8 +1244,9 @@ TEST_F(PeerConnectionInterfaceTest, AddTrackAfterAddStream) {
MediaStreamInterface* stream = pc_->local_streams()->at(0);
// Add video track to the audio-only stream.
scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack("video_label", nullptr));
scoped_refptr<VideoTrackInterface> video_track(pc_factory_->CreateVideoTrack(
"video_label",
pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
stream->AddTrack(video_track.get());
scoped_ptr<SessionDescriptionInterface> offer;
@ -2429,7 +2437,7 @@ class PeerConnectionFactoryForTest : public webrtc::PeerConnectionFactory {
class PeerConnectionMediaConfigTest : public testing::Test {
protected:
void SetUp() override {
pcf_= new rtc::RefCountedObject<PeerConnectionFactoryForTest>();
pcf_ = new rtc::RefCountedObject<PeerConnectionFactoryForTest>();
pcf_->Initialize();
}
const cricket::MediaConfig& TestCreatePeerConnection(

View File

@ -19,10 +19,10 @@
#include "webrtc/api/rtpreceiver.h"
#include "webrtc/api/rtpsender.h"
#include "webrtc/api/streamcollection.h"
#include "webrtc/api/test/fakevideotracksource.h"
#include "webrtc/api/videotracksource.h"
#include "webrtc/api/videotrack.h"
#include "webrtc/base/gunit.h"
#include "webrtc/media/base/fakevideocapturer.h"
#include "webrtc/media/base/mediachannel.h"
using ::testing::_;
@ -86,31 +86,15 @@ class MockVideoProvider : public VideoProviderInterface {
bool(uint32_t ssrc, const RtpParameters&));
};
class FakeVideoTrackSource : public VideoTrackSource {
public:
static rtc::scoped_refptr<FakeVideoTrackSource> Create(bool remote) {
return new rtc::RefCountedObject<FakeVideoTrackSource>(remote);
}
cricket::VideoCapturer* GetVideoCapturer() { return &fake_capturer_; }
protected:
explicit FakeVideoTrackSource(bool remote)
: VideoTrackSource(&fake_capturer_, rtc::Thread::Current(), remote) {}
~FakeVideoTrackSource() {}
private:
cricket::FakeVideoCapturer fake_capturer_;
};
class RtpSenderReceiverTest : public testing::Test {
public:
virtual void SetUp() {
stream_ = MediaStream::Create(kStreamLabel1);
}
void AddVideoTrack(bool remote) {
void AddVideoTrack() {
rtc::scoped_refptr<VideoTrackSourceInterface> source(
FakeVideoTrackSource::Create(remote));
FakeVideoTrackSource::Create());
video_track_ = VideoTrack::Create(kVideoTrackId, source);
EXPECT_TRUE(stream_->AddTrack(video_track_));
}
@ -126,7 +110,7 @@ class RtpSenderReceiverTest : public testing::Test {
}
void CreateVideoRtpSender() {
AddVideoTrack(false);
AddVideoTrack();
EXPECT_CALL(video_provider_,
SetCaptureDevice(
kVideoSsrc, video_track_->GetSource()->GetVideoCapturer()));
@ -356,7 +340,7 @@ TEST_F(RtpSenderReceiverTest, AudioSenderEarlyWarmupTrackThenSsrc) {
// Test that a video sender calls the expected methods on the provider once
// it has a track and SSRC, when the SSRC is set first.
TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupSsrcThenTrack) {
AddVideoTrack(false);
AddVideoTrack();
rtc::scoped_refptr<VideoRtpSender> sender =
new VideoRtpSender(&video_provider_);
sender->SetSsrc(kVideoSsrc);
@ -374,7 +358,7 @@ TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupSsrcThenTrack) {
// Test that a video sender calls the expected methods on the provider once
// it has a track and SSRC, when the SSRC is set last.
TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupTrackThenSsrc) {
AddVideoTrack(false);
AddVideoTrack();
rtc::scoped_refptr<VideoRtpSender> sender =
new VideoRtpSender(&video_provider_);
sender->SetTrack(video_track_);
@ -410,7 +394,7 @@ TEST_F(RtpSenderReceiverTest, AudioSenderSsrcSetToZero) {
// Test that the sender is disconnected from the provider when its SSRC is
// set to 0.
TEST_F(RtpSenderReceiverTest, VideoSenderSsrcSetToZero) {
AddVideoTrack(false);
AddVideoTrack();
EXPECT_CALL(video_provider_,
SetCaptureDevice(kVideoSsrc,
video_track_->GetSource()->GetVideoCapturer()));
@ -446,7 +430,7 @@ TEST_F(RtpSenderReceiverTest, AudioSenderTrackSetToNull) {
}
TEST_F(RtpSenderReceiverTest, VideoSenderTrackSetToNull) {
AddVideoTrack(false);
AddVideoTrack();
EXPECT_CALL(video_provider_,
SetCaptureDevice(kVideoSsrc,
video_track_->GetSource()->GetVideoCapturer()));
@ -466,7 +450,7 @@ TEST_F(RtpSenderReceiverTest, VideoSenderTrackSetToNull) {
}
TEST_F(RtpSenderReceiverTest, AudioSenderSsrcChanged) {
AddVideoTrack(false);
AddVideoTrack();
rtc::scoped_refptr<AudioTrackInterface> track =
AudioTrack::Create(kAudioTrackId, nullptr);
EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
@ -483,7 +467,7 @@ TEST_F(RtpSenderReceiverTest, AudioSenderSsrcChanged) {
}
TEST_F(RtpSenderReceiverTest, VideoSenderSsrcChanged) {
AddVideoTrack(false);
AddVideoTrack();
EXPECT_CALL(video_provider_,
SetCaptureDevice(kVideoSsrc,
video_track_->GetSource()->GetVideoCapturer()));

View File

@ -22,6 +22,7 @@
#include "webrtc/api/peerconnection.h"
#include "webrtc/api/peerconnectionfactory.h"
#include "webrtc/api/test/fakedatachannelprovider.h"
#include "webrtc/api/test/fakevideotracksource.h"
#include "webrtc/api/videotrack.h"
#include "webrtc/base/base64.h"
#include "webrtc/base/fakesslidentity.h"
@ -523,7 +524,8 @@ class StatsCollectorTest : public testing::Test {
// Adds a outgoing video track with a given SSRC into the stats.
void AddOutgoingVideoTrackStats() {
stream_ = webrtc::MediaStream::Create("streamlabel");
track_= webrtc::VideoTrack::Create(kLocalTrackId, NULL);
track_ = webrtc::VideoTrack::Create(kLocalTrackId,
webrtc::FakeVideoTrackSource::Create());
stream_->AddTrack(track_);
EXPECT_CALL(session_, GetLocalTrackIdBySsrc(kSsrcOfTrack, _))
.WillRepeatedly(DoAll(SetArgPointee<1>(kLocalTrackId), Return(true)));
@ -532,7 +534,8 @@ class StatsCollectorTest : public testing::Test {
// Adds a incoming video track with a given SSRC into the stats.
void AddIncomingVideoTrackStats() {
stream_ = webrtc::MediaStream::Create("streamlabel");
track_= webrtc::VideoTrack::Create(kRemoteTrackId, NULL);
track_ = webrtc::VideoTrack::Create(kRemoteTrackId,
webrtc::FakeVideoTrackSource::Create());
stream_->AddTrack(track_);
EXPECT_CALL(session_, GetRemoteTrackIdBySsrc(kSsrcOfTrack, _))
.WillRepeatedly(DoAll(SetArgPointee<1>(kRemoteTrackId), Return(true)));

View File

@ -0,0 +1,43 @@
/*
* Copyright 2016 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.
*/
#ifndef WEBRTC_API_TEST_FAKEVIDEOTRACKSOURCE_H_
#define WEBRTC_API_TEST_FAKEVIDEOTRACKSOURCE_H_
#include "webrtc/api/mediastreaminterface.h"
#include "webrtc/api/videotracksource.h"
#include "webrtc/media/base/fakevideocapturer.h"
namespace webrtc {
class FakeVideoTrackSource : public VideoTrackSource {
public:
static rtc::scoped_refptr<FakeVideoTrackSource> Create() {
return new rtc::RefCountedObject<FakeVideoTrackSource>();
}
cricket::FakeVideoCapturer* fake_video_capturer() {
return &fake_video_capturer_;
}
protected:
FakeVideoTrackSource()
: VideoTrackSource(&fake_video_capturer_,
rtc::Thread::Current(),
false /* remote */) {}
virtual ~FakeVideoTrackSource() {}
private:
cricket::FakeVideoCapturer fake_video_capturer_;
};
} // namespace webrtc
#endif // WEBRTC_API_TEST_FAKEVIDEOTRACKSOURCE_H_