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

Side by Side Diff: webrtc/p2p/base/dtlstransportchannel_unittest.cc

Issue 2648003003: Revert of Removing #defines previously used for building without BoringSSL/OpenSSL. (Closed)
Patch Set: Created 3 years, 11 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/p2p/BUILD.gn ('k') | webrtc/pc/channel_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2011 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 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 // Create two channels without DTLS, and transfer SRTP data. 686 // Create two channels without DTLS, and transfer SRTP data.
687 TEST_F(DtlsTransportChannelTest, TestTransferSrtpTwoChannels) { 687 TEST_F(DtlsTransportChannelTest, TestTransferSrtpTwoChannels) {
688 SetChannelCount(2); 688 SetChannelCount(2);
689 ASSERT_TRUE(Connect()); 689 ASSERT_TRUE(Connect());
690 TestTransfer(0, 1000, 100, true); 690 TestTransfer(0, 1000, 100, true);
691 TestTransfer(1, 1000, 100, true); 691 TestTransfer(1, 1000, 100, true);
692 } 692 }
693 693
694 // Connect with DTLS, and transfer some data. 694 // Connect with DTLS, and transfer some data.
695 TEST_F(DtlsTransportChannelTest, TestTransferDtls) { 695 TEST_F(DtlsTransportChannelTest, TestTransferDtls) {
696 MAYBE_SKIP_TEST(HaveDtls);
696 PrepareDtls(true, true, rtc::KT_DEFAULT); 697 PrepareDtls(true, true, rtc::KT_DEFAULT);
697 ASSERT_TRUE(Connect()); 698 ASSERT_TRUE(Connect());
698 TestTransfer(0, 1000, 100, false); 699 TestTransfer(0, 1000, 100, false);
699 } 700 }
700 701
701 // Create two channels with DTLS, and transfer some data. 702 // Create two channels with DTLS, and transfer some data.
702 TEST_F(DtlsTransportChannelTest, TestTransferDtlsTwoChannels) { 703 TEST_F(DtlsTransportChannelTest, TestTransferDtlsTwoChannels) {
704 MAYBE_SKIP_TEST(HaveDtls);
703 SetChannelCount(2); 705 SetChannelCount(2);
704 PrepareDtls(true, true, rtc::KT_DEFAULT); 706 PrepareDtls(true, true, rtc::KT_DEFAULT);
705 ASSERT_TRUE(Connect()); 707 ASSERT_TRUE(Connect());
706 TestTransfer(0, 1000, 100, false); 708 TestTransfer(0, 1000, 100, false);
707 TestTransfer(1, 1000, 100, false); 709 TestTransfer(1, 1000, 100, false);
708 } 710 }
709 711
710 // Connect with A doing DTLS and B not, and transfer some data. 712 // Connect with A doing DTLS and B not, and transfer some data.
711 TEST_F(DtlsTransportChannelTest, TestTransferDtlsRejected) { 713 TEST_F(DtlsTransportChannelTest, TestTransferDtlsRejected) {
712 PrepareDtls(true, false, rtc::KT_DEFAULT); 714 PrepareDtls(true, false, rtc::KT_DEFAULT);
713 ASSERT_TRUE(Connect()); 715 ASSERT_TRUE(Connect());
714 TestTransfer(0, 1000, 100, false); 716 TestTransfer(0, 1000, 100, false);
715 } 717 }
716 718
717 // Connect with B doing DTLS and A not, and transfer some data. 719 // Connect with B doing DTLS and A not, and transfer some data.
718 TEST_F(DtlsTransportChannelTest, TestTransferDtlsNotOffered) { 720 TEST_F(DtlsTransportChannelTest, TestTransferDtlsNotOffered) {
719 PrepareDtls(false, true, rtc::KT_DEFAULT); 721 PrepareDtls(false, true, rtc::KT_DEFAULT);
720 ASSERT_TRUE(Connect()); 722 ASSERT_TRUE(Connect());
721 TestTransfer(0, 1000, 100, false); 723 TestTransfer(0, 1000, 100, false);
722 } 724 }
723 725
724 // Create two channels with DTLS 1.0 and check ciphers. 726 // Create two channels with DTLS 1.0 and check ciphers.
725 TEST_F(DtlsTransportChannelTest, TestDtls12None) { 727 TEST_F(DtlsTransportChannelTest, TestDtls12None) {
728 MAYBE_SKIP_TEST(HaveDtls);
726 SetChannelCount(2); 729 SetChannelCount(2);
727 PrepareDtls(true, true, rtc::KT_DEFAULT); 730 PrepareDtls(true, true, rtc::KT_DEFAULT);
728 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_10); 731 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_10);
729 ASSERT_TRUE(Connect()); 732 ASSERT_TRUE(Connect());
730 } 733 }
731 734
732 // Create two channels with DTLS 1.2 and check ciphers. 735 // Create two channels with DTLS 1.2 and check ciphers.
733 TEST_F(DtlsTransportChannelTest, TestDtls12Both) { 736 TEST_F(DtlsTransportChannelTest, TestDtls12Both) {
737 MAYBE_SKIP_TEST(HaveDtls);
734 SetChannelCount(2); 738 SetChannelCount(2);
735 PrepareDtls(true, true, rtc::KT_DEFAULT); 739 PrepareDtls(true, true, rtc::KT_DEFAULT);
736 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_12); 740 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_12);
737 ASSERT_TRUE(Connect()); 741 ASSERT_TRUE(Connect());
738 } 742 }
739 743
740 // Create two channels with DTLS 1.0 / DTLS 1.2 and check ciphers. 744 // Create two channels with DTLS 1.0 / DTLS 1.2 and check ciphers.
741 TEST_F(DtlsTransportChannelTest, TestDtls12Client1) { 745 TEST_F(DtlsTransportChannelTest, TestDtls12Client1) {
746 MAYBE_SKIP_TEST(HaveDtls);
742 SetChannelCount(2); 747 SetChannelCount(2);
743 PrepareDtls(true, true, rtc::KT_DEFAULT); 748 PrepareDtls(true, true, rtc::KT_DEFAULT);
744 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_10); 749 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_10);
745 ASSERT_TRUE(Connect()); 750 ASSERT_TRUE(Connect());
746 } 751 }
747 752
748 // Create two channels with DTLS 1.2 / DTLS 1.0 and check ciphers. 753 // Create two channels with DTLS 1.2 / DTLS 1.0 and check ciphers.
749 TEST_F(DtlsTransportChannelTest, TestDtls12Client2) { 754 TEST_F(DtlsTransportChannelTest, TestDtls12Client2) {
755 MAYBE_SKIP_TEST(HaveDtls);
750 SetChannelCount(2); 756 SetChannelCount(2);
751 PrepareDtls(true, true, rtc::KT_DEFAULT); 757 PrepareDtls(true, true, rtc::KT_DEFAULT);
752 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_12); 758 SetMaxProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_12);
753 ASSERT_TRUE(Connect()); 759 ASSERT_TRUE(Connect());
754 } 760 }
755 761
756 // Connect with DTLS, negotiate DTLS-SRTP, and transfer SRTP using bypass. 762 // Connect with DTLS, negotiate DTLS-SRTP, and transfer SRTP using bypass.
757 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtp) { 763 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtp) {
764 MAYBE_SKIP_TEST(HaveDtlsSrtp);
758 PrepareDtls(true, true, rtc::KT_DEFAULT); 765 PrepareDtls(true, true, rtc::KT_DEFAULT);
759 PrepareDtlsSrtp(true, true); 766 PrepareDtlsSrtp(true, true);
760 ASSERT_TRUE(Connect()); 767 ASSERT_TRUE(Connect());
761 TestTransfer(0, 1000, 100, true); 768 TestTransfer(0, 1000, 100, true);
762 } 769 }
763 770
764 // Connect with DTLS-SRTP, transfer an invalid SRTP packet, and expects -1 771 // Connect with DTLS-SRTP, transfer an invalid SRTP packet, and expects -1
765 // returned. 772 // returned.
766 TEST_F(DtlsTransportChannelTest, TestTransferDtlsInvalidSrtpPacket) { 773 TEST_F(DtlsTransportChannelTest, TestTransferDtlsInvalidSrtpPacket) {
774 MAYBE_SKIP_TEST(HaveDtls);
767 PrepareDtls(true, true, rtc::KT_DEFAULT); 775 PrepareDtls(true, true, rtc::KT_DEFAULT);
768 PrepareDtlsSrtp(true, true); 776 PrepareDtlsSrtp(true, true);
769 ASSERT_TRUE(Connect()); 777 ASSERT_TRUE(Connect());
770 int result = client1_.SendInvalidSrtpPacket(0, 100); 778 int result = client1_.SendInvalidSrtpPacket(0, 100);
771 ASSERT_EQ(-1, result); 779 ASSERT_EQ(-1, result);
772 } 780 }
773 781
774 // Connect with DTLS. A does DTLS-SRTP but B does not. 782 // Connect with DTLS. A does DTLS-SRTP but B does not.
775 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpRejected) { 783 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpRejected) {
784 MAYBE_SKIP_TEST(HaveDtlsSrtp);
776 PrepareDtls(true, true, rtc::KT_DEFAULT); 785 PrepareDtls(true, true, rtc::KT_DEFAULT);
777 PrepareDtlsSrtp(true, false); 786 PrepareDtlsSrtp(true, false);
778 ASSERT_TRUE(Connect()); 787 ASSERT_TRUE(Connect());
779 } 788 }
780 789
781 // Connect with DTLS. B does DTLS-SRTP but A does not. 790 // Connect with DTLS. B does DTLS-SRTP but A does not.
782 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpNotOffered) { 791 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpNotOffered) {
792 MAYBE_SKIP_TEST(HaveDtlsSrtp);
783 PrepareDtls(true, true, rtc::KT_DEFAULT); 793 PrepareDtls(true, true, rtc::KT_DEFAULT);
784 PrepareDtlsSrtp(false, true); 794 PrepareDtlsSrtp(false, true);
785 ASSERT_TRUE(Connect()); 795 ASSERT_TRUE(Connect());
786 } 796 }
787 797
788 // Create two channels with DTLS, negotiate DTLS-SRTP, and transfer bypass SRTP. 798 // Create two channels with DTLS, negotiate DTLS-SRTP, and transfer bypass SRTP.
789 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpTwoChannels) { 799 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpTwoChannels) {
800 MAYBE_SKIP_TEST(HaveDtlsSrtp);
790 SetChannelCount(2); 801 SetChannelCount(2);
791 PrepareDtls(true, true, rtc::KT_DEFAULT); 802 PrepareDtls(true, true, rtc::KT_DEFAULT);
792 PrepareDtlsSrtp(true, true); 803 PrepareDtlsSrtp(true, true);
793 ASSERT_TRUE(Connect()); 804 ASSERT_TRUE(Connect());
794 TestTransfer(0, 1000, 100, true); 805 TestTransfer(0, 1000, 100, true);
795 TestTransfer(1, 1000, 100, true); 806 TestTransfer(1, 1000, 100, true);
796 } 807 }
797 808
798 // Create a single channel with DTLS, and send normal data and SRTP data on it. 809 // Create a single channel with DTLS, and send normal data and SRTP data on it.
799 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpDemux) { 810 TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpDemux) {
811 MAYBE_SKIP_TEST(HaveDtlsSrtp);
800 PrepareDtls(true, true, rtc::KT_DEFAULT); 812 PrepareDtls(true, true, rtc::KT_DEFAULT);
801 PrepareDtlsSrtp(true, true); 813 PrepareDtlsSrtp(true, true);
802 ASSERT_TRUE(Connect()); 814 ASSERT_TRUE(Connect());
803 TestTransfer(0, 1000, 100, false); 815 TestTransfer(0, 1000, 100, false);
804 TestTransfer(0, 1000, 100, true); 816 TestTransfer(0, 1000, 100, true);
805 } 817 }
806 818
807 // Testing when the remote is passive. 819 // Testing when the remote is passive.
808 TEST_F(DtlsTransportChannelTest, TestTransferDtlsAnswererIsPassive) { 820 TEST_F(DtlsTransportChannelTest, TestTransferDtlsAnswererIsPassive) {
821 MAYBE_SKIP_TEST(HaveDtlsSrtp);
809 SetChannelCount(2); 822 SetChannelCount(2);
810 PrepareDtls(true, true, rtc::KT_DEFAULT); 823 PrepareDtls(true, true, rtc::KT_DEFAULT);
811 PrepareDtlsSrtp(true, true); 824 PrepareDtlsSrtp(true, true);
812 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS, 825 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS,
813 cricket::CONNECTIONROLE_PASSIVE)); 826 cricket::CONNECTIONROLE_PASSIVE));
814 TestTransfer(0, 1000, 100, true); 827 TestTransfer(0, 1000, 100, true);
815 TestTransfer(1, 1000, 100, true); 828 TestTransfer(1, 1000, 100, true);
816 } 829 }
817 830
818 // Testing with the legacy DTLS client which doesn't use setup attribute. 831 // Testing with the legacy DTLS client which doesn't use setup attribute.
819 // In this case legacy is the answerer. 832 // In this case legacy is the answerer.
820 TEST_F(DtlsTransportChannelTest, TestDtlsSetupWithLegacyAsAnswerer) { 833 TEST_F(DtlsTransportChannelTest, TestDtlsSetupWithLegacyAsAnswerer) {
834 MAYBE_SKIP_TEST(HaveDtlsSrtp);
821 PrepareDtls(true, true, rtc::KT_DEFAULT); 835 PrepareDtls(true, true, rtc::KT_DEFAULT);
822 NegotiateWithLegacy(); 836 NegotiateWithLegacy();
823 rtc::SSLRole channel1_role; 837 rtc::SSLRole channel1_role;
824 rtc::SSLRole channel2_role; 838 rtc::SSLRole channel2_role;
825 client1_.transport()->GetSslRole(&channel1_role); 839 client1_.transport()->GetSslRole(&channel1_role);
826 client2_.transport()->GetSslRole(&channel2_role); 840 client2_.transport()->GetSslRole(&channel2_role);
827 EXPECT_EQ(rtc::SSL_SERVER, channel1_role); 841 EXPECT_EQ(rtc::SSL_SERVER, channel1_role);
828 EXPECT_EQ(rtc::SSL_CLIENT, channel2_role); 842 EXPECT_EQ(rtc::SSL_CLIENT, channel2_role);
829 } 843 }
830 844
831 // Testing re offer/answer after the session is estbalished. Roles will be 845 // Testing re offer/answer after the session is estbalished. Roles will be
832 // kept same as of the previous negotiation. 846 // kept same as of the previous negotiation.
833 TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromOfferer) { 847 TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromOfferer) {
848 MAYBE_SKIP_TEST(HaveDtlsSrtp);
834 SetChannelCount(2); 849 SetChannelCount(2);
835 PrepareDtls(true, true, rtc::KT_DEFAULT); 850 PrepareDtls(true, true, rtc::KT_DEFAULT);
836 PrepareDtlsSrtp(true, true); 851 PrepareDtlsSrtp(true, true);
837 // Initial role for client1 is ACTPASS and client2 is ACTIVE. 852 // Initial role for client1 is ACTPASS and client2 is ACTIVE.
838 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS, 853 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS,
839 cricket::CONNECTIONROLE_ACTIVE)); 854 cricket::CONNECTIONROLE_ACTIVE));
840 TestTransfer(0, 1000, 100, true); 855 TestTransfer(0, 1000, 100, true);
841 TestTransfer(1, 1000, 100, true); 856 TestTransfer(1, 1000, 100, true);
842 // Using input roles for the re-offer. 857 // Using input roles for the re-offer.
843 Renegotiate(&client1_, cricket::CONNECTIONROLE_ACTPASS, 858 Renegotiate(&client1_, cricket::CONNECTIONROLE_ACTPASS,
844 cricket::CONNECTIONROLE_ACTIVE, NF_REOFFER); 859 cricket::CONNECTIONROLE_ACTIVE, NF_REOFFER);
845 TestTransfer(0, 1000, 100, true); 860 TestTransfer(0, 1000, 100, true);
846 TestTransfer(1, 1000, 100, true); 861 TestTransfer(1, 1000, 100, true);
847 } 862 }
848 863
849 TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromAnswerer) { 864 TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromAnswerer) {
865 MAYBE_SKIP_TEST(HaveDtlsSrtp);
850 SetChannelCount(2); 866 SetChannelCount(2);
851 PrepareDtls(true, true, rtc::KT_DEFAULT); 867 PrepareDtls(true, true, rtc::KT_DEFAULT);
852 PrepareDtlsSrtp(true, true); 868 PrepareDtlsSrtp(true, true);
853 // Initial role for client1 is ACTPASS and client2 is ACTIVE. 869 // Initial role for client1 is ACTPASS and client2 is ACTIVE.
854 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS, 870 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS,
855 cricket::CONNECTIONROLE_ACTIVE)); 871 cricket::CONNECTIONROLE_ACTIVE));
856 TestTransfer(0, 1000, 100, true); 872 TestTransfer(0, 1000, 100, true);
857 TestTransfer(1, 1000, 100, true); 873 TestTransfer(1, 1000, 100, true);
858 // Using input roles for the re-offer. 874 // Using input roles for the re-offer.
859 Renegotiate(&client2_, cricket::CONNECTIONROLE_PASSIVE, 875 Renegotiate(&client2_, cricket::CONNECTIONROLE_PASSIVE,
860 cricket::CONNECTIONROLE_ACTPASS, NF_REOFFER); 876 cricket::CONNECTIONROLE_ACTPASS, NF_REOFFER);
861 TestTransfer(0, 1000, 100, true); 877 TestTransfer(0, 1000, 100, true);
862 TestTransfer(1, 1000, 100, true); 878 TestTransfer(1, 1000, 100, true);
863 } 879 }
864 880
865 // Test that any change in role after the intial setup will result in failure. 881 // Test that any change in role after the intial setup will result in failure.
866 TEST_F(DtlsTransportChannelTest, TestDtlsRoleReversal) { 882 TEST_F(DtlsTransportChannelTest, TestDtlsRoleReversal) {
883 MAYBE_SKIP_TEST(HaveDtlsSrtp);
867 SetChannelCount(2); 884 SetChannelCount(2);
868 PrepareDtls(true, true, rtc::KT_DEFAULT); 885 PrepareDtls(true, true, rtc::KT_DEFAULT);
869 PrepareDtlsSrtp(true, true); 886 PrepareDtlsSrtp(true, true);
870 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS, 887 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS,
871 cricket::CONNECTIONROLE_PASSIVE)); 888 cricket::CONNECTIONROLE_PASSIVE));
872 889
873 // Renegotiate from client2 with actpass and client1 as active. 890 // Renegotiate from client2 with actpass and client1 as active.
874 Renegotiate(&client2_, cricket::CONNECTIONROLE_ACTPASS, 891 Renegotiate(&client2_, cricket::CONNECTIONROLE_ACTPASS,
875 cricket::CONNECTIONROLE_ACTIVE, 892 cricket::CONNECTIONROLE_ACTIVE,
876 NF_REOFFER | NF_EXPECT_FAILURE); 893 NF_REOFFER | NF_EXPECT_FAILURE);
877 } 894 }
878 895
879 // Test that using different setup attributes which results in similar ssl 896 // Test that using different setup attributes which results in similar ssl
880 // role as the initial negotiation will result in success. 897 // role as the initial negotiation will result in success.
881 TEST_F(DtlsTransportChannelTest, TestDtlsReOfferWithDifferentSetupAttr) { 898 TEST_F(DtlsTransportChannelTest, TestDtlsReOfferWithDifferentSetupAttr) {
899 MAYBE_SKIP_TEST(HaveDtlsSrtp);
882 SetChannelCount(2); 900 SetChannelCount(2);
883 PrepareDtls(true, true, rtc::KT_DEFAULT); 901 PrepareDtls(true, true, rtc::KT_DEFAULT);
884 PrepareDtlsSrtp(true, true); 902 PrepareDtlsSrtp(true, true);
885 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS, 903 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS,
886 cricket::CONNECTIONROLE_PASSIVE)); 904 cricket::CONNECTIONROLE_PASSIVE));
887 // Renegotiate from client2 with actpass and client1 as active. 905 // Renegotiate from client2 with actpass and client1 as active.
888 Renegotiate(&client2_, cricket::CONNECTIONROLE_ACTIVE, 906 Renegotiate(&client2_, cricket::CONNECTIONROLE_ACTIVE,
889 cricket::CONNECTIONROLE_ACTPASS, NF_REOFFER); 907 cricket::CONNECTIONROLE_ACTPASS, NF_REOFFER);
890 TestTransfer(0, 1000, 100, true); 908 TestTransfer(0, 1000, 100, true);
891 TestTransfer(1, 1000, 100, true); 909 TestTransfer(1, 1000, 100, true);
892 } 910 }
893 911
894 // Test that re-negotiation can be started before the clients become connected 912 // Test that re-negotiation can be started before the clients become connected
895 // in the first negotiation. 913 // in the first negotiation.
896 TEST_F(DtlsTransportChannelTest, TestRenegotiateBeforeConnect) { 914 TEST_F(DtlsTransportChannelTest, TestRenegotiateBeforeConnect) {
915 MAYBE_SKIP_TEST(HaveDtlsSrtp);
897 SetChannelCount(2); 916 SetChannelCount(2);
898 PrepareDtls(true, true, rtc::KT_DEFAULT); 917 PrepareDtls(true, true, rtc::KT_DEFAULT);
899 PrepareDtlsSrtp(true, true); 918 PrepareDtlsSrtp(true, true);
900 Negotiate(); 919 Negotiate();
901 920
902 Renegotiate(&client1_, cricket::CONNECTIONROLE_ACTPASS, 921 Renegotiate(&client1_, cricket::CONNECTIONROLE_ACTPASS,
903 cricket::CONNECTIONROLE_ACTIVE, NF_REOFFER); 922 cricket::CONNECTIONROLE_ACTIVE, NF_REOFFER);
904 bool rv = client1_.Connect(&client2_, false); 923 bool rv = client1_.Connect(&client2_, false);
905 EXPECT_TRUE(rv); 924 EXPECT_TRUE(rv);
906 EXPECT_TRUE_SIMULATED_WAIT(client1_.all_dtls_transports_writable() && 925 EXPECT_TRUE_SIMULATED_WAIT(client1_.all_dtls_transports_writable() &&
907 client2_.all_dtls_transports_writable(), 926 client2_.all_dtls_transports_writable(),
908 kTimeout, fake_clock_); 927 kTimeout, fake_clock_);
909 928
910 TestTransfer(0, 1000, 100, true); 929 TestTransfer(0, 1000, 100, true);
911 TestTransfer(1, 1000, 100, true); 930 TestTransfer(1, 1000, 100, true);
912 } 931 }
913 932
914 // Test Certificates state after negotiation but before connection. 933 // Test Certificates state after negotiation but before connection.
915 TEST_F(DtlsTransportChannelTest, TestCertificatesBeforeConnect) { 934 TEST_F(DtlsTransportChannelTest, TestCertificatesBeforeConnect) {
935 MAYBE_SKIP_TEST(HaveDtls);
916 PrepareDtls(true, true, rtc::KT_DEFAULT); 936 PrepareDtls(true, true, rtc::KT_DEFAULT);
917 Negotiate(); 937 Negotiate();
918 938
919 rtc::scoped_refptr<rtc::RTCCertificate> certificate1; 939 rtc::scoped_refptr<rtc::RTCCertificate> certificate1;
920 rtc::scoped_refptr<rtc::RTCCertificate> certificate2; 940 rtc::scoped_refptr<rtc::RTCCertificate> certificate2;
921 std::unique_ptr<rtc::SSLCertificate> remote_cert1; 941 std::unique_ptr<rtc::SSLCertificate> remote_cert1;
922 std::unique_ptr<rtc::SSLCertificate> remote_cert2; 942 std::unique_ptr<rtc::SSLCertificate> remote_cert2;
923 943
924 // After negotiation, each side has a distinct local certificate, but still no 944 // After negotiation, each side has a distinct local certificate, but still no
925 // remote certificate, because connection has not yet occurred. 945 // remote certificate, because connection has not yet occurred.
926 ASSERT_TRUE(client1_.transport()->GetLocalCertificate(&certificate1)); 946 ASSERT_TRUE(client1_.transport()->GetLocalCertificate(&certificate1));
927 ASSERT_TRUE(client2_.transport()->GetLocalCertificate(&certificate2)); 947 ASSERT_TRUE(client2_.transport()->GetLocalCertificate(&certificate2));
928 ASSERT_NE(certificate1->ssl_certificate().ToPEMString(), 948 ASSERT_NE(certificate1->ssl_certificate().ToPEMString(),
929 certificate2->ssl_certificate().ToPEMString()); 949 certificate2->ssl_certificate().ToPEMString());
930 ASSERT_FALSE(client1_.GetDtlsTransport(0)->GetRemoteSSLCertificate()); 950 ASSERT_FALSE(client1_.GetDtlsTransport(0)->GetRemoteSSLCertificate());
931 ASSERT_FALSE(client2_.GetDtlsTransport(0)->GetRemoteSSLCertificate()); 951 ASSERT_FALSE(client2_.GetDtlsTransport(0)->GetRemoteSSLCertificate());
932 } 952 }
933 953
934 // Test Certificates state after connection. 954 // Test Certificates state after connection.
935 TEST_F(DtlsTransportChannelTest, TestCertificatesAfterConnect) { 955 TEST_F(DtlsTransportChannelTest, TestCertificatesAfterConnect) {
956 MAYBE_SKIP_TEST(HaveDtls);
936 PrepareDtls(true, true, rtc::KT_DEFAULT); 957 PrepareDtls(true, true, rtc::KT_DEFAULT);
937 ASSERT_TRUE(Connect()); 958 ASSERT_TRUE(Connect());
938 959
939 rtc::scoped_refptr<rtc::RTCCertificate> certificate1; 960 rtc::scoped_refptr<rtc::RTCCertificate> certificate1;
940 rtc::scoped_refptr<rtc::RTCCertificate> certificate2; 961 rtc::scoped_refptr<rtc::RTCCertificate> certificate2;
941 962
942 // After connection, each side has a distinct local certificate. 963 // After connection, each side has a distinct local certificate.
943 ASSERT_TRUE(client1_.transport()->GetLocalCertificate(&certificate1)); 964 ASSERT_TRUE(client1_.transport()->GetLocalCertificate(&certificate1));
944 ASSERT_TRUE(client2_.transport()->GetLocalCertificate(&certificate2)); 965 ASSERT_TRUE(client2_.transport()->GetLocalCertificate(&certificate2));
945 ASSERT_NE(certificate1->ssl_certificate().ToPEMString(), 966 ASSERT_NE(certificate1->ssl_certificate().ToPEMString(),
(...skipping 10 matching lines...) Expand all
956 ASSERT_TRUE(remote_cert2); 977 ASSERT_TRUE(remote_cert2);
957 ASSERT_EQ(remote_cert2->ToPEMString(), 978 ASSERT_EQ(remote_cert2->ToPEMString(),
958 certificate1->ssl_certificate().ToPEMString()); 979 certificate1->ssl_certificate().ToPEMString());
959 } 980 }
960 981
961 // Test that packets are retransmitted according to the expected schedule. 982 // Test that packets are retransmitted according to the expected schedule.
962 // Each time a timeout occurs, the retransmission timer should be doubled up to 983 // Each time a timeout occurs, the retransmission timer should be doubled up to
963 // 60 seconds. The timer defaults to 1 second, but for WebRTC we should be 984 // 60 seconds. The timer defaults to 1 second, but for WebRTC we should be
964 // initializing it to 50ms. 985 // initializing it to 50ms.
965 TEST_F(DtlsTransportChannelTest, TestRetransmissionSchedule) { 986 TEST_F(DtlsTransportChannelTest, TestRetransmissionSchedule) {
987 MAYBE_SKIP_TEST(HaveDtls);
966 // We can only change the retransmission schedule with a recently-added 988 // We can only change the retransmission schedule with a recently-added
967 // BoringSSL API. Skip the test if not built with BoringSSL. 989 // BoringSSL API. Skip the test if not built with BoringSSL.
968 MAYBE_SKIP_TEST(IsBoringSsl); 990 MAYBE_SKIP_TEST(IsBoringSsl);
969 991
970 PrepareDtls(true, true, rtc::KT_DEFAULT); 992 PrepareDtls(true, true, rtc::KT_DEFAULT);
971 // Exchange transport descriptions. 993 // Exchange transport descriptions.
972 Negotiate(cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTIVE); 994 Negotiate(cricket::CONNECTIONROLE_ACTPASS, cricket::CONNECTIONROLE_ACTIVE);
973 995
974 // Make client2_ writable, but not client1_. 996 // Make client2_ writable, but not client1_.
975 // This means client1_ will send DTLS client hellos but get no response. 997 // This means client1_ will send DTLS client hellos but get no response.
(...skipping 20 matching lines...) Expand all
996 rtc::TimeDelta::FromMilliseconds(timeout_schedule_ms[i] - 1)); 1018 rtc::TimeDelta::FromMilliseconds(timeout_schedule_ms[i] - 1));
997 EXPECT_EQ(expected_hellos, client1_.received_dtls_client_hellos()); 1019 EXPECT_EQ(expected_hellos, client1_.received_dtls_client_hellos());
998 fake_clock_.AdvanceTime(rtc::TimeDelta::FromMilliseconds(1)); 1020 fake_clock_.AdvanceTime(rtc::TimeDelta::FromMilliseconds(1));
999 EXPECT_EQ(++expected_hellos, client1_.received_dtls_client_hellos()); 1021 EXPECT_EQ(++expected_hellos, client1_.received_dtls_client_hellos());
1000 } 1022 }
1001 } 1023 }
1002 1024
1003 // Test that a DTLS connection can be made even if the underlying transport 1025 // Test that a DTLS connection can be made even if the underlying transport
1004 // is connected before DTLS fingerprints/roles have been negotiated. 1026 // is connected before DTLS fingerprints/roles have been negotiated.
1005 TEST_F(DtlsTransportChannelTest, TestConnectBeforeNegotiate) { 1027 TEST_F(DtlsTransportChannelTest, TestConnectBeforeNegotiate) {
1028 MAYBE_SKIP_TEST(HaveDtls);
1006 PrepareDtls(true, true, rtc::KT_DEFAULT); 1029 PrepareDtls(true, true, rtc::KT_DEFAULT);
1007 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS, 1030 ASSERT_TRUE(Connect(cricket::CONNECTIONROLE_ACTPASS,
1008 cricket::CONNECTIONROLE_ACTIVE, 1031 cricket::CONNECTIONROLE_ACTIVE,
1009 CONNECT_BEFORE_NEGOTIATE)); 1032 CONNECT_BEFORE_NEGOTIATE));
1010 TestTransfer(0, 1000, 100, false); 1033 TestTransfer(0, 1000, 100, false);
1011 } 1034 }
1012 1035
1013 // The following events can occur in many different orders: 1036 // The following events can occur in many different orders:
1014 // 1. Caller receives remote fingerprint. 1037 // 1. Caller receives remote fingerprint.
1015 // 2. Caller is writable. 1038 // 2. Caller is writable.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 EXPECT_EQ(1, client1_.received_dtls_client_hellos()); 1151 EXPECT_EQ(1, client1_.received_dtls_client_hellos());
1129 EXPECT_EQ(1, client2_.received_dtls_server_hellos()); 1152 EXPECT_EQ(1, client2_.received_dtls_server_hellos());
1130 1153
1131 if (valid_fingerprint) { 1154 if (valid_fingerprint) {
1132 TestTransfer(0, 1000, 100, false); 1155 TestTransfer(0, 1000, 100, false);
1133 } 1156 }
1134 } 1157 }
1135 }; 1158 };
1136 1159
1137 TEST_P(DtlsEventOrderingTest, TestEventOrdering) { 1160 TEST_P(DtlsEventOrderingTest, TestEventOrdering) {
1161 MAYBE_SKIP_TEST(HaveDtls);
1138 TestEventOrdering(::testing::get<0>(GetParam()), 1162 TestEventOrdering(::testing::get<0>(GetParam()),
1139 ::testing::get<1>(GetParam())); 1163 ::testing::get<1>(GetParam()));
1140 } 1164 }
1141 1165
1142 INSTANTIATE_TEST_CASE_P( 1166 INSTANTIATE_TEST_CASE_P(
1143 TestEventOrdering, 1167 TestEventOrdering,
1144 DtlsEventOrderingTest, 1168 DtlsEventOrderingTest,
1145 ::testing::Combine( 1169 ::testing::Combine(
1146 ::testing::Values( 1170 ::testing::Values(
1147 std::vector<DtlsTransportEvent>{ 1171 std::vector<DtlsTransportEvent>{
(...skipping 14 matching lines...) Expand all
1162 std::vector<DtlsTransportEvent>{ 1186 std::vector<DtlsTransportEvent>{
1163 CALLER_RECEIVES_CLIENTHELLO, CALLER_RECEIVES_FINGERPRINT, 1187 CALLER_RECEIVES_CLIENTHELLO, CALLER_RECEIVES_FINGERPRINT,
1164 CALLER_WRITABLE, HANDSHAKE_FINISHES}, 1188 CALLER_WRITABLE, HANDSHAKE_FINISHES},
1165 std::vector<DtlsTransportEvent>{ 1189 std::vector<DtlsTransportEvent>{
1166 CALLER_RECEIVES_CLIENTHELLO, CALLER_WRITABLE, 1190 CALLER_RECEIVES_CLIENTHELLO, CALLER_WRITABLE,
1167 CALLER_RECEIVES_FINGERPRINT, HANDSHAKE_FINISHES}, 1191 CALLER_RECEIVES_FINGERPRINT, HANDSHAKE_FINISHES},
1168 std::vector<DtlsTransportEvent>{CALLER_RECEIVES_CLIENTHELLO, 1192 std::vector<DtlsTransportEvent>{CALLER_RECEIVES_CLIENTHELLO,
1169 CALLER_WRITABLE, HANDSHAKE_FINISHES, 1193 CALLER_WRITABLE, HANDSHAKE_FINISHES,
1170 CALLER_RECEIVES_FINGERPRINT}), 1194 CALLER_RECEIVES_FINGERPRINT}),
1171 ::testing::Bool())); 1195 ::testing::Bool()));
OLDNEW
« no previous file with comments | « webrtc/p2p/BUILD.gn ('k') | webrtc/pc/channel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698