bmc: add preparation step before data is received
Add a preparation systemd trigger event before data is received. On
systems under memory pressure, this'll trigger a service that can do
things like flush caches.
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I175177f4a91b58d9f163098572a9d2614002b718
diff --git a/test/firmware_unittest.hpp b/test/firmware_unittest.hpp
index e36081d..8d92fe8 100644
--- a/test/firmware_unittest.hpp
+++ b/test/firmware_unittest.hpp
@@ -29,6 +29,10 @@
{staticLayoutBlobId, &imageMock},
};
+ std::unique_ptr<TriggerableActionInterface> prepareMock =
+ std::make_unique<TriggerMock>();
+ prepareMockPtr = reinterpret_cast<TriggerMock*>(prepareMock.get());
+
std::unique_ptr<TriggerableActionInterface> verifyMock =
std::make_unique<TriggerMock>();
verifyMockPtr = reinterpret_cast<TriggerMock*>(verifyMock.get());
@@ -38,7 +42,8 @@
updateMockPtr = reinterpret_cast<TriggerMock*>(updateMock.get());
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
- blobs, data, std::move(verifyMock), std::move(updateMock));
+ blobs, data, std::move(prepareMock), std::move(verifyMock),
+ std::move(updateMock));
}
void expectedState(FirmwareBlobHandler::UpdateState state)
@@ -50,6 +55,7 @@
void openToInProgress(const std::string& blobId)
{
EXPECT_CALL(imageMock, open(blobId)).WillOnce(Return(true));
+ EXPECT_CALL(*prepareMockPtr, trigger()).WillOnce(Return(true));
EXPECT_TRUE(handler->open(session, flags, blobId));
expectedState(FirmwareBlobHandler::UpdateState::uploadInProgress);
}
@@ -117,6 +123,7 @@
std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
std::unique_ptr<blobs::GenericBlobInterface> handler;
+ TriggerMock* prepareMockPtr;
TriggerMock* verifyMockPtr;
TriggerMock* updateMockPtr;
@@ -143,7 +150,8 @@
{"asdf", &imageMock},
};
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
- blobs, data, CreateTriggerMock(), CreateTriggerMock());
+ blobs, data, CreateTriggerMock(), CreateTriggerMock(),
+ CreateTriggerMock());
}
};
@@ -167,7 +175,8 @@
{FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
};
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
- blobs, data, CreateTriggerMock(), CreateTriggerMock());
+ blobs, data, CreateTriggerMock(), CreateTriggerMock(),
+ CreateTriggerMock());
}
};