blob: fb8af0177568a1949a66cd058b9c27fca2dd378d [file] [log] [blame]
Deepak Kodihallic6e8fb52019-05-02 08:35:31 -05001#include "libpldmresponder/pdr.hpp"
2
3#include "libpldm/platform.h"
4
5#include <gtest/gtest.h>
6
7using namespace pldm::responder;
8
9TEST(GeneratePDR, testGoodJson)
10{
11 using namespace pdr;
12 Repo& pdrRepo = get("./pdr_jsons/good");
13
14 // 2 entries
15 ASSERT_EQ(pdrRepo.numEntries(), 2);
16
17 // Check first PDR
18 pdr::Entry e = pdrRepo.at(1);
19 pldm_state_effecter_pdr* pdr =
20 reinterpret_cast<pldm_state_effecter_pdr*>(e.data());
21
22 ASSERT_EQ(pdr->hdr.record_handle, 1);
23 ASSERT_EQ(pdr->hdr.version, 1);
24 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_EFFECTER_PDR);
25 ASSERT_EQ(pdr->hdr.record_change_num, 0);
26 ASSERT_EQ(pdr->hdr.length, 19);
27
28 ASSERT_EQ(pdr->terminus_handle, 0);
29 ASSERT_EQ(pdr->effecter_id, 1);
30 ASSERT_EQ(pdr->entity_type, 33);
31 ASSERT_EQ(pdr->entity_instance, 0);
32 ASSERT_EQ(pdr->container_id, 0);
33 ASSERT_EQ(pdr->effecter_semantic_id, 0);
34 ASSERT_EQ(pdr->effecter_init, PLDM_NO_INIT);
35 ASSERT_EQ(pdr->has_description_pdr, false);
36 ASSERT_EQ(pdr->composite_effecter_count, 1);
37 state_effecter_possible_states* states =
38 reinterpret_cast<state_effecter_possible_states*>(pdr->possible_states);
39 ASSERT_EQ(states->state_set_id, 196);
40 ASSERT_EQ(states->possible_states_size, 1);
41 bitfield8_t bf1{};
42 bf1.byte = 2;
43 ASSERT_EQ(states->states[0].byte, bf1.byte);
44
45 // Check second PDR
46 e = pdrRepo.at(2);
47 pdr = reinterpret_cast<pldm_state_effecter_pdr*>(e.data());
48
49 ASSERT_EQ(pdr->hdr.record_handle, 2);
50 ASSERT_EQ(pdr->hdr.version, 1);
51 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_EFFECTER_PDR);
52 ASSERT_EQ(pdr->hdr.record_change_num, 0);
53 ASSERT_EQ(pdr->hdr.length, 24);
54
55 ASSERT_EQ(pdr->terminus_handle, 0);
56 ASSERT_EQ(pdr->effecter_id, 2);
57 ASSERT_EQ(pdr->entity_type, 100);
58 ASSERT_EQ(pdr->entity_instance, 0);
59 ASSERT_EQ(pdr->container_id, 0);
60 ASSERT_EQ(pdr->effecter_semantic_id, 0);
61 ASSERT_EQ(pdr->effecter_init, PLDM_NO_INIT);
62 ASSERT_EQ(pdr->has_description_pdr, false);
63 ASSERT_EQ(pdr->composite_effecter_count, 2);
64 states =
65 reinterpret_cast<state_effecter_possible_states*>(pdr->possible_states);
66 ASSERT_EQ(states->state_set_id, 197);
67 ASSERT_EQ(states->possible_states_size, 1);
68 bf1.byte = 2;
69 ASSERT_EQ(states->states[0].byte, bf1.byte);
70 states = reinterpret_cast<state_effecter_possible_states*>(
71 pdr->possible_states + sizeof(state_effecter_possible_states));
72 ASSERT_EQ(states->state_set_id, 198);
73 ASSERT_EQ(states->possible_states_size, 2);
74 bitfield8_t bf2[2];
75 bf2[0].byte = 38;
76 bf2[1].byte = 128;
77 ASSERT_EQ(states->states[0].byte, bf2[0].byte);
78 ASSERT_EQ(states->states[1].byte, bf2[1].byte);
79}
80
81TEST(GeneratePDR, testNoJson)
82{
83 using namespace pdr;
84 Repo& pdrRepo = get("./pdr_jsons/not_there");
85
86 ASSERT_EQ(pdrRepo.numEntries(), 2);
87}
88
89TEST(GeneratePDR, testMalformedJson)
90{
91 using namespace pdr;
92 Repo& pdrRepo = get("./pdr_jsons/good");
93 ASSERT_EQ(pdrRepo.numEntries(), 2);
94 pdrRepo.makeEmpty();
95 ASSERT_THROW(get("./pdr_jsons/malformed"), std::exception);
96}