Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Unified Diff: media/cast/test/end2end_unittest.cc

Issue 1515023002: Simplify interface for media/cast: CastTransportSenderImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/cast/test/cast_benchmarks.cc ('k') | media/cast/test/loopback_transport.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/test/end2end_unittest.cc
diff --git a/media/cast/test/end2end_unittest.cc b/media/cast/test/end2end_unittest.cc
index 2dd2f934f1c928bb444e4b8ebb4eedd3c616a12e..7145ba369a3a9868427ce91042aa783e3da2f062 100644
--- a/media/cast/test/end2end_unittest.cc
+++ b/media/cast/test/end2end_unittest.cc
@@ -94,12 +94,6 @@ std::string ConvertFromBase16String(const std::string& base_16) {
return compressed;
}
-void UpdateCastTransportStatus(CastTransportStatus status) {
- bool result = (status == TRANSPORT_AUDIO_INITIALIZED ||
- status == TRANSPORT_VIDEO_INITIALIZED);
- EXPECT_TRUE(result);
-}
-
void ExpectSuccessOperationalStatus(OperationalStatus status) {
EXPECT_EQ(STATUS_INITIALIZED, status);
}
@@ -213,6 +207,11 @@ class LoopBackTransport : public PacketSender {
int64_t GetBytesSent() final { return bytes_sent_; }
+ void StartReceiving(
+ const PacketReceiverCallbackWithStatus& packet_receiver) final {}
+
+ void StopReceiving() final {}
+
void SetSendPackets(bool send_packets) { send_packets_ = send_packets; }
void DropAllPacketsBelongingToOddFrames() {
@@ -397,6 +396,11 @@ class TestReceiverVideoCallback
// The actual test class, generate synthetic data for both audio and video and
// send those through the sender and receiver and analyzes the result.
class End2EndTest : public ::testing::Test {
+ public:
+ void ReceivePacket(scoped_ptr<media::cast::Packet> packet) {
+ cast_receiver_->ReceivePacket(std::move(packet));
+ };
+
protected:
End2EndTest()
: start_time_(),
@@ -417,8 +421,8 @@ class End2EndTest : public ::testing::Test {
task_runner_receiver_,
task_runner_receiver_,
task_runner_receiver_)),
- receiver_to_sender_(cast_environment_receiver_),
- sender_to_receiver_(cast_environment_sender_),
+ receiver_to_sender_(new LoopBackTransport(cast_environment_receiver_)),
+ sender_to_receiver_(new LoopBackTransport(cast_environment_sender_)),
test_receiver_audio_callback_(new TestReceiverAudioCallback()),
test_receiver_video_callback_(new TestReceiverVideoCallback()) {
testing_clock_.Advance(
@@ -549,68 +553,7 @@ class End2EndTest : public ::testing::Test {
}
}
- void ReceivePacket(scoped_ptr<Packet> packet) {
- cast_receiver_->ReceivePacket(std::move(packet));
- }
-
- void Create() {
- net::IPEndPoint dummy_endpoint;
- transport_sender_.reset(new CastTransportSenderImpl(
- nullptr, testing_clock_sender_, dummy_endpoint, dummy_endpoint,
- make_scoped_ptr(new base::DictionaryValue),
- base::Bind(&UpdateCastTransportStatus),
- base::Bind(&LogEventDispatcher::DispatchBatchOfEvents,
- base::Unretained(cast_environment_sender_->logger())),
- base::TimeDelta::FromMilliseconds(1), task_runner_sender_,
- PacketReceiverCallback(), &sender_to_receiver_));
-
- transport_receiver_.reset(new CastTransportSenderImpl(
- nullptr, testing_clock_sender_, dummy_endpoint, dummy_endpoint,
- make_scoped_ptr(new base::DictionaryValue),
- base::Bind(&UpdateCastTransportStatus),
- base::Bind(&LogEventDispatcher::DispatchBatchOfEvents,
- base::Unretained(cast_environment_receiver_->logger())),
- base::TimeDelta::FromMilliseconds(1), task_runner_sender_,
- base::Bind(&End2EndTest::ReceivePacket, base::Unretained(this)),
- &receiver_to_sender_));
-
- cast_receiver_ = CastReceiver::Create(cast_environment_receiver_,
- audio_receiver_config_,
- video_receiver_config_,
- transport_receiver_.get());
-
- cast_sender_ =
- CastSender::Create(cast_environment_sender_, transport_sender_.get());
-
- // Initializing audio and video senders.
- cast_sender_->InitializeAudio(
- audio_sender_config_,
- base::Bind(&ExpectSuccessOperationalStatus));
- cast_sender_->InitializeVideo(
- video_sender_config_,
- base::Bind(&ExpectSuccessOperationalStatus),
- CreateDefaultVideoEncodeAcceleratorCallback(),
- CreateDefaultVideoEncodeMemoryCallback());
- task_runner_->RunTasks();
-
- receiver_to_sender_.SetPacketReceiver(
- transport_sender_->PacketReceiverForTesting(),
- task_runner_,
- &testing_clock_);
- sender_to_receiver_.SetPacketReceiver(
- transport_receiver_->PacketReceiverForTesting(),
- task_runner_,
- &testing_clock_);
-
- audio_frame_input_ = cast_sender_->audio_frame_input();
- video_frame_input_ = cast_sender_->video_frame_input();
-
- audio_bus_factory_.reset(
- new TestAudioBusFactory(audio_sender_config_.channels,
- audio_sender_config_.frequency,
- kSoundFrequency,
- kSoundVolume));
- }
+ void Create();
~End2EndTest() override {
cast_environment_sender_->logger()->Unsubscribe(&event_subscriber_sender_);
@@ -916,8 +859,9 @@ class End2EndTest : public ::testing::Test {
scoped_refptr<CastEnvironment> cast_environment_sender_;
scoped_refptr<CastEnvironment> cast_environment_receiver_;
- LoopBackTransport receiver_to_sender_;
- LoopBackTransport sender_to_receiver_;
+ LoopBackTransport* receiver_to_sender_; // Owned by CastTransportSender.
+ LoopBackTransport* sender_to_receiver_; // Owned by CastTransportSender.
+
scoped_ptr<CastTransportSenderImpl> transport_sender_;
scoped_ptr<CastTransportSenderImpl> transport_receiver_;
@@ -940,6 +884,83 @@ class End2EndTest : public ::testing::Test {
base::MessageLoop message_loop_;
};
+namespace {
+
+class TransportClient : public CastTransportSender::Client {
+ public:
+ TransportClient(LogEventDispatcher* log_event_dispatcher,
+ End2EndTest* e2e_test)
+ : log_event_dispatcher_(log_event_dispatcher), e2e_test_(e2e_test) {}
+
+ void OnStatusChanged(media::cast::CastTransportStatus status) final {
+ bool result = (status == TRANSPORT_AUDIO_INITIALIZED ||
+ status == TRANSPORT_VIDEO_INITIALIZED);
+ EXPECT_TRUE(result);
+ };
+ void OnLoggingEventsReceived(
+ scoped_ptr<std::vector<FrameEvent>> frame_events,
+ scoped_ptr<std::vector<PacketEvent>> packet_events) final {
+ log_event_dispatcher_->DispatchBatchOfEvents(std::move(frame_events),
+ std::move(packet_events));
+ };
+ void ProcessRtpPacket(scoped_ptr<Packet> packet) final {
+ if (e2e_test_)
+ e2e_test_->ReceivePacket(std::move(packet));
+ };
+
+ private:
+ LogEventDispatcher* const log_event_dispatcher_; // Not owned by this class.
+ End2EndTest* const e2e_test_; // Not owned by this class.
+
+ DISALLOW_COPY_AND_ASSIGN(TransportClient);
+};
+
+} // namespace
+
+void End2EndTest::Create() {
+ transport_sender_.reset(new CastTransportSenderImpl(
+ testing_clock_sender_, base::TimeDelta::FromMilliseconds(1),
+ make_scoped_ptr(
+ new TransportClient(cast_environment_sender_->logger(), nullptr)),
+ make_scoped_ptr(sender_to_receiver_), task_runner_sender_));
+
+ transport_receiver_.reset(new CastTransportSenderImpl(
+ testing_clock_sender_, base::TimeDelta::FromMilliseconds(1),
+ make_scoped_ptr(
+ new TransportClient(cast_environment_receiver_->logger(), this)),
+ make_scoped_ptr(receiver_to_sender_), task_runner_sender_));
+
+ cast_receiver_ =
+ CastReceiver::Create(cast_environment_receiver_, audio_receiver_config_,
+ video_receiver_config_, transport_receiver_.get());
+
+ cast_sender_ =
+ CastSender::Create(cast_environment_sender_, transport_sender_.get());
+
+ // Initializing audio and video senders.
+ cast_sender_->InitializeAudio(audio_sender_config_,
+ base::Bind(&ExpectSuccessOperationalStatus));
+ cast_sender_->InitializeVideo(video_sender_config_,
+ base::Bind(&ExpectSuccessOperationalStatus),
+ CreateDefaultVideoEncodeAcceleratorCallback(),
+ CreateDefaultVideoEncodeMemoryCallback());
+ task_runner_->RunTasks();
+
+ receiver_to_sender_->SetPacketReceiver(
+ transport_sender_->PacketReceiverForTesting(), task_runner_,
+ &testing_clock_);
+ sender_to_receiver_->SetPacketReceiver(
+ transport_receiver_->PacketReceiverForTesting(), task_runner_,
+ &testing_clock_);
+
+ audio_frame_input_ = cast_sender_->audio_frame_input();
+ video_frame_input_ = cast_sender_->video_frame_input();
+
+ audio_bus_factory_.reset(new TestAudioBusFactory(
+ audio_sender_config_.channels, audio_sender_config_.frequency,
+ kSoundFrequency, kSoundVolume));
+}
+
TEST_F(End2EndTest, LoopWithLosslessEncoding) {
Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
Create();
@@ -980,7 +1001,7 @@ TEST_F(End2EndTest, DISABLED_StartSenderBeforeReceiver) {
int frame_number = 0;
int audio_diff = kFrameTimerMs;
- sender_to_receiver_.SetSendPackets(false);
+ sender_to_receiver_->SetSendPackets(false);
const int test_delay_ms = 100;
@@ -1015,7 +1036,7 @@ TEST_F(End2EndTest, DISABLED_StartSenderBeforeReceiver) {
}
RunTasks(test_delay_ms);
- sender_to_receiver_.SetSendPackets(true);
+ sender_to_receiver_->SetSendPackets(true);
int num_audio_frames_requested = 0;
for (int j = 0; j < 10; ++j) {
@@ -1142,8 +1163,8 @@ TEST_F(End2EndTest, SmoothPlayoutWithFivePercentClockRateSkew) {
TEST_F(End2EndTest, EvilNetwork) {
Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
- receiver_to_sender_.SetPacketPipe(test::EvilNetwork());
- sender_to_receiver_.SetPacketPipe(test::EvilNetwork());
+ receiver_to_sender_->SetPacketPipe(test::EvilNetwork());
+ sender_to_receiver_->SetPacketPipe(test::EvilNetwork());
Create();
StartBasicPlayer();
@@ -1164,8 +1185,8 @@ TEST_F(End2EndTest, EvilNetwork) {
// at a much higher frame rate.
TEST_F(End2EndTest, ShoveHighFrameRateDownYerThroat) {
Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
- receiver_to_sender_.SetPacketPipe(test::EvilNetwork());
- sender_to_receiver_.SetPacketPipe(test::EvilNetwork());
+ receiver_to_sender_->SetPacketPipe(test::EvilNetwork());
+ sender_to_receiver_->SetPacketPipe(test::EvilNetwork());
Create();
StartBasicPlayer();
@@ -1185,7 +1206,7 @@ TEST_F(End2EndTest, ShoveHighFrameRateDownYerThroat) {
TEST_F(End2EndTest, OldPacketNetwork) {
Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16);
- sender_to_receiver_.SetPacketPipe(test::NewRandomDrop(0.01));
+ sender_to_receiver_->SetPacketPipe(test::NewRandomDrop(0.01));
scoped_ptr<test::PacketPipe> echo_chamber(
test::NewDuplicateAndDelay(1, 10 * kFrameTimerMs));
echo_chamber->AppendToPipe(
@@ -1197,7 +1218,7 @@ TEST_F(End2EndTest, OldPacketNetwork) {
echo_chamber->AppendToPipe(
test::NewDuplicateAndDelay(1, 160 * kFrameTimerMs));
- receiver_to_sender_.SetPacketPipe(std::move(echo_chamber));
+ receiver_to_sender_->SetPacketPipe(std::move(echo_chamber));
Create();
StartBasicPlayer();
« no previous file with comments | « media/cast/test/cast_benchmarks.cc ('k') | media/cast/test/loopback_transport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698