Chromium Code Reviews| 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 13 matching lines...) Expand all Loading... | |
| 24 #include "webrtc/api/peerconnection.h" | 24 #include "webrtc/api/peerconnection.h" |
| 25 #include "webrtc/api/peerconnectionfactory.h" | 25 #include "webrtc/api/peerconnectionfactory.h" |
| 26 #include "webrtc/api/peerconnectioninterface.h" | 26 #include "webrtc/api/peerconnectioninterface.h" |
| 27 #include "webrtc/api/test/fakeaudiocapturemodule.h" | 27 #include "webrtc/api/test/fakeaudiocapturemodule.h" |
| 28 #include "webrtc/api/test/fakeconstraints.h" | 28 #include "webrtc/api/test/fakeconstraints.h" |
| 29 #include "webrtc/api/test/fakeperiodicvideocapturer.h" | 29 #include "webrtc/api/test/fakeperiodicvideocapturer.h" |
| 30 #include "webrtc/api/test/fakertccertificategenerator.h" | 30 #include "webrtc/api/test/fakertccertificategenerator.h" |
| 31 #include "webrtc/api/test/fakevideotrackrenderer.h" | 31 #include "webrtc/api/test/fakevideotrackrenderer.h" |
| 32 #include "webrtc/api/test/mockpeerconnectionobservers.h" | 32 #include "webrtc/api/test/mockpeerconnectionobservers.h" |
| 33 #include "webrtc/base/gunit.h" | 33 #include "webrtc/base/gunit.h" |
| 34 #include "webrtc/base/helpers.h" | |
| 34 #include "webrtc/base/physicalsocketserver.h" | 35 #include "webrtc/base/physicalsocketserver.h" |
| 35 #include "webrtc/base/ssladapter.h" | 36 #include "webrtc/base/ssladapter.h" |
| 36 #include "webrtc/base/sslstreamadapter.h" | 37 #include "webrtc/base/sslstreamadapter.h" |
| 37 #include "webrtc/base/thread.h" | 38 #include "webrtc/base/thread.h" |
| 38 #include "webrtc/base/virtualsocketserver.h" | 39 #include "webrtc/base/virtualsocketserver.h" |
| 39 #include "webrtc/media/engine/fakewebrtcvideoengine.h" | 40 #include "webrtc/media/engine/fakewebrtcvideoengine.h" |
| 40 #include "webrtc/p2p/base/fakeportallocator.h" | 41 #include "webrtc/p2p/base/fakeportallocator.h" |
| 41 #include "webrtc/p2p/base/p2pconstants.h" | 42 #include "webrtc/p2p/base/p2pconstants.h" |
| 42 #include "webrtc/p2p/base/sessiondescription.h" | 43 #include "webrtc/p2p/base/sessiondescription.h" |
| 43 #include "webrtc/pc/mediasession.h" | 44 #include "webrtc/pc/mediasession.h" |
| (...skipping 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1330 void SendRtpData(webrtc::DataChannelInterface* dc, const std::string& data) { | 1331 void SendRtpData(webrtc::DataChannelInterface* dc, const std::string& data) { |
| 1331 // Messages may get lost on the unreliable DataChannel, so we send multiple | 1332 // Messages may get lost on the unreliable DataChannel, so we send multiple |
| 1332 // times to avoid test flakiness. | 1333 // times to avoid test flakiness. |
| 1333 static const size_t kSendAttempts = 5; | 1334 static const size_t kSendAttempts = 5; |
| 1334 | 1335 |
| 1335 for (size_t i = 0; i < kSendAttempts; ++i) { | 1336 for (size_t i = 0; i < kSendAttempts; ++i) { |
| 1336 dc->Send(DataBuffer(data)); | 1337 dc->Send(DataBuffer(data)); |
| 1337 } | 1338 } |
| 1338 } | 1339 } |
| 1339 | 1340 |
| 1341 rtc::VirtualSocketServer* virtual_socket_server() { return ss_.get(); } | |
| 1342 | |
| 1340 PeerConnectionTestClient* initializing_client() { | 1343 PeerConnectionTestClient* initializing_client() { |
| 1341 return initiating_client_.get(); | 1344 return initiating_client_.get(); |
| 1342 } | 1345 } |
| 1343 | 1346 |
| 1344 // Set the |initiating_client_| to the |client| passed in and return the | 1347 // Set the |initiating_client_| to the |client| passed in and return the |
| 1345 // original |initiating_client_|. | 1348 // original |initiating_client_|. |
| 1346 PeerConnectionTestClient* set_initializing_client( | 1349 PeerConnectionTestClient* set_initializing_client( |
| 1347 PeerConnectionTestClient* client) { | 1350 PeerConnectionTestClient* client) { |
| 1348 PeerConnectionTestClient* old = initiating_client_.release(); | 1351 PeerConnectionTestClient* old = initiating_client_.release(); |
| 1349 initiating_client_.reset(client); | 1352 initiating_client_.reset(client); |
| (...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1922 receiving_client()->data_channel()->Send(DataBuffer(data)); | 1925 receiving_client()->data_channel()->Send(DataBuffer(data)); |
| 1923 EXPECT_EQ_WAIT(data, initializing_client()->data_observer()->last_message(), | 1926 EXPECT_EQ_WAIT(data, initializing_client()->data_observer()->last_message(), |
| 1924 kMaxWaitMs); | 1927 kMaxWaitMs); |
| 1925 | 1928 |
| 1926 receiving_client()->data_channel()->Close(); | 1929 receiving_client()->data_channel()->Close(); |
| 1927 EXPECT_TRUE_WAIT(!initializing_client()->data_observer()->IsOpen(), | 1930 EXPECT_TRUE_WAIT(!initializing_client()->data_observer()->IsOpen(), |
| 1928 kMaxWaitMs); | 1931 kMaxWaitMs); |
| 1929 EXPECT_TRUE_WAIT(!receiving_client()->data_observer()->IsOpen(), kMaxWaitMs); | 1932 EXPECT_TRUE_WAIT(!receiving_client()->data_observer()->IsOpen(), kMaxWaitMs); |
| 1930 } | 1933 } |
| 1931 | 1934 |
| 1935 TEST_F(P2PTestConductor, UnorderedSctpDataChannel) { | |
| 1936 ASSERT_TRUE(CreateTestClients()); | |
| 1937 webrtc::DataChannelInit init; | |
| 1938 init.ordered = false; | |
| 1939 initializing_client()->CreateDataChannel(&init); | |
| 1940 | |
| 1941 // Introduce random network delays. | |
| 1942 // Otherwise it's not a true "unordered" test. | |
|
honghaiz3
2016/08/10 19:25:42
Nit: Should it be "it isn't" or "it is not"?
Taylor Brandstetter
2016/08/10 20:55:05
They're grammatically equivalent so I think I'll l
| |
| 1943 virtual_socket_server()->set_delay_mean(20); | |
| 1944 virtual_socket_server()->set_delay_stddev(5); | |
| 1945 virtual_socket_server()->UpdateDelayDistribution(); | |
| 1946 | |
| 1947 initializing_client()->Negotiate(); | |
| 1948 ASSERT_TRUE(initializing_client()->data_channel() != nullptr); | |
| 1949 EXPECT_TRUE_WAIT(receiving_client()->data_channel() != nullptr, kMaxWaitMs); | |
| 1950 EXPECT_TRUE_WAIT(initializing_client()->data_observer()->IsOpen(), | |
| 1951 kMaxWaitMs); | |
| 1952 EXPECT_TRUE_WAIT(receiving_client()->data_observer()->IsOpen(), kMaxWaitMs); | |
| 1953 | |
| 1954 static constexpr int kNumMessages = 100; | |
| 1955 // Deliberately chosen to be larger than the MTU so messages get fragmented. | |
| 1956 static constexpr size_t kMaxMessageSize = 4096; | |
| 1957 // Create and send random messages. | |
| 1958 std::vector<std::string> sent_messages; | |
| 1959 for (int i = 0; i < kNumMessages; ++i) { | |
| 1960 size_t length = (rand() % kMaxMessageSize) + 1; | |
| 1961 std::string message; | |
| 1962 ASSERT_TRUE(rtc::CreateRandomString(length, &message)); | |
| 1963 initializing_client()->data_channel()->Send(DataBuffer(message)); | |
| 1964 receiving_client()->data_channel()->Send(DataBuffer(message)); | |
| 1965 sent_messages.push_back(message); | |
| 1966 } | |
| 1967 | |
| 1968 EXPECT_EQ_WAIT( | |
| 1969 kNumMessages, | |
| 1970 initializing_client()->data_observer()->received_message_count(), | |
| 1971 kMaxWaitMs); | |
| 1972 EXPECT_EQ_WAIT(kNumMessages, | |
| 1973 receiving_client()->data_observer()->received_message_count(), | |
| 1974 kMaxWaitMs); | |
| 1975 | |
| 1976 // Sort and compare to make sure none of the messages were corrupted. | |
| 1977 std::vector<std::string> initializing_client_received_messages = | |
| 1978 initializing_client()->data_observer()->messages(); | |
| 1979 std::vector<std::string> receiving_client_received_messages = | |
| 1980 receiving_client()->data_observer()->messages(); | |
| 1981 std::sort(sent_messages.begin(), sent_messages.end()); | |
| 1982 std::sort(initializing_client_received_messages.begin(), | |
| 1983 initializing_client_received_messages.end()); | |
| 1984 std::sort(receiving_client_received_messages.begin(), | |
| 1985 receiving_client_received_messages.end()); | |
| 1986 EXPECT_EQ(sent_messages, initializing_client_received_messages); | |
| 1987 EXPECT_EQ(sent_messages, receiving_client_received_messages); | |
| 1988 | |
| 1989 receiving_client()->data_channel()->Close(); | |
| 1990 EXPECT_TRUE_WAIT(!initializing_client()->data_observer()->IsOpen(), | |
| 1991 kMaxWaitMs); | |
| 1992 EXPECT_TRUE_WAIT(!receiving_client()->data_observer()->IsOpen(), kMaxWaitMs); | |
| 1993 } | |
| 1994 | |
| 1932 // This test sets up a call between two parties and creates a data channel. | 1995 // This test sets up a call between two parties and creates a data channel. |
| 1933 // The test tests that received data is buffered unless an observer has been | 1996 // The test tests that received data is buffered unless an observer has been |
| 1934 // registered. | 1997 // registered. |
| 1935 // Rtp data channels can receive data before the underlying | 1998 // Rtp data channels can receive data before the underlying |
| 1936 // transport has detected that a channel is writable and thus data can be | 1999 // transport has detected that a channel is writable and thus data can be |
| 1937 // received before the data channel state changes to open. That is hard to test | 2000 // received before the data channel state changes to open. That is hard to test |
| 1938 // but the same buffering is used in that case. | 2001 // but the same buffering is used in that case. |
| 1939 TEST_F(P2PTestConductor, RegisterDataChannelObserver) { | 2002 TEST_F(P2PTestConductor, RegisterDataChannelObserver) { |
| 1940 FakeConstraints setup_constraints; | 2003 FakeConstraints setup_constraints; |
| 1941 setup_constraints.SetAllowRtpDataChannels(); | 2004 setup_constraints.SetAllowRtpDataChannels(); |
| (...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2417 server.urls.push_back("turn:hostname2"); | 2480 server.urls.push_back("turn:hostname2"); |
| 2418 servers.push_back(server); | 2481 servers.push_back(server); |
| 2419 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); | 2482 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); |
| 2420 EXPECT_EQ(2U, turn_servers_.size()); | 2483 EXPECT_EQ(2U, turn_servers_.size()); |
| 2421 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); | 2484 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); |
| 2422 } | 2485 } |
| 2423 | 2486 |
| 2424 #endif // if !defined(THREAD_SANITIZER) | 2487 #endif // if !defined(THREAD_SANITIZER) |
| 2425 | 2488 |
| 2426 } // namespace | 2489 } // namespace |
| OLD | NEW |