Skip to content

Commit

Permalink
tools: remove phosphor-ipmi-blobs dependency
Browse files Browse the repository at this point in the history
The host tool depended on the BMC header: firmware_handler.hpp because
it defined the flags.  This header depends on phosphor-ipmi-blobs,
therefore the host-tool depends on this.  Move the flags into a separate
common header file and snip this dependency.

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: Id2ad33a1611c02605a1ed5c695429d0451eb98d4
  • Loading branch information
pstrinkle committed Jun 27, 2019
1 parent f0c71df commit 84778b8
Show file tree
Hide file tree
Showing 39 changed files with 137 additions and 106 deletions.
6 changes: 4 additions & 2 deletions bmc/firmware_handler.cpp
Expand Up @@ -16,6 +16,8 @@

#include "firmware_handler.hpp"

#include "data.hpp"
#include "flags.hpp"
#include "image_handler.hpp"
#include "status.hpp"
#include "util.hpp"
Expand Down Expand Up @@ -511,7 +513,7 @@ bool FirmwareBlobHandler::write(uint16_t session, uint32_t offset,

std::vector<std::uint8_t> bytes;

if (item->second->flags & UpdateFlags::ipmi)
if (item->second->flags & FirmwareFlags::UpdateFlags::ipmi)
{
bytes = data;
}
Expand Down Expand Up @@ -550,7 +552,7 @@ bool FirmwareBlobHandler::writeMeta(uint16_t session, uint32_t offset,
return false;
}

if (item->second->flags & UpdateFlags::ipmi)
if (item->second->flags & FirmwareFlags::UpdateFlags::ipmi)
{
return false;
}
Expand Down
14 changes: 0 additions & 14 deletions bmc/firmware_handler.hpp
Expand Up @@ -51,26 +51,12 @@ struct Session
std::string activePath;
};

struct ExtChunkHdr
{
std::uint32_t length; /* Length of the data queued (little endian). */
} __attribute__((packed));

/**
* Register only one firmware blob handler that will manage all sessions.
*/
class FirmwareBlobHandler : public blobs::GenericBlobInterface
{
public:
enum UpdateFlags : std::uint16_t
{
openRead = (1 << 0), /* Flag for reading. */
openWrite = (1 << 1), /* Flag for writing. */
ipmi = (1 << 8), /* Expect to send contents over IPMI BlockTransfer. */
p2a = (1 << 9), /* Expect to send contents over P2A bridge. */
lpc = (1 << 10), /* Expect to send contents over LPC bridge. */
};

/** The state of the firmware update process. */
enum class UpdateState
{
Expand Down
7 changes: 4 additions & 3 deletions bmc/main.cpp
Expand Up @@ -18,6 +18,7 @@

#include "file_handler.hpp"
#include "firmware_handler.hpp"
#include "flags.hpp"
#include "image_handler.hpp"
#include "lpc_aspeed.hpp"
#include "lpc_handler.hpp"
Expand Down Expand Up @@ -80,12 +81,12 @@ std::vector<HandlerPack> supportedFirmware = {
};

std::vector<DataHandlerPack> supportedTransports = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
#ifdef ENABLE_PCI_BRIDGE
{FirmwareBlobHandler::UpdateFlags::p2a, &pciDataHandler},
{FirmwareFlags::UpdateFlags::p2a, &pciDataHandler},
#endif
#ifdef ENABLE_LPC_BRIDGE
{FirmwareBlobHandler::UpdateFlags::lpc, &lpcDataHandler},
{FirmwareFlags::UpdateFlags::lpc, &lpcDataHandler},
#endif
};

Expand Down
2 changes: 2 additions & 0 deletions bmc/pci_handler.cpp
Expand Up @@ -16,6 +16,8 @@

#include "pci_handler.hpp"

#include "data.hpp"

#include <fcntl.h>
#include <linux/aspeed-p2a-ctrl.h>

Expand Down
6 changes: 0 additions & 6 deletions bmc/pci_handler.hpp
Expand Up @@ -10,12 +10,6 @@
namespace ipmi_flash
{

/** P2A configuration response. */
struct PciConfigResponse
{
std::uint32_t address;
} __attribute__((packed));

/**
* Data handler for reading and writing data via the P2A bridge.
*
Expand Down
3 changes: 2 additions & 1 deletion bmc/test/firmware_canhandle_unittest.cpp
@@ -1,5 +1,6 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
Expand Down Expand Up @@ -29,7 +30,7 @@ TEST(FirmwareHandlerCanHandleTest, VerifyItemsInListAreOk)
{"bcdf", &imageMock},
};
std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
};

auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Expand Down
4 changes: 2 additions & 2 deletions bmc/test/firmware_close_unittest.cpp
Expand Up @@ -33,7 +33,7 @@ TEST_F(FirmwareHandlerCloseTest, CloseSucceedsWithDataHandler)
EXPECT_CALL(imageMock, open(StrEq(hashBlobId))).WillOnce(Return(true));

EXPECT_TRUE(handler->open(
0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc,
hashBlobId));

/* The active hash blob_id was added. */
Expand All @@ -60,7 +60,7 @@ TEST_F(FirmwareHandlerCloseTest, CloseSucceedsWithoutDataHandler)
EXPECT_CALL(imageMock, open(StrEq(hashBlobId))).WillOnce(Return(true));

EXPECT_TRUE(handler->open(
0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi,
hashBlobId));

/* The active hash blob_id was added. */
Expand Down
8 changes: 4 additions & 4 deletions bmc/test/firmware_commit_unittest.cpp
@@ -1,5 +1,6 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
Expand Down Expand Up @@ -33,7 +34,7 @@ class FirmwareHandlerCommitTest : public ::testing::Test
};

data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
};
}
};
Expand All @@ -55,8 +56,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCannotCommitOnFlashImage)
EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));

