Re-enable boot HAL tests and make sure they restore previous slot flags.

Bug: 154667790
Test: set slot to a
      run SetActiveBootSlot/SetSlotAsUnbootable tests
      fastboot reboot bootloader
      fastboot getvar current-slot shoud be a
      repeat on b slot
Change-Id: Icff45d3949d0ad76d22bdf8830c0903e81027b6e
Merged-In: Icff45d3949d0ad76d22bdf8830c0903e81027b6e
This commit is contained in:
David Anderson
2020-05-18 17:38:47 +00:00
parent 03859a7c36
commit b920b57715

View File

@@ -82,6 +82,10 @@ TEST_P(BootHidlTest, MarkBootSuccessful) {
// Sanity check Boot::setActiveBootSlot() on good and bad inputs.
TEST_P(BootHidlTest, SetActiveBootSlot) {
Slot curSlot = boot->getCurrentSlot();
Slot otherSlot = curSlot ? 0 : 1;
auto otherBootable = boot->isSlotBootable(otherSlot);
for (Slot s = 0; s < 2; s++) {
CommandResult cr;
Return<void> result = boot->setActiveBootSlot(s, generate_callback(&cr));
@@ -90,7 +94,17 @@ TEST_P(BootHidlTest, SetActiveBootSlot) {
{
// Restore original flags to avoid problems on reboot
CommandResult cr;
Return<void> result = boot->markBootSuccessful(generate_callback(&cr));
auto result = boot->setActiveBootSlot(curSlot, generate_callback(&cr));
EXPECT_TRUE(result.isOk());
EXPECT_TRUE(cr.success);
if (otherBootable == BoolResult::FALSE) {
result = boot->setSlotAsUnbootable(otherSlot, generate_callback(&cr));
EXPECT_TRUE(result.isOk());
EXPECT_TRUE(cr.success);
}
result = boot->markBootSuccessful(generate_callback(&cr));
EXPECT_TRUE(result.isOk());
EXPECT_TRUE(cr.success);
}
@@ -105,19 +119,22 @@ TEST_P(BootHidlTest, SetActiveBootSlot) {
// Sanity check Boot::setSlotAsUnbootable() on good and bad inputs.
TEST_P(BootHidlTest, SetSlotAsUnbootable) {
Slot curSlot = boot->getCurrentSlot();
Slot otherSlot = curSlot ? 0 : 1;
auto otherBootable = boot->isSlotBootable(otherSlot);
{
CommandResult cr;
Slot curSlot = boot->getCurrentSlot();
Slot otherSlot = curSlot ? 0 : 1;
Return<void> result = boot->setSlotAsUnbootable(otherSlot, generate_callback(&cr));
EXPECT_TRUE(result.isOk());
if (cr.success) {
EXPECT_EQ(BoolResult::FALSE, boot->isSlotBootable(otherSlot));
// Restore original flags to avoid problems on reboot
result = boot->setActiveBootSlot(otherSlot, generate_callback(&cr));
EXPECT_TRUE(result.isOk());
EXPECT_TRUE(cr.success);
if (otherBootable == BoolResult::TRUE) {
result = boot->setActiveBootSlot(otherSlot, generate_callback(&cr));
EXPECT_TRUE(result.isOk());
EXPECT_TRUE(cr.success);
}
result = boot->setActiveBootSlot(curSlot, generate_callback(&cr));
EXPECT_TRUE(result.isOk());
EXPECT_TRUE(cr.success);