test: Fix test with read_array/append_array
After the sdbusplus [1], change the expected dbus call changed and
required us to update the unit tests.
[1] https://github.com/openbmc/sdbusplus/commit/242677a2b3dafdb3b79464eb64e0ae8bc7c5a7d5
Change-Id: Ifd38d004a620b015b97f4902df2288fab476aeba
Signed-off-by: Willy Tu <wltu@google.com>
diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index 5d01b73..4af02bf 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -407,30 +407,28 @@
if (sd_bus_call_return_value >= 0)
{
- EXPECT_CALL(mock,
- sd_bus_message_enter_container(msg, SD_BUS_TYPE_ARRAY,
- StrEq(SD_BUS_TYPE_BYTE_STR)))
- .WillOnce(Return(1));
-
if (num_bytes_returned == NUM_BYTES_RETURNED_EQ_NUM_BYTES)
{
num_bytes_returned = num_bytes;
}
- for (auto i = num_bytes_returned - 1; i >= 0; --i)
- {
- EXPECT_CALL(mock, sd_bus_message_at_end(msg, 0))
- .WillOnce(Return(0));
- const uint8_t byte = (i >= 8) ? 0 : (data >> (8 * i)) & 0xff;
- EXPECT_CALL(mock, sd_bus_message_read_basic(msg, SD_BUS_TYPE_BYTE,
- NotNull()))
- .WillOnce(DoAll(AssignReadVal<uint8_t>(byte), Return(1)));
+ uint64_t updatedData = 0;
+ for (size_t i = 0; i < num_bytes_returned; ++i)
+ {
+ updatedData <<= 8;
+ updatedData += (i >= 8) ? 0 : (data >> (i * 8)) & 0xff;
}
- EXPECT_CALL(mock, sd_bus_message_at_end(msg, 0)).WillOnce(Return(1));
+ auto read_array_callback =
+ [updatedData, num_bytes_returned](sd_bus_message*, char,
+ const void** p, size_t* sz) {
+ *p = &updatedData;
+ *sz = num_bytes_returned;
+ };
- EXPECT_CALL(mock, sd_bus_message_exit_container(msg))
- .WillOnce(Return(1));
+ EXPECT_CALL(mock, sd_bus_message_read_array(nullptr, SD_BUS_TYPE_BYTE,
+ testing::_, testing::_))
+ .WillOnce(DoAll(testing::Invoke(read_array_callback), Return(0)));
}
}
@@ -497,8 +495,13 @@
IpmiException);
}
+static int on_array_append(sd_bus_message*, char, const void*, size_t)
+{
+ return 0;
+}
+
void ExpectWrite(StrictMock<sdbusplus::SdBusMock>& mock, uint64_t address,
- uint8_t num_bytes, uint64_t data, int sd_bus_call_return_value)
+ uint8_t num_bytes, uint64_t, int sd_bus_call_return_value)
{
::testing::InSequence s;
@@ -522,28 +525,10 @@
.WillOnce(DoAll(TraceDbus("sd_bus_message_append_basic(address) -> 1"),
Return(1)));
- EXPECT_CALL(mock,
- sd_bus_message_open_container(method, SD_BUS_TYPE_ARRAY,
- StrEq(SD_BUS_TYPE_BYTE_STR)))
- .WillOnce(DoAll(TraceDbus("sd_bus_message_open_container(a, y) -> 0"),
- Return(0)));
-
- for (auto i = 0; i < num_bytes; ++i)
- {
- const uint8_t byte = (data >> (8 * i)) & 0xff;
-
- EXPECT_CALL(
- mock, sd_bus_message_append_basic(
- method, SD_BUS_TYPE_BYTE,
- MatcherCast<const void*>(
- SafeMatcherCast<const uint8_t*>(Pointee(Eq(byte))))))
- .WillOnce(
- DoAll(TraceDbus2("sd_bus_message_append_basic"), Return(1)));
- }
-
- EXPECT_CALL(mock, sd_bus_message_close_container(method))
- .WillOnce(DoAll(TraceDbus("sd_bus_message_close_container() -> 0"),
- Return(0)));
+ EXPECT_CALL(
+ mock, sd_bus_message_append_array(nullptr, SD_BUS_TYPE_BYTE, testing::_,
+ num_bytes * sizeof(std::byte)))
+ .WillOnce(testing::Invoke(on_array_append));
EXPECT_CALL(mock, sd_bus_call(_, // sd_bus *bus,
method, // sd_bus_message *m