aboutsummaryrefslogtreecommitdiff
path: root/talk/app/webrtc/peerconnection_unittest.cc
diff options
context:
space:
mode:
authorjbauch <jbauch@webrtc.org>2015-07-03 01:36:14 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-03 08:36:22 +0000
commitac8869ec5a606e0a0ab71e70937c8fbf403630ce (patch)
tree1aebdf51540e1b3fa805c010bbef2eaa0a755e40 /talk/app/webrtc/peerconnection_unittest.cc
parent366e95252aba863f886aa692459bf267e5525d86 (diff)
downloadwebrtc-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.cc37
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.