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

Side by Side Diff: talk/app/webrtc/peerconnectionfactory_unittest.cc

Issue 1520963002: Removing webrtc::PortAllocatorFactoryInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing patch conflicts 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 10 matching lines...) Expand all
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 #include <string> 28 #include <string>
29 #include <utility> 29 #include <utility>
30 30
31 #include "talk/app/webrtc/fakeportallocatorfactory.h"
32 #include "talk/app/webrtc/mediastreaminterface.h" 31 #include "talk/app/webrtc/mediastreaminterface.h"
33 #include "talk/app/webrtc/peerconnectionfactory.h" 32 #include "talk/app/webrtc/peerconnectionfactory.h"
34 #include "talk/app/webrtc/test/fakedtlsidentitystore.h" 33 #include "talk/app/webrtc/test/fakedtlsidentitystore.h"
35 #include "talk/app/webrtc/test/fakevideotrackrenderer.h" 34 #include "talk/app/webrtc/test/fakevideotrackrenderer.h"
36 #include "talk/app/webrtc/videosourceinterface.h" 35 #include "talk/app/webrtc/videosourceinterface.h"
37 #include "talk/media/base/fakevideocapturer.h" 36 #include "talk/media/base/fakevideocapturer.h"
38 #include "talk/media/webrtc/webrtccommon.h" 37 #include "talk/media/webrtc/webrtccommon.h"
39 #include "talk/media/webrtc/webrtcvoe.h" 38 #include "talk/media/webrtc/webrtcvoe.h"
40 #include "webrtc/base/gunit.h" 39 #include "webrtc/base/gunit.h"
41 #include "webrtc/base/scoped_ptr.h" 40 #include "webrtc/base/scoped_ptr.h"
42 #include "webrtc/base/thread.h" 41 #include "webrtc/base/thread.h"
42 #include "webrtc/p2p/client/fakeportallocator.h"
43 43
44 using webrtc::DataChannelInterface; 44 using webrtc::DataChannelInterface;
45 using webrtc::DtlsIdentityStoreInterface; 45 using webrtc::DtlsIdentityStoreInterface;
46 using webrtc::FakeVideoTrackRenderer; 46 using webrtc::FakeVideoTrackRenderer;
47 using webrtc::MediaStreamInterface; 47 using webrtc::MediaStreamInterface;
48 using webrtc::PeerConnectionFactoryInterface; 48 using webrtc::PeerConnectionFactoryInterface;
49 using webrtc::PeerConnectionInterface; 49 using webrtc::PeerConnectionInterface;
50 using webrtc::PeerConnectionObserver; 50 using webrtc::PeerConnectionObserver;
51 using webrtc::PortAllocatorFactoryInterface;
52 using webrtc::VideoSourceInterface; 51 using webrtc::VideoSourceInterface;
53 using webrtc::VideoTrackInterface; 52 using webrtc::VideoTrackInterface;
54 53
55 namespace { 54 namespace {
56 55
57 typedef std::vector<PortAllocatorFactoryInterface::StunConfiguration>
58 StunConfigurations;
59 typedef std::vector<PortAllocatorFactoryInterface::TurnConfiguration>
60 TurnConfigurations;
61
62 static const char kStunIceServer[] = "stun:stun.l.google.com:19302"; 56 static const char kStunIceServer[] = "stun:stun.l.google.com:19302";
63 static const char kTurnIceServer[] = "turn:test%40hello.com@test.com:1234"; 57 static const char kTurnIceServer[] = "turn:test%40hello.com@test.com:1234";
64 static const char kTurnIceServerWithTransport[] = 58 static const char kTurnIceServerWithTransport[] =
65 "turn:test@hello.com?transport=tcp"; 59 "turn:test@hello.com?transport=tcp";
66 static const char kSecureTurnIceServer[] = 60 static const char kSecureTurnIceServer[] =
67 "turns:test@hello.com?transport=tcp"; 61 "turns:test@hello.com?transport=tcp";
68 static const char kSecureTurnIceServerWithoutTransportParam[] = 62 static const char kSecureTurnIceServerWithoutTransportParam[] =
69 "turns:test_no_transport@hello.com:443"; 63 "turns:test_no_transport@hello.com:443";
70 static const char kSecureTurnIceServerWithoutTransportAndPortParam[] = 64 static const char kSecureTurnIceServerWithoutTransportAndPortParam[] =
71 "turns:test_no_transport@hello.com"; 65 "turns:test_no_transport@hello.com";
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 98
105 class PeerConnectionFactoryTest : public testing::Test { 99 class PeerConnectionFactoryTest : public testing::Test {
106 void SetUp() { 100 void SetUp() {
107 factory_ = webrtc::CreatePeerConnectionFactory(rtc::Thread::Current(), 101 factory_ = webrtc::CreatePeerConnectionFactory(rtc::Thread::Current(),
108 rtc::Thread::Current(), 102 rtc::Thread::Current(),
109 NULL, 103 NULL,
110 NULL, 104 NULL,
111 NULL); 105 NULL);
112 106
113 ASSERT_TRUE(factory_.get() != NULL); 107 ASSERT_TRUE(factory_.get() != NULL);
114 allocator_factory_ = webrtc::FakePortAllocatorFactory::Create(); 108 port_allocator_.reset(
109 new cricket::FakePortAllocator(rtc::Thread::Current(), nullptr));
110 raw_port_allocator_ = port_allocator_.get();
115 } 111 }
116 112
117 protected: 113 protected:
118 void VerifyStunConfigurations(StunConfigurations stun_config) { 114 void VerifyStunServers(cricket::ServerAddresses stun_servers) {
119 webrtc::FakePortAllocatorFactory* allocator = 115 EXPECT_EQ(stun_servers, raw_port_allocator_->stun_servers());
120 static_cast<webrtc::FakePortAllocatorFactory*>(
121 allocator_factory_.get());
122 ASSERT_TRUE(allocator != NULL);
123 EXPECT_EQ(stun_config.size(), allocator->stun_configs().size());
124 for (size_t i = 0; i < stun_config.size(); ++i) {
125 EXPECT_EQ(stun_config[i].server.ToString(),
126 allocator->stun_configs()[i].server.ToString());
127 }
128 } 116 }
129 117
130 void VerifyTurnConfigurations(TurnConfigurations turn_config) { 118 void VerifyTurnServers(std::vector<cricket::RelayServerConfig> turn_servers) {
131 webrtc::FakePortAllocatorFactory* allocator = 119 EXPECT_EQ(turn_servers.size(), raw_port_allocator_->turn_servers().size());
132 static_cast<webrtc::FakePortAllocatorFactory*>( 120 for (size_t i = 0; i < turn_servers.size(); ++i) {
133 allocator_factory_.get()); 121 ASSERT_EQ(1u, turn_servers[i].ports.size());
134 ASSERT_TRUE(allocator != NULL); 122 EXPECT_EQ(1u, raw_port_allocator_->turn_servers()[i].ports.size());
135 EXPECT_EQ(turn_config.size(), allocator->turn_configs().size()); 123 EXPECT_EQ(
136 for (size_t i = 0; i < turn_config.size(); ++i) { 124 turn_servers[i].ports[0].address.ToString(),
137 EXPECT_EQ(turn_config[i].server.ToString(), 125 raw_port_allocator_->turn_servers()[i].ports[0].address.ToString());
138 allocator->turn_configs()[i].server.ToString()); 126 EXPECT_EQ(turn_servers[i].ports[0].proto,
139 EXPECT_EQ(turn_config[i].username, allocator->turn_configs()[i].username); 127 raw_port_allocator_->turn_servers()[i].ports[0].proto);
140 EXPECT_EQ(turn_config[i].password, allocator->turn_configs()[i].password); 128 EXPECT_EQ(turn_servers[i].credentials.username,
141 EXPECT_EQ(turn_config[i].transport_type, 129 raw_port_allocator_->turn_servers()[i].credentials.username);
142 allocator->turn_configs()[i].transport_type); 130 EXPECT_EQ(turn_servers[i].credentials.password,
131 raw_port_allocator_->turn_servers()[i].credentials.password);
143 } 132 }
144 } 133 }
145 134
146 rtc::scoped_refptr<PeerConnectionFactoryInterface> factory_; 135 rtc::scoped_refptr<PeerConnectionFactoryInterface> factory_;
147 NullPeerConnectionObserver observer_; 136 NullPeerConnectionObserver observer_;
148 rtc::scoped_refptr<PortAllocatorFactoryInterface> allocator_factory_; 137 rtc::scoped_ptr<cricket::FakePortAllocator> port_allocator_;
138 // Since the PC owns the port allocator after it's been initialized,
139 // this should only be used when known to be safe.
140 cricket::FakePortAllocator* raw_port_allocator_;
149 }; 141 };
150 142
151 // Verify creation of PeerConnection using internal ADM, video factory and 143 // Verify creation of PeerConnection using internal ADM, video factory and
152 // internal libjingle threads. 144 // internal libjingle threads.
153 TEST(PeerConnectionFactoryTestInternal, CreatePCUsingInternalModules) { 145 TEST(PeerConnectionFactoryTestInternal, CreatePCUsingInternalModules) {
154 rtc::scoped_refptr<PeerConnectionFactoryInterface> factory( 146 rtc::scoped_refptr<PeerConnectionFactoryInterface> factory(
155 webrtc::CreatePeerConnectionFactory()); 147 webrtc::CreatePeerConnectionFactory());
156 148
157 NullPeerConnectionObserver observer; 149 NullPeerConnectionObserver observer;
158 webrtc::PeerConnectionInterface::IceServers servers; 150 webrtc::PeerConnectionInterface::RTCConfiguration config;
159 151
160 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( 152 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store(
161 new FakeDtlsIdentityStore()); 153 new FakeDtlsIdentityStore());
162 rtc::scoped_refptr<PeerConnectionInterface> pc(factory->CreatePeerConnection( 154 rtc::scoped_refptr<PeerConnectionInterface> pc(factory->CreatePeerConnection(
163 servers, nullptr, nullptr, std::move(dtls_identity_store), &observer)); 155 config, nullptr, nullptr, std::move(dtls_identity_store), &observer));
164 156
165 EXPECT_TRUE(pc.get() != nullptr); 157 EXPECT_TRUE(pc.get() != nullptr);
166 } 158 }
167 159
168 // This test verifies creation of PeerConnection with valid STUN and TURN 160 // This test verifies creation of PeerConnection with valid STUN and TURN
169 // configuration. Also verifies the URL's parsed correctly as expected. 161 // configuration. Also verifies the URL's parsed correctly as expected.
170 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServers) { 162 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServers) {
171 PeerConnectionInterface::RTCConfiguration config; 163 PeerConnectionInterface::RTCConfiguration config;
172 webrtc::PeerConnectionInterface::IceServer ice_server; 164 webrtc::PeerConnectionInterface::IceServer ice_server;
173 ice_server.uri = kStunIceServer; 165 ice_server.uri = kStunIceServer;
174 config.servers.push_back(ice_server); 166 config.servers.push_back(ice_server);
175 ice_server.uri = kTurnIceServer; 167 ice_server.uri = kTurnIceServer;
176 ice_server.password = kTurnPassword; 168 ice_server.password = kTurnPassword;
177 config.servers.push_back(ice_server); 169 config.servers.push_back(ice_server);
178 ice_server.uri = kTurnIceServerWithTransport; 170 ice_server.uri = kTurnIceServerWithTransport;
179 ice_server.password = kTurnPassword; 171 ice_server.password = kTurnPassword;
180 config.servers.push_back(ice_server); 172 config.servers.push_back(ice_server);
181 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store( 173 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
182 new FakeDtlsIdentityStore()); 174 new FakeDtlsIdentityStore());
183 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( 175 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
184 config, nullptr, allocator_factory_.get(), std::move(dtls_identity_store), 176 config, nullptr, std::move(port_allocator_),
185 &observer_)); 177 std::move(dtls_identity_store), &observer_));
186 EXPECT_TRUE(pc.get() != NULL); 178 ASSERT_TRUE(pc.get() != NULL);
187 StunConfigurations stun_configs; 179 cricket::ServerAddresses stun_servers;
188 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun1( 180 rtc::SocketAddress stun1("stun.l.google.com", 19302);
189 "stun.l.google.com", 19302); 181 stun_servers.insert(stun1);
190 stun_configs.push_back(stun1); 182 VerifyStunServers(stun_servers);
191 VerifyStunConfigurations(stun_configs); 183 std::vector<cricket::RelayServerConfig> turn_servers;
192 TurnConfigurations turn_configs; 184 cricket::RelayServerConfig turn1("test.com", 1234, "test@hello.com",
193 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn1( 185 kTurnPassword, cricket::PROTO_UDP, false);
194 "test.com", 1234, "test@hello.com", kTurnPassword, "udp", false); 186 turn_servers.push_back(turn1);
195 turn_configs.push_back(turn1); 187 cricket::RelayServerConfig turn2("hello.com", kDefaultStunPort, "test",
196 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn2( 188 kTurnPassword, cricket::PROTO_TCP, false);
197 "hello.com", kDefaultStunPort, "test", kTurnPassword, "tcp", false); 189 turn_servers.push_back(turn2);
198 turn_configs.push_back(turn2); 190 VerifyTurnServers(turn_servers);
199 VerifyTurnConfigurations(turn_configs);
200 } 191 }
201 192
202 // This test verifies creation of PeerConnection with valid STUN and TURN 193 // This test verifies creation of PeerConnection with valid STUN and TURN
203 // configuration. Also verifies the list of URL's parsed correctly as expected. 194 // configuration. Also verifies the list of URL's parsed correctly as expected.
204 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServersUrls) { 195 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServersUrls) {
205 PeerConnectionInterface::RTCConfiguration config; 196 PeerConnectionInterface::RTCConfiguration config;
206 webrtc::PeerConnectionInterface::IceServer ice_server; 197 webrtc::PeerConnectionInterface::IceServer ice_server;
207 ice_server.urls.push_back(kStunIceServer); 198 ice_server.urls.push_back(kStunIceServer);
208 ice_server.urls.push_back(kTurnIceServer); 199 ice_server.urls.push_back(kTurnIceServer);
209 ice_server.urls.push_back(kTurnIceServerWithTransport); 200 ice_server.urls.push_back(kTurnIceServerWithTransport);
210 ice_server.password = kTurnPassword; 201 ice_server.password = kTurnPassword;
211 config.servers.push_back(ice_server); 202 config.servers.push_back(ice_server);
212 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store( 203 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
213 new FakeDtlsIdentityStore()); 204 new FakeDtlsIdentityStore());
214 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( 205 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
215 config, nullptr, allocator_factory_.get(), std::move(dtls_identity_store), 206 config, nullptr, std::move(port_allocator_),
216 &observer_));
217 EXPECT_TRUE(pc.get() != NULL);
218 StunConfigurations stun_configs;
219 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun1(
220 "stun.l.google.com", 19302);
221 stun_configs.push_back(stun1);
222 VerifyStunConfigurations(stun_configs);
223 TurnConfigurations turn_configs;
224 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn1(
225 "test.com", 1234, "test@hello.com", kTurnPassword, "udp", false);
226 turn_configs.push_back(turn1);
227 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn2(
228 "hello.com", kDefaultStunPort, "test", kTurnPassword, "tcp", false);
229 turn_configs.push_back(turn2);
230 VerifyTurnConfigurations(turn_configs);
231 }
232
233 // This test verifies creation of PeerConnection with valid STUN and TURN
234 // configuration. Also verifies the URL's parsed correctly as expected.
235 // This version doesn't use RTCConfiguration.
236 // TODO(mallinath) - Remove this method after clients start using RTCConfig.
237 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServersOldSignature) {
238 webrtc::PeerConnectionInterface::IceServers ice_servers;
239 webrtc::PeerConnectionInterface::IceServer ice_server;
240 ice_server.uri = kStunIceServer;
241 ice_servers.push_back(ice_server);
242 ice_server.uri = kTurnIceServer;
243 ice_server.password = kTurnPassword;
244 ice_servers.push_back(ice_server);
245 ice_server.uri = kTurnIceServerWithTransport;
246 ice_server.password = kTurnPassword;
247 ice_servers.push_back(ice_server);
248 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
249 new FakeDtlsIdentityStore());
250 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
251 ice_servers, nullptr, allocator_factory_.get(),
252 std::move(dtls_identity_store), &observer_)); 207 std::move(dtls_identity_store), &observer_));
253 EXPECT_TRUE(pc.get() != NULL); 208 ASSERT_TRUE(pc.get() != NULL);
254 StunConfigurations stun_configs; 209 cricket::ServerAddresses stun_servers;
255 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun1( 210 rtc::SocketAddress stun1("stun.l.google.com", 19302);
256 "stun.l.google.com", 19302); 211 stun_servers.insert(stun1);
257 stun_configs.push_back(stun1); 212 VerifyStunServers(stun_servers);
258 VerifyStunConfigurations(stun_configs); 213 std::vector<cricket::RelayServerConfig> turn_servers;
259 TurnConfigurations turn_configs; 214 cricket::RelayServerConfig turn1("test.com", 1234, "test@hello.com",
260 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn1( 215 kTurnPassword, cricket::PROTO_UDP, false);
261 "test.com", 1234, "test@hello.com", kTurnPassword, "udp", false); 216 turn_servers.push_back(turn1);
262 turn_configs.push_back(turn1); 217 cricket::RelayServerConfig turn2("hello.com", kDefaultStunPort, "test",
263 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn2( 218 kTurnPassword, cricket::PROTO_TCP, false);
264 "hello.com", kDefaultStunPort, "test", kTurnPassword, "tcp", false); 219 turn_servers.push_back(turn2);
265 turn_configs.push_back(turn2); 220 VerifyTurnServers(turn_servers);
266 VerifyTurnConfigurations(turn_configs);
267 } 221 }
268 222
269 TEST_F(PeerConnectionFactoryTest, CreatePCUsingNoUsernameInUri) { 223 TEST_F(PeerConnectionFactoryTest, CreatePCUsingNoUsernameInUri) {
270 PeerConnectionInterface::RTCConfiguration config; 224 PeerConnectionInterface::RTCConfiguration config;
271 webrtc::PeerConnectionInterface::IceServer ice_server; 225 webrtc::PeerConnectionInterface::IceServer ice_server;
272 ice_server.uri = kStunIceServer; 226 ice_server.uri = kStunIceServer;
273 config.servers.push_back(ice_server); 227 config.servers.push_back(ice_server);
274 ice_server.uri = kTurnIceServerWithNoUsernameInUri; 228 ice_server.uri = kTurnIceServerWithNoUsernameInUri;
275 ice_server.username = kTurnUsername; 229 ice_server.username = kTurnUsername;
276 ice_server.password = kTurnPassword; 230 ice_server.password = kTurnPassword;
277 config.servers.push_back(ice_server); 231 config.servers.push_back(ice_server);
278 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store( 232 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
279 new FakeDtlsIdentityStore()); 233 new FakeDtlsIdentityStore());
280 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( 234 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
281 config, nullptr, allocator_factory_.get(), std::move(dtls_identity_store), 235 config, nullptr, std::move(port_allocator_),
282 &observer_)); 236 std::move(dtls_identity_store), &observer_));
283 EXPECT_TRUE(pc.get() != NULL); 237 ASSERT_TRUE(pc.get() != NULL);
284 TurnConfigurations turn_configs; 238 std::vector<cricket::RelayServerConfig> turn_servers;
285 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn( 239 cricket::RelayServerConfig turn("test.com", 1234, kTurnUsername,
286 "test.com", 1234, kTurnUsername, kTurnPassword, "udp", false); 240 kTurnPassword, cricket::PROTO_UDP, false);
287 turn_configs.push_back(turn); 241 turn_servers.push_back(turn);
288 VerifyTurnConfigurations(turn_configs); 242 VerifyTurnServers(turn_servers);
289 } 243 }
290 244
291 // This test verifies the PeerConnection created properly with TURN url which 245 // This test verifies the PeerConnection created properly with TURN url which
292 // has transport parameter in it. 246 // has transport parameter in it.
293 TEST_F(PeerConnectionFactoryTest, CreatePCUsingTurnUrlWithTransportParam) { 247 TEST_F(PeerConnectionFactoryTest, CreatePCUsingTurnUrlWithTransportParam) {
294 PeerConnectionInterface::RTCConfiguration config; 248 PeerConnectionInterface::RTCConfiguration config;
295 webrtc::PeerConnectionInterface::IceServer ice_server; 249 webrtc::PeerConnectionInterface::IceServer ice_server;
296 ice_server.uri = kTurnIceServerWithTransport; 250 ice_server.uri = kTurnIceServerWithTransport;
297 ice_server.password = kTurnPassword; 251 ice_server.password = kTurnPassword;
298 config.servers.push_back(ice_server); 252 config.servers.push_back(ice_server);
299 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store( 253 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
300 new FakeDtlsIdentityStore()); 254 new FakeDtlsIdentityStore());
301 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( 255 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
302 config, nullptr, allocator_factory_.get(), std::move(dtls_identity_store), 256 config, nullptr, std::move(port_allocator_),
303 &observer_)); 257 std::move(dtls_identity_store), &observer_));
304 EXPECT_TRUE(pc.get() != NULL); 258 ASSERT_TRUE(pc.get() != NULL);
305 TurnConfigurations turn_configs; 259 std::vector<cricket::RelayServerConfig> turn_servers;
306 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn( 260 cricket::RelayServerConfig turn("hello.com", kDefaultStunPort, "test",
307 "hello.com", kDefaultStunPort, "test", kTurnPassword, "tcp", false); 261 kTurnPassword, cricket::PROTO_TCP, false);
308 turn_configs.push_back(turn); 262 turn_servers.push_back(turn);
309 VerifyTurnConfigurations(turn_configs); 263 VerifyTurnServers(turn_servers);
310 } 264 }
311 265
312 TEST_F(PeerConnectionFactoryTest, CreatePCUsingSecureTurnUrl) { 266 TEST_F(PeerConnectionFactoryTest, CreatePCUsingSecureTurnUrl) {
313 PeerConnectionInterface::RTCConfiguration config; 267 PeerConnectionInterface::RTCConfiguration config;
314 webrtc::PeerConnectionInterface::IceServer ice_server; 268 webrtc::PeerConnectionInterface::IceServer ice_server;
315 ice_server.uri = kSecureTurnIceServer; 269 ice_server.uri = kSecureTurnIceServer;
316 ice_server.password = kTurnPassword; 270 ice_server.password = kTurnPassword;
317 config.servers.push_back(ice_server); 271 config.servers.push_back(ice_server);
318 ice_server.uri = kSecureTurnIceServerWithoutTransportParam; 272 ice_server.uri = kSecureTurnIceServerWithoutTransportParam;
319 ice_server.password = kTurnPassword; 273 ice_server.password = kTurnPassword;
320 config.servers.push_back(ice_server); 274 config.servers.push_back(ice_server);
321 ice_server.uri = kSecureTurnIceServerWithoutTransportAndPortParam; 275 ice_server.uri = kSecureTurnIceServerWithoutTransportAndPortParam;
322 ice_server.password = kTurnPassword; 276 ice_server.password = kTurnPassword;
323 config.servers.push_back(ice_server); 277 config.servers.push_back(ice_server);
324 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store( 278 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
325 new FakeDtlsIdentityStore()); 279 new FakeDtlsIdentityStore());
326 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( 280 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
327 config, nullptr, allocator_factory_.get(), std::move(dtls_identity_store), 281 config, nullptr, std::move(port_allocator_),
328 &observer_)); 282 std::move(dtls_identity_store), &observer_));
329 EXPECT_TRUE(pc.get() != NULL); 283 ASSERT_TRUE(pc.get() != NULL);
330 TurnConfigurations turn_configs; 284 std::vector<cricket::RelayServerConfig> turn_servers;
331 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn1( 285 cricket::RelayServerConfig turn1("hello.com", kDefaultStunTlsPort, "test",
332 "hello.com", kDefaultStunTlsPort, "test", kTurnPassword, "tcp", true); 286 kTurnPassword, cricket::PROTO_TCP, true);
333 turn_configs.push_back(turn1); 287 turn_servers.push_back(turn1);
334 // TURNS with transport param should be default to tcp. 288 // TURNS with transport param should be default to tcp.
335 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn2( 289 cricket::RelayServerConfig turn2("hello.com", 443, "test_no_transport",
336 "hello.com", 443, "test_no_transport", kTurnPassword, "tcp", true); 290 kTurnPassword, cricket::PROTO_TCP, true);
337 turn_configs.push_back(turn2); 291 turn_servers.push_back(turn2);
338 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn3( 292 cricket::RelayServerConfig turn3("hello.com", kDefaultStunTlsPort,
339 "hello.com", kDefaultStunTlsPort, "test_no_transport", 293 "test_no_transport", kTurnPassword,
340 kTurnPassword, "tcp", true); 294 cricket::PROTO_TCP, true);
341 turn_configs.push_back(turn3); 295 turn_servers.push_back(turn3);
342 VerifyTurnConfigurations(turn_configs); 296 VerifyTurnServers(turn_servers);
343 } 297 }
344 298
345 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIPLiteralAddress) { 299 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIPLiteralAddress) {
346 PeerConnectionInterface::RTCConfiguration config; 300 PeerConnectionInterface::RTCConfiguration config;
347 webrtc::PeerConnectionInterface::IceServer ice_server; 301 webrtc::PeerConnectionInterface::IceServer ice_server;
348 ice_server.uri = kStunIceServerWithIPv4Address; 302 ice_server.uri = kStunIceServerWithIPv4Address;
349 config.servers.push_back(ice_server); 303 config.servers.push_back(ice_server);
350 ice_server.uri = kStunIceServerWithIPv4AddressWithoutPort; 304 ice_server.uri = kStunIceServerWithIPv4AddressWithoutPort;
351 config.servers.push_back(ice_server); 305 config.servers.push_back(ice_server);
352 ice_server.uri = kStunIceServerWithIPv6Address; 306 ice_server.uri = kStunIceServerWithIPv6Address;
353 config.servers.push_back(ice_server); 307 config.servers.push_back(ice_server);
354 ice_server.uri = kStunIceServerWithIPv6AddressWithoutPort; 308 ice_server.uri = kStunIceServerWithIPv6AddressWithoutPort;
355 config.servers.push_back(ice_server); 309 config.servers.push_back(ice_server);
356 ice_server.uri = kTurnIceServerWithIPv6Address; 310 ice_server.uri = kTurnIceServerWithIPv6Address;
357 ice_server.password = kTurnPassword; 311 ice_server.password = kTurnPassword;
358 config.servers.push_back(ice_server); 312 config.servers.push_back(ice_server);
359 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store( 313 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store(
360 new FakeDtlsIdentityStore()); 314 new FakeDtlsIdentityStore());
361 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( 315 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection(
362 config, nullptr, allocator_factory_.get(), std::move(dtls_identity_store), 316 config, nullptr, std::move(port_allocator_),
363 &observer_)); 317 std::move(dtls_identity_store), &observer_));
364 EXPECT_TRUE(pc.get() != NULL); 318 ASSERT_TRUE(pc.get() != NULL);
365 StunConfigurations stun_configs; 319 cricket::ServerAddresses stun_servers;
366 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun1( 320 rtc::SocketAddress stun1("1.2.3.4", 1234);
367 "1.2.3.4", 1234); 321 stun_servers.insert(stun1);
368 stun_configs.push_back(stun1); 322 rtc::SocketAddress stun2("1.2.3.4", 3478);
369 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun2( 323 stun_servers.insert(stun2); // Default port
370 "1.2.3.4", 3478); 324 rtc::SocketAddress stun3("2401:fa00:4::", 1234);
371 stun_configs.push_back(stun2); // Default port 325 stun_servers.insert(stun3);
372 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun3( 326 rtc::SocketAddress stun4("2401:fa00:4::", 3478);
373 "2401:fa00:4::", 1234); 327 stun_servers.insert(stun4); // Default port
374 stun_configs.push_back(stun3); 328 VerifyStunServers(stun_servers);
375 webrtc::PortAllocatorFactoryInterface::StunConfiguration stun4(
376 "2401:fa00:4::", 3478);
377 stun_configs.push_back(stun4); // Default port
378 VerifyStunConfigurations(stun_configs);
379 329
380 TurnConfigurations turn_configs; 330 std::vector<cricket::RelayServerConfig> turn_servers;
381 webrtc::PortAllocatorFactoryInterface::TurnConfiguration turn1( 331 cricket::RelayServerConfig turn1("2401:fa00:4::", 1234, "test", kTurnPassword,
382 "2401:fa00:4::", 1234, "test", kTurnPassword, "udp", false); 332 cricket::PROTO_UDP, false);
383 turn_configs.push_back(turn1); 333 turn_servers.push_back(turn1);
384 VerifyTurnConfigurations(turn_configs); 334 VerifyTurnServers(turn_servers);
385 } 335 }
386 336
387 // This test verifies the captured stream is rendered locally using a 337 // This test verifies the captured stream is rendered locally using a
388 // local video track. 338 // local video track.
389 TEST_F(PeerConnectionFactoryTest, LocalRendering) { 339 TEST_F(PeerConnectionFactoryTest, LocalRendering) {
390 cricket::FakeVideoCapturer* capturer = new cricket::FakeVideoCapturer(); 340 cricket::FakeVideoCapturer* capturer = new cricket::FakeVideoCapturer();
391 // The source take ownership of |capturer|. 341 // The source take ownership of |capturer|.
392 rtc::scoped_refptr<VideoSourceInterface> source( 342 rtc::scoped_refptr<VideoSourceInterface> source(
393 factory_->CreateVideoSource(capturer, NULL)); 343 factory_->CreateVideoSource(capturer, NULL));
394 ASSERT_TRUE(source.get() != NULL); 344 ASSERT_TRUE(source.get() != NULL);
395 rtc::scoped_refptr<VideoTrackInterface> track( 345 rtc::scoped_refptr<VideoTrackInterface> track(
396 factory_->CreateVideoTrack("testlabel", source)); 346 factory_->CreateVideoTrack("testlabel", source));
397 ASSERT_TRUE(track.get() != NULL); 347 ASSERT_TRUE(track.get() != NULL);
398 FakeVideoTrackRenderer local_renderer(track); 348 FakeVideoTrackRenderer local_renderer(track);
399 349
400 EXPECT_EQ(0, local_renderer.num_rendered_frames()); 350 EXPECT_EQ(0, local_renderer.num_rendered_frames());
401 EXPECT_TRUE(capturer->CaptureFrame()); 351 EXPECT_TRUE(capturer->CaptureFrame());
402 EXPECT_EQ(1, local_renderer.num_rendered_frames()); 352 EXPECT_EQ(1, local_renderer.num_rendered_frames());
403 353
404 track->set_enabled(false); 354 track->set_enabled(false);
405 EXPECT_TRUE(capturer->CaptureFrame()); 355 EXPECT_TRUE(capturer->CaptureFrame());
406 EXPECT_EQ(1, local_renderer.num_rendered_frames()); 356 EXPECT_EQ(1, local_renderer.num_rendered_frames());
407 357
408 track->set_enabled(true); 358 track->set_enabled(true);
409 EXPECT_TRUE(capturer->CaptureFrame()); 359 EXPECT_TRUE(capturer->CaptureFrame());
410 EXPECT_EQ(2, local_renderer.num_rendered_frames()); 360 EXPECT_EQ(2, local_renderer.num_rendered_frames());
411 } 361 }
412 362
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698