blob: 7127c3d4ae5828498e6891ffccee1fa8f05cf76e [file] [log] [blame]
Patrick Venture0e9aae52020-08-13 13:07:09 -07001#include "commands.hpp"
Patrick Ventureaa374122019-03-15 15:09:10 -07002#include "handler_mock.hpp"
Patrick Ventureaa374122019-03-15 15:09:10 -07003#include "psu.hpp"
4
5#include <cstdint>
6#include <cstring>
7#include <vector>
8
9#include <gtest/gtest.h>
10
11#define MAX_IPMI_BUFFER 64
12
13using ::testing::Return;
14
15namespace google
16{
17namespace ipmi
18{
19
20TEST(PsuCommandTest, InvalidRequestLength)
21{
22 std::vector<std::uint8_t> request = {SysOEMCommands::SysPsuHardReset};
23 size_t dataLen = request.size();
24 std::uint8_t reply[MAX_IPMI_BUFFER];
25
26 HandlerMock hMock;
27 EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
Patrick Venture45fad1b2019-03-18 16:52:14 -070028 psuHardReset(request.data(), reply, &dataLen, &hMock));
Patrick Ventureaa374122019-03-15 15:09:10 -070029}
30
31TEST(PsuCommandTest, ValidRequest)
32{
33 std::uint32_t delayValue = 0x45;
34 struct PsuResetRequest requestContents;
35 requestContents.subcommand = SysOEMCommands::SysPsuHardReset;
36 requestContents.delay = delayValue;
37
38 std::vector<std::uint8_t> request(sizeof(requestContents));
39 std::memcpy(request.data(), &requestContents, sizeof(requestContents));
40 size_t dataLen = request.size();
41 std::uint8_t reply[MAX_IPMI_BUFFER];
42
43 HandlerMock hMock;
44 EXPECT_CALL(hMock, psuResetDelay(delayValue));
45 EXPECT_EQ(IPMI_CC_OK,
Patrick Venture45fad1b2019-03-18 16:52:14 -070046 psuHardReset(request.data(), reply, &dataLen, &hMock));
Patrick Ventureaa374122019-03-15 15:09:10 -070047}
48
49} // namespace ipmi
50} // namespace google