Merge "Address Cdm Extended Duration Test failures" into pi-dev am: aa536ec97f

am: 410f28186b

Change-Id: Iab78f1b96044629b73ee71278707dd4e5097fcab
This commit is contained in:
Rahul Frias
2018-05-14 15:43:49 -07:00
committed by android-build-merger
3 changed files with 32 additions and 18 deletions

View File

@@ -139,6 +139,7 @@ CdmResponseType CdmEngine::OpenSession(
return sts;
}
CdmSessionId id = new_session->session_id();
LOGI("CdmEngine::OpenSession: %s", id.c_str());
session_map_.Add(id, new_session.release());
if (session_id) *session_id = id;
@@ -1669,7 +1670,9 @@ void CdmEngine::OnTimerEvent() {
(*iter)->reset_usage_flags();
switch ((*iter)->get_usage_support_type()) {
case kUsageEntrySupport:
(*iter)->UpdateUsageEntryInformation();
if ((*iter)->has_provider_session_token()) {
(*iter)->UpdateUsageEntryInformation();
}
break;
case kUsageTableSupport:
if (!has_usage_been_updated) {

View File

@@ -299,7 +299,8 @@ CdmResponseType WvContentDecryptionModule::Decrypt(
// key sharing, the shared session will still be in the same CdmEngine.
CdmEngine* cdm_engine = GetCdmForSessionId(session_id);
if (!cdm_engine) {
LOGE("WvContentDecryptionModule::Decrypt: not found");
LOGE("WvContentDecryptionModule::Decrypt: session not found: %s",
session_id.c_str());
return SESSION_NOT_FOUND_18;
}
@@ -310,7 +311,8 @@ CdmResponseType WvContentDecryptionModule::Decrypt(
cdm_engine->GetMetrics()->cdm_engine_find_session_for_key_.Increment(
status);
if (!status && parameters.is_encrypted) {
LOGE("WvContentDecryptionModule::Decrypt: unable to find session");
LOGE("WvContentDecryptionModule::Decrypt: unable to find session: %s",
session_id.c_str());
return KEY_NOT_FOUND_IN_SESSION;
}
}

View File

@@ -92,7 +92,7 @@ SubSampleInfo kEncryptedStreamingNoPstSubSample = {
"08a899cd760ff0899a1170c2f224b9c52997a0785b7fe170805fd3e8b1127659"),
wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, 3};
SubSampleInfo kEncryptedStreamingClip1SubSample = {
SubSampleInfo kEncryptedStreamingClip8SubSample = {
true, 1, true, true, false,
wvcdm::a2bs_hex("E82DDD1D07CBB31CDD31EBAAE0894609"),
wvcdm::a2b_hex(
@@ -161,11 +161,11 @@ SubSampleInfo kEncryptedOfflineClip2SubSample = {
"944B5080B998BB0FE6E566AAFAE2328B37FD189F1920A964434ECF18E11AC81E"),
wvcdm::a2b_hex("7362b5140c4ce0cd5f863858668d3f1a"), 0, 3};
std::string kStreamingClip1PstInitData = wvcdm::a2bs_hex(
std::string kStreamingClip8PstInitData = wvcdm::a2bs_hex(
"000000427073736800000000" // blob size and pssh
"EDEF8BA979D64ACEA3C827DCD51D21ED00000022" // Widevine system id
"08011a0d7769646576696e655f74657374220f73" // pssh data
"747265616d696e675f636c697033");
"747265616d696e675f636c697038");
std::string kOfflineClip2PstInitData = wvcdm::a2bs_hex(
"000000427073736800000000" // blob size and pssh
@@ -529,6 +529,7 @@ class WvCdmExtendedDurationTest : public WvCdmTestBase {
}
void ValidateReleaseRequest(std::string& usage_msg,
bool license_used,
int64_t expected_seconds_since_license_received,
int64_t expected_seconds_since_first_playback,
int64_t expected_seconds_since_last_playback) {
@@ -572,7 +573,8 @@ class WvCdmExtendedDurationTest : public WvCdmTestBase {
Unpacked_PST_Report usage_report(buffer);
EXPECT_EQ(usage_report.report_size(),
existing_license.session_usage_table_entry().size());
EXPECT_EQ(kInactiveUsed, usage_report.status());
EXPECT_EQ(license_used ? kInactiveUsed : kInactiveUnused,
usage_report.status());
EXPECT_EQ(id.provider_session_token().size(),
usage_report.pst_length());
std::string pst(reinterpret_cast<char *>(usage_report.pst()),
@@ -595,10 +597,12 @@ class WvCdmExtendedDurationTest : public WvCdmTestBase {
EXPECT_NEAR(seconds_since_license_received,
expected_seconds_since_license_received, kClockTolerance);
EXPECT_NEAR(seconds_since_first_decrypt,
expected_seconds_since_first_playback, kClockTolerance);
EXPECT_NEAR(seconds_since_last_decrypt,
expected_seconds_since_last_playback, kClockTolerance);
if (license_used) {
EXPECT_NEAR(seconds_since_first_decrypt,
expected_seconds_since_first_playback, kClockTolerance);
EXPECT_NEAR(seconds_since_last_decrypt,
expected_seconds_since_last_playback, kClockTolerance);
}
EXPECT_EQ(::video_widevine::LicenseRequest_RequestType_RELEASE,
license_renewal.type());
@@ -937,12 +941,15 @@ TEST_F(WvCdmExtendedDurationTest, DecryptionCloseSessionConcurrencyTest) {
switch (status) {
case SESSION_NOT_FOUND_FOR_DECRYPT:
case SESSION_NOT_FOUND_18:
// Session was closed before decrypt was called. This is expected
// occasionally as we are testing resilience to concurrency.
break;
case NO_ERROR:
EXPECT_EQ((data + i)->decrypt_data, decrypt_buffer);
break;
default:
EXPECT_TRUE(false);
EXPECT_TRUE(false) << " Unexpected decrypt result: " << status;
}
}
}
@@ -1115,7 +1122,7 @@ TEST_F(WvCdmExtendedDurationTest, AutomatedOfflineSessionReleaseOnOpenSession) {
sleep(kMinute + kClockTolerance);
EXPECT_GT(
EXPECT_EQ(
QueryStatus(kLevelDefault, wvcdm::QUERY_KEY_NUMBER_OF_OPEN_SESSIONS),
initial_open_sessions);
@@ -1297,7 +1304,7 @@ TEST_P(WvCdmStreamingPstTest, UsageTest) {
decryptor_.OpenSession(g_key_system, NULL, kDefaultCdmIdentifier, NULL,
&session_id_);
GenerateKeyRequest(kStreamingClip1PstInitData, kLicenseTypeStreaming);
GenerateKeyRequest(kStreamingClip8PstInitData, kLicenseTypeStreaming);
VerifyKeyRequestResponse(g_license_server, g_client_auth, false);
ValidateResponse(video_widevine::STREAMING, true);
@@ -1314,7 +1321,7 @@ TEST_P(WvCdmStreamingPstTest, UsageTest) {
for (size_t i = 0; i < GetParam(); ++i) {
// Decrypt data
SubSampleInfo* data = &kEncryptedStreamingClip1SubSample;
SubSampleInfo* data = &kEncryptedStreamingClip8SubSample;
for (size_t i = 0; i < data->num_of_subsamples; i++) {
std::vector<uint8_t> decrypt_buffer((data + i)->encrypt_data.size());
CdmDecryptionParameters decryption_parameters(
@@ -1363,7 +1370,7 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) {
decryptor_.OpenSession(g_key_system, NULL, kDefaultCdmIdentifier, NULL,
&session_id_);
GenerateKeyRequest(kStreamingClip1PstInitData, kLicenseTypeStreaming);
GenerateKeyRequest(kStreamingClip8PstInitData, kLicenseTypeStreaming);
VerifyKeyRequestResponse(g_license_server, g_client_auth, false);
ValidateResponse(video_widevine::STREAMING, true);
@@ -1380,7 +1387,7 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) {
for (size_t i = 0; i < GetParam(); ++i) {
// Decrypt data
SubSampleInfo* data = &kEncryptedStreamingClip1SubSample;
SubSampleInfo* data = &kEncryptedStreamingClip8SubSample;
for (size_t i = 0; i < data->num_of_subsamples; i++) {
std::vector<uint8_t> decrypt_buffer((data + i)->encrypt_data.size());
CdmDecryptionParameters decryption_parameters(
@@ -1426,6 +1433,7 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) {
while (usage_info.size() > 0) {
for (size_t i = 0; i < usage_info.size(); ++i) {
ValidateReleaseRequest(usage_info[i],
expected_seconds_since_initial_playback != 0,
expected_seconds_since_license_received,
expected_seconds_since_initial_playback,
expected_seconds_since_last_playback);
@@ -1556,7 +1564,8 @@ TEST_P(WvCdmOfflineUsageReportTest, UsageTest) {
session_id_.clear();
key_set_id_.clear();
GenerateKeyRelease(key_set_id);
ValidateReleaseRequest(key_msg_, expected_seconds_since_license_received,
ValidateReleaseRequest(key_msg_, expected_seconds_since_initial_playback != 0,
expected_seconds_since_license_received,
expected_seconds_since_initial_playback,
expected_seconds_since_last_playback);
key_set_id_ = key_set_id;