Add initial unit tests
Signed-off-by: Lei YU <yulei.sh@bytedance.com>
Change-Id: Id4850e52073ea6780a978c6cd5a5c439aa8ed846
diff --git a/src/inspur_oem.cpp b/src/inspur_oem.cpp
index 04df3fb..53eb429 100644
--- a/src/inspur_oem.cpp
+++ b/src/inspur_oem.cpp
@@ -2,12 +2,12 @@
#include "inspur_oem.hpp"
+#include "sdbus_wrapper.hpp"
#include "utils.hpp"
#include <ipmid/api.h>
#include <phosphor-logging/log.hpp>
-#include <sdbusplus/bus.hpp>
#include <optional>
@@ -21,6 +21,7 @@
constexpr auto FIRMWARE_BUILDTIME_OFFSET =
FIRMWARE_VERSION_OFFSET + FIRMWARE_VERSION_SIZE;
constexpr auto FIRMWARE_BUILDTIME_SIZE = 20;
+constexpr auto FIRMWARE_MIN_SIZE = FIRMWARE_BUILDTIME_OFFSET;
static_assert(FIRMWARE_VERSION_OFFSET == 1);
static_assert(FIRMWARE_BUILDTIME_OFFSET == 16);
@@ -35,7 +36,7 @@
using namespace inspur;
static void registerOEMFunctions() __attribute__((constructor));
-sdbusplus::bus::bus bus(ipmid_get_sd_bus_connection());
+static auto& bus = getBus();
struct ParsedAssetInfo
{
@@ -120,6 +121,10 @@
void parseBIOSInfo(const std::vector<uint8_t>& data)
{
+ if (data.size() < FIRMWARE_MIN_SIZE)
+ {
+ return;
+ }
bios_version_devname dev = static_cast<bios_version_devname>(data[0]);
std::string version{data.data() + FIRMWARE_VERSION_OFFSET,
data.data() + FIRMWARE_VERSION_SIZE};
diff --git a/src/inspur_oem.hpp b/src/inspur_oem.hpp
index 8c47e8d..fc5fc85 100644
--- a/src/inspur_oem.hpp
+++ b/src/inspur_oem.hpp
@@ -1,4 +1,5 @@
#pragma once
+
#include <array>
#include <cstdint>
#include <string_view>
diff --git a/src/meson.build b/src/meson.build
index b6828c7..620197a 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -10,6 +10,7 @@
'inspur-ipmi-oem',
'inspur_oem.cpp',
'utils.cpp',
+ 'sdbus_wrapper.cpp',
dependencies: [
phosphor_dbus_interfaces,
phosphor_logging,
diff --git a/src/sdbus_wrapper.cpp b/src/sdbus_wrapper.cpp
new file mode 100644
index 0000000..a781036
--- /dev/null
+++ b/src/sdbus_wrapper.cpp
@@ -0,0 +1,9 @@
+#include "sdbus_wrapper.hpp"
+
+#include <ipmid/api.h>
+
+sdbusplus::bus::bus& getBus()
+{
+ static sdbusplus::bus::bus bus(ipmid_get_sd_bus_connection());
+ return bus;
+}
diff --git a/src/sdbus_wrapper.hpp b/src/sdbus_wrapper.hpp
new file mode 100644
index 0000000..d6273d1
--- /dev/null
+++ b/src/sdbus_wrapper.hpp
@@ -0,0 +1,5 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+
+sdbusplus::bus::bus& getBus();