Index: webrtc/base/sslstreamadapter_unittest.cc |
diff --git a/webrtc/base/sslstreamadapter_unittest.cc b/webrtc/base/sslstreamadapter_unittest.cc |
index 82036913e0ea7eaedc7ef134409a6a37767d1a61..9d73abc304f3ef1a74c9cac163250e7900b5829a 100644 |
--- a/webrtc/base/sslstreamadapter_unittest.cc |
+++ b/webrtc/base/sslstreamadapter_unittest.cc |
@@ -19,6 +19,7 @@ |
#include "webrtc/base/gunit.h" |
#include "webrtc/base/helpers.h" |
#include "webrtc/base/ssladapter.h" |
+#include "webrtc/base/sslconfig.h" |
#include "webrtc/base/sslidentity.h" |
#include "webrtc/base/sslstreamadapter.h" |
#include "webrtc/base/stream.h" |
@@ -63,6 +64,12 @@ |
"LJE/mGw3MyFHEqi81jh95J+ypl6xKW6Rm8jKLR87gUvCaVYn/Z4/P3AqcQTB7wOv\n" |
"UD0A8qfhfDM+LK6rPAnCsVN0NRDY3jvd6rzix9M=\n" |
"-----END CERTIFICATE-----\n"; |
+ |
+#define MAYBE_SKIP_TEST(feature) \ |
+ if (!(rtc::SSLStreamAdapter::feature())) { \ |
+ LOG(LS_INFO) << "Feature disabled... skipping"; \ |
+ return; \ |
+ } |
class SSLStreamAdapterTestBase; |
@@ -956,6 +963,7 @@ |
// Basic tests: DTLS |
// Test that we can make a handshake work |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSConnect) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
TestHandshake(); |
}; |
@@ -963,12 +971,14 @@ |
// each direction is lost. This gives us predictable loss |
// rather than having to tune random |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSConnectWithLostFirstPacket) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetLoseFirstPacket(true); |
TestHandshake(); |
}; |
// Test a handshake with loss and delay |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSConnectWithLostFirstPacketDelay2s) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetLoseFirstPacket(true); |
SetDelay(2000); |
SetHandshakeWait(20000); |
@@ -978,6 +988,7 @@ |
// Test a handshake with small MTU |
// Disabled due to https://code.google.com/p/webrtc/issues/detail?id=3910 |
TEST_P(SSLStreamAdapterTestDTLS, DISABLED_TestDTLSConnectWithSmallMtu) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetMtu(700); |
SetHandshakeWait(20000); |
TestHandshake(); |
@@ -985,17 +996,20 @@ |
// Test transfer -- trivial |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSTransfer) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
TestHandshake(); |
TestTransfer(100); |
}; |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSTransferWithLoss) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
TestHandshake(); |
SetLoss(10); |
TestTransfer(100); |
}; |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSTransferWithDamage) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetDamage(); // Must be called first because first packet |
// write happens at end of handshake. |
TestHandshake(); |
@@ -1012,6 +1026,7 @@ |
// Test DTLS-SRTP with all high ciphers |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpHigh) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> high; |
high.push_back(rtc::SRTP_AES128_CM_SHA1_80); |
SetDtlsSrtpCryptoSuites(high, true); |
@@ -1029,6 +1044,7 @@ |
// Test DTLS-SRTP with all low ciphers |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpLow) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> low; |
low.push_back(rtc::SRTP_AES128_CM_SHA1_32); |
SetDtlsSrtpCryptoSuites(low, true); |
@@ -1046,6 +1062,7 @@ |
// Test DTLS-SRTP with a mismatch -- should not converge |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpHighLow) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> high; |
high.push_back(rtc::SRTP_AES128_CM_SHA1_80); |
std::vector<int> low; |
@@ -1062,6 +1079,7 @@ |
// Test DTLS-SRTP with each side being mixed -- should select high |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpMixed) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> mixed; |
mixed.push_back(rtc::SRTP_AES128_CM_SHA1_80); |
mixed.push_back(rtc::SRTP_AES128_CM_SHA1_32); |
@@ -1080,6 +1098,7 @@ |
// Test DTLS-SRTP with all GCM-128 ciphers. |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpGCM128) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> gcm128; |
gcm128.push_back(rtc::SRTP_AEAD_AES_128_GCM); |
SetDtlsSrtpCryptoSuites(gcm128, true); |
@@ -1097,6 +1116,7 @@ |
// Test DTLS-SRTP with all GCM-256 ciphers. |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpGCM256) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> gcm256; |
gcm256.push_back(rtc::SRTP_AEAD_AES_256_GCM); |
SetDtlsSrtpCryptoSuites(gcm256, true); |
@@ -1114,6 +1134,7 @@ |
// Test DTLS-SRTP with mixed GCM-128/-256 ciphers -- should not converge. |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpGCMMismatch) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> gcm128; |
gcm128.push_back(rtc::SRTP_AEAD_AES_128_GCM); |
std::vector<int> gcm256; |
@@ -1130,6 +1151,7 @@ |
// Test DTLS-SRTP with both GCM-128/-256 ciphers -- should select GCM-256. |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSSrtpGCMMixed) { |
+ MAYBE_SKIP_TEST(HaveDtlsSrtp); |
std::vector<int> gcmBoth; |
gcmBoth.push_back(rtc::SRTP_AEAD_AES_256_GCM); |
gcmBoth.push_back(rtc::SRTP_AEAD_AES_128_GCM); |
@@ -1177,6 +1199,7 @@ |
// Test an exporter |
TEST_P(SSLStreamAdapterTestDTLS, TestDTLSExporter) { |
+ MAYBE_SKIP_TEST(HaveExporter); |
TestHandshake(); |
unsigned char client_out[20]; |
unsigned char server_out[20]; |
@@ -1199,6 +1222,7 @@ |
// Test not yet valid certificates are not rejected. |
TEST_P(SSLStreamAdapterTestDTLS, TestCertNotYetValid) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
long one_day = 60 * 60 * 24; |
// Make the certificates not valid until one day later. |
ResetIdentitiesWithValidity(one_day, one_day); |
@@ -1207,6 +1231,7 @@ |
// Test expired certificates are not rejected. |
TEST_P(SSLStreamAdapterTestDTLS, TestCertExpired) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
long one_day = 60 * 60 * 24; |
// Make the certificates already expired. |
ResetIdentitiesWithValidity(-one_day, -one_day); |
@@ -1215,12 +1240,15 @@ |
// Test data transfer using certs created from strings. |
TEST_F(SSLStreamAdapterTestDTLSFromPEMStrings, TestTransfer) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
TestHandshake(); |
TestTransfer(100); |
} |
// Test getting the remote certificate. |
TEST_F(SSLStreamAdapterTestDTLSFromPEMStrings, TestDTLSGetPeerCertificate) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
+ |
// Peer certificates haven't been received yet. |
ASSERT_FALSE(GetPeerCertificate(true)); |
ASSERT_FALSE(GetPeerCertificate(false)); |
@@ -1254,6 +1282,7 @@ |
// Test getting the used DTLS ciphers. |
// DTLS 1.2 enabled for neither client nor server -> DTLS 1.0 will be used. |
TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuite) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_10); |
TestHandshake(); |
@@ -1273,6 +1302,7 @@ |
// Test getting the used DTLS 1.2 ciphers. |
// DTLS 1.2 enabled for client and server -> DTLS 1.2 will be used. |
TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Both) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_12); |
TestHandshake(); |
@@ -1291,6 +1321,7 @@ |
// DTLS 1.2 enabled for client only -> DTLS 1.0 will be used. |
TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Client) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_12); |
TestHandshake(); |
@@ -1309,6 +1340,7 @@ |
// DTLS 1.2 enabled for server only -> DTLS 1.0 will be used. |
TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Server) { |
+ MAYBE_SKIP_TEST(HaveDtls); |
SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_10); |
TestHandshake(); |