Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 3ddebe5

Browse files
committed
Bug 1944631 - Migrate histograms to use Glean APIs for remaining SSL_* histograms, r=chutten.
Differential Revision: https://phabricator.services.mozilla.com/D235673
1 parent c2d3df7 commit 3ddebe5

File tree

6 files changed

+850
-110
lines changed

6 files changed

+850
-110
lines changed

security/manager/ssl/NSSSocketControl.cpp

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -90,32 +90,27 @@ void NSSSocketControl::NoteTimeUntilReady() {
9090
}
9191
mNotedTimeUntilReady = true;
9292

93-
auto timestampNow = TimeStamp::Now();
93+
auto duration = TimeStamp::Now() - mSocketCreationTimestamp;
9494
if (!(mProviderFlags & nsISocketProvider::IS_RETRY)) {
95-
Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY_FIRST_TRY,
96-
mSocketCreationTimestamp, timestampNow);
95+
glean::ssl::time_until_ready_first_try.AccumulateRawDuration(duration);
9796
}
9897

9998
if (mProviderFlags & nsISocketProvider::BE_CONSERVATIVE) {
100-
Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY_CONSERVATIVE,
101-
mSocketCreationTimestamp, timestampNow);
99+
glean::ssl::time_until_ready_conservative.AccumulateRawDuration(duration);
102100
}
103101

104102
switch (GetEchExtensionStatus()) {
105103
case EchExtensionStatus::kGREASE:
106-
Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY_ECH_GREASE,
107-
mSocketCreationTimestamp, timestampNow);
104+
glean::ssl::time_until_ready_ech_grease.AccumulateRawDuration(duration);
108105
break;
109106
case EchExtensionStatus::kReal:
110-
Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY_ECH,
111-
mSocketCreationTimestamp, timestampNow);
107+
glean::ssl::time_until_ready_ech.AccumulateRawDuration(duration);
112108
break;
113109
default:
114110
break;
115111
}
116112
// This will include TCP and proxy tunnel wait time
117-
Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY,
118-
mSocketCreationTimestamp, timestampNow);
113+
glean::ssl::time_until_ready.AccumulateRawDuration(duration);
119114

120115
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
121116
("[%p] NSSSocketControl::NoteTimeUntilReady\n", mFd));
@@ -138,15 +133,16 @@ void NSSSocketControl::SetHandshakeCompleted() {
138133
: NotAllowedToFalseStart;
139134
// This will include TCP and proxy tunnel wait time
140135
if (mKeaGroupName.isSome()) {
141-
Telemetry::AccumulateTimeDelta(
142-
Telemetry::SSL_TIME_UNTIL_HANDSHAKE_FINISHED_KEYED_BY_KA,
143-
*mKeaGroupName, mSocketCreationTimestamp, TimeStamp::Now());
136+
glean::ssl::time_until_handshake_finished_keyed_by_ka.Get(*mKeaGroupName)
137+
.AccumulateRawDuration(TimeStamp::Now() - mSocketCreationTimestamp);
144138
}
145139

146140
// If the handshake is completed for the first time from just 1 callback
147141
// that means that TLS session resumption must have been used.
148-
Telemetry::Accumulate(Telemetry::SSL_RESUMED_SESSION,
149-
handshakeType == Resumption);
142+
glean::ssl::resumed_session
143+
.EnumGet(static_cast<glean::ssl::ResumedSessionLabel>(handshakeType ==
144+
Resumption))
145+
.Add();
150146
glean::ssl_handshake::completed.AccumulateSingleSample(handshakeType);
151147
}
152148

@@ -436,8 +432,8 @@ void NSSSocketControl::SetCertVerificationResult(PRErrorCode errorCode) {
436432
}
437433

438434
if (mPlaintextBytesRead && !errorCode) {
439-
Telemetry::Accumulate(Telemetry::SSL_BYTES_BEFORE_CERT_CALLBACK,
440-
AssertedCast<uint32_t>(mPlaintextBytesRead));
435+
glean::ssl::bytes_before_cert_callback.Accumulate(
436+
AssertedCast<uint32_t>(mPlaintextBytesRead));
441437
}
442438

443439
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,

security/manager/ssl/SSLServerCertVerification.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@
109109
#include "mozilla/Casting.h"
110110
#include "mozilla/RefPtr.h"
111111
#include "mozilla/StaticPrefs_security.h"
112-
#include "mozilla/Telemetry.h"
113112
#include "mozilla/UniquePtr.h"
114113
#include "mozilla/Unused.h"
115114
#include "mozilla/glean/SecurityManagerSslMetrics.h"
@@ -443,7 +442,7 @@ static SECStatus BlockServerCertChangeForSpdy(
443442
}
444443

445444
void GatherTelemetryForSingleSCT(const ct::VerifiedSCT& verifiedSct) {
446-
// See SSL_SCTS_VERIFICATION_STATUS in Histograms.json.
445+
// See scts_verification_status in metrics.yaml.
447446
uint32_t verificationStatus = 0;
448447
switch (verifiedSct.logState) {
449448
case ct::CTLogState::Admissible:
@@ -453,8 +452,8 @@ void GatherTelemetryForSingleSCT(const ct::VerifiedSCT& verifiedSct) {
453452
verificationStatus = 5;
454453
break;
455454
}
456-
Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS,
457-
verificationStatus);
455+
glean::ssl::scts_verification_status.AccumulateSingleSample(
456+
verificationStatus);
458457
}
459458

