Squashed merge 3 CLs.

1. "Change CdmResponseType from enum into a struct"
Merged from http://go/wvgerrit/163199
Bug: 253271674

2. "Log request information when server returns 401"
Bug: 260760387
Bug: 186031735
Merged from http://go/wvgerrit/162798

3. "Specify server version on the command line"
Bug: 251599048
Merged from http://go/wvgerrit/158897

Test: build android.hardware.drm-service.widevine
Test: Netflix and Play Movies & TV
Test: build_and_run_all_unit_tests.sh

Bug: 253271674
Change-Id: I70c950acce070609ee0343920ec68e66b058bc23
This commit is contained in:
Robert Shih
2022-11-16 10:02:18 -08:00
committed by Edwin Wong
parent ac9641ae13
commit 096b0eda5a
46 changed files with 1726 additions and 1443 deletions

View File

@@ -20,6 +20,13 @@ template <>
void SetAttributeField<drm_metrics::Attributes::kErrorCodeFieldNumber,
CdmResponseType>(const CdmResponseType& cdm_error,
drm_metrics::Attributes* attributes) {
attributes->set_error_code(cdm_error.Enum());
}
template <>
void SetAttributeField<drm_metrics::Attributes::kErrorCodeFieldNumber,
CdmResponseEnum>(const CdmResponseEnum& cdm_error,
drm_metrics::Attributes* attributes) {
attributes->set_error_code(cdm_error);
}

View File

