summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2020-05-18 17:38:47 +0000
committerDavid Anderson <dvander@google.com>2020-05-19 18:44:54 +0000
commitb920b57715471fe9beadb251745cac0ca453c02c (patch)
treeb0b530599f1b4488eba29ad602264817848b3770 /boot
parent03859a7c36766627ae0e30674964e197def14955 (diff)
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
Diffstat (limited to 'boot')
-rw-r--r--boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp b/boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp
index fbddf6d7e1..613c528a0a 100644
--- a/boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp
+++ b/boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp
@@ -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);