460459
void GatherCertificateTransparencyTelemetry(
@@ -469,45 +468,45 @@ void GatherCertificateTransparencyTelemetry(
469468
GatherTelemetryForSingleSCT(sct);
470469
}
471470

472-
// See SSL_SCTS_VERIFICATION_STATUS in Histograms.json.
471+
// See scts_verification_status in metrics.yaml.
473472
for (size_t i = 0; i < info.verifyResult.decodingErrors; ++i) {
474-
Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, 0);
473+
glean::ssl::scts_verification_status.AccumulateSingleSample(0);
475474
}
476475
for (size_t i = 0; i < info.verifyResult.sctsFromUnknownLogs; ++i) {
477-
Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, 2);
476+
glean::ssl::scts_verification_status.AccumulateSingleSample(2);
478477
}
479478
for (size_t i = 0; i < info.verifyResult.sctsWithInvalidSignatures; ++i) {
480-
Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, 3);
479+
glean::ssl::scts_verification_status.AccumulateSingleSample(3);
481480
}
482481
for (size_t i = 0; i < info.verifyResult.sctsWithInvalidTimestamps; ++i) {
483-
Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, 4);
482+
glean::ssl::scts_verification_status.AccumulateSingleSample(4);
484483
}
485484

486-
// See SSL_SCTS_ORIGIN in Histograms.json.
485+
// See scts_origin in metrics.yaml.
487486
for (size_t i = 0; i < info.verifyResult.embeddedSCTs; ++i) {
488-
Telemetry::Accumulate(Telemetry::SSL_SCTS_ORIGIN, 1);
487+
glean::ssl::scts_origin.AccumulateSingleSample(1);
489488
}
490489
for (size_t i = 0; i < info.verifyResult.sctsFromTLSHandshake; ++i) {
491-
Telemetry::Accumulate(Telemetry::SSL_SCTS_ORIGIN, 2);
490+
glean::ssl::scts_origin.AccumulateSingleSample(2);
492491
}
493492
for (size_t i = 0; i < info.verifyResult.sctsFromOCSP; ++i) {
494-
Telemetry::Accumulate(Telemetry::SSL_SCTS_ORIGIN, 3);
493+
glean::ssl::scts_origin.AccumulateSingleSample(3);
495494
}
496495

497496
// Handle the histogram of SCTs counts.
498497
uint32_t sctsCount =
499498
static_cast<uint32_t>(info.verifyResult.verifiedScts.size());
500499
// Note that sctsCount can also be 0 in case we've received SCT binary data,
501500
// but it failed to parse (e.g. due to unsupported CT protocol version).
502-
Telemetry::Accumulate(Telemetry::SSL_SCTS_PER_CONNECTION, sctsCount);
501+
glean::ssl::scts_per_connection.AccumulateSingleSample(sctsCount);
503502

504503
// Report CT Policy compliance by CA.
505504
if (info.policyCompliance.isSome() &&
506505
*info.policyCompliance != ct::CTPolicyCompliance::Compliant) {
507506
int32_t binId = RootCABinNumber(rootCert);
508507
if (binId != ROOT_CERTIFICATE_HASH_FAILURE) {
509-
Telemetry::Accumulate(
510-
Telemetry::SSL_CT_POLICY_NON_COMPLIANT_CONNECTIONS_BY_CA_2, binId);
508+
glean::ssl::ct_policy_non_compliant_connections_by_ca
509+
.AccumulateSingleSample(binId);
511510
}
512511
}
513512
}
@@ -529,7 +528,7 @@ static void CollectCertTelemetry(
529528
glean::cert::ev_status.AccumulateSingleSample(evStatus);
530529

531530
if (aOcspStaplingStatus != CertVerifier::OCSP_STAPLING_NEVER_CHECKED) {
532-
Telemetry::Accumulate(Telemetry::SSL_OCSP_STAPLING, aOcspStaplingStatus);
531+
glean::ssl::ocsp_stapling.AccumulateSingleSample(aOcspStaplingStatus);
533532
}
534533

535534
if (aKeySizeStatus != KeySizeStatus::NeverChecked) {
@@ -660,7 +659,7 @@ PRErrorCode AuthCertificateParseResults(
660659
nsITransportSecurityInfo::OverridableErrorCategory&
661660
aOverridableErrorCategory) {
662661
uint32_t probeValue = MapCertErrorToProbeValue(aCertVerificationError);
663-
Telemetry::Accumulate(Telemetry::SSL_CERT_VERIFICATION_ERRORS, probeValue);
662+
glean::ssl::cert_verification_errors.AccumulateSingleSample(probeValue);
664663

665664
Maybe<nsITransportSecurityInfo::OverridableErrorCategory>
666665
maybeOverridableErrorCategory =
@@ -703,7 +702,7 @@ PRErrorCode AuthCertificateParseResults(
703702
if (haveOverride) {
704703
uint32_t probeValue =
705704
MapOverridableErrorToProbeValue(aCertVerificationError);
706-
Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue);
705+
glean::ssl::cert_error_overrides.AccumulateSingleSample(probeValue);
707706
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
708707
("[0x%" PRIx64 "] certificate error overridden", aPtrForLog));
709708
return 0;
@@ -804,7 +803,7 @@ SSLServerCertVerificationJob::Run() {
804803
if (result == Success) {
805804
mozilla::glean::cert_verification_time::success.AccumulateRawDuration(
806805
elapsed);
807-
Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, 1);
806+
glean::ssl::cert_error_overrides.AccumulateSingleSample(1);
808807

809808
nsresult rv = mResultTask->Dispatch(
810809
std::move(builtChainBytesArray), std::move(mPeerCertChain),

0 commit comments

Comments
 (0)