Add a basic unittest for webrtc::voe::ChannelReceive
This CL adds an unittest that a ChannelReceive can be constructed
and destroyed without crashing. It is a basis for further testing.
Lack of unit test was discovered while pursuing bug mentioned below.
Bug: webrtc:13931
Change-Id: Iddb110f2df25e3806c74a5d00bbfab6d6d8e267f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291338
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39200}
diff --git a/audio/BUILD.gn b/audio/BUILD.gn
index 1990615..183a99b 100644
--- a/audio/BUILD.gn
+++ b/audio/BUILD.gn
@@ -160,6 +160,7 @@
deps = [
":audio",
":audio_end_to_end_test",
+ ":channel_receive_unittest",
"../api:libjingle_peerconnection_api",
"../api:mock_audio_mixer",
"../api:mock_frame_decryptor",
@@ -181,6 +182,7 @@
"../call:rtp_sender",
"../common_audio",
"../logging:mocks",
+ "../modules/audio_device:audio_device_api",
"../modules/audio_device:audio_device_impl", # For TestAudioDeviceModule
"../modules/audio_device:mock_audio_device",
"../modules/audio_mixer:audio_mixer_impl",
@@ -197,6 +199,7 @@
"../rtc_base:rtc_base_tests_utils",
"../rtc_base:safe_compare",
"../rtc_base:task_queue_for_test",
+ "../rtc_base:threading",
"../rtc_base:timeutils",
"../system_wrappers",
"../test:audio_codec_mocks",
@@ -214,6 +217,22 @@
]
}
+ rtc_library("channel_receive_unittest") {
+ testonly = true
+ sources = [ "channel_receive_unittest.cc" ]
+ deps = [
+ ":audio",
+ "../api/crypto:frame_decryptor_interface",
+ "../api/task_queue:default_task_queue_factory",
+ "../modules/audio_device:audio_device_api",
+ "../modules/audio_device:mock_audio_device",
+ "../rtc_base:threading",
+ "../test:mock_transport",
+ "../test:test_support",
+ "../test/time_controller",
+ ]
+ }
+
if (rtc_enable_protobuf && !build_with_chromium) {
rtc_test("low_bandwidth_audio_test") {
testonly = true
diff --git a/audio/channel_receive_unittest.cc b/audio/channel_receive_unittest.cc
new file mode 100644
index 0000000..3d9baeb
--- /dev/null
+++ b/audio/channel_receive_unittest.cc
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2023 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 "audio/channel_receive.h"
+
+#include "api/crypto/frame_decryptor_interface.h"
+#include "api/task_queue/default_task_queue_factory.h"
+#include "modules/audio_device/include/audio_device.h"
+#include "modules/audio_device/include/mock_audio_device.h"
+#include "rtc_base/thread.h"
+#include "test/gmock.h"
+#include "test/gtest.h"
+#include "test/mock_transport.h"
+#include "test/time_controller/simulated_time_controller.h"
+
+namespace webrtc {
+namespace voe {
+
+TEST(ChannelReceiveTest, CreateAndDestroy) {
+ GlobalSimulatedTimeController time_controller(Timestamp::Seconds(5555));
+ uint32_t local_ssrc = 1111;
+ uint32_t remote_ssrc = 2222;
+ webrtc::CryptoOptions crypto_options;
+ rtc::scoped_refptr<test::MockAudioDeviceModule> audio_device_module =
+ test::MockAudioDeviceModule::CreateNice();
+ MockTransport transport;
+ auto channel = CreateChannelReceive(
+ time_controller.GetClock(),
+ /* neteq_factory= */ nullptr, audio_device_module.get(), &transport,
+ /* rtc_event_log= */ nullptr, local_ssrc, remote_ssrc,
+ /* jitter_buffer_max_packets= */ 0,
+ /* jitter_buffer_fast_playout= */ false,
+ /* jitter_buffer_min_delay_ms= */ 0,
+ /* enable_non_sender_rtt= */ false,
+ /* decoder_factory= */ nullptr,
+ /* codec_pair_id= */ absl::nullopt,
+ /* frame_decryptor_interface= */ nullptr, crypto_options,
+ /* frame_transformer= */ nullptr);
+ EXPECT_TRUE(!!channel);
+}
+
+} // namespace voe
+} // namespace webrtc