Fixing and re-enabling some flaky PeerConnection tests.
BUG=webrtc:3362 Review URL: https://codereview.webrtc.org/1512763003 Cr-Commit-Position: refs/heads/master@{#11016}
This commit is contained in:
parent
bd292465ee
commit
c9be00797e
@ -171,11 +171,6 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
}
|
||||
|
||||
~PeerConnectionTestClient() {
|
||||
while (!fake_video_renderers_.empty()) {
|
||||
RenderMap::iterator it = fake_video_renderers_.begin();
|
||||
delete it->second;
|
||||
fake_video_renderers_.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
void Negotiate() { Negotiate(true, true); }
|
||||
@ -229,8 +224,8 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
const std::string id = media_stream->GetVideoTracks()[i]->id();
|
||||
ASSERT_TRUE(fake_video_renderers_.find(id) ==
|
||||
fake_video_renderers_.end());
|
||||
fake_video_renderers_[id] =
|
||||
new webrtc::FakeVideoTrackRenderer(media_stream->GetVideoTracks()[i]);
|
||||
fake_video_renderers_[id].reset(new webrtc::FakeVideoTrackRenderer(
|
||||
media_stream->GetVideoTracks()[i]));
|
||||
}
|
||||
}
|
||||
void OnRemoveStream(MediaStreamInterface* media_stream) override {}
|
||||
@ -265,9 +260,9 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
for (auto it = fake_video_renderers_.begin();
|
||||
it != fake_video_renderers_.end();) {
|
||||
if (remote_streams->FindVideoTrack(it->first) == nullptr) {
|
||||
auto to_delete = it++;
|
||||
delete to_delete->second;
|
||||
fake_video_renderers_.erase(to_delete);
|
||||
auto to_remove = it++;
|
||||
removed_fake_video_renderers_.push_back(std::move(to_remove->second));
|
||||
fake_video_renderers_.erase(to_remove);
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
@ -284,8 +279,8 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
if (fake_video_renderers_.find(id) != fake_video_renderers_.end()) {
|
||||
continue;
|
||||
}
|
||||
fake_video_renderers_[id] = new webrtc::FakeVideoTrackRenderer(
|
||||
remote_stream->GetVideoTracks()[track_index]);
|
||||
fake_video_renderers_[id].reset(new webrtc::FakeVideoTrackRenderer(
|
||||
remote_stream->GetVideoTracks()[track_index]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -452,6 +447,10 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
return number_of_frames <= fake_audio_capture_module_->frames_received();
|
||||
}
|
||||
|
||||
int audio_frames_received() const {
|
||||
return fake_audio_capture_module_->frames_received();
|
||||
}
|
||||
|
||||
bool VideoFramesReceivedCheck(int number_of_frames) {
|
||||
if (video_decoder_factory_enabled_) {
|
||||
const std::vector<FakeWebRtcVideoDecoder*>& decoders
|
||||
@ -460,9 +459,8 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
return number_of_frames <= 0;
|
||||
}
|
||||
|
||||
for (std::vector<FakeWebRtcVideoDecoder*>::const_iterator
|
||||
it = decoders.begin(); it != decoders.end(); ++it) {
|
||||
if (number_of_frames > (*it)->GetNumFramesReceived()) {
|
||||
for (FakeWebRtcVideoDecoder* decoder : decoders) {
|
||||
if (number_of_frames > decoder->GetNumFramesReceived()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -472,9 +470,8 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
return number_of_frames <= 0;
|
||||
}
|
||||
|
||||
for (RenderMap::const_iterator it = fake_video_renderers_.begin();
|
||||
it != fake_video_renderers_.end(); ++it) {
|
||||
if (number_of_frames > it->second->num_rendered_frames()) {
|
||||
for (const auto& pair : fake_video_renderers_) {
|
||||
if (number_of_frames > pair.second->num_rendered_frames()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -482,6 +479,25 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
}
|
||||
}
|
||||
|
||||
int video_frames_received() const {
|
||||
int total = 0;
|
||||
if (video_decoder_factory_enabled_) {
|
||||
const std::vector<FakeWebRtcVideoDecoder*>& decoders =
|
||||
fake_video_decoder_factory_->decoders();
|
||||
for (const FakeWebRtcVideoDecoder* decoder : decoders) {
|
||||
total += decoder->GetNumFramesReceived();
|
||||
}
|
||||
} else {
|
||||
for (const auto& pair : fake_video_renderers_) {
|
||||
total += pair.second->num_rendered_frames();
|
||||
}
|
||||
for (const auto& renderer : removed_fake_video_renderers_) {
|
||||
total += renderer->num_rendered_frames();
|
||||
}
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
// Verify the CreateDtmfSender interface
|
||||
void VerifyDtmf() {
|
||||
rtc::scoped_ptr<DummyDtmfObserver> observer(new DummyDtmfObserver());
|
||||
@ -878,11 +894,14 @@ class PeerConnectionTestClient : public webrtc::PeerConnectionObserver,
|
||||
std::map<int, IceUfragPwdPair> ice_ufrag_pwd_;
|
||||
bool expect_ice_restart_ = false;
|
||||
|
||||
// Needed to keep track of number of frames send.
|
||||
// Needed to keep track of number of frames sent.
|
||||
rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_;
|
||||
// Needed to keep track of number of frames received.
|
||||
typedef std::map<std::string, webrtc::FakeVideoTrackRenderer*> RenderMap;
|
||||
RenderMap fake_video_renderers_;
|
||||
std::map<std::string, rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>>
|
||||
fake_video_renderers_;
|
||||
// Needed to ensure frames aren't received for removed tracks.
|
||||
std::vector<rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>>
|
||||
removed_fake_video_renderers_;
|
||||
// Needed to keep track of number of frames received when external decoder
|
||||
// used.
|
||||
FakeWebRtcVideoDecoderFactory* fake_video_decoder_factory_ = nullptr;
|
||||
@ -942,13 +961,26 @@ class P2PTestConductor : public testing::Test {
|
||||
}
|
||||
|
||||
void TestUpdateOfferWithRejectedContent() {
|
||||
// Renegotiate, rejecting the video m-line.
|
||||
initiating_client_->Negotiate(true, false);
|
||||
EXPECT_TRUE_WAIT(
|
||||
FramesNotPending(kEndAudioFrameCount * 2, kEndVideoFrameCount),
|
||||
kMaxWaitForFramesMs);
|
||||
// There shouldn't be any more video frame after the new offer is
|
||||
// negotiated.
|
||||
EXPECT_FALSE(VideoFramesReceivedCheck(kEndVideoFrameCount + 1));
|
||||
ASSERT_TRUE_WAIT(SessionActive(), kMaxWaitForActivationMs);
|
||||
|
||||
int pc1_audio_received = initiating_client_->audio_frames_received();
|
||||
int pc1_video_received = initiating_client_->video_frames_received();
|
||||
int pc2_audio_received = receiving_client_->audio_frames_received();
|
||||
int pc2_video_received = receiving_client_->video_frames_received();
|
||||
|
||||
// Wait for some additional audio frames to be received.
|
||||
EXPECT_TRUE_WAIT(initiating_client_->AudioFramesReceivedCheck(
|
||||
pc1_audio_received + kEndAudioFrameCount) &&
|
||||
receiving_client_->AudioFramesReceivedCheck(
|
||||
pc2_audio_received + kEndAudioFrameCount),
|
||||
kMaxWaitForFramesMs);
|
||||
|
||||
// During this time, we shouldn't have received any additional video frames
|
||||
// for the rejected video tracks.
|
||||
EXPECT_EQ(pc1_video_received, initiating_client_->video_frames_received());
|
||||
EXPECT_EQ(pc2_video_received, receiving_client_->video_frames_received());
|
||||
}
|
||||
|
||||
void VerifyRenderedSize(int width, int height) {
|
||||
@ -1292,8 +1324,7 @@ TEST_F(P2PTestConductor, LocalP2PTestAnswerNone) {
|
||||
// runs for a while (10 frames), the caller sends an update offer with video
|
||||
// being rejected. Once the re-negotiation is done, the video flow should stop
|
||||
// and the audio flow should continue.
|
||||
// Disabled due to b/14955157.
|
||||
TEST_F(P2PTestConductor, DISABLED_UpdateOfferWithRejectedContent) {
|
||||
TEST_F(P2PTestConductor, UpdateOfferWithRejectedContent) {
|
||||
ASSERT_TRUE(CreateTestClients());
|
||||
LocalP2PTest();
|
||||
TestUpdateOfferWithRejectedContent();
|
||||
@ -1301,8 +1332,7 @@ TEST_F(P2PTestConductor, DISABLED_UpdateOfferWithRejectedContent) {
|
||||
|
||||
// This test sets up a Jsep call between two parties. The MSID is removed from
|
||||
// the SDP strings from the caller.
|
||||
// Disabled due to b/14955157.
|
||||
TEST_F(P2PTestConductor, DISABLED_LocalP2PTestWithoutMsid) {
|
||||
TEST_F(P2PTestConductor, LocalP2PTestWithoutMsid) {
|
||||
ASSERT_TRUE(CreateTestClients());
|
||||
receiving_client()->RemoveMsidFromReceivedSdp(true);
|
||||
// TODO(perkj): Currently there is a bug that cause audio to stop playing if
|
||||
|
||||
@ -230,8 +230,7 @@ TEST_F(PeerConnectionEndToEndTest, Call) {
|
||||
}
|
||||
#endif // if !defined(THREAD_SANITIZER) && !defined(WEBRTC_MAC)
|
||||
|
||||
// Disabled per b/14899892
|
||||
TEST_F(PeerConnectionEndToEndTest, DISABLED_CallWithLegacySdp) {
|
||||
TEST_F(PeerConnectionEndToEndTest, CallWithLegacySdp) {
|
||||
FakeConstraints pc_constraints;
|
||||
pc_constraints.AddMandatory(MediaConstraintsInterface::kEnableDtlsSrtp,
|
||||
false);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user