pldmtool: Fix SetStateEffecterStates command
Fix and use the following command to set state effecter PDR:
pldmtool platform SetStateEffecterStates --id <effecterId> --count
<count> --data <setRequest effecterState ...>
Tested:
$ pldmtool platform SetStateEffecterStates -i 1 -c 1 -d 0 2
set_request = 0
Encode request successfully
Request Message:
08 01 80 02 39 01 00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Success in creating the socket : RC = 3
Success in connecting to socket : RC = 0
Success in sending message type as pldm to mctp : RC = 0
Write to socket successful : RC = 24
Total length:24
Loopback response message:
08 01 80 02 39 01 00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
On first recv(),response == request : RC = 0
Total length: 6
Shutdown Socket successful : RC = 0
Response Message:
08 01 00 02 39 00
SetStateEffecterStates: SUCCESS
$ pldmtool platform SetStateEffecterStates -i 1 -c 1 -d 1 2
set_request = 1
Encode request successfully
Request Message:
08 01 80 02 39 01 00 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Success in creating the socket : RC = 3
Success in connecting to socket : RC = 0
Success in sending message type as pldm to mctp : RC = 0
Write to socket successful : RC = 24
Total length:24
Loopback response message:
08 01 80 02 39 01 00 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
On first recv(),response == request : RC = 0
Total length: 6
Shutdown Socket successful : RC = 0
Response Message:
08 01 00 02 39 00
SetStateEffecterStates: SUCCESS
Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I4a2e71b149040c3e0c0f585f8fae0e5e25ec7ceb
diff --git a/test/pldm_utils_test.cpp b/test/pldm_utils_test.cpp
index b512db9..c880c20 100644
--- a/test/pldm_utils_test.cpp
+++ b/test/pldm_utils_test.cpp
@@ -50,35 +50,30 @@
EXPECT_EQ(ret, false);
}
-TEST(decodeEffecterData, testGoodDecodeEffecterData)
+TEST(parseEffecterData, testGoodDecodeEffecterData)
{
- std::vector<uint8_t> effecterData = {2, 1, 1, 0, 1, 2};
- uint16_t effecter_id = 2;
+ std::vector<uint8_t> effecterData = {1, 1, 0, 1};
+ uint8_t effecterCount = 2;
set_effecter_state_field stateField0 = {1, 1};
- set_effecter_state_field stateField1 = {0, 0};
- set_effecter_state_field stateField2 = {1, 2};
+ set_effecter_state_field stateField1 = {0, 1};
- uint16_t retEffecter_id = 0;
- std::vector<set_effecter_state_field> stateField = {};
- auto rc = decodeEffecterData(effecterData, retEffecter_id, stateField);
+ auto effecterField = parseEffecterData(effecterData, effecterCount);
+ EXPECT_NE(effecterField, std::nullopt);
+ EXPECT_EQ(effecterCount, effecterField->size());
- EXPECT_EQ(rc, true);
- EXPECT_EQ(effecter_id, retEffecter_id);
+ std::vector<set_effecter_state_field> stateField = effecterField.value();
EXPECT_EQ(stateField[0].set_request, stateField0.set_request);
EXPECT_EQ(stateField[0].effecter_state, stateField0.effecter_state);
EXPECT_EQ(stateField[1].set_request, stateField1.set_request);
EXPECT_EQ(stateField[1].effecter_state, stateField1.effecter_state);
- EXPECT_EQ(stateField[2].set_request, stateField2.set_request);
- EXPECT_EQ(stateField[2].effecter_state, stateField2.effecter_state);
}
-TEST(decodeEffecterData, testBadDecodeEffecterData)
+TEST(parseEffecterData, testBadDecodeEffecterData)
{
- std::vector<uint8_t> effecterData = {2, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ std::vector<uint8_t> effecterData = {0, 1, 0, 1, 0, 1};
+ uint8_t effecterCount = 2;
- uint16_t retEffecter_id = 0;
- std::vector<set_effecter_state_field> stateField = {};
- auto rc = decodeEffecterData(effecterData, retEffecter_id, stateField);
+ auto effecterField = parseEffecterData(effecterData, effecterCount);
- EXPECT_EQ(rc, false);
+ EXPECT_EQ(effecterField, std::nullopt);
}