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

Unified Diff: webrtc/call/call_unittest.cc

Issue 1542653002: Add audio streams to CallTest and a first A/V call test. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Create audio devices earlier Created 5 years 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 | « webrtc/call/call_perf_tests.cc ('k') | webrtc/call/packet_injection_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/call/call_unittest.cc
diff --git a/webrtc/call/call_unittest.cc b/webrtc/call/call_unittest.cc
index 75c8238a5bd94bc3726e7f61c276e6963a1a64c1..d38afe6337f992331b3d21e02ebb4da48f1f9eec 100644
--- a/webrtc/call/call_unittest.cc
+++ b/webrtc/call/call_unittest.cc
@@ -14,6 +14,8 @@
#include "webrtc/audio_state.h"
#include "webrtc/call.h"
+#include "webrtc/modules/include/module_common_types.h"
+#include "webrtc/test/call_test.h"
#include "webrtc/test/mock_voice_engine.h"
namespace {
@@ -106,4 +108,85 @@ TEST(CallTest, CreateDestroy_AudioReceiveStreams) {
streams.clear();
}
}
+
+namespace test {
+
+class MediumCallTest : public CallTest {};
+
+TEST_F(MediumCallTest, TransportSeqNumOnAudioAndVideo) {
+ class TransportSequenceNumberTest : public test::EndToEndTest {
+ public:
+ TransportSequenceNumberTest()
+ : EndToEndTest(test::CallTest::kDefaultTimeoutMs),
+ video_observed_(false),
+ audio_observed_(false) {
+ parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber,
+ kExtensionId);
+ }
+
+ size_t GetNumVideoStreams() const override { return 1; }
+ size_t GetNumAudioStreams() const override { return 1; }
+
+ void ModifyVideoConfigs(
+ VideoSendStream::Config* send_config,
+ std::vector<VideoReceiveStream::Config>* receive_configs,
+ VideoEncoderConfig* encoder_config) {
+ send_config->rtp.extensions.clear();
+ send_config->rtp.extensions.push_back(
+ RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
+ (*receive_configs)[0].rtp.extensions.clear();
+ (*receive_configs)[0].rtp.extensions.push_back(
+ RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
+ }
+
+ void ModifyAudioConfigs(
+ AudioSendStream::Config* send_config,
+ std::vector<AudioReceiveStream::Config>* receive_configs) {
+ send_config->rtp.extensions.clear();
+ send_config->rtp.extensions.push_back(
+ RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
+ (*receive_configs)[0].rtp.extensions.clear();
+ (*receive_configs)[0].rtp.extensions.push_back(
+ RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
+ }
+
+ Action OnSendRtp(const uint8_t* packet, size_t length) override {
+ RTPHeader header;
+ EXPECT_TRUE(parser_->Parse(packet, length, &header));
+ EXPECT_TRUE(header.extension.hasTransportSequenceNumber);
+ // Unwrap packet id and verify uniqueness.
+ int64_t packet_id =
+ unwrapper_.Unwrap(header.extension.transportSequenceNumber);
+ EXPECT_TRUE(received_packet_ids_.insert(packet_id).second);
+
+ if (header.ssrc == kVideoSendSsrcs[0])
+ video_observed_ = true;
+ if (header.ssrc == kAudioSendSsrc)
+ audio_observed_ = true;
+ if (audio_observed_ && video_observed_ &&
+ received_packet_ids_.size() == 50) {
+ size_t packet_id_range =
+ *received_packet_ids_.rbegin() - *received_packet_ids_.begin() + 1;
+ EXPECT_EQ(received_packet_ids_.size(), packet_id_range);
+ observation_complete_.Set();
+ }
+ return SEND_PACKET;
+ }
+
+ void PerformTest() override {
+ EXPECT_TRUE(Wait()) << "Timed out while waiting for audio and video "
+ "packets with transport sequence number.";
+ }
+
+ private:
+ const int kExtensionId = 8;
+ bool video_observed_;
+ bool audio_observed_;
+ SequenceNumberUnwrapper unwrapper_;
+ std::set<int64_t> received_packet_ids_;
+ } test;
+
+ RunBaseTest(&test, FakeNetworkPipe::Config());
pbos-webrtc 2015/12/28 22:22:31 Wondering if this could be confused being put unde
stefan-webrtc 2015/12/29 09:37:06 I moved it in the latest patch set. Still under te
+}
+} // namespace test
} // namespace webrtc
« no previous file with comments | « webrtc/call/call_perf_tests.cc ('k') | webrtc/call/packet_injection_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698