Address Cdm Extended Duration Test failures
[ Merge of http://go/wvgerrit/49980 ] This CL * corrects some of the test expectations * switches test content used to test streaming with provider session tokens. The policy of the earlier test content had changed. * adds some more information to log messages Bug: 63819720 Test: WV unit, integration tests, WvCdmExtendedDuraionTest, GtsMediaDrmTest Change-Id: I8fdbc9c38d6018cc6e884e1b95b2e9d26e7aa536
This commit is contained in:
@@ -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:
|
||||
if ((*iter)->has_provider_session_token()) {
|
||||
(*iter)->UpdateUsageEntryInformation();
|
||||
}
|
||||
break;
|
||||
case kUsageTableSupport:
|
||||
if (!has_usage_been_updated) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user