Avoid using GlobalTaskQueueFactory for TaskQueueForTest
To remove global task factory, rtc::TaskQueue need to loose it's convenient constructor TaskQueueForTest can be used instead in tests and keep the convenient constructor. Also cleanup the TaskQueueForTest a bit: move the class to webrtc namespace add default constructor disallow copy using language construct instead of macro cleanup build dependencies rename build target (to match move out of the rtc namespace) Bug: webrtc:10284 Change-Id: I17fddf3f8d4f363df7d495c28a5b0a28abda1ba7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127571 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27193}
This commit is contained in:

committed by
Commit Bot

parent
10c5a93eb7
commit
d26a916a80
@ -456,7 +456,6 @@ if (rtc_include_tests) {
|
|||||||
"../call:mock_rtp_interfaces",
|
"../call:mock_rtp_interfaces",
|
||||||
"../rtc_base:rtc_base",
|
"../rtc_base:rtc_base",
|
||||||
"../rtc_base:rtc_base_approved",
|
"../rtc_base:rtc_base_approved",
|
||||||
"../rtc_base:rtc_task_queue_for_test",
|
|
||||||
"../rtc_base/third_party/sigslot",
|
"../rtc_base/third_party/sigslot",
|
||||||
"../test:test_support",
|
"../test:test_support",
|
||||||
"//testing/gtest",
|
"//testing/gtest",
|
||||||
|
@ -98,7 +98,7 @@ if (rtc_include_tests) {
|
|||||||
"../../audio/utility:audio_frame_operations",
|
"../../audio/utility:audio_frame_operations",
|
||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
"../../rtc_base:rtc_task_queue_for_test",
|
"../../rtc_base:task_queue_for_test",
|
||||||
"../../test:test_support",
|
"../../test:test_support",
|
||||||
"//third_party/abseil-cpp/absl/memory",
|
"//third_party/abseil-cpp/absl/memory",
|
||||||
]
|
]
|
||||||
|
@ -372,7 +372,7 @@ TEST(AudioMixer, RampedOutSourcesShouldNotBeMarkedMixed) {
|
|||||||
// This test checks that the initialization and participant addition
|
// This test checks that the initialization and participant addition
|
||||||
// can be done on a different thread.
|
// can be done on a different thread.
|
||||||
TEST(AudioMixer, ConstructFromOtherThread) {
|
TEST(AudioMixer, ConstructFromOtherThread) {
|
||||||
rtc::test::TaskQueueForTest init_queue("init");
|
TaskQueueForTest init_queue("init");
|
||||||
rtc::scoped_refptr<AudioMixer> mixer;
|
rtc::scoped_refptr<AudioMixer> mixer;
|
||||||
init_queue.SendTask([&mixer]() { mixer = AudioMixerImpl::Create(); });
|
init_queue.SendTask([&mixer]() { mixer = AudioMixerImpl::Create(); });
|
||||||
|
|
||||||
@ -382,7 +382,7 @@ TEST(AudioMixer, ConstructFromOtherThread) {
|
|||||||
|
|
||||||
ResetFrame(participant.fake_frame());
|
ResetFrame(participant.fake_frame());
|
||||||
|
|
||||||
rtc::test::TaskQueueForTest participant_queue("participant");
|
TaskQueueForTest participant_queue("participant");
|
||||||
participant_queue.SendTask(
|
participant_queue.SendTask(
|
||||||
[&mixer, &participant]() { mixer->AddSource(&participant); });
|
[&mixer, &participant]() { mixer->AddSource(&participant); });
|
||||||
|
|
||||||
|
@ -585,7 +585,6 @@ if (rtc_include_tests) {
|
|||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
"../../rtc_base:rtc_task_queue",
|
"../../rtc_base:rtc_task_queue",
|
||||||
"../../rtc_base:rtc_task_queue_for_test",
|
|
||||||
"../../rtc_base:sequenced_task_checker",
|
"../../rtc_base:sequenced_task_checker",
|
||||||
"../../rtc_base/task_utils:to_queued_task",
|
"../../rtc_base/task_utils:to_queued_task",
|
||||||
"../../test:test_support",
|
"../../test:test_support",
|
||||||
@ -663,7 +662,7 @@ if (rtc_include_tests) {
|
|||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
"../../rtc_base:rtc_base_tests_utils",
|
"../../rtc_base:rtc_base_tests_utils",
|
||||||
"../../rtc_base:rtc_event",
|
"../../rtc_base:rtc_event",
|
||||||
"../../rtc_base:rtc_task_queue_for_test",
|
"../../rtc_base:task_queue_for_test",
|
||||||
"../../system_wrappers",
|
"../../system_wrappers",
|
||||||
"../../test:fileutils",
|
"../../test:fileutils",
|
||||||
"../../test:perf_test",
|
"../../test:perf_test",
|
||||||
@ -849,7 +848,7 @@ if (rtc_include_tests) {
|
|||||||
"../../rtc_base:rtc_base_tests_utils",
|
"../../rtc_base:rtc_base_tests_utils",
|
||||||
"../../rtc_base:rtc_numerics",
|
"../../rtc_base:rtc_numerics",
|
||||||
"../../rtc_base:rtc_task_queue",
|
"../../rtc_base:rtc_task_queue",
|
||||||
"../../rtc_base:rtc_task_queue_for_test",
|
"../../rtc_base:task_queue_for_test",
|
||||||
"../../rtc_base/experiments:jitter_upper_bound_experiment",
|
"../../rtc_base/experiments:jitter_upper_bound_experiment",
|
||||||
"../../system_wrappers",
|
"../../system_wrappers",
|
||||||
"../../system_wrappers:field_trial",
|
"../../system_wrappers:field_trial",
|
||||||
|
@ -405,7 +405,7 @@ void VideoCodecTestFixtureImpl::RunTest(
|
|||||||
|
|
||||||
// To emulate operation on a production VideoStreamEncoder, we call the
|
// To emulate operation on a production VideoStreamEncoder, we call the
|
||||||
// codecs on a task queue.
|
// codecs on a task queue.
|
||||||
rtc::test::TaskQueueForTest task_queue("VidProc TQ");
|
TaskQueueForTest task_queue("VidProc TQ");
|
||||||
|
|
||||||
SetUpAndInitObjects(&task_queue,
|
SetUpAndInitObjects(&task_queue,
|
||||||
static_cast<const int>(rate_profiles[0].target_kbps),
|
static_cast<const int>(rate_profiles[0].target_kbps),
|
||||||
@ -625,7 +625,7 @@ VideoCodecTestStats& VideoCodecTestFixtureImpl::GetStats() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VideoCodecTestFixtureImpl::SetUpAndInitObjects(
|
void VideoCodecTestFixtureImpl::SetUpAndInitObjects(
|
||||||
rtc::test::TaskQueueForTest* task_queue,
|
TaskQueueForTest* task_queue,
|
||||||
int initial_bitrate_kbps,
|
int initial_bitrate_kbps,
|
||||||
int initial_framerate_fps) {
|
int initial_framerate_fps) {
|
||||||
config_.codec_settings.minBitrate = 0;
|
config_.codec_settings.minBitrate = 0;
|
||||||
@ -681,7 +681,7 @@ void VideoCodecTestFixtureImpl::SetUpAndInitObjects(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VideoCodecTestFixtureImpl::ReleaseAndCloseObjects(
|
void VideoCodecTestFixtureImpl::ReleaseAndCloseObjects(
|
||||||
rtc::test::TaskQueueForTest* task_queue) {
|
TaskQueueForTest* task_queue) {
|
||||||
task_queue->SendTask([this]() {
|
task_queue->SendTask([this]() {
|
||||||
processor_.reset();
|
processor_.reset();
|
||||||
// The VideoProcessor must be destroyed before the codecs.
|
// The VideoProcessor must be destroyed before the codecs.
|
||||||
@ -702,7 +702,7 @@ void VideoCodecTestFixtureImpl::ReleaseAndCloseObjects(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VideoCodecTestFixtureImpl::PrintSettings(
|
void VideoCodecTestFixtureImpl::PrintSettings(
|
||||||
rtc::test::TaskQueueForTest* task_queue) const {
|
TaskQueueForTest* task_queue) const {
|
||||||
printf("==> Config\n");
|
printf("==> Config\n");
|
||||||
printf("%s\n", config_.ToString().c_str());
|
printf("%s\n", config_.ToString().c_str());
|
||||||
|
|
||||||
|
@ -62,10 +62,10 @@ class VideoCodecTestFixtureImpl : public VideoCodecTestFixture {
|
|||||||
|
|
||||||
void CreateEncoderAndDecoder();
|
void CreateEncoderAndDecoder();
|
||||||
void DestroyEncoderAndDecoder();
|
void DestroyEncoderAndDecoder();
|
||||||
void SetUpAndInitObjects(rtc::test::TaskQueueForTest* task_queue,
|
void SetUpAndInitObjects(TaskQueueForTest* task_queue,
|
||||||
int initial_bitrate_kbps,
|
int initial_bitrate_kbps,
|
||||||
int initial_framerate_fps);
|
int initial_framerate_fps);
|
||||||
void ReleaseAndCloseObjects(rtc::test::TaskQueueForTest* task_queue);
|
void ReleaseAndCloseObjects(TaskQueueForTest* task_queue);
|
||||||
|
|
||||||
void ProcessAllFrames(rtc::TaskQueue* task_queue,
|
void ProcessAllFrames(rtc::TaskQueue* task_queue,
|
||||||
const std::vector<RateProfile>& rate_profiles);
|
const std::vector<RateProfile>& rate_profiles);
|
||||||
@ -83,7 +83,7 @@ class VideoCodecTestFixtureImpl : public VideoCodecTestFixture {
|
|||||||
size_t target_bitrate_kbps,
|
size_t target_bitrate_kbps,
|
||||||
float input_framerate_fps);
|
float input_framerate_fps);
|
||||||
|
|
||||||
void PrintSettings(rtc::test::TaskQueueForTest* task_queue) const;
|
void PrintSettings(TaskQueueForTest* task_queue) const;
|
||||||
|
|
||||||
// Codecs.
|
// Codecs.
|
||||||
const std::unique_ptr<VideoEncoderFactory> encoder_factory_;
|
const std::unique_ptr<VideoEncoderFactory> encoder_factory_;
|
||||||
|
@ -77,7 +77,7 @@ class VideoProcessorTest : public testing::Test {
|
|||||||
EXPECT_CALL(*decoder_mock_, RegisterDecodeCompleteCallback(_)).Times(1);
|
EXPECT_CALL(*decoder_mock_, RegisterDecodeCompleteCallback(_)).Times(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtc::test::TaskQueueForTest q_;
|
TaskQueueForTest q_;
|
||||||
|
|
||||||
VideoCodecTestFixture::Config config_;
|
VideoCodecTestFixture::Config config_;
|
||||||
|
|
||||||
|
@ -1107,8 +1107,7 @@ rtc_source_set("rtc_base_tests_utils") {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
rtc_source_set("rtc_task_queue_for_test") {
|
rtc_source_set("task_queue_for_test") {
|
||||||
visibility = [ "*" ]
|
|
||||||
testonly = true
|
testonly = true
|
||||||
|
|
||||||
sources = [
|
sources = [
|
||||||
@ -1117,9 +1116,12 @@ rtc_source_set("rtc_task_queue_for_test") {
|
|||||||
]
|
]
|
||||||
deps = [
|
deps = [
|
||||||
":checks",
|
":checks",
|
||||||
":rtc_base_approved",
|
":macromagic",
|
||||||
|
":rtc_event",
|
||||||
":rtc_task_queue",
|
":rtc_task_queue",
|
||||||
|
"../api/task_queue:default_task_queue_factory",
|
||||||
"task_utils:to_queued_task",
|
"task_utils:to_queued_task",
|
||||||
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,8 +10,12 @@
|
|||||||
|
|
||||||
#include "rtc_base/task_queue_for_test.h"
|
#include "rtc_base/task_queue_for_test.h"
|
||||||
|
|
||||||
namespace rtc {
|
#include "api/task_queue/default_task_queue_factory.h"
|
||||||
namespace test {
|
|
||||||
TaskQueueForTest::~TaskQueueForTest() = default;
|
namespace webrtc {
|
||||||
} // namespace test
|
|
||||||
} // namespace rtc
|
TaskQueueForTest::TaskQueueForTest(absl::string_view name, Priority priority)
|
||||||
|
: TaskQueue(
|
||||||
|
CreateDefaultTaskQueueFactory()->CreateTaskQueue(name, priority)) {}
|
||||||
|
|
||||||
|
} // namespace webrtc
|
||||||
|
@ -11,19 +11,24 @@
|
|||||||
#ifndef RTC_BASE_TASK_QUEUE_FOR_TEST_H_
|
#ifndef RTC_BASE_TASK_QUEUE_FOR_TEST_H_
|
||||||
#define RTC_BASE_TASK_QUEUE_FOR_TEST_H_
|
#define RTC_BASE_TASK_QUEUE_FOR_TEST_H_
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
#include "absl/strings/string_view.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/constructor_magic.h"
|
|
||||||
#include "rtc_base/event.h"
|
#include "rtc_base/event.h"
|
||||||
#include "rtc_base/task_queue.h"
|
#include "rtc_base/task_queue.h"
|
||||||
#include "rtc_base/task_utils/to_queued_task.h"
|
#include "rtc_base/task_utils/to_queued_task.h"
|
||||||
#include "rtc_base/thread_annotations.h"
|
#include "rtc_base/thread_annotations.h"
|
||||||
|
|
||||||
namespace rtc {
|
namespace webrtc {
|
||||||
namespace test {
|
|
||||||
class RTC_LOCKABLE TaskQueueForTest : public TaskQueue {
|
class RTC_LOCKABLE TaskQueueForTest : public rtc::TaskQueue {
|
||||||
public:
|
public:
|
||||||
using TaskQueue::TaskQueue;
|
explicit TaskQueueForTest(absl::string_view name = "TestQueue",
|
||||||
~TaskQueueForTest();
|
Priority priority = Priority::NORMAL);
|
||||||
|
TaskQueueForTest(const TaskQueueForTest&) = delete;
|
||||||
|
TaskQueueForTest& operator=(const TaskQueueForTest&) = delete;
|
||||||
|
~TaskQueueForTest() = default;
|
||||||
|
|
||||||
// A convenience, test-only method that blocks the current thread while
|
// A convenience, test-only method that blocks the current thread while
|
||||||
// a task executes on the task queue.
|
// a task executes on the task queue.
|
||||||
@ -34,11 +39,9 @@ class RTC_LOCKABLE TaskQueueForTest : public TaskQueue {
|
|||||||
void SendTask(Closure* task) {
|
void SendTask(Closure* task) {
|
||||||
RTC_DCHECK(!IsCurrent());
|
RTC_DCHECK(!IsCurrent());
|
||||||
rtc::Event event;
|
rtc::Event event;
|
||||||
PostTask(webrtc::ToQueuedTask(
|
PostTask(ToQueuedTask(
|
||||||
[&task]() {
|
[&task] { RTC_CHECK_EQ(false, static_cast<QueuedTask*>(task)->Run()); },
|
||||||
RTC_CHECK_EQ(false, static_cast<webrtc::QueuedTask*>(task)->Run());
|
[&event] { event.Set(); }));
|
||||||
},
|
|
||||||
[&event]() { event.Set(); }));
|
|
||||||
event.Wait(rtc::Event::kForever);
|
event.Wait(rtc::Event::kForever);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,15 +51,12 @@ class RTC_LOCKABLE TaskQueueForTest : public TaskQueue {
|
|||||||
void SendTask(Closure&& task) {
|
void SendTask(Closure&& task) {
|
||||||
RTC_DCHECK(!IsCurrent());
|
RTC_DCHECK(!IsCurrent());
|
||||||
rtc::Event event;
|
rtc::Event event;
|
||||||
PostTask(webrtc::ToQueuedTask(std::forward<Closure>(task),
|
PostTask(
|
||||||
[&event] { event.Set(); }));
|
ToQueuedTask(std::forward<Closure>(task), [&event] { event.Set(); }));
|
||||||
event.Wait(rtc::Event::kForever);
|
event.Wait(rtc::Event::kForever);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
RTC_DISALLOW_COPY_AND_ASSIGN(TaskQueueForTest);
|
|
||||||
};
|
};
|
||||||
} // namespace test
|
|
||||||
} // namespace rtc
|
} // namespace webrtc
|
||||||
|
|
||||||
#endif // RTC_BASE_TASK_QUEUE_FOR_TEST_H_
|
#endif // RTC_BASE_TASK_QUEUE_FOR_TEST_H_
|
||||||
|
@ -127,9 +127,9 @@ if (rtc_include_tests) {
|
|||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
"../../rtc_base:rtc_base_tests_utils",
|
"../../rtc_base:rtc_base_tests_utils",
|
||||||
"../../rtc_base:rtc_task_queue",
|
"../../rtc_base:rtc_task_queue",
|
||||||
"../../rtc_base:rtc_task_queue_for_test",
|
|
||||||
"../../rtc_base:safe_minmax",
|
"../../rtc_base:safe_minmax",
|
||||||
"../../rtc_base:sequenced_task_checker",
|
"../../rtc_base:sequenced_task_checker",
|
||||||
|
"../../rtc_base:task_queue_for_test",
|
||||||
"../../system_wrappers",
|
"../../system_wrappers",
|
||||||
"../../system_wrappers:field_trial",
|
"../../system_wrappers:field_trial",
|
||||||
"../../video",
|
"../../video",
|
||||||
|
@ -50,7 +50,7 @@ class VideoQualityAnalyzer {
|
|||||||
std::vector<std::function<void(const VideoFrameQualityInfo&)>>
|
std::vector<std::function<void(const VideoFrameQualityInfo&)>>
|
||||||
frame_info_handlers_;
|
frame_info_handlers_;
|
||||||
std::deque<VideoFrame> captured_frames_;
|
std::deque<VideoFrame> captured_frames_;
|
||||||
rtc::test::TaskQueueForTest task_queue_;
|
TaskQueueForTest task_queue_;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct VideoQualityStats {
|
struct VideoQualityStats {
|
||||||
|
@ -561,7 +561,7 @@ if (rtc_include_tests) {
|
|||||||
"../rtc_base:rtc_base_tests_utils",
|
"../rtc_base:rtc_base_tests_utils",
|
||||||
"../rtc_base:rtc_numerics",
|
"../rtc_base:rtc_numerics",
|
||||||
"../rtc_base:rtc_task_queue",
|
"../rtc_base:rtc_task_queue",
|
||||||
"../rtc_base:rtc_task_queue_for_test",
|
"../rtc_base:task_queue_for_test",
|
||||||
"../rtc_base/experiments:alr_experiment",
|
"../rtc_base/experiments:alr_experiment",
|
||||||
"../rtc_base/task_utils:to_queued_task",
|
"../rtc_base/task_utils:to_queued_task",
|
||||||
"../system_wrappers",
|
"../system_wrappers",
|
||||||
|
@ -137,7 +137,7 @@ class VideoSendStreamImplTest : public ::testing::Test {
|
|||||||
RtcEventLogNullImpl event_log_;
|
RtcEventLogNullImpl event_log_;
|
||||||
VideoSendStream::Config config_;
|
VideoSendStream::Config config_;
|
||||||
SendDelayStats send_delay_stats_;
|
SendDelayStats send_delay_stats_;
|
||||||
rtc::test::TaskQueueForTest test_queue_;
|
TaskQueueForTest test_queue_;
|
||||||
std::unique_ptr<ProcessThread> process_thread_;
|
std::unique_ptr<ProcessThread> process_thread_;
|
||||||
CallStats call_stats_;
|
CallStats call_stats_;
|
||||||
SendStatisticsProxy stats_proxy_;
|
SendStatisticsProxy stats_proxy_;
|
||||||
|
Reference in New Issue
Block a user