diff options
author | Patrick Venture <venture@google.com> | 2019-05-20 17:39:31 -0700 |
---|---|---|
committer | Patrick Venture <venture@google.com> | 2019-05-20 18:03:39 -0700 |
commit | 27ac582357dfaeb028d41620600aad62650f7c30 (patch) | |
tree | e4dca87c7c2c59fc7b784c7c0f82d9c74ccd9a6e | |
parent | 6f81b16580c9d2e08296c0c0954e77b318f36881 (diff) | |
download | phosphor-ipmi-flash-27ac582357dfaeb028d41620600aad62650f7c30.tar.gz phosphor-ipmi-flash-27ac582357dfaeb028d41620600aad62650f7c30.zip |
bmc: firmware handler owns update mechanism
The firmware handler owns the update mechanism object. The update
mechanism is currently unused.
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I5051ee6597f66de941ad7c1f209f6cb7e3d5a835
-rw-r--r-- | firmware_handler.cpp | 6 | ||||
-rw-r--r-- | firmware_handler.hpp | 13 | ||||
-rw-r--r-- | main.cpp | 3 | ||||
-rw-r--r-- | test/bmc_update_mock.hpp | 7 | ||||
-rw-r--r-- | test/firmware_canhandle_unittest.cpp | 3 | ||||
-rw-r--r-- | test/firmware_commit_unittest.cpp | 9 | ||||
-rw-r--r-- | test/firmware_createhandler_unittest.cpp | 3 | ||||
-rw-r--r-- | test/firmware_delete_unittest.cpp | 3 | ||||
-rw-r--r-- | test/firmware_handler_unittest.cpp | 9 | ||||
-rw-r--r-- | test/firmware_stat_unittest.cpp | 3 | ||||
-rw-r--r-- | test/firmware_unittest.hpp | 5 |
11 files changed, 43 insertions, 21 deletions
diff --git a/firmware_handler.cpp b/firmware_handler.cpp index fc6f01a..39086be 100644 --- a/firmware_handler.cpp +++ b/firmware_handler.cpp @@ -38,7 +38,8 @@ std::unique_ptr<blobs::GenericBlobInterface> FirmwareBlobHandler::CreateFirmwareBlobHandler( const std::vector<HandlerPack>& firmwares, const std::vector<DataHandlerPack>& transports, - std::unique_ptr<VerificationInterface> verification) + std::unique_ptr<VerificationInterface> verification, + std::unique_ptr<UpdateInterface> update) { /* There must be at least one. */ if (!firmwares.size()) @@ -71,7 +72,8 @@ std::unique_ptr<blobs::GenericBlobInterface> } return std::make_unique<FirmwareBlobHandler>( - firmwares, blobs, transports, bitmask, std::move(verification)); + firmwares, blobs, transports, bitmask, std::move(verification), + std::move(update)); } /* Check if the path is in our supported list (or active list). */ diff --git a/firmware_handler.hpp b/firmware_handler.hpp index e997c71..73a0668 100644 --- a/firmware_handler.hpp +++ b/firmware_handler.hpp @@ -4,6 +4,7 @@ #include "data_handler.hpp" #include "image_handler.hpp" +#include "update.hpp" #include "util.hpp" #include "verify.hpp" @@ -105,11 +106,13 @@ class FirmwareBlobHandler : public blobs::GenericBlobInterface * @param[in] firmwares - list of firmware blob_ids to support. * @param[in] transports - list of transports to support. * @param[in] verification - pointer to object for triggering verification + * @param[in] update - point to object for triggering the update */ static std::unique_ptr<GenericBlobInterface> CreateFirmwareBlobHandler( const std::vector<HandlerPack>& firmwares, const std::vector<DataHandlerPack>& transports, - std::unique_ptr<VerificationInterface> verification); + std::unique_ptr<VerificationInterface> verification, + std::unique_ptr<UpdateInterface> update); /** * Create a FirmwareBlobHandler. @@ -119,17 +122,19 @@ class FirmwareBlobHandler : public blobs::GenericBlobInterface * @param[in] transports - list of transport types and their handlers * @param[in] bitmask - bitmask of transports to support * @param[in] verification - pointer to object for triggering verification + * @param[in] update - point to object for triggering the update */ FirmwareBlobHandler(const std::vector<HandlerPack>& firmwares, const std::vector<std::string>& blobs, const std::vector<DataHandlerPack>& transports, std::uint16_t bitmask, - std::unique_ptr<VerificationInterface> verification) : + std::unique_ptr<VerificationInterface> verification, + std::unique_ptr<UpdateInterface> update) : handlers(firmwares), blobIDs(blobs), transports(transports), bitmask(bitmask), activeImage(activeImageBlobId), activeHash(activeHashBlobId), verifyImage(verifyBlobId), lookup(), state(UpdateState::notYetStarted), - verification(std::move(verification)) + verification(std::move(verification)), update(std::move(update)) { } ~FirmwareBlobHandler() = default; @@ -193,6 +198,8 @@ class FirmwareBlobHandler : public blobs::GenericBlobInterface std::unique_ptr<VerificationInterface> verification; + std::unique_ptr<UpdateInterface> update; + /** Temporary variable to track whether a blob is open. */ bool fileOpen = false; }; @@ -115,7 +115,8 @@ std::unique_ptr<blobs::GenericBlobInterface> createHandler() ipmi_flash::supportedFirmware, ipmi_flash::supportedTransports, ipmi_flash::SystemdVerification::CreateVerification( sdbusplus::bus::new_default(), VERIFY_STATUS_FILENAME, - VERIFY_DBUS_SERVICE)); + VERIFY_DBUS_SERVICE), + std::move(updater)); if (!handler) { diff --git a/test/bmc_update_mock.hpp b/test/bmc_update_mock.hpp index 5331b50..3db9221 100644 --- a/test/bmc_update_mock.hpp +++ b/test/bmc_update_mock.hpp @@ -6,7 +6,7 @@ #include <memory> #include <vector> -#include <gtest/gtest.h> +#include <gmock/gmock.h> namespace ipmi_flash { @@ -19,4 +19,9 @@ class UpdateMock : public UpdateInterface MOCK_METHOD0(status, UpdateStatus()); }; +std::unique_ptr<UpdateInterface> CreateUpdateMock() +{ + return std::make_unique<UpdateMock>(); +} + } // namespace ipmi_flash diff --git a/test/firmware_canhandle_unittest.cpp b/test/firmware_canhandle_unittest.cpp index 02549fe..c9685bd 100644 --- a/test/firmware_canhandle_unittest.cpp +++ b/test/firmware_canhandle_unittest.cpp @@ -1,3 +1,4 @@ +#include "bmc_update_mock.hpp" #include "data_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" @@ -33,7 +34,7 @@ TEST(FirmwareHandlerCanHandleTest, VerifyItemsInListAreOk) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); for (const auto& item : items) { diff --git a/test/firmware_commit_unittest.cpp b/test/firmware_commit_unittest.cpp index 5f2f82e..87dba97 100644 --- a/test/firmware_commit_unittest.cpp +++ b/test/firmware_commit_unittest.cpp @@ -1,3 +1,4 @@ +#include "bmc_update_mock.hpp" #include "data_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" @@ -49,7 +50,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCannotCommitOnFlashImage) std::make_unique<StrictMock<VerificationMock>>(); auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, std::move(verifyMock)); + blobs, data, std::move(verifyMock), CreateUpdateMock()); EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true)); @@ -71,7 +72,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCannotCommitOnHashFile) std::make_unique<StrictMock<VerificationMock>>(); auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, std::move(verifyMock)); + blobs, data, std::move(verifyMock), CreateUpdateMock()); EXPECT_CALL(imageMock1, open(StrEq(hashBlobId))).WillOnce(Return(true)); @@ -91,7 +92,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCommitAcceptedOnVerifyBlob) auto verifyMockPtr = reinterpret_cast<VerificationMock*>(verifyMock.get()); auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, std::move(verifyMock)); + blobs, data, std::move(verifyMock), CreateUpdateMock()); EXPECT_TRUE(handler->open(0, blobs::OpenFlags::write, verifyBlobId)); @@ -110,7 +111,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCommitCanOnlyBeCalledOnceForEffect) auto verifyMockPtr = reinterpret_cast<VerificationMock*>(verifyMock.get()); auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, std::move(verifyMock)); + blobs, data, std::move(verifyMock), CreateUpdateMock()); EXPECT_TRUE(handler->open(0, blobs::OpenFlags::write, verifyBlobId)); diff --git a/test/firmware_createhandler_unittest.cpp b/test/firmware_createhandler_unittest.cpp index 10e8410..3bc52fe 100644 --- a/test/firmware_createhandler_unittest.cpp +++ b/test/firmware_createhandler_unittest.cpp @@ -1,3 +1,4 @@ +#include "bmc_update_mock.hpp" #include "data_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" @@ -31,7 +32,7 @@ TEST(FirmwareHandlerBlobTest, VerifyFirmwareCounts) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); // EXPECT_EQ(handler, nullptr); EXPECT_FALSE(handler == nullptr); diff --git a/test/firmware_delete_unittest.cpp b/test/firmware_delete_unittest.cpp index 755dc30..3c58623 100644 --- a/test/firmware_delete_unittest.cpp +++ b/test/firmware_delete_unittest.cpp @@ -1,3 +1,4 @@ +#include "bmc_update_mock.hpp" #include "data_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" @@ -31,7 +32,7 @@ TEST(FirmwareHandlerDeleteTest, DeleteActiveHashSucceeds) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); EXPECT_CALL(imageMock, open(StrEq(hashBlobId))).WillOnce(Return(true)); diff --git a/test/firmware_handler_unittest.cpp b/test/firmware_handler_unittest.cpp index d3a8c13..e1e3a78 100644 --- a/test/firmware_handler_unittest.cpp +++ b/test/firmware_handler_unittest.cpp @@ -1,3 +1,4 @@ +#include "bmc_update_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" #include "util.hpp" @@ -18,7 +19,7 @@ TEST(FirmwareHandlerTest, CreateEmptyListVerifyFails) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - {}, data, CreateVerifyMock()); + {}, data, CreateVerifyMock(), CreateUpdateMock()); EXPECT_EQ(handler, nullptr); } TEST(FirmwareHandlerTest, CreateEmptyDataHandlerListFails) @@ -31,7 +32,7 @@ TEST(FirmwareHandlerTest, CreateEmptyDataHandlerListFails) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, {}, CreateVerifyMock()); + blobs, {}, CreateVerifyMock(), CreateUpdateMock()); EXPECT_EQ(handler, nullptr); } TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness) @@ -47,13 +48,13 @@ TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); EXPECT_EQ(handler, nullptr); blobs.push_back({hashBlobId, &imageMock}); handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); auto result = handler->getBlobIds(); EXPECT_EQ(3, result.size()); EXPECT_EQ(3, std::count(result.begin(), result.end(), "asdf") + diff --git a/test/firmware_stat_unittest.cpp b/test/firmware_stat_unittest.cpp index beab6f9..54c8be4 100644 --- a/test/firmware_stat_unittest.cpp +++ b/test/firmware_stat_unittest.cpp @@ -1,3 +1,4 @@ +#include "bmc_update_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" #include "util.hpp" @@ -29,7 +30,7 @@ TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsTransport) }; auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); struct blobs::BlobMeta meta; EXPECT_TRUE(handler->stat("asdf", &meta)); diff --git a/test/firmware_unittest.hpp b/test/firmware_unittest.hpp index da84c1b..748b212 100644 --- a/test/firmware_unittest.hpp +++ b/test/firmware_unittest.hpp @@ -1,5 +1,6 @@ #pragma once +#include "bmc_update_mock.hpp" #include "data_mock.hpp" #include "firmware_handler.hpp" #include "image_mock.hpp" @@ -30,7 +31,7 @@ class IpmiOnlyFirmwareTest : public ::testing::Test {"asdf", &imageMock}, }; handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); } }; @@ -54,7 +55,7 @@ class FakeLpcFirmwareTest : public ::testing::Test {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock}, }; handler = FirmwareBlobHandler::CreateFirmwareBlobHandler( - blobs, data, CreateVerifyMock()); + blobs, data, CreateVerifyMock(), CreateUpdateMock()); } }; |