blob: 925f28497dcb0a45a929ae26a5bf54db925bdb59 [file] [log] [blame]
Gilbert Chende2a1322022-05-24 15:35:21 +01001#include "libpldm/entity.h"
2
Thu Nguyen3c5486d2024-08-01 08:03:08 +00003#include "platform-mc/numeric_sensor.hpp"
Gilbert Chen6c7fed42022-02-22 15:40:17 +00004#include "platform-mc/terminus.hpp"
5
6#include <gtest/gtest.h>
7
8TEST(TerminusTest, supportedTypeTest)
9{
10 auto t1 = pldm::platform_mc::Terminus(1, 1 << PLDM_BASE);
11 auto t2 = pldm::platform_mc::Terminus(2,
12 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
13
14 EXPECT_EQ(true, t1.doesSupportType(PLDM_BASE));
15 EXPECT_EQ(false, t1.doesSupportType(PLDM_PLATFORM));
16 EXPECT_EQ(true, t2.doesSupportType(PLDM_BASE));
17 EXPECT_EQ(true, t2.doesSupportType(PLDM_PLATFORM));
18}
19
20TEST(TerminusTest, getTidTest)
21{
22 const pldm_tid_t tid = 1;
23 auto t1 = pldm::platform_mc::Terminus(tid, 1 << PLDM_BASE);
24
25 EXPECT_EQ(tid, t1.getTid());
26}
Gilbert Chende2a1322022-05-24 15:35:21 +010027
28TEST(TerminusTest, parseSensorAuxiliaryNamesPDRTest)
29{
30 auto t1 = pldm::platform_mc::Terminus(1,
31 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
32 std::vector<uint8_t> pdr1{
33 0x0,
34 0x0,
35 0x0,
36 0x1, // record handle
37 0x1, // PDRHeaderVersion
38 PLDM_SENSOR_AUXILIARY_NAMES_PDR, // PDRType
39 0x0,
40 0x0, // recordChangeNumber
41 0x0,
42 21, // dataLength
43 0,
44 0x0, // PLDMTerminusHandle
45 0x1,
46 0x0, // sensorID
47 0x1, // sensorCount
48 0x1, // nameStringCount
49 'e',
50 'n',
51 0x0, // nameLanguageTag
52 0x0,
53 'T',
54 0x0,
55 'E',
56 0x0,
57 'M',
58 0x0,
59 'P',
60 0x0,
61 '1',
62 0x0,
63 0x0 // sensorName
64 };
65
Thu Nguyen3c5486d2024-08-01 08:03:08 +000066 std::vector<uint8_t> pdr2{
67 0x1, 0x0, 0x0,
68 0x0, // record handle
69 0x1, // PDRHeaderVersion
70 PLDM_ENTITY_AUXILIARY_NAMES_PDR, // PDRType
71 0x1,
72 0x0, // recordChangeNumber
73 0x11,
74 0, // dataLength
75 /* Entity Auxiliary Names PDR Data*/
76 3,
77 0x80, // entityType system software
78 0x1,
79 0x0, // Entity instance number =1
80 0,
81 0, // Overal system
82 0, // shared Name Count one name only
83 01, // nameStringCount
84 0x65, 0x6e, 0x00,
85 0x00, // Language Tag "en"
86 0x53, 0x00, 0x30, 0x00,
87 0x00 // Entity Name "S0"
88 };
89
Gilbert Chende2a1322022-05-24 15:35:21 +010090 t1.pdrs.emplace_back(pdr1);
Thu Nguyen3c5486d2024-08-01 08:03:08 +000091 t1.pdrs.emplace_back(pdr2);
Gilbert Chende2a1322022-05-24 15:35:21 +010092 t1.parseTerminusPDRs();
93
94 auto sensorAuxNames = t1.getSensorAuxiliaryNames(0);
95 EXPECT_EQ(nullptr, sensorAuxNames);
96
97 sensorAuxNames = t1.getSensorAuxiliaryNames(1);
98 EXPECT_NE(nullptr, sensorAuxNames);
99
100 const auto& [sensorId, sensorCnt, names] = *sensorAuxNames;
101 EXPECT_EQ(1, sensorId);
102 EXPECT_EQ(1, sensorCnt);
103 EXPECT_EQ(1, names.size());
104 EXPECT_EQ(1, names[0].size());
105 EXPECT_EQ("en", names[0][0].first);
106 EXPECT_EQ("TEMP1", names[0][0].second);
Thu Nguyen3c5486d2024-08-01 08:03:08 +0000107 EXPECT_EQ(2, t1.pdrs.size());
108 EXPECT_EQ("S0", t1.getTerminusName());
109}
110
111TEST(TerminusTest, parsePDRTestNoSensorPDR)
112{
113 auto t1 = pldm::platform_mc::Terminus(1,
114 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
115 std::vector<uint8_t> pdr1{
116 0x1, 0x0, 0x0,
117 0x0, // record handle
118 0x1, // PDRHeaderVersion
119 PLDM_ENTITY_AUXILIARY_NAMES_PDR, // PDRType
120 0x1,
121 0x0, // recordChangeNumber
122 0x11,
123 0, // dataLength
124 /* Entity Auxiliary Names PDR Data*/
125 3,
126 0x80, // entityType system software
127 0x1,
128 0x0, // Entity instance number =1
129 0,
130 0, // Overal system
131 0, // shared Name Count one name only
132 01, // nameStringCount
133 0x65, 0x6e, 0x00,
134 0x00, // Language Tag "en"
135 0x53, 0x00, 0x30, 0x00,
136 0x00 // Entity Name "S0"
137 };
138
139 t1.pdrs.emplace_back(pdr1);
140 t1.parseTerminusPDRs();
141
142 auto sensorAuxNames = t1.getSensorAuxiliaryNames(1);
143 EXPECT_EQ(nullptr, sensorAuxNames);
Gilbert Chende2a1322022-05-24 15:35:21 +0100144}