Merge "Fix handling of INSUFFICIENT_RESOURCES in LoadEntry"

This commit is contained in:
Srujan Gaddam
2019-01-17 03:33:49 +00:00
committed by Android (Google) Code Review
3 changed files with 54 additions and 24 deletions

View File

@@ -282,9 +282,12 @@ class MockUsageTableHeader : public UsageTableHeader {
// gmock methods
using ::testing::_;
using ::testing::AllOf;
using ::testing::AtMost;
using ::testing::ElementsAreArray;
using ::testing::Ge;
using ::testing::Invoke;
using ::testing::Lt;
using ::testing::NotNull;
using ::testing::Return;
using ::testing::SaveArg;
@@ -977,14 +980,16 @@ TEST_F(UsageTableHeaderTest,
MockUsageTableHeader* mock_usage_table_header = SetUpMock();
Init(kSecurityLevelL1, kUsageTableHeader, k10UsageEntryInfoVector);
uint32_t usage_entry_number_to_load = rand() /
(RAND_MAX / k10UsageEntryInfoVector.size() + 1);
int64_t usage_entry_number_to_load =
MockUsageTableHeader::GetRandomInRange(k10UsageEntryInfoVector.size());
ASSERT_THAT(usage_entry_number_to_load,
AllOf(Ge(0), Lt((int64_t)k10UsageEntryInfoVector.size())));
CdmUsageEntry usage_entry_to_load = kUsageEntry;
// Setup expectations
EXPECT_CALL(*mock_usage_table_header,
DeleteEntry(_, device_files_, NotNull()))
.Times(AtMost(1))
.Times(1)
.WillRepeatedly(
DoAll(Invoke(this, &UsageTableHeaderTest::DeleteEntry),
Return(NO_ERROR)));
@@ -1008,14 +1013,16 @@ TEST_F(UsageTableHeaderTest,
MockUsageTableHeader* mock_usage_table_header = SetUpMock();
Init(kSecurityLevelL1, kUsageTableHeader, k10UsageEntryInfoVector);
uint32_t usage_entry_number_to_load = rand() /
(RAND_MAX / k10UsageEntryInfoVector.size() + 1);
int64_t usage_entry_number_to_load =
MockUsageTableHeader::GetRandomInRange(k10UsageEntryInfoVector.size());
ASSERT_THAT(usage_entry_number_to_load,
AllOf(Ge(0), Lt((int64_t)k10UsageEntryInfoVector.size())));
CdmUsageEntry usage_entry_to_load = kUsageEntry;
// Setup expectations
EXPECT_CALL(*mock_usage_table_header,
DeleteEntry(_, device_files_, NotNull()))
.Times(AtMost(2))
.Times(2)
.WillRepeatedly(
DoAll(Invoke(this, &UsageTableHeaderTest::DeleteEntry),
Return(NO_ERROR)));
@@ -1039,21 +1046,23 @@ TEST_F(UsageTableHeaderTest, LoadEntry_LoadUsageEntryFailsThrice) {
MockUsageTableHeader* mock_usage_table_header = SetUpMock();
Init(kSecurityLevelL1, kUsageTableHeader, k10UsageEntryInfoVector);
uint32_t usage_entry_number_to_load = rand() /
(RAND_MAX / k10UsageEntryInfoVector.size() + 1);
int64_t usage_entry_number_to_load =
MockUsageTableHeader::GetRandomInRange(k10UsageEntryInfoVector.size());
ASSERT_THAT(usage_entry_number_to_load,
AllOf(Ge(0), Lt((int64_t)k10UsageEntryInfoVector.size())));
CdmUsageEntry usage_entry_to_load = kUsageEntry;
// Setup expectations
EXPECT_CALL(*mock_usage_table_header,
DeleteEntry(_, device_files_, NotNull()))
.Times(AtMost(3))
.Times(3)
.WillRepeatedly(
DoAll(Invoke(this, &UsageTableHeaderTest::DeleteEntry),
Return(NO_ERROR)));
EXPECT_CALL(*crypto_session_,
LoadUsageEntry(usage_entry_number_to_load, usage_entry_to_load))
.Times(AtMost(4))
.Times(4)
.WillRepeatedly(Return(INSUFFICIENT_CRYPTO_RESOURCES_3));
// Now invoke the method under test