OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 | 91 |
92 class PeerConnectionFactoryTest : public testing::Test { | 92 class PeerConnectionFactoryTest : public testing::Test { |
93 void SetUp() { | 93 void SetUp() { |
94 #ifdef WEBRTC_ANDROID | 94 #ifdef WEBRTC_ANDROID |
95 webrtc::InitializeAndroidObjects(); | 95 webrtc::InitializeAndroidObjects(); |
96 #endif | 96 #endif |
97 factory_ = webrtc::CreatePeerConnectionFactory( | 97 factory_ = webrtc::CreatePeerConnectionFactory( |
98 rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(), | 98 rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(), |
99 nullptr, nullptr, nullptr); | 99 nullptr, nullptr, nullptr); |
100 | 100 |
101 ASSERT_TRUE(factory_.get() != NULL); | 101 ASSERT_TRUE(factory_.get() != nullptr); |
102 port_allocator_.reset( | 102 port_allocator_.reset( |
103 new cricket::FakePortAllocator(rtc::Thread::Current(), nullptr)); | 103 new cricket::FakePortAllocator(rtc::Thread::Current(), nullptr)); |
104 raw_port_allocator_ = port_allocator_.get(); | 104 raw_port_allocator_ = port_allocator_.get(); |
105 } | 105 } |
106 | 106 |
107 protected: | 107 protected: |
108 void VerifyStunServers(cricket::ServerAddresses stun_servers) { | 108 void VerifyStunServers(cricket::ServerAddresses stun_servers) { |
109 EXPECT_EQ(stun_servers, raw_port_allocator_->stun_servers()); | 109 EXPECT_EQ(stun_servers, raw_port_allocator_->stun_servers()); |
110 } | 110 } |
111 | 111 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 ice_server.password = kTurnPassword; | 166 ice_server.password = kTurnPassword; |
167 config.servers.push_back(ice_server); | 167 config.servers.push_back(ice_server); |
168 ice_server.uri = kTurnIceServerWithTransport; | 168 ice_server.uri = kTurnIceServerWithTransport; |
169 ice_server.password = kTurnPassword; | 169 ice_server.password = kTurnPassword; |
170 config.servers.push_back(ice_server); | 170 config.servers.push_back(ice_server); |
171 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( | 171 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( |
172 new FakeRTCCertificateGenerator()); | 172 new FakeRTCCertificateGenerator()); |
173 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( | 173 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( |
174 config, nullptr, std::move(port_allocator_), std::move(cert_generator), | 174 config, nullptr, std::move(port_allocator_), std::move(cert_generator), |
175 &observer_)); | 175 &observer_)); |
176 ASSERT_TRUE(pc.get() != NULL); | 176 ASSERT_TRUE(pc.get() != nullptr); |
177 cricket::ServerAddresses stun_servers; | 177 cricket::ServerAddresses stun_servers; |
178 rtc::SocketAddress stun1("stun.l.google.com", 19302); | 178 rtc::SocketAddress stun1("stun.l.google.com", 19302); |
179 stun_servers.insert(stun1); | 179 stun_servers.insert(stun1); |
180 VerifyStunServers(stun_servers); | 180 VerifyStunServers(stun_servers); |
181 std::vector<cricket::RelayServerConfig> turn_servers; | 181 std::vector<cricket::RelayServerConfig> turn_servers; |
182 cricket::RelayServerConfig turn1("test.com", 1234, "test@hello.com", | 182 cricket::RelayServerConfig turn1("test.com", 1234, "test@hello.com", |
183 kTurnPassword, cricket::PROTO_UDP); | 183 kTurnPassword, cricket::PROTO_UDP); |
184 turn_servers.push_back(turn1); | 184 turn_servers.push_back(turn1); |
185 cricket::RelayServerConfig turn2("hello.com", kDefaultStunPort, "test", | 185 cricket::RelayServerConfig turn2("hello.com", kDefaultStunPort, "test", |
186 kTurnPassword, cricket::PROTO_TCP); | 186 kTurnPassword, cricket::PROTO_TCP); |
187 turn_servers.push_back(turn2); | 187 turn_servers.push_back(turn2); |
188 VerifyTurnServers(turn_servers); | 188 VerifyTurnServers(turn_servers); |
189 } | 189 } |
190 | 190 |
191 // This test verifies creation of PeerConnection with valid STUN and TURN | 191 // This test verifies creation of PeerConnection with valid STUN and TURN |
192 // configuration. Also verifies the list of URL's parsed correctly as expected. | 192 // configuration. Also verifies the list of URL's parsed correctly as expected. |
193 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServersUrls) { | 193 TEST_F(PeerConnectionFactoryTest, CreatePCUsingIceServersUrls) { |
194 PeerConnectionInterface::RTCConfiguration config; | 194 PeerConnectionInterface::RTCConfiguration config; |
195 webrtc::PeerConnectionInterface::IceServer ice_server; | 195 webrtc::PeerConnectionInterface::IceServer ice_server; |
196 ice_server.urls.push_back(kStunIceServer); | 196 ice_server.urls.push_back(kStunIceServer); |
197 ice_server.urls.push_back(kTurnIceServer); | 197 ice_server.urls.push_back(kTurnIceServer); |
198 ice_server.urls.push_back(kTurnIceServerWithTransport); | 198 ice_server.urls.push_back(kTurnIceServerWithTransport); |
199 ice_server.password = kTurnPassword; | 199 ice_server.password = kTurnPassword; |
200 config.servers.push_back(ice_server); | 200 config.servers.push_back(ice_server); |
201 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( | 201 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( |
202 new FakeRTCCertificateGenerator()); | 202 new FakeRTCCertificateGenerator()); |
203 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( | 203 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( |
204 config, nullptr, std::move(port_allocator_), std::move(cert_generator), | 204 config, nullptr, std::move(port_allocator_), std::move(cert_generator), |
205 &observer_)); | 205 &observer_)); |
206 ASSERT_TRUE(pc.get() != NULL); | 206 ASSERT_TRUE(pc.get() != nullptr); |
207 cricket::ServerAddresses stun_servers; | 207 cricket::ServerAddresses stun_servers; |
208 rtc::SocketAddress stun1("stun.l.google.com", 19302); | 208 rtc::SocketAddress stun1("stun.l.google.com", 19302); |
209 stun_servers.insert(stun1); | 209 stun_servers.insert(stun1); |
210 VerifyStunServers(stun_servers); | 210 VerifyStunServers(stun_servers); |
211 std::vector<cricket::RelayServerConfig> turn_servers; | 211 std::vector<cricket::RelayServerConfig> turn_servers; |
212 cricket::RelayServerConfig turn1("test.com", 1234, "test@hello.com", | 212 cricket::RelayServerConfig turn1("test.com", 1234, "test@hello.com", |
213 kTurnPassword, cricket::PROTO_UDP); | 213 kTurnPassword, cricket::PROTO_UDP); |
214 turn_servers.push_back(turn1); | 214 turn_servers.push_back(turn1); |
215 cricket::RelayServerConfig turn2("hello.com", kDefaultStunPort, "test", | 215 cricket::RelayServerConfig turn2("hello.com", kDefaultStunPort, "test", |
216 kTurnPassword, cricket::PROTO_TCP); | 216 kTurnPassword, cricket::PROTO_TCP); |
217 turn_servers.push_back(turn2); | 217 turn_servers.push_back(turn2); |
218 VerifyTurnServers(turn_servers); | 218 VerifyTurnServers(turn_servers); |
219 } | 219 } |
220 | 220 |
221 TEST_F(PeerConnectionFactoryTest, CreatePCUsingNoUsernameInUri) { | 221 TEST_F(PeerConnectionFactoryTest, CreatePCUsingNoUsernameInUri) { |
222 PeerConnectionInterface::RTCConfiguration config; | 222 PeerConnectionInterface::RTCConfiguration config; |
223 webrtc::PeerConnectionInterface::IceServer ice_server; | 223 webrtc::PeerConnectionInterface::IceServer ice_server; |
224 ice_server.uri = kStunIceServer; | 224 ice_server.uri = kStunIceServer; |
225 config.servers.push_back(ice_server); | 225 config.servers.push_back(ice_server); |
226 ice_server.uri = kTurnIceServerWithNoUsernameInUri; | 226 ice_server.uri = kTurnIceServerWithNoUsernameInUri; |
227 ice_server.username = kTurnUsername; | 227 ice_server.username = kTurnUsername; |
228 ice_server.password = kTurnPassword; | 228 ice_server.password = kTurnPassword; |
229 config.servers.push_back(ice_server); | 229 config.servers.push_back(ice_server); |
230 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( | 230 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( |
231 new FakeRTCCertificateGenerator()); | 231 new FakeRTCCertificateGenerator()); |
232 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( | 232 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( |
233 config, nullptr, std::move(port_allocator_), std::move(cert_generator), | 233 config, nullptr, std::move(port_allocator_), std::move(cert_generator), |
234 &observer_)); | 234 &observer_)); |
235 ASSERT_TRUE(pc.get() != NULL); | 235 ASSERT_TRUE(pc.get() != nullptr); |
236 std::vector<cricket::RelayServerConfig> turn_servers; | 236 std::vector<cricket::RelayServerConfig> turn_servers; |
237 cricket::RelayServerConfig turn("test.com", 1234, kTurnUsername, | 237 cricket::RelayServerConfig turn("test.com", 1234, kTurnUsername, |
238 kTurnPassword, cricket::PROTO_UDP); | 238 kTurnPassword, cricket::PROTO_UDP); |
239 turn_servers.push_back(turn); | 239 turn_servers.push_back(turn); |
240 VerifyTurnServers(turn_servers); | 240 VerifyTurnServers(turn_servers); |
241 } | 241 } |
242 | 242 |
243 // This test verifies the PeerConnection created properly with TURN url which | 243 // This test verifies the PeerConnection created properly with TURN url which |
244 // has transport parameter in it. | 244 // has transport parameter in it. |
245 TEST_F(PeerConnectionFactoryTest, CreatePCUsingTurnUrlWithTransportParam) { | 245 TEST_F(PeerConnectionFactoryTest, CreatePCUsingTurnUrlWithTransportParam) { |
246 PeerConnectionInterface::RTCConfiguration config; | 246 PeerConnectionInterface::RTCConfiguration config; |
247 webrtc::PeerConnectionInterface::IceServer ice_server; | 247 webrtc::PeerConnectionInterface::IceServer ice_server; |
248 ice_server.uri = kTurnIceServerWithTransport; | 248 ice_server.uri = kTurnIceServerWithTransport; |
249 ice_server.password = kTurnPassword; | 249 ice_server.password = kTurnPassword; |
250 config.servers.push_back(ice_server); | 250 config.servers.push_back(ice_server); |
251 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( | 251 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( |
252 new FakeRTCCertificateGenerator()); | 252 new FakeRTCCertificateGenerator()); |
253 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( | 253 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( |
254 config, nullptr, std::move(port_allocator_), std::move(cert_generator), | 254 config, nullptr, std::move(port_allocator_), std::move(cert_generator), |
255 &observer_)); | 255 &observer_)); |
256 ASSERT_TRUE(pc.get() != NULL); | 256 ASSERT_TRUE(pc.get() != nullptr); |
257 std::vector<cricket::RelayServerConfig> turn_servers; | 257 std::vector<cricket::RelayServerConfig> turn_servers; |
258 cricket::RelayServerConfig turn("hello.com", kDefaultStunPort, "test", | 258 cricket::RelayServerConfig turn("hello.com", kDefaultStunPort, "test", |
259 kTurnPassword, cricket::PROTO_TCP); | 259 kTurnPassword, cricket::PROTO_TCP); |
260 turn_servers.push_back(turn); | 260 turn_servers.push_back(turn); |
261 VerifyTurnServers(turn_servers); | 261 VerifyTurnServers(turn_servers); |
262 } | 262 } |
263 | 263 |
264 TEST_F(PeerConnectionFactoryTest, CreatePCUsingSecureTurnUrl) { | 264 TEST_F(PeerConnectionFactoryTest, CreatePCUsingSecureTurnUrl) { |
265 PeerConnectionInterface::RTCConfiguration config; | 265 PeerConnectionInterface::RTCConfiguration config; |
266 webrtc::PeerConnectionInterface::IceServer ice_server; | 266 webrtc::PeerConnectionInterface::IceServer ice_server; |
267 ice_server.uri = kSecureTurnIceServer; | 267 ice_server.uri = kSecureTurnIceServer; |
268 ice_server.password = kTurnPassword; | 268 ice_server.password = kTurnPassword; |
269 config.servers.push_back(ice_server); | 269 config.servers.push_back(ice_server); |
270 ice_server.uri = kSecureTurnIceServerWithoutTransportParam; | 270 ice_server.uri = kSecureTurnIceServerWithoutTransportParam; |
271 ice_server.password = kTurnPassword; | 271 ice_server.password = kTurnPassword; |
272 config.servers.push_back(ice_server); | 272 config.servers.push_back(ice_server); |
273 ice_server.uri = kSecureTurnIceServerWithoutTransportAndPortParam; | 273 ice_server.uri = kSecureTurnIceServerWithoutTransportAndPortParam; |
274 ice_server.password = kTurnPassword; | 274 ice_server.password = kTurnPassword; |
275 config.servers.push_back(ice_server); | 275 config.servers.push_back(ice_server); |
276 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( | 276 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( |
277 new FakeRTCCertificateGenerator()); | 277 new FakeRTCCertificateGenerator()); |
278 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( | 278 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( |
279 config, nullptr, std::move(port_allocator_), std::move(cert_generator), | 279 config, nullptr, std::move(port_allocator_), std::move(cert_generator), |
280 &observer_)); | 280 &observer_)); |
281 ASSERT_TRUE(pc.get() != NULL); | 281 ASSERT_TRUE(pc.get() != nullptr); |
282 std::vector<cricket::RelayServerConfig> turn_servers; | 282 std::vector<cricket::RelayServerConfig> turn_servers; |
283 cricket::RelayServerConfig turn1("hello.com", kDefaultStunTlsPort, "test", | 283 cricket::RelayServerConfig turn1("hello.com", kDefaultStunTlsPort, "test", |
284 kTurnPassword, cricket::PROTO_TLS); | 284 kTurnPassword, cricket::PROTO_TLS); |
285 turn_servers.push_back(turn1); | 285 turn_servers.push_back(turn1); |
286 // TURNS with transport param should be default to tcp. | 286 // TURNS with transport param should be default to tcp. |
287 cricket::RelayServerConfig turn2("hello.com", 443, "test_no_transport", | 287 cricket::RelayServerConfig turn2("hello.com", 443, "test_no_transport", |
288 kTurnPassword, cricket::PROTO_TLS); | 288 kTurnPassword, cricket::PROTO_TLS); |
289 turn_servers.push_back(turn2); | 289 turn_servers.push_back(turn2); |
290 cricket::RelayServerConfig turn3("hello.com", kDefaultStunTlsPort, | 290 cricket::RelayServerConfig turn3("hello.com", kDefaultStunTlsPort, |
291 "test_no_transport", kTurnPassword, | 291 "test_no_transport", kTurnPassword, |
(...skipping 14 matching lines...) Expand all Loading... |
306 ice_server.uri = kStunIceServerWithIPv6AddressWithoutPort; | 306 ice_server.uri = kStunIceServerWithIPv6AddressWithoutPort; |
307 config.servers.push_back(ice_server); | 307 config.servers.push_back(ice_server); |
308 ice_server.uri = kTurnIceServerWithIPv6Address; | 308 ice_server.uri = kTurnIceServerWithIPv6Address; |
309 ice_server.password = kTurnPassword; | 309 ice_server.password = kTurnPassword; |
310 config.servers.push_back(ice_server); | 310 config.servers.push_back(ice_server); |
311 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( | 311 std::unique_ptr<FakeRTCCertificateGenerator> cert_generator( |
312 new FakeRTCCertificateGenerator()); | 312 new FakeRTCCertificateGenerator()); |
313 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( | 313 rtc::scoped_refptr<PeerConnectionInterface> pc(factory_->CreatePeerConnection( |
314 config, nullptr, std::move(port_allocator_), std::move(cert_generator), | 314 config, nullptr, std::move(port_allocator_), std::move(cert_generator), |
315 &observer_)); | 315 &observer_)); |
316 ASSERT_TRUE(pc.get() != NULL); | 316 ASSERT_TRUE(pc.get() != nullptr); |
317 cricket::ServerAddresses stun_servers; | 317 cricket::ServerAddresses stun_servers; |
318 rtc::SocketAddress stun1("1.2.3.4", 1234); | 318 rtc::SocketAddress stun1("1.2.3.4", 1234); |
319 stun_servers.insert(stun1); | 319 stun_servers.insert(stun1); |
320 rtc::SocketAddress stun2("1.2.3.4", 3478); | 320 rtc::SocketAddress stun2("1.2.3.4", 3478); |
321 stun_servers.insert(stun2); // Default port | 321 stun_servers.insert(stun2); // Default port |
322 rtc::SocketAddress stun3("2401:fa00:4::", 1234); | 322 rtc::SocketAddress stun3("2401:fa00:4::", 1234); |
323 stun_servers.insert(stun3); | 323 stun_servers.insert(stun3); |
324 rtc::SocketAddress stun4("2401:fa00:4::", 3478); | 324 rtc::SocketAddress stun4("2401:fa00:4::", 3478); |
325 stun_servers.insert(stun4); // Default port | 325 stun_servers.insert(stun4); // Default port |
326 VerifyStunServers(stun_servers); | 326 VerifyStunServers(stun_servers); |
327 | 327 |
328 std::vector<cricket::RelayServerConfig> turn_servers; | 328 std::vector<cricket::RelayServerConfig> turn_servers; |
329 cricket::RelayServerConfig turn1("2401:fa00:4::", 1234, "test", kTurnPassword, | 329 cricket::RelayServerConfig turn1("2401:fa00:4::", 1234, "test", kTurnPassword, |
330 cricket::PROTO_UDP); | 330 cricket::PROTO_UDP); |
331 turn_servers.push_back(turn1); | 331 turn_servers.push_back(turn1); |
332 VerifyTurnServers(turn_servers); | 332 VerifyTurnServers(turn_servers); |
333 } | 333 } |
334 | 334 |
335 // This test verifies the captured stream is rendered locally using a | 335 // This test verifies the captured stream is rendered locally using a |
336 // local video track. | 336 // local video track. |
337 TEST_F(PeerConnectionFactoryTest, LocalRendering) { | 337 TEST_F(PeerConnectionFactoryTest, LocalRendering) { |
338 cricket::FakeVideoCapturer* capturer = new cricket::FakeVideoCapturer(); | 338 cricket::FakeVideoCapturer* capturer = new cricket::FakeVideoCapturer(); |
339 // The source take ownership of |capturer|. | 339 // The source take ownership of |capturer|. |
340 rtc::scoped_refptr<VideoTrackSourceInterface> source( | 340 rtc::scoped_refptr<VideoTrackSourceInterface> source( |
341 factory_->CreateVideoSource(capturer, NULL)); | 341 factory_->CreateVideoSource(capturer, nullptr)); |
342 ASSERT_TRUE(source.get() != NULL); | 342 ASSERT_TRUE(source.get() != nullptr); |
343 rtc::scoped_refptr<VideoTrackInterface> track( | 343 rtc::scoped_refptr<VideoTrackInterface> track( |
344 factory_->CreateVideoTrack("testlabel", source)); | 344 factory_->CreateVideoTrack("testlabel", source)); |
345 ASSERT_TRUE(track.get() != NULL); | 345 ASSERT_TRUE(track.get() != nullptr); |
346 FakeVideoTrackRenderer local_renderer(track); | 346 FakeVideoTrackRenderer local_renderer(track); |
347 | 347 |
348 EXPECT_EQ(0, local_renderer.num_rendered_frames()); | 348 EXPECT_EQ(0, local_renderer.num_rendered_frames()); |
349 EXPECT_TRUE(capturer->CaptureFrame()); | 349 EXPECT_TRUE(capturer->CaptureFrame()); |
350 EXPECT_EQ(1, local_renderer.num_rendered_frames()); | 350 EXPECT_EQ(1, local_renderer.num_rendered_frames()); |
351 EXPECT_FALSE(local_renderer.black_frame()); | 351 EXPECT_FALSE(local_renderer.black_frame()); |
352 | 352 |
353 track->set_enabled(false); | 353 track->set_enabled(false); |
354 EXPECT_TRUE(capturer->CaptureFrame()); | 354 EXPECT_TRUE(capturer->CaptureFrame()); |
355 EXPECT_EQ(2, local_renderer.num_rendered_frames()); | 355 EXPECT_EQ(2, local_renderer.num_rendered_frames()); |
356 EXPECT_TRUE(local_renderer.black_frame()); | 356 EXPECT_TRUE(local_renderer.black_frame()); |
357 | 357 |
358 track->set_enabled(true); | 358 track->set_enabled(true); |
359 EXPECT_TRUE(capturer->CaptureFrame()); | 359 EXPECT_TRUE(capturer->CaptureFrame()); |
360 EXPECT_EQ(3, local_renderer.num_rendered_frames()); | 360 EXPECT_EQ(3, local_renderer.num_rendered_frames()); |
361 EXPECT_FALSE(local_renderer.black_frame()); | 361 EXPECT_FALSE(local_renderer.black_frame()); |
362 } | 362 } |
OLD | NEW |