diff options
author | jbauch <jbauch@webrtc.org> | 2015-07-03 01:36:14 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-03 08:36:22 +0000 |
commit | ac8869ec5a606e0a0ab71e70937c8fbf403630ce (patch) | |
tree | 1aebdf51540e1b3fa805c010bbef2eaa0a755e40 /talk/app/webrtc/peerconnection_unittest.cc | |
parent | 366e95252aba863f886aa692459bf267e5525d86 (diff) | |
download | webrtc-ac8869ec5a606e0a0ab71e70937c8fbf403630ce.tar.gz |
Report metrics about negotiated ciphers.
This CL adds an API to the metrics observer interface to report negotiated
ciphers for WebRTC sessions. This can be used from Chromium for UMA metrics
later to get an idea which cipher suites are used by clients (e.g. compare
the use of DTLS 1.0 / 1.2).
BUG=428343
Review URL: https://codereview.webrtc.org/1156143005
Cr-Commit-Position: refs/heads/master@{#9537}
Diffstat (limited to 'talk/app/webrtc/peerconnection_unittest.cc')
-rw-r--r-- | talk/app/webrtc/peerconnection_unittest.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/talk/app/webrtc/peerconnection_unittest.cc b/talk/app/webrtc/peerconnection_unittest.cc index b9d80196e6..fd58ecdff6 100644 --- a/talk/app/webrtc/peerconnection_unittest.cc +++ b/talk/app/webrtc/peerconnection_unittest.cc @@ -33,6 +33,7 @@ #include <vector> #include "talk/app/webrtc/dtmfsender.h" +#include "talk/app/webrtc/fakemetricsobserver.h" #include "talk/app/webrtc/fakeportallocatorfactory.h" #include "talk/app/webrtc/localaudiosource.h" #include "talk/app/webrtc/mediastreaminterface.h" @@ -1336,17 +1337,26 @@ TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12None) { PeerConnectionFactory::Options recv_options; recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); + rtc::scoped_refptr<webrtc::FakeMetricsObserver> + init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); + initializing_client()->pc()->RegisterUMAObserver(init_observer); LocalP2PTest(); EXPECT_EQ_WAIT( rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), initializing_client()->GetDtlsCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), + init_observer->GetStringHistogramSample(webrtc::kAudioSslCipher)); EXPECT_EQ_WAIT( kDefaultSrtpCipher, initializing_client()->GetSrtpCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + kDefaultSrtpCipher, + init_observer->GetStringHistogramSample(webrtc::kAudioSrtpCipher)); } // Test that DTLS 1.2 is used if both ends support it. @@ -1356,17 +1366,26 @@ TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Both) { PeerConnectionFactory::Options recv_options; recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); + rtc::scoped_refptr<webrtc::FakeMetricsObserver> + init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); + initializing_client()->pc()->RegisterUMAObserver(init_observer); LocalP2PTest(); EXPECT_EQ_WAIT( rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_12), initializing_client()->GetDtlsCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_12), + init_observer->GetStringHistogramSample(webrtc::kAudioSslCipher)); EXPECT_EQ_WAIT( kDefaultSrtpCipher, initializing_client()->GetSrtpCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + kDefaultSrtpCipher, + init_observer->GetStringHistogramSample(webrtc::kAudioSrtpCipher)); } // Test that DTLS 1.0 is used if the initator supports DTLS 1.2 and the @@ -1377,17 +1396,26 @@ TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Init) { PeerConnectionFactory::Options recv_options; recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_10; ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); + rtc::scoped_refptr<webrtc::FakeMetricsObserver> + init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); + initializing_client()->pc()->RegisterUMAObserver(init_observer); LocalP2PTest(); EXPECT_EQ_WAIT( rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), initializing_client()->GetDtlsCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), + init_observer->GetStringHistogramSample(webrtc::kAudioSslCipher)); EXPECT_EQ_WAIT( kDefaultSrtpCipher, initializing_client()->GetSrtpCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + kDefaultSrtpCipher, + init_observer->GetStringHistogramSample(webrtc::kAudioSrtpCipher)); } // Test that DTLS 1.0 is used if the initator supports DTLS 1.0 and the @@ -1398,17 +1426,26 @@ TEST_F(JsepPeerConnectionP2PTestClient, GetDtls12Recv) { PeerConnectionFactory::Options recv_options; recv_options.ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12; ASSERT_TRUE(CreateTestClients(NULL, &init_options, NULL, &recv_options)); + rtc::scoped_refptr<webrtc::FakeMetricsObserver> + init_observer = new rtc::RefCountedObject<webrtc::FakeMetricsObserver>(); + initializing_client()->pc()->RegisterUMAObserver(init_observer); LocalP2PTest(); EXPECT_EQ_WAIT( rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), initializing_client()->GetDtlsCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + rtc::SSLStreamAdapter::GetDefaultSslCipher(rtc::SSL_PROTOCOL_DTLS_10), + init_observer->GetStringHistogramSample(webrtc::kAudioSslCipher)); EXPECT_EQ_WAIT( kDefaultSrtpCipher, initializing_client()->GetSrtpCipherStats(), kMaxWaitForStatsMs); + EXPECT_EQ( + kDefaultSrtpCipher, + init_observer->GetStringHistogramSample(webrtc::kAudioSrtpCipher)); } // This test sets up a call between two parties with audio, video and data. |