Move Nvidia gpu tests
These tests got caught in the refactor. Move these tests to the correct
location.
Change-Id: Ie8ec10e154d60cb4f24e1f45be36240863438f87
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/src/nvidia-gpu/meson.build b/src/nvidia-gpu/meson.build
index 9359b2b..dbd5b27 100644
--- a/src/nvidia-gpu/meson.build
+++ b/src/nvidia-gpu/meson.build
@@ -7,7 +7,6 @@
'NvidiaGpuMctpVdm.cpp',
'NvidiaGpuPowerSensor.cpp',
'NvidiaGpuSensor.cpp',
- 'NvidiaGpuSensorMain.cpp',
'NvidiaGpuThresholds.cpp',
'NvidiaGpuVoltageSensor.cpp',
'NvidiaSmaDevice.cpp',
@@ -19,7 +18,7 @@
executable(
'nvidiagpusensor',
- gpusensor_sources,
+ gpusensor_sources + files('NvidiaGpuSensorMain.cpp'),
implicit_include_directories: false,
include_directories: [gpusensor_include_dir, sensor_include_dir],
dependencies: [thresholds_dep, utils_dep],
@@ -27,6 +26,3 @@
install_dir: '/usr/libexec/dbus-sensors',
)
-if get_option('tests').enabled()
- subdir('tests')
-endif
diff --git a/src/nvidia-gpu/tests/NvidiaDeviceInventoryMctpVdm.cpp b/src/nvidia-gpu/tests/NvidiaDeviceInventoryMctpVdm.cpp
deleted file mode 100644
index 09bea75..0000000
--- a/src/nvidia-gpu/tests/NvidiaDeviceInventoryMctpVdm.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#include "NvidiaGpuMctpVdm.hpp"
-#include "OcpMctpVdm.hpp"
-
-#include <endian.h>
-
-#include <array>
-#include <cstdint>
-#include <cstring>
-#include <string>
-#include <variant>
-#include <vector>
-
-#include <gtest/gtest.h>
-
-using namespace gpu;
-// NOLINTBEGIN(cppcoreguidelines-pro-type-reinterpret-cast)
-TEST(NvidiaGpuMctpVdmTest, EncodeGetInventoryInformationRequest)
-{
- std::array<uint8_t, 256> buf{};
- uint8_t instanceId = 1;
- uint8_t propertyId =
- static_cast<uint8_t>(InventoryPropertyId::BOARD_PART_NUMBER);
-
- auto rc = encodeGetInventoryInformationRequest(instanceId, propertyId, buf);
- EXPECT_EQ(rc, 0);
-
- auto* msg = reinterpret_cast<GetInventoryInformationRequest*>(buf.data());
- EXPECT_EQ(msg->hdr.command,
- static_cast<uint8_t>(
- PlatformEnvironmentalCommands::GET_INVENTORY_INFORMATION));
- EXPECT_EQ(msg->hdr.data_size, sizeof(propertyId));
- EXPECT_EQ(msg->property_id, propertyId);
-}
-
-TEST(NvidiaGpuMctpVdmTest, DecodeInventoryString)
-{
- std::array<uint8_t, 256> buf{};
- auto* response =
- reinterpret_cast<ocp::accelerator_management::CommonResponse*>(
- buf.data());
-
- // Fill header
- response->msgHdr.hdr.pci_vendor_id = htobe16(0x10DE); // NVIDIA vendor ID
- response->msgHdr.hdr.instance_id = 0x01; // Instance ID
- response->msgHdr.hdr.ocp_version = 0x89; // OCP version and type
- response->msgHdr.hdr.ocp_accelerator_management_msg_type =
- static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
-
- response->command = static_cast<uint8_t>(
- PlatformEnvironmentalCommands::GET_INVENTORY_INFORMATION);
- response->completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response->reserved = 0;
- response->data_size = htole16(5); // 5 bytes for "TEST1"
-
- const char* testStr = "TEST1";
- memcpy(buf.data() + sizeof(ocp::accelerator_management::CommonResponse),
- testStr, 5);
-
- ocp::accelerator_management::CompletionCode cc =
- ocp::accelerator_management::CompletionCode::ERROR;
- uint16_t reasonCode = 0;
- InventoryValue info;
-
- auto rc = decodeGetInventoryInformationResponse(
- buf, cc, reasonCode, InventoryPropertyId::BOARD_PART_NUMBER, info);
- EXPECT_EQ(rc, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_TRUE(std::holds_alternative<std::string>(info));
- EXPECT_EQ(std::get<std::string>(info), "TEST1");
-}
-
-TEST(NvidiaGpuMctpVdmTest, DecodeInventoryDeviceGuid)
-{
- std::array<uint8_t, 256> buf{};
- auto* response =
- reinterpret_cast<ocp::accelerator_management::CommonResponse*>(
- buf.data());
-
- // Fill header
- response->msgHdr.hdr.pci_vendor_id = htobe16(0x10DE); // NVIDIA vendor ID
- response->msgHdr.hdr.instance_id = 0x01; // Instance ID
- response->msgHdr.hdr.ocp_version = 0x89; // OCP version and type
- response->msgHdr.hdr.ocp_accelerator_management_msg_type =
- static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
-
- response->command = static_cast<uint8_t>(
- PlatformEnvironmentalCommands::GET_INVENTORY_INFORMATION);
- response->completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response->reserved = 0;
- response->data_size = htole16(8); // 8 bytes for DEVICE_GUID
-
- std::vector<uint8_t> dummyGuid = {0xDE, 0xAD, 0xBE, 0xEF,
- 0x01, 0x23, 0x45, 0x67};
- memcpy(buf.data() + sizeof(ocp::accelerator_management::CommonResponse),
- dummyGuid.data(), dummyGuid.size());
-
- ocp::accelerator_management::CompletionCode cc =
- ocp::accelerator_management::CompletionCode::ERROR;
- uint16_t reasonCode = 0;
- InventoryValue info;
-
- auto rc = decodeGetInventoryInformationResponse(
- buf, cc, reasonCode, InventoryPropertyId::DEVICE_GUID, info);
- EXPECT_EQ(rc, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_TRUE(std::holds_alternative<std::vector<uint8_t>>(info));
- EXPECT_EQ(std::get<std::vector<uint8_t>>(info), dummyGuid);
-}
-// NOLINTEND(cppcoreguidelines-pro-type-reinterpret-cast)
diff --git a/src/nvidia-gpu/tests/NvidiaGpuSensorTest.cpp b/src/nvidia-gpu/tests/NvidiaGpuSensorTest.cpp
deleted file mode 100644
index ce197f3..0000000
--- a/src/nvidia-gpu/tests/NvidiaGpuSensorTest.cpp
+++ /dev/null
@@ -1,1097 +0,0 @@
-/*
- * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION &
- * AFFILIATES. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include "NvidiaGpuMctpVdm.hpp"
-#include "OcpMctpVdm.hpp"
-
-#include <endian.h>
-
-#include <array>
-#include <cerrno>
-#include <cstdint>
-#include <cstring>
-#include <vector>
-
-#include <gtest/gtest.h>
-
-namespace ocp_mctp_tests
-{
-
-class OcpMctpVdmTests : public ::testing::Test
-{
- protected:
- void SetUp() override
- {
- // Initialize common test data here
- }
-};
-
-// Tests for OcpMctpVdm::packHeader function
-TEST_F(OcpMctpVdmTests, PackHeaderRequestSuccess)
-{
- const uint16_t pciVendorId = 0x1234;
- ocp::accelerator_management::BindingPciVidInfo hdr{};
- ocp::accelerator_management::BindingPciVid msg{};
-
- hdr.ocp_accelerator_management_msg_type =
- static_cast<uint8_t>(ocp::accelerator_management::MessageType::REQUEST);
- hdr.instance_id = 5;
- hdr.msg_type = 0x7E;
-
- int result = ocp::accelerator_management::packHeader(pciVendorId, hdr, msg);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(msg.pci_vendor_id, htobe16(pciVendorId));
- EXPECT_EQ(msg.instance_id & ocp::accelerator_management::instanceIdBitMask,
- 5);
- EXPECT_NE(msg.instance_id & ocp::accelerator_management::requestBitMask, 0);
- EXPECT_EQ(msg.ocp_version & 0x0F, ocp::accelerator_management::ocpVersion);
- EXPECT_EQ((msg.ocp_version & 0xF0) >>
- ocp::accelerator_management::ocpTypeBitOffset,
- ocp::accelerator_management::ocpType);
- EXPECT_EQ(msg.ocp_accelerator_management_msg_type, 0x7E);
-}
-
-TEST_F(OcpMctpVdmTests, PackHeaderResponseSuccess)
-{
- const uint16_t pciVendorId = 0x1234;
- ocp::accelerator_management::BindingPciVidInfo hdr{};
- ocp::accelerator_management::BindingPciVid msg{};
-
- hdr.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- hdr.instance_id = 10;
- hdr.msg_type = 0x7E;
-
- int result = ocp::accelerator_management::packHeader(pciVendorId, hdr, msg);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(msg.pci_vendor_id, htobe16(pciVendorId));
- EXPECT_EQ(msg.instance_id & ocp::accelerator_management::instanceIdBitMask,
- 10);
- EXPECT_EQ(msg.instance_id & ocp::accelerator_management::requestBitMask, 0);
- EXPECT_EQ(msg.ocp_version & 0x0F, ocp::accelerator_management::ocpVersion);
- EXPECT_EQ((msg.ocp_version & 0xF0) >>
- ocp::accelerator_management::ocpTypeBitOffset,
- ocp::accelerator_management::ocpType);
- EXPECT_EQ(msg.ocp_accelerator_management_msg_type, 0x7E);
-}
-
-TEST_F(OcpMctpVdmTests, PackHeaderInvalidMessageType)
-{
- const uint16_t pciVendorId = 0x1234;
- ocp::accelerator_management::BindingPciVidInfo hdr{};
- ocp::accelerator_management::BindingPciVid msg{};
-
- hdr.ocp_accelerator_management_msg_type = 3; // Invalid message type
- hdr.instance_id = 5;
- hdr.msg_type = 0x7E;
-
- int result = ocp::accelerator_management::packHeader(pciVendorId, hdr, msg);
-
- EXPECT_EQ(result, EINVAL);
-}
-
-TEST_F(OcpMctpVdmTests, PackHeaderInvalidInstanceId)
-{
- const uint16_t pciVendorId = 0x1234;
- ocp::accelerator_management::BindingPciVidInfo hdr{};
- ocp::accelerator_management::BindingPciVid msg{};
-
- hdr.ocp_accelerator_management_msg_type =
- static_cast<uint8_t>(ocp::accelerator_management::MessageType::REQUEST);
- hdr.instance_id = 32; // Out of range (0-31 valid)
- hdr.msg_type = 0x7E;
-
- int result = ocp::accelerator_management::packHeader(pciVendorId, hdr, msg);
-
- EXPECT_EQ(result, EINVAL);
-}
-
-// Tests for OcpMctpVdm::decodeReasonCodeAndCC function
-TEST_F(OcpMctpVdmTests, DecodeReasonCodeAndCCSuccessCase)
-{
- ocp::accelerator_management::CommonNonSuccessResponse response{};
- response.command = 0x42;
- response.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.reason_code = htole16(0x1234);
-
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
-
- std::array<uint8_t, sizeof(response)> buf{};
- std::memcpy(buf.data(), &response, sizeof(response));
-
- int result =
- ocp::accelerator_management::decodeReasonCodeAndCC(buf, cc, reasonCode);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0); // Should be 0 for SUCCESS
-}
-
-TEST_F(OcpMctpVdmTests, DecodeReasonCodeAndCCErrorCase)
-{
- ocp::accelerator_management::CommonNonSuccessResponse response{};
- response.command = 0x42;
- response.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERROR);
- response.reason_code = htole16(0x5678);
-
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
-
- std::array<uint8_t, sizeof(response)> buf{};
- std::memcpy(buf.data(), &response, sizeof(response));
-
- int result =
- ocp::accelerator_management::decodeReasonCodeAndCC(buf, cc, reasonCode);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERROR);
- EXPECT_EQ(reasonCode, 0x5678);
-}
-
-} // namespace ocp_mctp_tests
-
-namespace gpu_mctp_tests
-{
-
-class GpuMctpVdmTests : public ::testing::Test
-{
- protected:
- void SetUp() override
- {
- // Initialize common test data here
- }
-};
-
-// Tests for GpuMctpVdm::packHeader function
-TEST_F(GpuMctpVdmTests, PackHeaderSuccess)
-{
- ocp::accelerator_management::BindingPciVidInfo hdr{};
- ocp::accelerator_management::BindingPciVid msg{};
-
- hdr.ocp_accelerator_management_msg_type =
- static_cast<uint8_t>(ocp::accelerator_management::MessageType::REQUEST);
- hdr.instance_id = 5;
- hdr.msg_type = 0x7E;
-
- int result = gpu::packHeader(hdr, msg);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(msg.pci_vendor_id, htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(msg.instance_id & ocp::accelerator_management::instanceIdBitMask,
- 5);
- EXPECT_NE(msg.instance_id & ocp::accelerator_management::requestBitMask, 0);
- EXPECT_EQ(msg.ocp_version & 0x0F, ocp::accelerator_management::ocpVersion);
- EXPECT_EQ((msg.ocp_version & 0xF0) >>
- ocp::accelerator_management::ocpTypeBitOffset,
- ocp::accelerator_management::ocpType);
- EXPECT_EQ(msg.ocp_accelerator_management_msg_type, 0x7E);
-}
-
-// Tests for GpuMctpVdm::encodeQueryDeviceIdentificationRequest function
-TEST_F(GpuMctpVdmTests, EncodeQueryDeviceIdentificationRequestSuccess)
-{
- const uint8_t instanceId = 3;
- std::vector<uint8_t> buf(256);
-
- int result = gpu::encodeQueryDeviceIdentificationRequest(instanceId, buf);
-
- EXPECT_EQ(result, 0);
-
- gpu::QueryDeviceIdentificationRequest request{};
- std::memcpy(&request, buf.data(), sizeof(request));
-
- EXPECT_EQ(request.hdr.msgHdr.hdr.pci_vendor_id,
- htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::instanceIdBitMask,
- instanceId & ocp::accelerator_management::instanceIdBitMask);
- EXPECT_NE(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::requestBitMask,
- 0);
-
- EXPECT_EQ(request.hdr.command,
- static_cast<uint8_t>(gpu::DeviceCapabilityDiscoveryCommands::
- QUERY_DEVICE_IDENTIFICATION));
- EXPECT_EQ(request.hdr.data_size, 0);
-}
-
-// Tests for GpuMctpVdm::decodeQueryDeviceIdentificationResponse function
-TEST_F(GpuMctpVdmTests, DecodeQueryDeviceIdentificationResponseSuccess)
-{
- // Create a mock successful response
- std::vector<uint8_t> buf(sizeof(gpu::QueryDeviceIdentificationResponse));
-
- gpu::QueryDeviceIdentificationResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 3;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::DEVICE_CAPABILITY_DISCOVERY);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- // Populate response data
- response.hdr.command = static_cast<uint8_t>(
- gpu::DeviceCapabilityDiscoveryCommands::QUERY_DEVICE_IDENTIFICATION);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size =
- htole16(2); // Size of device_identification + instance_id
- response.device_identification =
- static_cast<uint8_t>(gpu::DeviceIdentification::DEVICE_GPU);
- response.instance_id = 7;
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint8_t deviceIdentification{};
- uint8_t deviceInstance{};
-
- int result = gpu::decodeQueryDeviceIdentificationResponse(
- buf, cc, reasonCode, deviceIdentification, deviceInstance);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_EQ(deviceIdentification,
- static_cast<uint8_t>(gpu::DeviceIdentification::DEVICE_GPU));
- EXPECT_EQ(deviceInstance, 7);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeQueryDeviceIdentificationResponseError)
-{
- // Create a mock successful response
- std::vector<uint8_t> buf(
- sizeof(ocp::accelerator_management::CommonNonSuccessResponse));
-
- ocp::accelerator_management::CommonNonSuccessResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 3;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::DEVICE_CAPABILITY_DISCOVERY);
-
- gpu::packHeader(headerInfo, response.msgHdr.hdr);
-
- // Populate response data
- response.command = static_cast<uint8_t>(
- gpu::DeviceCapabilityDiscoveryCommands::QUERY_DEVICE_IDENTIFICATION);
- response.command = static_cast<uint8_t>(
- gpu::DeviceCapabilityDiscoveryCommands::QUERY_DEVICE_IDENTIFICATION);
- response.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERROR);
- response.reason_code = htole16(0x1234);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint8_t deviceIdentification{};
- uint8_t deviceInstance{};
-
- int result = gpu::decodeQueryDeviceIdentificationResponse(
- buf, cc, reasonCode, deviceIdentification, deviceInstance);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERROR);
- EXPECT_EQ(reasonCode, 0x1234);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeQueryDeviceIdentificationResponseInvalidSize)
-{
- // Create a too-small buffer
- std::vector<uint8_t> buf(
- sizeof(ocp::accelerator_management::Message) + 2); // Too small
-
- // Populate Message header only
- ocp::accelerator_management::Message msg{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 3;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::DEVICE_CAPABILITY_DISCOVERY);
-
- gpu::packHeader(headerInfo, msg.hdr);
- std::memcpy(buf.data(), &msg, sizeof(msg));
-
- // Test decoding with insufficient data
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint8_t deviceIdentification{};
- uint8_t deviceInstance{};
-
- int result = gpu::decodeQueryDeviceIdentificationResponse(
- buf, cc, reasonCode, deviceIdentification, deviceInstance);
-
- EXPECT_EQ(result, EINVAL); // Should indicate error for invalid size
-}
-
-// Tests for GpuMctpVdm::encodeGetTemperatureReadingRequest function
-TEST_F(GpuMctpVdmTests, EncodeGetTemperatureReadingRequestSuccess)
-{
- const uint8_t instanceId = 4;
- const uint8_t sensorId = 0;
- std::vector<uint8_t> buf(256);
-
- int result =
- gpu::encodeGetTemperatureReadingRequest(instanceId, sensorId, buf);
-
- EXPECT_EQ(result, 0);
-
- gpu::GetTemperatureReadingRequest request{};
- std::memcpy(&request, buf.data(), sizeof(request));
-
- EXPECT_EQ(request.hdr.msgHdr.hdr.pci_vendor_id,
- htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::instanceIdBitMask,
- instanceId & ocp::accelerator_management::instanceIdBitMask);
- EXPECT_NE(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::requestBitMask,
- 0);
- EXPECT_EQ(request.hdr.msgHdr.hdr.ocp_accelerator_management_msg_type,
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL));
-
- // Verify request data
- EXPECT_EQ(request.hdr.command,
- static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_TEMPERATURE_READING));
- EXPECT_EQ(request.hdr.data_size, sizeof(sensorId));
- EXPECT_EQ(request.sensor_id, sensorId);
-}
-
-// Tests for GpuMctpVdm::decodeGetTemperatureReadingResponse function
-TEST_F(GpuMctpVdmTests, DecodeGetTemperatureReadingResponseSuccess)
-{
- // Create a mock successful response
- std::vector<uint8_t> buf(sizeof(gpu::GetTemperatureReadingResponse));
-
- gpu::GetTemperatureReadingResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 4;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- // Populate response data
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_TEMPERATURE_READING);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(sizeof(int32_t));
-
- // Set a temperature value of 75.5°C (75.5 * 256 = 19328)
- response.reading = htole32(19328);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- double temperatureReading{};
-
- int result = gpu::decodeGetTemperatureReadingResponse(
- buf, cc, reasonCode, temperatureReading);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_NEAR(temperatureReading, 75.5, 0.01);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetTemperatureReadingResponseError)
-{
- std::vector<uint8_t> buf(
- sizeof(ocp::accelerator_management::CommonNonSuccessResponse));
-
- // Populate error response data
- ocp::accelerator_management::CommonNonSuccessResponse errorResponse{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 3;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::DEVICE_CAPABILITY_DISCOVERY);
-
- gpu::packHeader(headerInfo, errorResponse.msgHdr.hdr);
-
- errorResponse.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_TEMPERATURE_READING);
- errorResponse.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- errorResponse.reason_code = htole16(0x4321);
-
- std::memcpy(buf.data(), &errorResponse, sizeof(errorResponse));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- double temperatureReading{};
-
- int result = gpu::decodeGetTemperatureReadingResponse(
- buf, cc, reasonCode, temperatureReading);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- EXPECT_EQ(reasonCode, 0x4321);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetTemperatureReadingResponseInvalidSize)
-{
- // Create a mock response with invalid data_size
- std::vector<uint8_t> buf(sizeof(gpu::GetTemperatureReadingResponse));
-
- gpu::GetTemperatureReadingResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 4;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_TEMPERATURE_READING);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(1); // Invalid - should be sizeof(int32_t)
- response.reading = htole32(19328);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- double temperatureReading{};
-
- int result = gpu::decodeGetTemperatureReadingResponse(
- buf, cc, reasonCode, temperatureReading);
-
- EXPECT_EQ(result, EINVAL); // Should indicate error for invalid data size
-}
-
-// Tests for GpuMctpVdm::encodeReadThermalParametersRequest function
-TEST_F(GpuMctpVdmTests, EncodeReadThermalParametersRequestSuccess)
-{
- const uint8_t instanceId = 5;
- const uint8_t sensorId = 1;
- std::array<uint8_t, sizeof(gpu::ReadThermalParametersRequest)> buf{};
-
- int result =
- gpu::encodeReadThermalParametersRequest(instanceId, sensorId, buf);
-
- EXPECT_EQ(result, 0);
-
- gpu::ReadThermalParametersRequest request{};
- std::memcpy(&request, buf.data(), sizeof(request));
-
- EXPECT_EQ(request.hdr.msgHdr.hdr.pci_vendor_id,
- htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::instanceIdBitMask,
- instanceId & ocp::accelerator_management::instanceIdBitMask);
- EXPECT_NE(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::requestBitMask,
- 0);
- EXPECT_EQ(request.hdr.msgHdr.hdr.ocp_accelerator_management_msg_type,
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL));
-
- // Verify request data
- EXPECT_EQ(request.hdr.command,
- static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::READ_THERMAL_PARAMETERS));
- EXPECT_EQ(request.hdr.data_size, sizeof(sensorId));
- EXPECT_EQ(request.sensor_id, sensorId);
-}
-
-// Tests for GpuMctpVdm::decodeReadThermalParametersResponse function
-TEST_F(GpuMctpVdmTests, DecodeReadThermalParametersResponseSuccess)
-{
- // Create a mock successful response
- std::array<uint8_t, sizeof(gpu::ReadThermalParametersResponse)> buf{};
-
- gpu::ReadThermalParametersResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 5;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- // Populate response data
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::READ_THERMAL_PARAMETERS);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(sizeof(int32_t));
-
- // Set a threshold value of 85°C (85 * 256 = 21760)
- response.threshold = htole32(21760);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- int32_t threshold{};
-
- int result = gpu::decodeReadThermalParametersResponse(
- buf, cc, reasonCode, threshold);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_EQ(threshold, 21760);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeReadThermalParametersResponseError)
-{
- std::array<uint8_t,
- sizeof(ocp::accelerator_management::CommonNonSuccessResponse)>
- buf{};
-
- // Populate error response data
- ocp::accelerator_management::CommonNonSuccessResponse errorResponse{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 5;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, errorResponse.msgHdr.hdr);
-
- errorResponse.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::READ_THERMAL_PARAMETERS);
- errorResponse.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- errorResponse.reason_code = htole16(0x5678);
-
- std::memcpy(buf.data(), &errorResponse, sizeof(errorResponse));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- int32_t threshold{};
-
- int result = gpu::decodeReadThermalParametersResponse(
- buf, cc, reasonCode, threshold);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- EXPECT_EQ(reasonCode, 0x5678);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeReadThermalParametersResponseInvalidSize)
-{
- // Create a mock response with invalid data_size
- std::array<uint8_t, sizeof(gpu::ReadThermalParametersResponse)> buf{};
-
- gpu::ReadThermalParametersResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 5;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::READ_THERMAL_PARAMETERS);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(2); // Invalid - should be sizeof(int32_t)
- response.threshold = htole32(21760);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- int32_t threshold{};
-
- int result = gpu::decodeReadThermalParametersResponse(
- buf, cc, reasonCode, threshold);
-
- EXPECT_EQ(result, EINVAL); // Should indicate error for invalid data size
-}
-
-// Tests for GpuMctpVdm::encodeGetCurrentPowerDrawRequest function
-TEST_F(GpuMctpVdmTests, EncodeGetCurrentPowerDrawRequestSuccess)
-{
- const uint8_t instanceId = 6;
- const uint8_t sensorId = 2;
- const uint8_t averagingInterval = 10;
- std::array<uint8_t, sizeof(gpu::GetCurrentPowerDrawRequest)> buf{};
-
- int result = gpu::encodeGetCurrentPowerDrawRequest(instanceId, sensorId,
- averagingInterval, buf);
-
- EXPECT_EQ(result, 0);
-
- gpu::GetCurrentPowerDrawRequest request{};
- std::memcpy(&request, buf.data(), sizeof(request));
-
- EXPECT_EQ(request.hdr.msgHdr.hdr.pci_vendor_id,
- htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::instanceIdBitMask,
- instanceId & ocp::accelerator_management::instanceIdBitMask);
- EXPECT_NE(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::requestBitMask,
- 0);
- EXPECT_EQ(request.hdr.msgHdr.hdr.ocp_accelerator_management_msg_type,
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL));
-
- // Verify request data
- EXPECT_EQ(request.hdr.command,
- static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_POWER_DRAW));
- EXPECT_EQ(request.hdr.data_size,
- sizeof(sensorId) + sizeof(averagingInterval));
- EXPECT_EQ(request.sensorId, sensorId);
- EXPECT_EQ(request.averagingInterval, averagingInterval);
-}
-
-// Tests for GpuMctpVdm::decodeGetCurrentPowerDrawResponse function
-TEST_F(GpuMctpVdmTests, DecodeGetCurrentPowerDrawResponseSuccess)
-{
- // Create a mock successful response
- std::array<uint8_t, sizeof(gpu::GetCurrentPowerDrawResponse)> buf{};
-
- gpu::GetCurrentPowerDrawResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 6;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- // Populate response data
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_POWER_DRAW);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(sizeof(uint32_t));
-
- // Set a power value of 250W
- response.power = htole32(250);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint32_t power{};
-
- int result =
- gpu::decodeGetCurrentPowerDrawResponse(buf, cc, reasonCode, power);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_EQ(power, 250U);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetCurrentPowerDrawResponseError)
-{
- std::array<uint8_t,
- sizeof(ocp::accelerator_management::CommonNonSuccessResponse)>
- buf{};
-
- // Populate error response data
- ocp::accelerator_management::CommonNonSuccessResponse errorResponse{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 6;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, errorResponse.msgHdr.hdr);
-
- errorResponse.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_POWER_DRAW);
- errorResponse.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- errorResponse.reason_code = htole16(0x9ABC);
-
- std::memcpy(buf.data(), &errorResponse, sizeof(errorResponse));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint32_t power{};
-
- int result =
- gpu::decodeGetCurrentPowerDrawResponse(buf, cc, reasonCode, power);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- EXPECT_EQ(reasonCode, 0x9ABC);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetCurrentPowerDrawResponseInvalidSize)
-{
- // Create a mock response with invalid data_size
- std::array<uint8_t, sizeof(gpu::GetCurrentPowerDrawResponse)> buf{};
-
- gpu::GetCurrentPowerDrawResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 6;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_POWER_DRAW);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(2); // Invalid - should be sizeof(uint32_t)
- response.power = htole32(250);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint32_t power{};
-
- int result =
- gpu::decodeGetCurrentPowerDrawResponse(buf, cc, reasonCode, power);
-
- EXPECT_EQ(result, EINVAL); // Should indicate error for invalid data size
-}
-
-// Tests for GpuMctpVdm::encodeGetCurrentEnergyCounterRequest function
-TEST_F(GpuMctpVdmTests, EncodeGetCurrentEnergyCounterRequestSuccess)
-{
- const uint8_t instanceId = 7;
- const uint8_t sensorId = 3;
- std::array<uint8_t, sizeof(gpu::GetCurrentEnergyCounterRequest)> buf{};
-
- int result =
- gpu::encodeGetCurrentEnergyCounterRequest(instanceId, sensorId, buf);
-
- EXPECT_EQ(result, 0);
-
- gpu::GetCurrentEnergyCounterRequest request{};
- std::memcpy(&request, buf.data(), sizeof(request));
-
- EXPECT_EQ(request.hdr.msgHdr.hdr.pci_vendor_id,
- htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::instanceIdBitMask,
- instanceId & ocp::accelerator_management::instanceIdBitMask);
- EXPECT_NE(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::requestBitMask,
- 0);
- EXPECT_EQ(request.hdr.msgHdr.hdr.ocp_accelerator_management_msg_type,
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL));
-
- // Verify request data
- EXPECT_EQ(
- request.hdr.command,
- static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_ENERGY_COUNTER));
- EXPECT_EQ(request.hdr.data_size, sizeof(sensorId));
- EXPECT_EQ(request.sensor_id, sensorId);
-}
-
-// Tests for GpuMctpVdm::decodeGetCurrentEnergyCounterResponse function
-TEST_F(GpuMctpVdmTests, DecodeGetCurrentEnergyCounterResponseSuccess)
-{
- // Create a mock successful response
- std::array<uint8_t, sizeof(gpu::GetCurrentEnergyCounterResponse)> buf{};
-
- gpu::GetCurrentEnergyCounterResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 7;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- // Populate response data
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_ENERGY_COUNTER);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(sizeof(uint64_t));
-
- // Set an energy value of 1000 Wh (1000 * 3600 = 3600000 Joules)
- response.energy = htole64(3600000);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint64_t energy{};
-
- int result =
- gpu::decodeGetCurrentEnergyCounterResponse(buf, cc, reasonCode, energy);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_EQ(energy, 3600000U);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetCurrentEnergyCounterResponseError)
-{
- std::array<uint8_t,
- sizeof(ocp::accelerator_management::CommonNonSuccessResponse)>
- buf{};
-
- // Populate error response data
- ocp::accelerator_management::CommonNonSuccessResponse errorResponse{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 7;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, errorResponse.msgHdr.hdr);
-
- errorResponse.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_ENERGY_COUNTER);
- errorResponse.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- errorResponse.reason_code = htole16(0xDEF0);
-
- std::memcpy(buf.data(), &errorResponse, sizeof(errorResponse));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint64_t energy{};
-
- int result =
- gpu::decodeGetCurrentEnergyCounterResponse(buf, cc, reasonCode, energy);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- EXPECT_EQ(reasonCode, 0xDEF0);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetCurrentEnergyCounterResponseInvalidSize)
-{
- // Create a mock response with invalid data_size
- std::array<uint8_t, sizeof(gpu::GetCurrentEnergyCounterResponse)> buf{};
-
- gpu::GetCurrentEnergyCounterResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 7;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- response.hdr.command = static_cast<uint8_t>(
- gpu::PlatformEnvironmentalCommands::GET_CURRENT_ENERGY_COUNTER);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(4); // Invalid - should be sizeof(uint64_t)
- response.energy = htole64(3600000);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint64_t energy{};
-
- int result =
- gpu::decodeGetCurrentEnergyCounterResponse(buf, cc, reasonCode, energy);
-
- EXPECT_EQ(result, EINVAL); // Should indicate error for invalid data size
-}
-
-// Tests for GpuMctpVdm::encodeGetVoltageRequest function
-TEST_F(GpuMctpVdmTests, EncodeGetVoltageRequestSuccess)
-{
- const uint8_t instanceId = 8;
- const uint8_t sensorId = 4;
- std::array<uint8_t, sizeof(gpu::GetVoltageRequest)> buf{};
-
- int result = gpu::encodeGetVoltageRequest(instanceId, sensorId, buf);
-
- EXPECT_EQ(result, 0);
-
- gpu::GetVoltageRequest request{};
- std::memcpy(&request, buf.data(), sizeof(request));
-
- EXPECT_EQ(request.hdr.msgHdr.hdr.pci_vendor_id,
- htobe16(gpu::nvidiaPciVendorId));
- EXPECT_EQ(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::instanceIdBitMask,
- instanceId & ocp::accelerator_management::instanceIdBitMask);
- EXPECT_NE(request.hdr.msgHdr.hdr.instance_id &
- ocp::accelerator_management::requestBitMask,
- 0);
- EXPECT_EQ(request.hdr.msgHdr.hdr.ocp_accelerator_management_msg_type,
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL));
-
- // Verify request data
- EXPECT_EQ(
- request.hdr.command,
- static_cast<uint8_t>(gpu::PlatformEnvironmentalCommands::GET_VOLTAGE));
- EXPECT_EQ(request.hdr.data_size, sizeof(sensorId));
- EXPECT_EQ(request.sensor_id, sensorId);
-}
-
-// Tests for GpuMctpVdm::decodeGetVoltageResponse function
-TEST_F(GpuMctpVdmTests, DecodeGetVoltageResponseSuccess)
-{
- // Create a mock successful response
- std::array<uint8_t, sizeof(gpu::GetVoltageResponse)> buf{};
-
- gpu::GetVoltageResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 8;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- // Populate response data
- response.hdr.command =
- static_cast<uint8_t>(gpu::PlatformEnvironmentalCommands::GET_VOLTAGE);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(sizeof(uint32_t));
-
- // Set a voltage value of 12.5V (12.5 * 1000 = 12500 mV)
- response.voltage = htole32(12500);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint32_t voltage{};
-
- int result = gpu::decodeGetVoltageResponse(buf, cc, reasonCode, voltage);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::SUCCESS);
- EXPECT_EQ(reasonCode, 0);
- EXPECT_EQ(voltage, 12500U);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetVoltageResponseError)
-{
- std::array<uint8_t,
- sizeof(ocp::accelerator_management::CommonNonSuccessResponse)>
- buf{};
-
- // Populate error response data
- ocp::accelerator_management::CommonNonSuccessResponse errorResponse{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 8;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, errorResponse.msgHdr.hdr);
-
- errorResponse.command =
- static_cast<uint8_t>(gpu::PlatformEnvironmentalCommands::GET_VOLTAGE);
- errorResponse.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- errorResponse.reason_code = htole16(0x1234);
-
- std::memcpy(buf.data(), &errorResponse, sizeof(errorResponse));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint32_t voltage{};
-
- int result = gpu::decodeGetVoltageResponse(buf, cc, reasonCode, voltage);
-
- EXPECT_EQ(result, 0);
- EXPECT_EQ(cc, ocp::accelerator_management::CompletionCode::ERR_NOT_READY);
- EXPECT_EQ(reasonCode, 0x1234);
-}
-
-TEST_F(GpuMctpVdmTests, DecodeGetVoltageResponseInvalidSize)
-{
- // Create a mock response with invalid data_size
- std::array<uint8_t, sizeof(gpu::GetVoltageResponse)> buf{};
-
- gpu::GetVoltageResponse response{};
- ocp::accelerator_management::BindingPciVidInfo headerInfo{};
- headerInfo.ocp_accelerator_management_msg_type = static_cast<uint8_t>(
- ocp::accelerator_management::MessageType::RESPONSE);
- headerInfo.instance_id = 8;
- headerInfo.msg_type =
- static_cast<uint8_t>(gpu::MessageType::PLATFORM_ENVIRONMENTAL);
-
- gpu::packHeader(headerInfo, response.hdr.msgHdr.hdr);
-
- response.hdr.command =
- static_cast<uint8_t>(gpu::PlatformEnvironmentalCommands::GET_VOLTAGE);
- response.hdr.completion_code = static_cast<uint8_t>(
- ocp::accelerator_management::CompletionCode::SUCCESS);
- response.hdr.reserved = 0;
- response.hdr.data_size = htole16(2); // Invalid - should be sizeof(uint32_t)
- response.voltage = htole32(12500);
-
- std::memcpy(buf.data(), &response, sizeof(response));
-
- // Test decoding
- ocp::accelerator_management::CompletionCode cc{};
- uint16_t reasonCode{};
- uint32_t voltage{};
-
- int result = gpu::decodeGetVoltageResponse(buf, cc, reasonCode, voltage);
-
- EXPECT_EQ(result, EINVAL); // Should indicate error for invalid data size
-}
-} // namespace gpu_mctp_tests
diff --git a/src/nvidia-gpu/tests/meson.build b/src/nvidia-gpu/tests/meson.build
deleted file mode 100644
index 99ed721..0000000
--- a/src/nvidia-gpu/tests/meson.build
+++ /dev/null
@@ -1,30 +0,0 @@
-gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
-gmock_dep = dependency('gmock', disabler: true, required: false)
-if not gtest_dep.found() or not gmock_dep.found()
- gtest_proj = import('cmake').subproject('googletest', required: true)
- gtest_dep = declare_dependency(
- dependencies: [
- dependency('threads'),
- gtest_proj.dependency('gtest'),
- gtest_proj.dependency('gtest_main'),
- ],
- )
- gmock_dep = gtest_proj.dependency('gmock')
-endif
-
-gpusensor_test_include_dirs = [gpusensor_include_dir]
-
-test(
- 'nvidiagpusensor_test',
- executable(
- 'nvidiagpusensor_test',
- 'NvidiaGpuSensorTest.cpp',
- 'NvidiaDeviceInventoryMctpVdm.cpp',
- '../OcpMctpVdm.cpp',
- '../NvidiaGpuMctpVdm.cpp',
- implicit_include_directories: false,
- include_directories: gpusensor_test_include_dirs,
- dependencies: [gtest_dep, gmock_dep],
- ),
- workdir: meson.current_source_dir(),
-)