@@ -31,32 +31,42 @@ TEST_F(EngineMetricsTest, AllEngineMetrics) {
EngineMetrics engine_metrics;
// Set some values in all of the engine metrics.
engine_metrics.cdm_engine_add_key_.Record(1.0, KEY_ADDED,
engine_metrics.cdm_engine_add_key_.Record(1.0, CdmResponseType(KEY_ADDED),
kLicenseTypeRelease);
engine_metrics.cdm_engine_close_session_.Increment(NO_ERROR);
engine_metrics.cdm_engine_decrypt_.Record(1.0, NO_ERROR,
engine_metrics.cdm_engine_close_session_.Increment(CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_decrypt_.Record(1.0, CdmResponseType(NO_ERROR),
metrics::Pow2Bucket(8));
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,
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);
engine_metrics.cdm_engine_query_key_status_.Record(1.0, NO_ERROR);
engine_metrics.cdm_engine_release_all_usage_info_.Increment(NO_ERROR);
engine_metrics.cdm_engine_release_usage_info_.Increment(NO_ERROR);
engine_metrics.cdm_engine_remove_keys_.Increment(NO_ERROR);
engine_metrics.cdm_engine_restore_key_.Record(1.0, NO_ERROR);
engine_metrics.cdm_engine_unprovision_.Increment(NO_ERROR, kSecurityLevelL1);
engine_metrics.cdm_engine_generate_key_request_.Record(
1.0, CdmResponseType(NO_ERROR), kLicenseTypeRelease);
engine_metrics.cdm_engine_get_provisioning_request_.Record(
1.0, CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_get_usage_info_.Record(
1.0, CdmResponseType(NO_ERROR), UNKNOWN_ERROR);
engine_metrics.cdm_engine_handle_provisioning_response_.Record(
1.0, CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_open_key_set_session_.Increment(
CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_open_session_.Increment(CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_query_key_status_.Record(1.0,
CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_release_all_usage_info_.Increment(
CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_release_usage_info_.Increment(
CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_remove_keys_.Increment(CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_restore_key_.Record(1.0, CdmResponseType(NO_ERROR));
engine_metrics.cdm_engine_unprovision_.Increment(CdmResponseType(NO_ERROR),
kSecurityLevelL1);
engine_metrics.SetAppPackageName("test package name");
engine_metrics.cdm_engine_cdm_version_.Record("test cdm version");
engine_metrics.cdm_engine_creation_time_millis_.Record(100);
engine_metrics.cdm_engine_get_secure_stop_ids_.Increment(UNKNOWN_ERROR);
engine_metrics.cdm_engine_remove_all_usage_info_.Increment(UNKNOWN_ERROR);
engine_metrics.cdm_engine_remove_usage_info_.Increment(UNKNOWN_ERROR);
engine_metrics.cdm_engine_get_secure_stop_ids_.Increment(
CdmResponseType(UNKNOWN_ERROR));
engine_metrics.cdm_engine_remove_all_usage_info_.Increment(
CdmResponseType(UNKNOWN_ERROR));
engine_metrics.cdm_engine_remove_usage_info_.Increment(
CdmResponseType(UNKNOWN_ERROR));
// Also set and serialize the oemcrypto dynamic adapter metrics.
OemCryptoDynamicAdapterMetrics adapter_metrics;
@@ -110,14 +120,17 @@ TEST_F(EngineMetricsTest, EngineAndCryptoMetrics) {
EngineMetrics engine_metrics;
// Set some values in some of the engine metrics and some crypto metrics.
engine_metrics.cdm_engine_add_key_.Record(1.0, KEY_ADDED,
engine_metrics.cdm_engine_add_key_.Record(1.0, CdmResponseType(KEY_ADDED),
kLicenseTypeRelease);
engine_metrics.cdm_engine_close_session_.Increment(UNKNOWN_ERROR);
engine_metrics.cdm_engine_close_session_.Increment(
CdmResponseType(UNKNOWN_ERROR));
CryptoMetrics* crypto_metrics = engine_metrics.GetCryptoMetrics();
crypto_metrics->crypto_session_get_device_unique_id_.Increment(NO_ERROR);
crypto_metrics->crypto_session_get_device_unique_id_.Increment(
CdmResponseType(NO_ERROR));
crypto_metrics->crypto_session_generic_decrypt_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kEncryptionAlgorithmAesCbc128);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kEncryptionAlgorithmAesCbc128);
WvCdmMetrics actual_metrics;
engine_metrics.Serialize(&actual_metrics);
@@ -178,10 +191,11 @@ TEST_F(EngineMetricsTest, EngineMetricsWithSessions) {
EngineMetrics engine_metrics;
// Set a values in an engine metric and in a crypto metric.
engine_metrics.cdm_engine_add_key_.Record(1.0, KEY_ADDED,
engine_metrics.cdm_engine_add_key_.Record(1.0, CdmResponseType(KEY_ADDED),
kLicenseTypeRelease);
engine_metrics.GetCryptoMetrics()
->crypto_session_load_certificate_private_key_.Record(2.0, NO_ERROR);
->crypto_session_load_certificate_private_key_.Record(
2.0, CdmResponseType(NO_ERROR));
// Create two sessions and record some metrics.
std::shared_ptr<SessionMetrics> session_metrics_1 =
@@ -192,7 +206,8 @@ TEST_F(EngineMetricsTest, EngineMetricsWithSessions) {
session_metrics_2->SetSessionId(kSessionId2);
// Record a CryptoMetrics metric in the session.
session_metrics_2->GetCryptoMetrics()->crypto_session_generic_decrypt_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kEncryptionAlgorithmAesCbc128);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kEncryptionAlgorithmAesCbc128);
WvCdmMetrics actual_metrics;
engine_metrics.Serialize(&actual_metrics);
@@ -271,11 +286,13 @@ TEST_F(SessionMetricsTest, AllSessionMetrics) {
SessionMetrics session_metrics;
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_renew_key_.Record(1.0, CdmResponseType(NO_ERROR));
session_metrics.cdm_session_restore_offline_session_.Increment(
NO_ERROR, DeviceFiles::ResponseType::kObjectNotInitialized);
CdmResponseType(NO_ERROR),
DeviceFiles::ResponseType::kObjectNotInitialized);
session_metrics.cdm_session_restore_usage_session_.Increment(
NO_ERROR, DeviceFiles::ResponseType::kObjectNotInitialized);
CdmResponseType(NO_ERROR),
DeviceFiles::ResponseType::kObjectNotInitialized);
session_metrics.cdm_session_license_request_latency_ms_.Record(
2.0, kKeyRequestTypeInitial);
session_metrics.oemcrypto_build_info_.Record("test build info");
@@ -286,7 +303,8 @@ TEST_F(SessionMetricsTest, AllSessionMetrics) {
// Record a CryptoMetrics metric in the session.
session_metrics.GetCryptoMetrics()->crypto_session_generic_decrypt_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kEncryptionAlgorithmAesCbc128);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kEncryptionAlgorithmAesCbc128);
WvCdmMetrics::SessionMetrics actual;
session_metrics.Serialize(&actual);
@@ -327,33 +345,45 @@ TEST_F(CryptoMetricsTest, AllCryptoMetrics) {
CryptoMetrics crypto_metrics;
// Crypto session metrics.
crypto_metrics.crypto_session_delete_all_usage_reports_.Increment(NO_ERROR);
crypto_metrics.crypto_session_delete_all_usage_reports_.Increment(
CdmResponseType(NO_ERROR));
crypto_metrics.crypto_session_delete_multiple_usage_information_.Increment(
NO_ERROR);
CdmResponseType(NO_ERROR));
crypto_metrics.crypto_session_generic_decrypt_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kEncryptionAlgorithmAesCbc128);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kEncryptionAlgorithmAesCbc128);
crypto_metrics.crypto_session_generic_encrypt_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kEncryptionAlgorithmAesCbc128);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kEncryptionAlgorithmAesCbc128);
crypto_metrics.crypto_session_generic_sign_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kSigningAlgorithmHmacSha256);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kSigningAlgorithmHmacSha256);
crypto_metrics.crypto_session_generic_verify_.Record(
2.0, NO_ERROR, Pow2Bucket(1025), kSigningAlgorithmHmacSha256);
crypto_metrics.crypto_session_get_device_unique_id_.Increment(NO_ERROR);
crypto_metrics.crypto_session_get_token_.Increment(NO_ERROR);
2.0, CdmResponseType(NO_ERROR), Pow2Bucket(1025),
kSigningAlgorithmHmacSha256);
crypto_metrics.crypto_session_get_device_unique_id_.Increment(
CdmResponseType(NO_ERROR));
crypto_metrics.crypto_session_get_token_.Increment(CdmResponseType(NO_ERROR));
crypto_metrics.crypto_session_life_span_.Record(1.0);
crypto_metrics.crypto_session_load_certificate_private_key_.Record(1.0,
NO_ERROR);
crypto_metrics.crypto_session_open_.Record(1.0, NO_ERROR, kLevelDefault);
crypto_metrics.crypto_session_update_usage_information_.Record(1.0, NO_ERROR);
crypto_metrics.crypto_session_load_certificate_private_key_.Record(
1.0, CdmResponseType(NO_ERROR));
crypto_metrics.crypto_session_open_.Record(1.0, CdmResponseType(NO_ERROR),
kLevelDefault);
crypto_metrics.crypto_session_update_usage_information_.Record(
1.0, CdmResponseType(NO_ERROR));
crypto_metrics.crypto_session_usage_information_support_.Record(true);
crypto_metrics.crypto_session_security_level_.Record(kSecurityLevelL2);
// Usage table header metrics.
crypto_metrics.usage_table_header_initial_size_.Record(200);
crypto_metrics.usage_table_header_add_entry_.Increment(UNKNOWN_ERROR);
crypto_metrics.usage_table_header_delete_entry_.Increment(UNKNOWN_ERROR);
crypto_metrics.usage_table_header_update_entry_.Record(2.0, UNKNOWN_ERROR);
crypto_metrics.usage_table_header_load_entry_.Increment(UNKNOWN_ERROR);
crypto_metrics.usage_table_header_add_entry_.Increment(
CdmResponseType(UNKNOWN_ERROR));
crypto_metrics.usage_table_header_delete_entry_.Increment(
CdmResponseType(UNKNOWN_ERROR));
crypto_metrics.usage_table_header_update_entry_.Record(
2.0, CdmResponseType(UNKNOWN_ERROR));
crypto_metrics.usage_table_header_load_entry_.Increment(
CdmResponseType(UNKNOWN_ERROR));
// Usage table LRU metrics.
crypto_metrics.usage_table_header_lru_usage_info_count_.Record(150);
crypto_metrics.usage_table_header_lru_offline_license_count_.Record(50);