Add error detail metric to some session methods
[ Merge from http://go/wvgerrit/71726 ] Adds an error detail metric attribute to RestoreUsageSession and RestoreOfflineSession. These metrics will now report an additional attribute providing additional error detail for debugging. BUG: http://b/115517916 Test: CDM Unit Tests. Manually tried GPlay. Change-Id: Ib48361ef29d33a16150473d8967e4850bc0c623d
This commit is contained in:
@@ -67,6 +67,8 @@ const int kErrorCodeFieldNumber =
|
||||
::drm_metrics::Attributes::kErrorCodeFieldNumber;
|
||||
const int kErrorCodeBoolFieldNumber =
|
||||
::drm_metrics::Attributes::kErrorCodeBoolFieldNumber;
|
||||
const int kErrorDetailFieldNumber =
|
||||
::drm_metrics::Attributes::kErrorDetailFieldNumber;
|
||||
const int kCdmSecurityLevelFieldNumber =
|
||||
::drm_metrics::Attributes::kCdmSecurityLevelFieldNumber;
|
||||
const int kSecurityLevelFieldNumber =
|
||||
@@ -276,9 +278,11 @@ class SessionMetrics {
|
||||
// Metrics collected at the session level.
|
||||
ValueMetric<double> cdm_session_life_span_; // Milliseconds.
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType> cdm_session_renew_key_;
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType,
|
||||
kErrorDetailFieldNumber, CdmResponseType>
|
||||
cdm_session_restore_offline_session_;
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType,
|
||||
kErrorDetailFieldNumber, CdmResponseType>
|
||||
cdm_session_restore_usage_session_;
|
||||
|
||||
EventMetric<kKeyRequestTypeFieldNumber, CdmKeyRequestType>
|
||||
@@ -401,7 +405,8 @@ class EngineMetrics {
|
||||
cdm_engine_get_provisioning_request_;
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
cdm_engine_get_secure_stop_ids_;
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType,
|
||||
kErrorDetailFieldNumber, CdmResponseType>
|
||||
cdm_engine_get_usage_info_;
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
cdm_engine_handle_provisioning_response_;
|
||||
|
||||
@@ -88,6 +88,14 @@ void SetAttributeField<drm_metrics::Attributes::kLicenseTypeFieldNumber,
|
||||
attributes->set_license_type(license_type);
|
||||
}
|
||||
|
||||
template <>
|
||||
void SetAttributeField<drm_metrics::Attributes::kErrorDetailFieldNumber,
|
||||
CdmResponseType>(
|
||||
const CdmResponseType &error_detail,
|
||||
drm_metrics::Attributes *attributes) {
|
||||
attributes->set_error_detail(error_detail);
|
||||
}
|
||||
|
||||
template <>
|
||||
void SetAttributeField<0, util::Unused>(const util::Unused &,
|
||||
drm_metrics::Attributes *) {
|
||||
|
||||
@@ -48,6 +48,8 @@ message Attributes {
|
||||
optional uint32 key_request_type = 16;
|
||||
// Contains the CdmLicenseType defined in wv_cdm_types.h.
|
||||
optional uint32 license_type = 17;
|
||||
// Error detail supplemental to the error_code field.
|
||||
optional int32 error_detail = 18;
|
||||
}
|
||||
|
||||
// The Counter message is used to store a count value with an associated
|
||||
|
||||
@@ -41,7 +41,8 @@ TEST_F(EngineMetricsTest, AllEngineMetrics) {
|
||||
engine_metrics.cdm_engine_find_session_for_key_.Increment(false);
|
||||
engine_metrics.cdm_engine_generate_key_request_.Record(1.0, NO_ERROR, kLicenseTypeRelease);
|
||||
engine_metrics.cdm_engine_get_provisioning_request_.Record(1.0, NO_ERROR);
|
||||
engine_metrics.cdm_engine_get_usage_info_.Record(1.0, NO_ERROR);
|
||||
engine_metrics.cdm_engine_get_usage_info_.Record(1.0, NO_ERROR,
|
||||
UNKNOWN_ERROR);
|
||||
engine_metrics.cdm_engine_handle_provisioning_response_.Record(1.0, NO_ERROR);
|
||||
engine_metrics.cdm_engine_open_key_set_session_.Increment(NO_ERROR);
|
||||
engine_metrics.cdm_engine_open_session_.Increment(NO_ERROR);
|
||||
@@ -87,6 +88,12 @@ TEST_F(EngineMetricsTest, AllEngineMetrics) {
|
||||
EXPECT_EQ(OEMCrypto_INITIALIZED_FORCING_L3,
|
||||
actual_metrics.engine_metrics().oemcrypto_initialization_mode()
|
||||
.int_value());
|
||||
ASSERT_EQ(
|
||||
1, actual_metrics.engine_metrics()
|
||||
.cdm_engine_get_usage_info_time_us_size());
|
||||
|
||||
EXPECT_EQ(UNKNOWN_ERROR, actual_metrics.engine_metrics()
|
||||
.cdm_engine_get_usage_info_time_us(0).attributes().error_detail());
|
||||
}
|
||||
|
||||
TEST_F(EngineMetricsTest, EngineAndCryptoMetrics) {
|
||||
@@ -244,8 +251,10 @@ TEST_F(SessionMetricsTest, AllSessionMetrics) {
|
||||
session_metrics.SetSessionId(kSessionId1);
|
||||
session_metrics.cdm_session_life_span_.Record(1.0);
|
||||
session_metrics.cdm_session_renew_key_.Record(1.0, NO_ERROR);
|
||||
session_metrics.cdm_session_restore_offline_session_.Increment(NO_ERROR);
|
||||
session_metrics.cdm_session_restore_usage_session_.Increment(NO_ERROR);
|
||||
session_metrics.cdm_session_restore_offline_session_.Increment(NO_ERROR,
|
||||
UNKNOWN_ERROR);
|
||||
session_metrics.cdm_session_restore_usage_session_.Increment(NO_ERROR,
|
||||
UNKNOWN_ERROR);
|
||||
session_metrics.cdm_session_license_request_latency_ms_.Record(
|
||||
2.0, kKeyRequestTypeInitial);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user