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

Side by Side Diff: webrtc/pc/rtptransport_unittest.cc

Issue 2812243005: Move ready to send logic from BaseChannel to RtpTransport. (Closed)
Patch Set: Remove dcheck that does not currently hold. Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « webrtc/pc/rtptransport.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include <string>
12
13 #include "webrtc/base/gunit.h"
14 #include "webrtc/p2p/base/fakepackettransport.h"
15 #include "webrtc/pc/rtptransport.h"
16
17 namespace webrtc {
18
19 class RtpTransportTest : public testing::Test {};
20
21 constexpr bool kMuxDisabled = false;
22 constexpr bool kMuxEnabled = true;
23
24 TEST_F(RtpTransportTest, SetRtcpParametersCantDisableRtcpMux) {
25 RtpTransport transport(kMuxDisabled);
26 RtcpParameters params;
27 transport.SetRtcpParameters(params);
28 params.mux = false;
29 EXPECT_FALSE(transport.SetRtcpParameters(params).ok());
30 }
31
32 TEST_F(RtpTransportTest, SetRtcpParametersEmptyCnameUsesExisting) {
33 static const char kName[] = "name";
34 RtpTransport transport(kMuxDisabled);
35 RtcpParameters params_with_name;
36 params_with_name.cname = kName;
37 transport.SetRtcpParameters(params_with_name);
38 EXPECT_EQ(transport.GetRtcpParameters().cname, kName);
39
40 RtcpParameters params_without_name;
41 transport.SetRtcpParameters(params_without_name);
42 EXPECT_EQ(transport.GetRtcpParameters().cname, kName);
43 }
44
45 class SignalObserver : public sigslot::has_slots<> {
46 public:
47 explicit SignalObserver(RtpTransport* transport) {
48 transport->SignalReadyToSend.connect(this, &SignalObserver::OnReadyToSend);
49 }
50 void OnReadyToSend(bool ready) { ready_ = ready; }
51 bool ready_ = false;
52 };
53
54 TEST_F(RtpTransportTest, SettingRtcpAndRtpSignalsReady) {
55 RtpTransport transport(kMuxDisabled);
56 SignalObserver observer(&transport);
57 rtc::FakePacketTransport fake_rtcp("fake_rtcp");
58 fake_rtcp.SetWritable(true);
59 rtc::FakePacketTransport fake_rtp("fake_rtp");
60 fake_rtp.SetWritable(true);
61
62 transport.SetRtcpPacketTransport(&fake_rtcp); // rtcp ready
63 EXPECT_FALSE(observer.ready_);
64 transport.SetRtpPacketTransport(&fake_rtp); // rtp ready
65 EXPECT_TRUE(observer.ready_);
66 }
67
68 TEST_F(RtpTransportTest, SettingRtpAndRtcpSignalsReady) {
69 RtpTransport transport(kMuxDisabled);
70 SignalObserver observer(&transport);
71 rtc::FakePacketTransport fake_rtcp("fake_rtcp");
72 fake_rtcp.SetWritable(true);
73 rtc::FakePacketTransport fake_rtp("fake_rtp");
74 fake_rtp.SetWritable(true);
75
76 transport.SetRtpPacketTransport(&fake_rtp); // rtp ready
77 EXPECT_FALSE(observer.ready_);
78 transport.SetRtcpPacketTransport(&fake_rtcp); // rtcp ready
79 EXPECT_TRUE(observer.ready_);
80 }
81
82 TEST_F(RtpTransportTest, SettingRtpWithRtcpMuxEnabledSignalsReady) {
83 RtpTransport transport(kMuxEnabled);
84 SignalObserver observer(&transport);
85 rtc::FakePacketTransport fake_rtp("fake_rtp");
86 fake_rtp.SetWritable(true);
87
88 transport.SetRtpPacketTransport(&fake_rtp); // rtp ready
89 EXPECT_TRUE(observer.ready_);
90 }
91
92 TEST_F(RtpTransportTest, DisablingRtcpMuxSignalsNotReady) {
93 RtpTransport transport(kMuxEnabled);
94 SignalObserver observer(&transport);
95 rtc::FakePacketTransport fake_rtp("fake_rtp");
96 fake_rtp.SetWritable(true);
97
98 transport.SetRtpPacketTransport(&fake_rtp); // rtp ready
99 EXPECT_TRUE(observer.ready_);
100
101 transport.SetRtcpMuxEnabled(false);
102 EXPECT_FALSE(observer.ready_);
103 }
104
105 TEST_F(RtpTransportTest, EnablingRtcpMuxSignalsReady) {
106 RtpTransport transport(kMuxDisabled);
107 SignalObserver observer(&transport);
108 rtc::FakePacketTransport fake_rtp("fake_rtp");
109 fake_rtp.SetWritable(true);
110
111 transport.SetRtpPacketTransport(&fake_rtp); // rtp ready
112 EXPECT_FALSE(observer.ready_);
113
114 transport.SetRtcpMuxEnabled(true);
115 EXPECT_TRUE(observer.ready_);
116 }
117
118 class SignalCounter : public sigslot::has_slots<> {
119 public:
120 explicit SignalCounter(RtpTransport* transport) {
121 transport->SignalReadyToSend.connect(this, &SignalCounter::OnReadyToSend);
122 }
123 void OnReadyToSend(bool ready) { ++count_; }
124 int count_ = 0;
125 };
126
127 TEST_F(RtpTransportTest, ChangingReadyToSendStateOnlySignalsWhenChanged) {
128 RtpTransport transport(kMuxEnabled);
129 SignalCounter observer(&transport);
130 rtc::FakePacketTransport fake_rtp("fake_rtp");
131 fake_rtp.SetWritable(true);
132
133 // State changes, so we should signal.
134 transport.SetRtpPacketTransport(&fake_rtp);
135 EXPECT_EQ(observer.count_, 1);
136
137 // State does not change, so we should not signal.
138 transport.SetRtpPacketTransport(&fake_rtp);
139 EXPECT_EQ(observer.count_, 1);
140
141 // State does not change, so we should not signal.
142 transport.SetRtcpMuxEnabled(true);
143 EXPECT_EQ(observer.count_, 1);
144
145 // State changes, so we should signal.
146 transport.SetRtcpMuxEnabled(false);
147 EXPECT_EQ(observer.count_, 2);
148 }
149
150 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/pc/rtptransport.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698