Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86a7ec30 authored by Connor O'Brien's avatar Connor O'Brien
Browse files

Fix bugs in boot HAL VTS test



Remove copied code and ensure that changes to boot slots are rolled
back to prevent problems on reboot.

Bug: 34220303
Test: Tests pass; device reboots successfully afterward.
Change-Id: I40f8ec283beae3feb09ab6f416fd4e178b173b87
Signed-off-by: default avatarConnor O'Brien <connoro@google.com>
parent 420c4394
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -35,18 +35,8 @@ using ::android::sp;
class BootHidlTest : public ::testing::Test {
 public:
  virtual void SetUp() override {
    // TODO(b/33385836) Delete copied code
    bool getStub = false;
    char getsubProperty[PROPERTY_VALUE_MAX];
    if (property_get("vts.hidl.get_stub", getsubProperty, "") > 0) {
      if (!strcmp(getsubProperty, "true") || !strcmp(getsubProperty, "True") ||
          !strcmp(getsubProperty, "1")) {
        getStub = true;
      }
    }
    boot = IBootControl::getService("bootctrl", getStub);
    boot = IBootControl::getService("bootctrl");
    ASSERT_NE(boot, nullptr);
    ASSERT_EQ(!getStub, boot->isRemote());
  }

  virtual void TearDown() override {}
@@ -90,6 +80,13 @@ TEST_F(BootHidlTest, SetActiveBootSlot) {
    Return<void> result = boot->setActiveBootSlot(s, generate_callback(&cr));
    EXPECT_TRUE(result.isOk());
  }
  {
    // Restore original flags to avoid problems on reboot
    CommandResult cr;
    Return <void> result = boot->markBootSuccessful(generate_callback(&cr));
    EXPECT_TRUE(result.isOk());
    EXPECT_TRUE(cr.success);
  }
  {
    CommandResult cr;
    uint32_t slots = boot->getNumberSlots();
@@ -111,7 +108,16 @@ TEST_F(BootHidlTest, SetSlotAsUnbootable) {
    EXPECT_TRUE(result.isOk());
    if (cr.success) {
      EXPECT_EQ(BoolResult::FALSE, boot->isSlotBootable(otherSlot));
      boot->setActiveBootSlot(otherSlot, generate_callback(&cr));

      // Restore original flags to avoid problems on reboot
      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);
      result = boot->markBootSuccessful(generate_callback(&cr));
      EXPECT_TRUE(result.isOk());
      EXPECT_TRUE(cr.success);
    }
  }