bmc: move from data section objs to owned
Move from objects created ahead of purpose to owned objects. This is a
step towards integrating with the json support.
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I738a5edd40724f17245911af1080c350f029fef1
diff --git a/bmc/test/firmware_unittest.hpp b/bmc/test/firmware_unittest.hpp
index 129b940..6bf515d 100644
--- a/bmc/test/firmware_unittest.hpp
+++ b/bmc/test/firmware_unittest.hpp
@@ -26,10 +26,18 @@
protected:
void SetUp() override
{
- blobs = {
- {hashBlobId, &imageMock},
- {staticLayoutBlobId, &imageMock},
- };
+ /* Unfortunately, since the FirmwareHandler object ends up owning the
+ * handlers, we can't just share handlers.
+ */
+ std::unique_ptr<ImageHandlerInterface> image =
+ std::make_unique<ImageHandlerMock>();
+ hashImageMock = reinterpret_cast<ImageHandlerMock*>(image.get());
+ blobs.push_back(std::move(HandlerPack(hashBlobId, std::move(image))));
+
+ image = std::make_unique<ImageHandlerMock>();
+ imageMock2 = reinterpret_cast<ImageHandlerMock*>(image.get());
+ blobs.push_back(
+ std::move(HandlerPack(staticLayoutBlobId, std::move(image))));
std::unique_ptr<TriggerableActionInterface> prepareMock =
std::make_unique<TriggerMock>();
@@ -52,7 +60,7 @@
packs[staticLayoutBlobId] = std::move(actionPack);
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
- blobs, data, std::move(packs));
+ std::move(blobs), data, std::move(packs));
}
void expectedState(FirmwareBlobHandler::UpdateState state)
@@ -63,7 +71,15 @@
void openToInProgress(const std::string& blobId)
{
- EXPECT_CALL(imageMock, open(blobId)).WillOnce(Return(true));
+ if (blobId == hashBlobId)
+ {
+ EXPECT_CALL(*hashImageMock, open(blobId)).WillOnce(Return(true));
+ }
+ else
+ {
+ EXPECT_CALL(*imageMock2, open(blobId)).WillOnce(Return(true));
+ }
+
if (blobId != hashBlobId)
{
EXPECT_CALL(*prepareMockPtr, trigger()).WillOnce(Return(true));
@@ -76,7 +92,14 @@
{
openToInProgress(blobId);
- EXPECT_CALL(imageMock, close()).WillRepeatedly(Return());
+ if (blobId == hashBlobId)
+ {
+ EXPECT_CALL(*hashImageMock, close()).WillRepeatedly(Return());
+ }
+ else
+ {
+ EXPECT_CALL(*imageMock2, close()).WillRepeatedly(Return());
+ }
handler->close(session);
expectedState(FirmwareBlobHandler::UpdateState::verificationPending);
}
@@ -98,7 +121,7 @@
getToVerificationPending(staticLayoutBlobId);
openToInProgress(hashBlobId);
- EXPECT_CALL(imageMock, close()).WillRepeatedly(Return());
+ EXPECT_CALL(*hashImageMock, close()).WillRepeatedly(Return());
handler->close(session);
expectedState(FirmwareBlobHandler::UpdateState::verificationPending);
@@ -148,11 +171,14 @@
expectedState(FirmwareBlobHandler::UpdateState::updateCompleted);
}
- ImageHandlerMock imageMock;
+ ImageHandlerMock *hashImageMock, *imageMock2;
+
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data = {
{FirmwareFlags::UpdateFlags::ipmi, nullptr}};
+
std::unique_ptr<blobs::GenericBlobInterface> handler;
+
TriggerMock* prepareMockPtr;
TriggerMock* verifyMockPtr;
TriggerMock* updateMockPtr;
@@ -167,7 +193,7 @@
class IpmiOnlyFirmwareTest : public ::testing::Test
{
protected:
- ImageHandlerMock imageMock;
+ ImageHandlerMock *hashImageMock, *imageMock;
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data = {
{FirmwareFlags::UpdateFlags::ipmi, nullptr}};
@@ -175,12 +201,17 @@
void SetUp() override
{
- blobs = {
- {hashBlobId, &imageMock},
- {"asdf", &imageMock},
- };
+ std::unique_ptr<ImageHandlerInterface> image =
+ std::make_unique<ImageHandlerMock>();
+ hashImageMock = reinterpret_cast<ImageHandlerMock*>(image.get());
+ blobs.push_back(std::move(HandlerPack(hashBlobId, std::move(image))));
+
+ image = std::make_unique<ImageHandlerMock>();
+ imageMock = reinterpret_cast<ImageHandlerMock*>(image.get());
+ blobs.push_back(std::move(HandlerPack("asdf", std::move(image))));
+
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
- blobs, data, std::move(CreateActionMap("asdf")));
+ std::move(blobs), data, std::move(CreateActionMap("asdf")));
}
};
@@ -188,23 +219,28 @@
{
protected:
DataHandlerMock dataMock;
- ImageHandlerMock imageMock;
+ ImageHandlerMock *hashImageMock, *imageMock;
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data;
std::unique_ptr<blobs::GenericBlobInterface> handler;
void SetUp() override
{
- blobs = {
- {hashBlobId, &imageMock},
- {"asdf", &imageMock},
- };
+ std::unique_ptr<ImageHandlerInterface> image =
+ std::make_unique<ImageHandlerMock>();
+ hashImageMock = reinterpret_cast<ImageHandlerMock*>(image.get());
+ blobs.push_back(std::move(HandlerPack(hashBlobId, std::move(image))));
+
+ image = std::make_unique<ImageHandlerMock>();
+ imageMock = reinterpret_cast<ImageHandlerMock*>(image.get());
+ blobs.push_back(std::move(HandlerPack("asdf", std::move(image))));
+
data = {
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::lpc, &dataMock},
};
handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
- blobs, data, std::move(CreateActionMap("asdf")));
+ std::move(blobs), data, std::move(CreateActionMap("asdf")));
}
};