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

Side by Side Diff: webrtc/api/peerconnection_unittest.cc

Issue 2587133004: Reland of: Adding error output param to SetConfiguration, using new RTCError type. (Closed)
Patch Set: Comment formatting. Created 4 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 * 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 2598 matching lines...) Expand 10 before | Expand all | Expand 10 after
2609 delete set_receiving_client(nullptr); 2609 delete set_receiving_client(nullptr);
2610 } 2610 }
2611 2611
2612 class IceServerParsingTest : public testing::Test { 2612 class IceServerParsingTest : public testing::Test {
2613 public: 2613 public:
2614 // Convenience for parsing a single URL. 2614 // Convenience for parsing a single URL.
2615 bool ParseUrl(const std::string& url) { 2615 bool ParseUrl(const std::string& url) {
2616 return ParseUrl(url, std::string(), std::string()); 2616 return ParseUrl(url, std::string(), std::string());
2617 } 2617 }
2618 2618
2619 bool ParseTurnUrl(const std::string& url) {
2620 return ParseUrl(url, "username", "password");
2621 }
2622
2619 bool ParseUrl(const std::string& url, 2623 bool ParseUrl(const std::string& url,
2620 const std::string& username, 2624 const std::string& username,
2621 const std::string& password) { 2625 const std::string& password) {
2622 PeerConnectionInterface::IceServers servers; 2626 PeerConnectionInterface::IceServers servers;
2623 PeerConnectionInterface::IceServer server; 2627 PeerConnectionInterface::IceServer server;
2624 server.urls.push_back(url); 2628 server.urls.push_back(url);
2625 server.username = username; 2629 server.username = username;
2626 server.password = password; 2630 server.password = password;
2627 servers.push_back(server); 2631 servers.push_back(server);
2628 return webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_); 2632 return webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_) ==
2633 webrtc::RtcError::NONE;
2629 } 2634 }
2630 2635
2631 protected: 2636 protected:
2632 cricket::ServerAddresses stun_servers_; 2637 cricket::ServerAddresses stun_servers_;
2633 std::vector<cricket::RelayServerConfig> turn_servers_; 2638 std::vector<cricket::RelayServerConfig> turn_servers_;
2634 }; 2639 };
2635 2640
2636 // Make sure all STUN/TURN prefixes are parsed correctly. 2641 // Make sure all STUN/TURN prefixes are parsed correctly.
2637 TEST_F(IceServerParsingTest, ParseStunPrefixes) { 2642 TEST_F(IceServerParsingTest, ParseStunPrefixes) {
2638 EXPECT_TRUE(ParseUrl("stun:hostname")); 2643 EXPECT_TRUE(ParseUrl("stun:hostname"));
2639 EXPECT_EQ(1U, stun_servers_.size()); 2644 EXPECT_EQ(1U, stun_servers_.size());
2640 EXPECT_EQ(0U, turn_servers_.size()); 2645 EXPECT_EQ(0U, turn_servers_.size());
2641 stun_servers_.clear(); 2646 stun_servers_.clear();
2642 2647
2643 EXPECT_TRUE(ParseUrl("stuns:hostname")); 2648 EXPECT_TRUE(ParseUrl("stuns:hostname"));
2644 EXPECT_EQ(1U, stun_servers_.size()); 2649 EXPECT_EQ(1U, stun_servers_.size());
2645 EXPECT_EQ(0U, turn_servers_.size()); 2650 EXPECT_EQ(0U, turn_servers_.size());
2646 stun_servers_.clear(); 2651 stun_servers_.clear();
2647 2652
2648 EXPECT_TRUE(ParseUrl("turn:hostname")); 2653 EXPECT_TRUE(ParseTurnUrl("turn:hostname"));
2649 EXPECT_EQ(0U, stun_servers_.size()); 2654 EXPECT_EQ(0U, stun_servers_.size());
2650 EXPECT_EQ(1U, turn_servers_.size()); 2655 EXPECT_EQ(1U, turn_servers_.size());
2651 EXPECT_EQ(cricket::PROTO_UDP, turn_servers_[0].ports[0].proto); 2656 EXPECT_EQ(cricket::PROTO_UDP, turn_servers_[0].ports[0].proto);
2652 turn_servers_.clear(); 2657 turn_servers_.clear();
2653 2658
2654 EXPECT_TRUE(ParseUrl("turns:hostname")); 2659 EXPECT_TRUE(ParseTurnUrl("turns:hostname"));
2655 EXPECT_EQ(0U, stun_servers_.size()); 2660 EXPECT_EQ(0U, stun_servers_.size());
2656 EXPECT_EQ(1U, turn_servers_.size()); 2661 EXPECT_EQ(1U, turn_servers_.size());
2657 EXPECT_EQ(cricket::PROTO_TLS, turn_servers_[0].ports[0].proto); 2662 EXPECT_EQ(cricket::PROTO_TLS, turn_servers_[0].ports[0].proto);
2658 turn_servers_.clear(); 2663 turn_servers_.clear();
2659 2664
2660 // invalid prefixes 2665 // invalid prefixes
2661 EXPECT_FALSE(ParseUrl("stunn:hostname")); 2666 EXPECT_FALSE(ParseUrl("stunn:hostname"));
2662 EXPECT_FALSE(ParseUrl(":hostname")); 2667 EXPECT_FALSE(ParseUrl(":hostname"));
2663 EXPECT_FALSE(ParseUrl(":")); 2668 EXPECT_FALSE(ParseUrl(":"));
2664 EXPECT_FALSE(ParseUrl("")); 2669 EXPECT_FALSE(ParseUrl(""));
2665 } 2670 }
2666 2671
2667 TEST_F(IceServerParsingTest, VerifyDefaults) { 2672 TEST_F(IceServerParsingTest, VerifyDefaults) {
2668 // TURNS defaults 2673 // TURNS defaults
2669 EXPECT_TRUE(ParseUrl("turns:hostname")); 2674 EXPECT_TRUE(ParseTurnUrl("turns:hostname"));
2670 EXPECT_EQ(1U, turn_servers_.size()); 2675 EXPECT_EQ(1U, turn_servers_.size());
2671 EXPECT_EQ(5349, turn_servers_[0].ports[0].address.port()); 2676 EXPECT_EQ(5349, turn_servers_[0].ports[0].address.port());
2672 EXPECT_EQ(cricket::PROTO_TLS, turn_servers_[0].ports[0].proto); 2677 EXPECT_EQ(cricket::PROTO_TLS, turn_servers_[0].ports[0].proto);
2673 turn_servers_.clear(); 2678 turn_servers_.clear();
2674 2679
2675 // TURN defaults 2680 // TURN defaults
2676 EXPECT_TRUE(ParseUrl("turn:hostname")); 2681 EXPECT_TRUE(ParseTurnUrl("turn:hostname"));
2677 EXPECT_EQ(1U, turn_servers_.size()); 2682 EXPECT_EQ(1U, turn_servers_.size());
2678 EXPECT_EQ(3478, turn_servers_[0].ports[0].address.port()); 2683 EXPECT_EQ(3478, turn_servers_[0].ports[0].address.port());
2679 EXPECT_EQ(cricket::PROTO_UDP, turn_servers_[0].ports[0].proto); 2684 EXPECT_EQ(cricket::PROTO_UDP, turn_servers_[0].ports[0].proto);
2680 turn_servers_.clear(); 2685 turn_servers_.clear();
2681 2686
2682 // STUN defaults 2687 // STUN defaults
2683 EXPECT_TRUE(ParseUrl("stun:hostname")); 2688 EXPECT_TRUE(ParseUrl("stun:hostname"));
2684 EXPECT_EQ(1U, stun_servers_.size()); 2689 EXPECT_EQ(1U, stun_servers_.size());
2685 EXPECT_EQ(3478, stun_servers_.begin()->port()); 2690 EXPECT_EQ(3478, stun_servers_.begin()->port());
2686 stun_servers_.clear(); 2691 stun_servers_.clear();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2731 EXPECT_FALSE(ParseUrl("stun:hostname:port:more")); 2736 EXPECT_FALSE(ParseUrl("stun:hostname:port:more"));
2732 EXPECT_FALSE(ParseUrl("stun:hostname:port more")); 2737 EXPECT_FALSE(ParseUrl("stun:hostname:port more"));
2733 EXPECT_FALSE(ParseUrl("stun:hostname:")); 2738 EXPECT_FALSE(ParseUrl("stun:hostname:"));
2734 EXPECT_FALSE(ParseUrl("stun:[1:2:3:4:5:6:7:8]junk:1000")); 2739 EXPECT_FALSE(ParseUrl("stun:[1:2:3:4:5:6:7:8]junk:1000"));
2735 EXPECT_FALSE(ParseUrl("stun::5555")); 2740 EXPECT_FALSE(ParseUrl("stun::5555"));
2736 EXPECT_FALSE(ParseUrl("stun:")); 2741 EXPECT_FALSE(ParseUrl("stun:"));
2737 } 2742 }
2738 2743
2739 // Test parsing the "?transport=xxx" part of the URL. 2744 // Test parsing the "?transport=xxx" part of the URL.
2740 TEST_F(IceServerParsingTest, ParseTransport) { 2745 TEST_F(IceServerParsingTest, ParseTransport) {
2741 EXPECT_TRUE(ParseUrl("turn:hostname:1234?transport=tcp")); 2746 EXPECT_TRUE(ParseTurnUrl("turn:hostname:1234?transport=tcp"));
2742 EXPECT_EQ(1U, turn_servers_.size()); 2747 EXPECT_EQ(1U, turn_servers_.size());
2743 EXPECT_EQ(cricket::PROTO_TCP, turn_servers_[0].ports[0].proto); 2748 EXPECT_EQ(cricket::PROTO_TCP, turn_servers_[0].ports[0].proto);
2744 turn_servers_.clear(); 2749 turn_servers_.clear();
2745 2750
2746 EXPECT_TRUE(ParseUrl("turn:hostname?transport=udp")); 2751 EXPECT_TRUE(ParseTurnUrl("turn:hostname?transport=udp"));
2747 EXPECT_EQ(1U, turn_servers_.size()); 2752 EXPECT_EQ(1U, turn_servers_.size());
2748 EXPECT_EQ(cricket::PROTO_UDP, turn_servers_[0].ports[0].proto); 2753 EXPECT_EQ(cricket::PROTO_UDP, turn_servers_[0].ports[0].proto);
2749 turn_servers_.clear(); 2754 turn_servers_.clear();
2750 2755
2751 EXPECT_FALSE(ParseUrl("turn:hostname?transport=invalid")); 2756 EXPECT_FALSE(ParseTurnUrl("turn:hostname?transport=invalid"));
2752 EXPECT_FALSE(ParseUrl("turn:hostname?transport=")); 2757 EXPECT_FALSE(ParseTurnUrl("turn:hostname?transport="));
2753 EXPECT_FALSE(ParseUrl("turn:hostname?=")); 2758 EXPECT_FALSE(ParseTurnUrl("turn:hostname?="));
2754 EXPECT_FALSE(ParseUrl("?")); 2759 EXPECT_FALSE(ParseTurnUrl("?"));
2755 } 2760 }
2756 2761
2757 // Test parsing ICE username contained in URL. 2762 // Test parsing ICE username contained in URL.
2758 TEST_F(IceServerParsingTest, ParseUsername) { 2763 TEST_F(IceServerParsingTest, ParseUsername) {
2759 EXPECT_TRUE(ParseUrl("turn:user@hostname")); 2764 EXPECT_TRUE(ParseTurnUrl("turn:user@hostname"));
2760 EXPECT_EQ(1U, turn_servers_.size()); 2765 EXPECT_EQ(1U, turn_servers_.size());
2761 EXPECT_EQ("user", turn_servers_[0].credentials.username); 2766 EXPECT_EQ("user", turn_servers_[0].credentials.username);
2762 turn_servers_.clear(); 2767 turn_servers_.clear();
2763 2768
2764 EXPECT_FALSE(ParseUrl("turn:@hostname")); 2769 EXPECT_FALSE(ParseTurnUrl("turn:@hostname"));
2765 EXPECT_FALSE(ParseUrl("turn:username@")); 2770 EXPECT_FALSE(ParseTurnUrl("turn:username@"));
2766 EXPECT_FALSE(ParseUrl("turn:@")); 2771 EXPECT_FALSE(ParseTurnUrl("turn:@"));
2767 EXPECT_FALSE(ParseUrl("turn:user@name@hostname")); 2772 EXPECT_FALSE(ParseTurnUrl("turn:user@name@hostname"));
2768 } 2773 }
2769 2774
2770 // Test that username and password from IceServer is copied into the resulting 2775 // Test that username and password from IceServer is copied into the resulting
2771 // RelayServerConfig. 2776 // RelayServerConfig.
2772 TEST_F(IceServerParsingTest, CopyUsernameAndPasswordFromIceServer) { 2777 TEST_F(IceServerParsingTest, CopyUsernameAndPasswordFromIceServer) {
2773 EXPECT_TRUE(ParseUrl("turn:hostname", "username", "password")); 2778 EXPECT_TRUE(ParseUrl("turn:hostname", "username", "password"));
2774 EXPECT_EQ(1U, turn_servers_.size()); 2779 EXPECT_EQ(1U, turn_servers_.size());
2775 EXPECT_EQ("username", turn_servers_[0].credentials.username); 2780 EXPECT_EQ("username", turn_servers_[0].credentials.username);
2776 EXPECT_EQ("password", turn_servers_[0].credentials.password); 2781 EXPECT_EQ("password", turn_servers_[0].credentials.password);
2777 } 2782 }
2778 2783
2779 // Ensure that if a server has multiple URLs, each one is parsed. 2784 // Ensure that if a server has multiple URLs, each one is parsed.
2780 TEST_F(IceServerParsingTest, ParseMultipleUrls) { 2785 TEST_F(IceServerParsingTest, ParseMultipleUrls) {
2781 PeerConnectionInterface::IceServers servers; 2786 PeerConnectionInterface::IceServers servers;
2782 PeerConnectionInterface::IceServer server; 2787 PeerConnectionInterface::IceServer server;
2783 server.urls.push_back("stun:hostname"); 2788 server.urls.push_back("stun:hostname");
2784 server.urls.push_back("turn:hostname"); 2789 server.urls.push_back("turn:hostname");
2790 server.username = "foo";
2791 server.password = "bar";
2785 servers.push_back(server); 2792 servers.push_back(server);
2786 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); 2793 EXPECT_EQ(webrtc::RtcError::NONE,
2794 webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_));
2787 EXPECT_EQ(1U, stun_servers_.size()); 2795 EXPECT_EQ(1U, stun_servers_.size());
2788 EXPECT_EQ(1U, turn_servers_.size()); 2796 EXPECT_EQ(1U, turn_servers_.size());
2789 } 2797 }
2790 2798
2791 // Ensure that TURN servers are given unique priorities, 2799 // Ensure that TURN servers are given unique priorities,
2792 // so that their resulting candidates have unique priorities. 2800 // so that their resulting candidates have unique priorities.
2793 TEST_F(IceServerParsingTest, TurnServerPrioritiesUnique) { 2801 TEST_F(IceServerParsingTest, TurnServerPrioritiesUnique) {
2794 PeerConnectionInterface::IceServers servers; 2802 PeerConnectionInterface::IceServers servers;
2795 PeerConnectionInterface::IceServer server; 2803 PeerConnectionInterface::IceServer server;
2796 server.urls.push_back("turn:hostname"); 2804 server.urls.push_back("turn:hostname");
2797 server.urls.push_back("turn:hostname2"); 2805 server.urls.push_back("turn:hostname2");
2806 server.username = "foo";
2807 server.password = "bar";
2798 servers.push_back(server); 2808 servers.push_back(server);
2799 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); 2809 EXPECT_EQ(webrtc::RtcError::NONE,
2810 webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_));
2800 EXPECT_EQ(2U, turn_servers_.size()); 2811 EXPECT_EQ(2U, turn_servers_.size());
2801 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); 2812 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority);
2802 } 2813 }
2803 2814
2804 #endif // if !defined(THREAD_SANITIZER) 2815 #endif // if !defined(THREAD_SANITIZER)
2805 2816
2806 } // namespace 2817 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698