EXPECT_TRUE(handler->open(
0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
"asdf"));
0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));

EXPECT_FALSE(handler->commit(0, {}));
}
Expand All @@ -78,7 +78,7 @@ TEST_F(FirmwareHandlerCommitTest, VerifyCannotCommitOnHashFile)
EXPECT_CALL(imageMock1, open(StrEq(hashBlobId))).WillOnce(Return(true));

EXPECT_TRUE(handler->open(
0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi,
hashBlobId));

EXPECT_FALSE(handler->commit(0, {}));
Expand Down
5 changes: 3 additions & 2 deletions bmc/test/firmware_createhandler_unittest.cpp
@@ -1,5 +1,6 @@
#include "data_mock.hpp"
#include "firmware_handler.hpp"
#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
Expand All @@ -26,8 +27,8 @@ TEST(FirmwareHandlerBlobTest, VerifyFirmwareCounts)
};

std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::lpc, &dataMock},
};

auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Expand Down
5 changes: 3 additions & 2 deletions bmc/test/firmware_handler_unittest.cpp
@@ -1,4 +1,5 @@
#include "firmware_handler.hpp"
#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
Expand All @@ -18,7 +19,7 @@ using ::testing::UnorderedElementsAreArray;
TEST(FirmwareHandlerTest, CreateEmptyListVerifyFails)
{
std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
};

auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Expand Down Expand Up @@ -49,7 +50,7 @@ TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness)
{"asdf", &imageMock},
};
std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
};

auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Expand Down
10 changes: 4 additions & 6 deletions bmc/test/firmware_sessionstat_unittest.cpp
Expand Up @@ -30,16 +30,15 @@ TEST_F(FirmwareSessionStateTestIpmiOnly, DataTypeIpmiNoMetadata)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));

EXPECT_TRUE(handler->open(
0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
"asdf"));
0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));

int size = 512;
EXPECT_CALL(imageMock, getSize()).WillOnce(Return(size));

blobs::BlobMeta meta;
EXPECT_TRUE(handler->stat(0, &meta));
EXPECT_EQ(meta.blobState,
blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi);
blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi);
EXPECT_EQ(meta.size, size);
EXPECT_EQ(meta.metadata.size(), 0);
}
Expand All @@ -54,8 +53,7 @@ TEST_F(FirmwareSessionStateTestLpc, DataTypeP2AReturnsMetadata)
EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));

EXPECT_TRUE(handler->open(
0, blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc,
"asdf"));
0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));

int size = 512;
EXPECT_CALL(imageMock, getSize()).WillOnce(Return(size));
Expand All @@ -65,7 +63,7 @@ TEST_F(FirmwareSessionStateTestLpc, DataTypeP2AReturnsMetadata)
blobs::BlobMeta meta;
EXPECT_TRUE(handler->stat(0, &meta));
EXPECT_EQ(meta.blobState,
blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc);
blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc);
EXPECT_EQ(meta.size, size);
EXPECT_EQ(meta.metadata.size(), mBytes.size());
EXPECT_EQ(meta.metadata[0], mBytes[0]);
Expand Down
5 changes: 3 additions & 2 deletions bmc/test/firmware_stat_unittest.cpp
@@ -1,4 +1,5 @@
#include "firmware_handler.hpp"
#include "flags.hpp"
#include "image_mock.hpp"
#include "triggerable_mock.hpp"
#include "util.hpp"
Expand All @@ -25,7 +26,7 @@ TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsTransport)
{"asdf", &imageMock},
};
std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
{FirmwareFlags::UpdateFlags::ipmi, nullptr},
};

auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Expand All @@ -34,7 +35,7 @@ TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsTransport)

blobs::BlobMeta meta;
EXPECT_TRUE(handler->stat("asdf", &meta));
EXPECT_EQ(FirmwareBlobHandler::UpdateFlags::ipmi, meta.blobState);
EXPECT_EQ(FirmwareFlags::UpdateFlags::ipmi, meta.blobState);
}

} // namespace ipmi_flash
4 changes: 2 additions & 2 deletions bmc/test/firmware_state_notyetstarted_tarball_unittest.cpp
Expand Up @@ -56,14 +56,14 @@ class FirmwareHandlerNotYetStartedUbitTest : public ::testing::Test
ImageHandlerMock imageMock;
std::vector<HandlerPack> blobs;
std::vector<DataHandlerPack> data = {
{FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
{FirmwareFlags::UpdateFlags::ipmi, nullptr}};
std::unique_ptr<blobs::GenericBlobInterface> handler;
TriggerMock* verifyMockPtr;
TriggerMock* updateMockPtr;

std::uint16_t session = 1;
std::uint16_t flags =
blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi;
blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
};

TEST_F(FirmwareHandlerNotYetStartedUbitTest,
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_notyetstarted_unittest.cpp
Expand Up @@ -76,7 +76,7 @@ TEST_F(FirmwareHandlerNotYetStartedTest, StatEachBlobIdVerifyResults)
* transported supported.
*/
blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

auto blobs = handler->getBlobIds();
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_updatecompleted_unittest.cpp
Expand Up @@ -123,7 +123,7 @@ TEST_F(FirmwareHandlerUpdateCompletedTest, StatOnNormalBlobsReturnsSuccess)
getToUpdateCompleted(ActionStatus::success);

blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_updatepending_unittest.cpp
Expand Up @@ -164,7 +164,7 @@ TEST_F(FirmwareHandlerUpdatePendingTest, StatOnNormalBlobsReturnsSuccess)
getToUpdatePending();

blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

for (const auto& blob : startingBlobs)
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_updatestarted_unittest.cpp
Expand Up @@ -114,7 +114,7 @@ TEST_F(FirmwareHandlerUpdateStartedTest, StatOnNormalBlobsReturnsSuccess)
getToUpdateStarted();

blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
Expand Down
4 changes: 2 additions & 2 deletions bmc/test/firmware_state_uploadinprogress_unittest.cpp
Expand Up @@ -96,7 +96,7 @@ TEST_F(FirmwareHandlerUploadInProgressTest, StatOnNormalBlobsReturnsSuccess)
* return the same information as in the notYetStarted state.
*/
blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

openToInProgress(staticLayoutBlobId);
Expand Down Expand Up @@ -126,7 +126,7 @@ TEST_F(FirmwareHandlerUploadInProgressTest,
blobs::BlobMeta meta, expectedMeta = {};
expectedMeta.size = 32;
expectedMeta.blobState =
blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi;
blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
EXPECT_TRUE(handler->stat(session, &meta));
EXPECT_EQ(expectedMeta, meta);
}
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_verificationcompleted_unittest.cpp
Expand Up @@ -142,7 +142,7 @@ TEST_F(FirmwareHandlerVerificationCompletedTest,
getToVerificationCompleted(ActionStatus::success);

blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_verificationpending_unittest.cpp
Expand Up @@ -165,7 +165,7 @@ TEST_F(FirmwareHandlerVerificationPendingTest, StatOnNormalBlobsReturnsSuccess)
getToVerificationPending(staticLayoutBlobId);

blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
Expand Down
2 changes: 1 addition & 1 deletion bmc/test/firmware_state_verificationstarted_unittest.cpp
Expand Up @@ -195,7 +195,7 @@ TEST_F(FirmwareHandlerVerificationStartedTest, StatOnNormalBlobsReturnsSuccess)
getToVerificationStarted(staticLayoutBlobId);

blobs::BlobMeta expected;
expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
expected.blobState = FirmwareFlags::UpdateFlags::ipmi;
expected.size = 0;

std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
Expand Down

0 comments on commit 84778b8

Please sign in to comment.