Enforce OEMCrypto insufficient resources error reporting *** DO NOT MERGE ***

[ Merge of http://go/wvgerrit/59720 ]

Enforce OEMCrypto insufficient resources error reporting in CDM tests.
In addition, when CreateNew/LoadUsageEntry fails with OEMCrypto
insufficient resources error, delete a random usage entry
and retry. The current behavior evicts low index entries
from the usage table, which was a crude attempt to emulate a LRU.
This was deficient as, on occasion, it will result in the deletion
of a recently added usage entry.

Bug: 111260263
Bug: 113828866

Test: WV unit/integration tests, GtsMediaTestCases.
      Netflix and Play movies playback tests.

Change-Id: I63340f76d1e2af3c6834b98ad816e11eea18fc7f
This commit is contained in:
Rahul Frias
2018-09-09 02:45:19 -07:00
committed by Jeff Tinker
parent b4b02e7762
commit ac596b4f6c
5 changed files with 376 additions and 1114 deletions

View File

@@ -70,6 +70,14 @@ class UsageTableHeader {
DeviceFiles* handle,
metrics::CryptoMetrics* metrics);
// Test only method. This method emulates the behavior of DeleteEntry
// without actually invoking OEMCrypto (through CryptoSession)
// or storage (through DeviceFiles). It modifies internal data structures
// when DeleteEntry is mocked. This allows one to test methods that are
// dependent on DeleteEntry without having to set expectations
// for the objects that DeleteEntry depends on.
void DeleteEntryForTest(uint32_t usage_entry_number);
private:
CdmResponseType MoveEntry(uint32_t from /* usage entry number */,
const CdmUsageEntry& from_usage_entry,
@@ -118,6 +126,9 @@ class UsageTableHeader {
metrics::CryptoMetrics alternate_crypto_metrics_;
// TODO(rfrias): Move to utility class
uint32_t GetRandomInRange(size_t upper_bound_inclusive);
// Test related declarations
friend class UsageTableHeaderTest;