Revert "Cleanup MultiStreamTester"
This reverts commit d6b9b0a1f4132474c737b5e673e380c3d8e12e2c.
Reason for revert: breaks internal ios tests
Original change's description:
> Cleanup MultiStreamTester
>
> Instead of taking TaskQueue from outside create one internally.
> Detach MultiStreamTests from test::CallTest since that inheritance
> only used for constants and (now unneeded) task_queue object.
>
> Bug: webrtc:10933
> Change-Id: I7e30ddcf6faaa134ebcd9d53b578b40fdedf2a3c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159034
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29744}
TBR=danilchap@webrtc.org,ilnik@webrtc.org
Change-Id: I0fe3d265fe12795ec96b420c21bdc934743c9c2f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10933
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159222
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29745}
diff --git a/video/end_to_end_tests/multi_stream_tester.cc b/video/end_to_end_tests/multi_stream_tester.cc
index 0f94e22..104b9d4 100644
--- a/video/end_to_end_tests/multi_stream_tester.cc
+++ b/video/end_to_end_tests/multi_stream_tester.cc
@@ -31,20 +31,23 @@
namespace webrtc {
-MultiStreamTester::MultiStreamTester() {
+MultiStreamTester::MultiStreamTester(TaskQueueBase* task_queue)
+ : task_queue_(task_queue) {
// TODO(sprang): Cleanup when msvc supports explicit initializers for array.
codec_settings[0] = {1, 640, 480};
codec_settings[1] = {2, 320, 240};
codec_settings[2] = {3, 240, 160};
+ class multi_stream_test {
+ public:
+ multi_stream_test();
+ };
}
-MultiStreamTester::~MultiStreamTester() = default;
+MultiStreamTester::~MultiStreamTester() {}
void MultiStreamTester::RunTest() {
webrtc::RtcEventLogNull event_log;
auto task_queue_factory = CreateDefaultTaskQueueFactory();
- auto task_queue = task_queue_factory->CreateTaskQueue(
- "TaskQueue", TaskQueueFactory::Priority::NORMAL);
Call::Config config(&event_log);
config.task_queue_factory = task_queue_factory.get();
std::unique_ptr<Call> sender_call;
@@ -61,12 +64,12 @@
CreateBuiltinVideoBitrateAllocatorFactory();
InternalDecoderFactory decoder_factory;
- SendTask(RTC_FROM_HERE, task_queue.get(), [&]() {
+ SendTask(RTC_FROM_HERE, task_queue_, [&]() {
sender_call = absl::WrapUnique(Call::Create(config));
receiver_call = absl::WrapUnique(Call::Create(config));
- sender_transport = CreateSendTransport(task_queue.get(), sender_call.get());
+ sender_transport = CreateSendTransport(task_queue_, sender_call.get());
receiver_transport =
- CreateReceiveTransport(task_queue.get(), receiver_call.get());
+ CreateReceiveTransport(task_queue_, receiver_call.get());
sender_transport->SetReceiver(receiver_call->Receiver());
receiver_transport->SetReceiver(sender_call->Receiver());
@@ -122,7 +125,7 @@
Wait();
- SendTask(RTC_FROM_HERE, task_queue.get(), [&]() {
+ SendTask(RTC_FROM_HERE, task_queue_, [&]() {
for (size_t i = 0; i < kNumStreams; ++i) {
frame_generators[i]->Stop();
sender_call->DestroyVideoSendStream(send_streams[i]);
diff --git a/video/end_to_end_tests/multi_stream_tester.h b/video/end_to_end_tests/multi_stream_tester.h
index 1753741..845442e 100644
--- a/video/end_to_end_tests/multi_stream_tester.h
+++ b/video/end_to_end_tests/multi_stream_tester.h
@@ -35,7 +35,7 @@
int height;
} codec_settings[kNumStreams];
- MultiStreamTester();
+ explicit MultiStreamTester(TaskQueueBase* task_queue);
virtual ~MultiStreamTester();
@@ -58,6 +58,8 @@
virtual std::unique_ptr<test::DirectTransport> CreateReceiveTransport(
TaskQueueBase* task_queue,
Call* receiver_call);
+
+ TaskQueueBase* const task_queue_;
};
} // namespace webrtc
#endif // VIDEO_END_TO_END_TESTS_MULTI_STREAM_TESTER_H_
diff --git a/video/end_to_end_tests/multi_stream_tests.cc b/video/end_to_end_tests/multi_stream_tests.cc
index e20d70f..0eed98d 100644
--- a/video/end_to_end_tests/multi_stream_tests.cc
+++ b/video/end_to_end_tests/multi_stream_tests.cc
@@ -21,14 +21,20 @@
#include "call/video_receive_stream.h"
#include "call/video_send_stream.h"
#include "rtc_base/event.h"
+#include "test/call_test.h"
#include "test/frame_generator_capturer.h"
#include "test/gtest.h"
#include "video/end_to_end_tests/multi_stream_tester.h"
namespace webrtc {
+class MultiStreamEndToEndTest : public test::CallTest {
+ public:
+ MultiStreamEndToEndTest() = default;
+};
+
// Each renderer verifies that it receives the expected resolution, and as soon
// as every renderer has received a frame, the test finishes.
-TEST(MultiStreamEndToEndTest, SendsAndReceivesMultipleStreams) {
+TEST_F(MultiStreamEndToEndTest, SendsAndReceivesMultipleStreams) {
class VideoOutputObserver : public rtc::VideoSinkInterface<VideoFrame> {
public:
VideoOutputObserver(const MultiStreamTester::CodecSettings& settings,
@@ -45,7 +51,7 @@
uint32_t Ssrc() { return ssrc_; }
- bool Wait() { return done_.Wait(30 * 1000); }
+ bool Wait() { return done_.Wait(kDefaultTimeoutMs); }
private:
const MultiStreamTester::CodecSettings& settings_;
@@ -56,8 +62,9 @@
class Tester : public MultiStreamTester {
public:
- Tester() = default;
- ~Tester() override = default;
+ explicit Tester(TaskQueueBase* task_queue)
+ : MultiStreamTester(task_queue) {}
+ virtual ~Tester() {}
protected:
void Wait() override {
@@ -72,9 +79,9 @@
VideoSendStream::Config* send_config,
VideoEncoderConfig* encoder_config,
test::FrameGeneratorCapturer** frame_generator) override {
- observers_[stream_index] = std::make_unique<VideoOutputObserver>(
+ observers_[stream_index].reset(new VideoOutputObserver(
codec_settings[stream_index], send_config->rtp.ssrcs.front(),
- frame_generator);
+ frame_generator));
}
void UpdateReceiveConfig(
@@ -85,7 +92,7 @@
private:
std::unique_ptr<VideoOutputObserver> observers_[kNumStreams];
- } tester;
+ } tester(task_queue());
tester.RunTest();
}
diff --git a/video/end_to_end_tests/transport_feedback_tests.cc b/video/end_to_end_tests/transport_feedback_tests.cc
index 55c8bc4..0f7b737 100644
--- a/video/end_to_end_tests/transport_feedback_tests.cc
+++ b/video/end_to_end_tests/transport_feedback_tests.cc
@@ -29,13 +29,15 @@
};
} // namespace
-TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) {
- static constexpr int kSendRtxPayloadType = 98;
- static constexpr int kDefaultTimeoutMs = 30 * 1000;
- static constexpr int kNackRtpHistoryMs = 1000;
- static constexpr uint32_t kSendRtxSsrcs[MultiStreamTester::kNumStreams] = {
- 0xBADCAFD, 0xBADCAFE, 0xBADCAFF};
+class TransportFeedbackEndToEndTest : public test::CallTest {
+ public:
+ TransportFeedbackEndToEndTest() {
+ RegisterRtpExtension(RtpExtension(RtpExtension::kTransportSequenceNumberUri,
+ kTransportSequenceNumberExtensionId));
+ }
+};
+TEST_F(TransportFeedbackEndToEndTest, AssignsTransportSequenceNumbers) {
class RtpExtensionHeaderObserver : public test::DirectTransport {
public:
RtpExtensionHeaderObserver(
@@ -54,6 +56,7 @@
parser_(RtpHeaderParser::CreateForTest()),
first_media_ssrc_(first_media_ssrc),
rtx_to_media_ssrcs_(ssrc_map),
+ padding_observed_(false),
rtx_padding_observed_(false),
retransmit_observed_(false),
started_(false) {
@@ -146,7 +149,6 @@
return done_.Wait(kDefaultTimeoutMs);
}
- private:
rtc::CriticalSection lock_;
rtc::Event done_;
std::unique_ptr<RtpHeaderParser> parser_;
@@ -156,6 +158,7 @@
std::map<uint32_t, std::set<uint16_t>> dropped_seq_;
const uint32_t& first_media_ssrc_;
const std::map<uint32_t, uint32_t>& rtx_to_media_ssrcs_;
+ bool padding_observed_;
bool rtx_padding_observed_;
bool retransmit_observed_;
bool started_;
@@ -163,9 +166,11 @@
class TransportSequenceNumberTester : public MultiStreamTester {
public:
- TransportSequenceNumberTester()
- : first_media_ssrc_(0), observer_(nullptr) {}
- ~TransportSequenceNumberTester() override = default;
+ explicit TransportSequenceNumberTester(TaskQueueBase* task_queue)
+ : MultiStreamTester(task_queue),
+ first_media_ssrc_(0),
+ observer_(nullptr) {}
+ virtual ~TransportSequenceNumberTester() {}
protected:
void Wait() override {
@@ -233,19 +238,11 @@
uint32_t first_media_ssrc_;
std::map<uint32_t, uint32_t> rtx_to_media_ssrcs_;
RtpExtensionHeaderObserver* observer_;
- } tester;
+ } tester(task_queue());
tester.RunTest();
}
-class TransportFeedbackEndToEndTest : public test::CallTest {
- public:
- TransportFeedbackEndToEndTest() {
- RegisterRtpExtension(RtpExtension(RtpExtension::kTransportSequenceNumberUri,
- kTransportSequenceNumberExtensionId));
- }
-};
-
class TransportFeedbackTester : public test::EndToEndTest {
public:
TransportFeedbackTester(bool feedback_enabled,