diff --git a/test/.uuid b/test/.uuid
new file mode 100644
index 0000000..9ec05e5
--- /dev/null
+++ b/test/.uuid
@@ -0,0 +1 @@
+5ff5f36b-062f-459b-a9ee-70bc183722c4
\ No newline at end of file
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 0000000..0e54c90
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,23 @@
+gtest = dependency('gtest', main: true, disabler: true, required: build_tests)
+gmock = dependency('gmock', disabler: true, required: build_tests)
+openssl = dependency('openssl', disabler: true, required: build_tests)
+
+configure_file(output: 'config.h',
+  configuration: cdata,
+)
+test_inc = include_directories('.')
+
+test_kunlun_ipmi_oem = executable(
+  'test_kunlun-ipmi-oem',
+  '../src/kunlun_oem.cpp',
+  'test_kunlun_ipmi_oem.cpp',
+  include_directories: [test_inc, src_inc],
+  dependencies: [
+    libipmid,
+    gtest,
+    gmock,
+    phosphor_logging,
+    openssl,
+  ])
+
+test('test_kunlun-ipmi-oem', test_kunlun_ipmi_oem)
diff --git a/test/test_kunlun_ipmi_oem.cpp b/test/test_kunlun_ipmi_oem.cpp
new file mode 100644
index 0000000..1b4526a
--- /dev/null
+++ b/test/test_kunlun_ipmi_oem.cpp
@@ -0,0 +1,56 @@
+#include "config.h"
+
+#include "kunlun_oem.hpp"
+
+#include <ipmid/api.h>
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+using ::testing::_;
+using ::testing::Invoke;
+using ::testing::IsNull;
+using ::testing::Return;
+using ::testing::StrEq;
+using ::testing::VariantWith;
+
+namespace ipmi
+{
+
+namespace impl
+{
+
+bool registerHandler(int prio, NetFn netFn, Cmd cmd, Privilege priv, ::ipmi::HandlerBase::ptr handler)
+{
+    (void)prio;
+    (void)netFn;
+    (void)cmd;
+    (void)priv;
+    (void)handler;
+
+    return true;
+}
+
+} // namespace impl
+
+TEST(TestKunlunIpmiOem, SetAndGetCpuInfo)
+{
+    uint8_t index = 0;
+    uint32_t loop;
+    std::vector<char> infoSet;
+    std::vector<char> infoGet;
+
+    for (loop = 0; loop < 256; loop++)
+    {
+        infoSet.push_back(static_cast<char>(loop));
+    }
+
+    EXPECT_EQ(setCpuInfo(index, infoSet), responseSuccess());
+
+    auto result = getCpuInfo(index);
+    infoGet = std::get<0>(std::get<1>(result).value());
+
+    EXPECT_TRUE(infoSet == infoGet);
+}
+
+} // namespace ipmi
\ No newline at end of file
