Lines Matching +full:src +full:-
8 * http://www.apache.org/licenses/LICENSE-2.0
16 #include "extensions/openpower-pels/src.hpp"
41 "SRC":
114 SRC src{stream}; in TEST_F() local
116 EXPECT_TRUE(src.valid()); in TEST_F()
118 EXPECT_EQ(src.header().id, 0x5053); in TEST_F()
119 EXPECT_EQ(src.header().size, 0x50); in TEST_F()
120 EXPECT_EQ(src.header().version, 0x01); in TEST_F()
121 EXPECT_EQ(src.header().subType, 0x01); in TEST_F()
122 EXPECT_EQ(src.header().componentID, 0x0202); in TEST_F()
124 EXPECT_EQ(src.version(), 0x02); in TEST_F()
125 EXPECT_EQ(src.flags(), 0x00); in TEST_F()
126 EXPECT_EQ(src.hexWordCount(), 9); in TEST_F()
127 EXPECT_EQ(src.size(), 0x48); in TEST_F()
129 const auto& hexwords = src.hexwordData(); in TEST_F()
139 EXPECT_EQ(src.asciiString(), "BD8D5678 "); in TEST_F()
140 EXPECT_FALSE(src.callouts()); in TEST_F()
146 src.flatten(newStream); in TEST_F()
155 SRC src{stream}; in TEST_F() local
157 EXPECT_TRUE(src.valid()); in TEST_F()
158 EXPECT_EQ(src.flags(), 0x01); // Additional sections within the SRC. in TEST_F()
160 // Spot check the SRC fields, but they're the same as above in TEST_F()
161 EXPECT_EQ(src.asciiString(), "BD8D5678 "); in TEST_F()
164 const auto& calloutsSection = src.callouts(); in TEST_F()
166 const auto& callouts = calloutsSection->callouts(); in TEST_F()
170 EXPECT_TRUE(callouts.front()->fruIdentity()); in TEST_F()
171 EXPECT_FALSE(callouts.front()->pceIdentity()); in TEST_F()
172 EXPECT_FALSE(callouts.front()->mru()); in TEST_F()
174 EXPECT_TRUE(callouts.back()->fruIdentity()); in TEST_F()
175 EXPECT_TRUE(callouts.back()->pceIdentity()); in TEST_F()
176 EXPECT_TRUE(callouts.back()->mru()); in TEST_F()
182 src.flatten(newStream); in TEST_F()
186 // Create an SRC from the message registry
190 entry.src.type = 0xBD; in TEST_F()
191 entry.src.reasonCode = 0xABCD; in TEST_F()
193 entry.src.hexwordADFields = { in TEST_F()
200 // Values for the SRC words pointed to above in TEST_F()
211 SRC src{entry, ad, dataIface}; in TEST_F() local
213 EXPECT_TRUE(src.valid()); in TEST_F()
214 EXPECT_FALSE(src.isPowerFaultEvent()); in TEST_F()
215 EXPECT_EQ(src.size(), baseSRCSize); in TEST_F()
217 const auto& hexwords = src.hexwordData(); in TEST_F()
219 // The spec always refers to SRC words 2 - 9, and as the hexwordData() in TEST_F()
222 EXPECT_EQ(hexwords[2 - 2] & 0xF0000000, 0); // Partition dump status in TEST_F()
223 EXPECT_EQ(hexwords[2 - 2] & 0x00F00000, 0); // Partition boot type in TEST_F()
224 EXPECT_EQ(hexwords[2 - 2] & 0x000000FF, 0x55); // SRC format in TEST_F()
225 EXPECT_EQ(hexwords[3 - 2] & 0x000000FF, 0x10); // BMC position in TEST_F()
226 EXPECT_EQ(hexwords[3 - 2] & 0xFFFF0000, 0xABCD0000); // Motherboard CCIN in TEST_F()
232 EXPECT_EQ(hexwords[5 - 2], 0); in TEST_F()
235 EXPECT_EQ(hexwords[6 - 2], 0x12345678); // TEST1 in TEST_F()
236 EXPECT_EQ(hexwords[7 - 2], 12345678); // TEST2 in TEST_F()
237 EXPECT_EQ(hexwords[8 - 2], 0xdef); // TEST3 in TEST_F()
238 EXPECT_EQ(hexwords[9 - 2], 0); // TEST4, but can't convert a 'Z' in TEST_F()
240 EXPECT_EQ(src.asciiString(), "BD42ABCD "); in TEST_F()
243 EXPECT_FALSE(src.callouts()); in TEST_F()
248 src.flatten(stream); in TEST_F()
251 SRC newSRC{stream}; in TEST_F()
254 EXPECT_EQ(newSRC.asciiString(), src.asciiString()); in TEST_F()
262 entry.src.type = 0xBD; in TEST_F()
263 entry.src.reasonCode = 0xABCD; in TEST_F()
279 SRC src{entry, ad, dataIface}; in TEST_F() local
280 EXPECT_TRUE(src.valid()); in TEST_F()
281 const auto& hexwords = src.hexwordData(); in TEST_F()
282 EXPECT_EQ(hexwords[3 - 2] & 0xFFFF0000, 0x00000000); in TEST_F()
286 SRC src{entry, ad, dataIface}; in TEST_F() local
287 EXPECT_TRUE(src.valid()); in TEST_F()
288 const auto& hexwords = src.hexwordData(); in TEST_F()
289 EXPECT_EQ(hexwords[3 - 2] & 0xFFFF0000, 0x00000000); in TEST_F()
293 SRC src{entry, ad, dataIface}; in TEST_F() local
294 EXPECT_TRUE(src.valid()); in TEST_F()
295 const auto& hexwords = src.hexwordData(); in TEST_F()
296 EXPECT_EQ(hexwords[3 - 2] & 0xFFFF0000, 0x00000000); in TEST_F()
315 SRC src{*entry, ad, dataIface}; in TEST_F() local
316 EXPECT_TRUE(src.valid()); in TEST_F()
318 auto errorDetails = src.getErrorDetails(registry, DetailLevel::message); in TEST_F()
329 entry.src.type = 0xBD; in TEST_F()
330 entry.src.reasonCode = 0xABCD; in TEST_F()
339 .WillOnce(Return("UTMS-P1")); in TEST_F()
346 SRC src{entry, ad, dataIface}; in TEST_F() local
347 EXPECT_TRUE(src.valid()); in TEST_F()
349 ASSERT_TRUE(src.callouts()); in TEST_F()
351 EXPECT_EQ(src.callouts()->callouts().size(), 1); in TEST_F()
353 auto& callout = src.callouts()->callouts().front(); in TEST_F()
355 EXPECT_EQ(callout->locationCode(), "UTMS-P1"); in TEST_F()
356 EXPECT_EQ(callout->priority(), 'H'); in TEST_F()
358 auto& fru = callout->fruIdentity(); in TEST_F()
360 EXPECT_EQ(fru->getPN().value(), "1234567"); in TEST_F()
361 EXPECT_EQ(fru->getCCIN().value(), "CCCC"); in TEST_F()
362 EXPECT_EQ(fru->getSN().value(), "123456789ABC"); in TEST_F()
367 src.flatten(stream); in TEST_F()
370 SRC newSRC{stream}; in TEST_F()
372 ASSERT_TRUE(src.callouts()); in TEST_F()
373 EXPECT_EQ(src.callouts()->callouts().size(), 1); in TEST_F()
381 entry.src.type = 0xBD; in TEST_F()
382 entry.src.reasonCode = 0xABCD; in TEST_F()
401 SRC src{entry, ad, dataIface}; in TEST_F() local
402 EXPECT_TRUE(src.valid()); in TEST_F()
404 ASSERT_FALSE(src.callouts()); in TEST_F()
409 src.flatten(stream); in TEST_F()
412 SRC newSRC{stream}; in TEST_F()
414 ASSERT_FALSE(src.callouts()); in TEST_F()
422 entry.src.type = 0xBD; in TEST_F()
423 entry.src.reasonCode = 0xABCD; in TEST_F()
433 .WillOnce(Return("UTMS-P10")); in TEST_F()
441 SRC src{entry, ad, dataIface}; in TEST_F() local
442 EXPECT_TRUE(src.valid()); in TEST_F()
443 ASSERT_TRUE(src.callouts()); in TEST_F()
444 EXPECT_EQ(src.callouts()->callouts().size(), 1); in TEST_F()
446 auto& callout = src.callouts()->callouts().front(); in TEST_F()
447 EXPECT_EQ(callout->locationCode(), "UTMS-P10"); in TEST_F()
448 EXPECT_EQ(callout->priority(), 'H'); in TEST_F()
450 auto& fru = callout->fruIdentity(); in TEST_F()
452 EXPECT_EQ(fru->getPN(), ""); in TEST_F()
453 EXPECT_EQ(fru->getCCIN(), ""); in TEST_F()
454 EXPECT_EQ(fru->getSN(), ""); in TEST_F()
455 EXPECT_FALSE(fru->getMaintProc()); in TEST_F()
460 src.flatten(stream); in TEST_F()
463 SRC newSRC{stream}; in TEST_F()
465 ASSERT_TRUE(src.callouts()); in TEST_F()
466 EXPECT_EQ(src.callouts()->callouts().size(), 1); in TEST_F()
472 entry.src.type = 0xBD; in TEST_F()
473 entry.src.reasonCode = 0xABCD; in TEST_F()
474 entry.src.deconfigFlag = true; in TEST_F()
475 entry.src.checkstopFlag = true; in TEST_F()
500 "LocCode": "P0-C8", in TEST_F()
515 "LocCode": "P0-C8" in TEST_F()
519 "LocCode": "P0-C9" in TEST_F()
533 SRC src{entry, ad, dataIface}; in TEST_F() local
536 src.getErrorStatusFlag(SRC::ErrorStatusFlags::deconfigured)); in TEST_F()
537 EXPECT_TRUE(src.getErrorStatusFlag(SRC::ErrorStatusFlags::hwCheckstop)); in TEST_F()
539 const auto& hexwords = src.hexwordData(); in TEST_F()
540 auto mask = static_cast<uint32_t>(SRC::ErrorStatusFlags::deconfigured) | in TEST_F()
541 static_cast<uint32_t>(SRC::ErrorStatusFlags::hwCheckstop); in TEST_F()
542 EXPECT_EQ(hexwords[5 - 2] & mask, mask); in TEST_F()
544 auto& callouts = src.callouts()->callouts(); in TEST_F()
547 EXPECT_EQ(callouts[0]->locationCodeSize(), 0); in TEST_F()
548 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
550 EXPECT_EQ(callouts[1]->locationCodeSize(), 0); in TEST_F()
551 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
553 auto& fru1 = callouts[0]->fruIdentity(); in TEST_F()
554 EXPECT_EQ(fru1->getPN().value(), "SVCDOCS"); in TEST_F()
555 EXPECT_EQ(fru1->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
556 EXPECT_FALSE(fru1->getMaintProc()); in TEST_F()
557 EXPECT_FALSE(fru1->getSN()); in TEST_F()
558 EXPECT_FALSE(fru1->getCCIN()); in TEST_F()
560 auto& fru2 = callouts[1]->fruIdentity(); in TEST_F()
561 EXPECT_EQ(fru2->getMaintProc().value(), "BMC0001"); in TEST_F()
562 EXPECT_EQ(fru2->failingComponentType(), in TEST_F()
563 src::FRUIdentity::maintenanceProc); in TEST_F()
564 EXPECT_FALSE(fru2->getPN()); in TEST_F()
565 EXPECT_FALSE(fru2->getSN()); in TEST_F()
566 EXPECT_FALSE(fru2->getCCIN()); in TEST_F()
576 EXPECT_CALL(dataIface, expandLocationCode).WillOnce(Return("P0-C8")); in TEST_F()
579 SRC src{entry, ad, dataIface}; in TEST_F() local
581 auto& callouts = src.callouts()->callouts(); in TEST_F()
584 EXPECT_EQ(callouts[0]->locationCode(), "P0-C8"); in TEST_F()
585 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
587 EXPECT_EQ(callouts[1]->locationCodeSize(), 0); in TEST_F()
588 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
590 auto& fru1 = callouts[0]->fruIdentity(); in TEST_F()
591 EXPECT_EQ(fru1->getPN().value(), "SVCDOCS"); in TEST_F()
592 EXPECT_EQ(fru1->failingComponentType(), in TEST_F()
593 src::FRUIdentity::symbolicFRUTrustedLocCode); in TEST_F()
594 EXPECT_FALSE(fru1->getMaintProc()); in TEST_F()
595 EXPECT_FALSE(fru1->getSN()); in TEST_F()
596 EXPECT_FALSE(fru1->getCCIN()); in TEST_F()
600 auto& fru2 = callouts[1]->fruIdentity(); in TEST_F()
601 EXPECT_EQ(fru2->getPN().value(), "SVCDOCS"); in TEST_F()
602 EXPECT_EQ(fru2->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
603 EXPECT_FALSE(fru2->getMaintProc()); in TEST_F()
604 EXPECT_FALSE(fru2->getSN()); in TEST_F()
605 EXPECT_FALSE(fru2->getCCIN()); in TEST_F()
616 EXPECT_CALL(dataIface, expandLocationCode("P0-C8", 0)) in TEST_F()
617 .WillOnce(Return("UXXX-P0-C8")); in TEST_F()
619 EXPECT_CALL(dataIface, expandLocationCode("P0-C9", 0)) in TEST_F()
620 .WillOnce(Return("UXXX-P0-C9")); in TEST_F()
622 EXPECT_CALL(dataIface, getInventoryFromLocCode("P0-C8", 0, false)) in TEST_F()
626 EXPECT_CALL(dataIface, getInventoryFromLocCode("P0-C9", 0, false)) in TEST_F()
650 SRC src{entry, ad, dataIface}; in TEST_F() local
652 auto& callouts = src.callouts()->callouts(); in TEST_F()
655 EXPECT_EQ(callouts[0]->locationCode(), "UXXX-P0-C8"); in TEST_F()
656 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
658 auto& fru1 = callouts[0]->fruIdentity(); in TEST_F()
659 EXPECT_EQ(fru1->getPN().value(), "1234567"); in TEST_F()
660 EXPECT_EQ(fru1->getCCIN().value(), "CCCC"); in TEST_F()
661 EXPECT_EQ(fru1->getSN().value(), "123456789ABC"); in TEST_F()
663 EXPECT_EQ(callouts[1]->locationCode(), "UXXX-P0-C9"); in TEST_F()
664 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
666 auto& fru2 = callouts[1]->fruIdentity(); in TEST_F()
667 EXPECT_EQ(fru2->getPN().value(), "2345678"); in TEST_F()
668 EXPECT_EQ(fru2->getCCIN().value(), "DDDD"); in TEST_F()
669 EXPECT_EQ(fru2->getSN().value(), "23456789ABCD"); in TEST_F()
679 entry.src.type = 0xBD; in TEST_F()
680 entry.src.reasonCode = 0xABCD; in TEST_F()
694 "LocCode": "P0-C8", in TEST_F()
714 .WillOnce(Return("Ufcs-P10")); in TEST_F()
716 EXPECT_CALL(dataIface, expandLocationCode("P0-C8", 0)) in TEST_F()
717 .WillOnce(Return("Ufcs-P0-C8")); in TEST_F()
719 SRC src{entry, ad, dataIface}; in TEST_F() local
721 auto& callouts = src.callouts()->callouts(); in TEST_F()
726 EXPECT_EQ(callouts[0]->locationCode(), "Ufcs-P10"); in TEST_F()
727 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
728 auto& fru1 = callouts[0]->fruIdentity(); in TEST_F()
729 EXPECT_EQ(fru1->getPN().value(), "SVCDOCS"); in TEST_F()
730 EXPECT_EQ(fru1->failingComponentType(), in TEST_F()
731 src::FRUIdentity::symbolicFRUTrustedLocCode); in TEST_F()
735 EXPECT_EQ(callouts[1]->locationCode(), "Ufcs-P0-C8"); in TEST_F()
736 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
737 auto& fru2 = callouts[1]->fruIdentity(); in TEST_F()
738 EXPECT_EQ(fru2->getPN().value(), "PWRSPLY"); in TEST_F()
739 EXPECT_EQ(fru2->failingComponentType(), in TEST_F()
740 src::FRUIdentity::symbolicFRUTrustedLocCode); in TEST_F()
765 SRC src{entry, ad, dataIface}; in TEST_F() local
767 auto& callouts = src.callouts()->callouts(); in TEST_F()
770 EXPECT_EQ(callouts[0]->locationCode(), ""); in TEST_F()
771 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
772 auto& fru1 = callouts[0]->fruIdentity(); in TEST_F()
773 EXPECT_EQ(fru1->getPN().value(), "SVCDOCS"); in TEST_F()
774 EXPECT_EQ(fru1->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
781 entry.src.type = 0xBD; in TEST_F()
782 entry.src.reasonCode = 0xABCD; in TEST_F()
783 entry.src.deconfigFlag = true; in TEST_F()
784 entry.src.checkstopFlag = true; in TEST_F()
793 "LocCode": "P0-C8" in TEST_F()
797 "LocCode": "P0-C9" in TEST_F()
812 EXPECT_CALL(dataIface, expandLocationCode("P0-C8", 0)) in TEST_F()
815 EXPECT_CALL(dataIface, expandLocationCode("P0-C9", 0)) in TEST_F()
822 SRC src{entry, ad, dataIface}; in TEST_F() local
824 auto& callouts = src.callouts()->callouts(); in TEST_F()
828 EXPECT_EQ(callouts[0]->locationCode(), "P0-C8"); in TEST_F()
829 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
831 auto& fru1 = callouts[0]->fruIdentity(); in TEST_F()
832 EXPECT_EQ(fru1->getPN().value(), ""); in TEST_F()
833 EXPECT_EQ(fru1->getCCIN().value(), ""); in TEST_F()
834 EXPECT_EQ(fru1->getSN().value(), ""); in TEST_F()
836 EXPECT_EQ(callouts[1]->locationCode(), "P0-C9"); in TEST_F()
837 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
839 auto& fru2 = callouts[1]->fruIdentity(); in TEST_F()
840 EXPECT_EQ(fru2->getPN().value(), ""); in TEST_F()
841 EXPECT_EQ(fru2->getCCIN().value(), ""); in TEST_F()
842 EXPECT_EQ(fru2->getSN().value(), ""); in TEST_F()
849 entry.src.type = 0xBD; in TEST_F()
850 entry.src.reasonCode = 0xABCD; in TEST_F()
859 "LocCode": "P0-C8", in TEST_F()
875 EXPECT_CALL(dataIface, expandLocationCode("P0-C8", 0)) in TEST_F()
878 SRC src{entry, ad, dataIface}; in TEST_F() local
880 auto& callouts = src.callouts()->callouts(); in TEST_F()
883 EXPECT_EQ(callouts[0]->locationCode(), "P0-C8"); in TEST_F()
884 EXPECT_EQ(callouts[0]->priority(), 'M'); in TEST_F()
885 auto& fru = callouts[0]->fruIdentity(); in TEST_F()
886 EXPECT_EQ(fru->getPN().value(), "PWRSPLY"); in TEST_F()
887 EXPECT_EQ(fru->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
894 entry.src.type = 0xBD; in TEST_F()
895 entry.src.reasonCode = 0xABCD; in TEST_F()
909 "LocationCode": "P1-C40", in TEST_F()
919 "LocationCode": "P1-C15", in TEST_F()
941 EXPECT_CALL(dataIface, getInventoryFromLocCode("P1-C40", 0, false)) in TEST_F()
951 EXPECT_CALL(dataIface, getInventoryFromLocCode("P1-C15", 0, false)) in TEST_F()
956 EXPECT_CALL(dataIface, expandLocationCode("P1-C40", 0)) in TEST_F()
958 .WillRepeatedly(Return("Ufcs-P1-C40")); in TEST_F()
962 .WillRepeatedly(Return("Ufcs-P1")); in TEST_F()
964 EXPECT_CALL(dataIface, expandLocationCode("P1-C15", 0)) in TEST_F()
966 .WillRepeatedly(Return("Ufcs-P1-C15")); in TEST_F()
997 SRC src{entry, ad, dataIface}; in TEST_F() local
999 ASSERT_TRUE(src.callouts()); in TEST_F()
1000 auto& callouts = src.callouts()->callouts(); in TEST_F()
1005 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
1006 EXPECT_EQ(callouts[0]->locationCode(), "Ufcs-P1-C40"); in TEST_F()
1008 auto& fru = callouts[0]->fruIdentity(); in TEST_F()
1009 EXPECT_EQ(fru->getPN().value(), "1234567"); in TEST_F()
1010 EXPECT_EQ(fru->getCCIN().value(), "CCCC"); in TEST_F()
1011 EXPECT_EQ(fru->getSN().value(), "123456789ABC"); in TEST_F()
1014 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
1015 EXPECT_EQ(callouts[1]->locationCode(), "Ufcs-P1"); in TEST_F()
1017 auto& fru = callouts[1]->fruIdentity(); in TEST_F()
1018 EXPECT_EQ(fru->getPN().value(), "7654321"); in TEST_F()
1019 EXPECT_EQ(fru->getCCIN().value(), "MMMM"); in TEST_F()
1020 EXPECT_EQ(fru->getSN().value(), "CBA987654321"); in TEST_F()
1023 EXPECT_EQ(callouts[2]->priority(), 'L'); in TEST_F()
1024 EXPECT_EQ(callouts[2]->locationCode(), "Ufcs-P1-C15"); in TEST_F()
1026 auto& fru = callouts[2]->fruIdentity(); in TEST_F()
1027 EXPECT_EQ(fru->getPN().value(), "7123456"); in TEST_F()
1028 EXPECT_EQ(fru->getCCIN().value(), "BBBB"); in TEST_F()
1029 EXPECT_EQ(fru->getSN().value(), "C123456789AB"); in TEST_F()
1038 … "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a340.i2c-bus/i2c-14/14-0072"}}; in TEST_F()
1052 // Also based on I2C bus and address, but with bus = /dev/i2c-14 in TEST_F()
1064 … "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a340.i2c-bus/i2c-24/24-0012"}}; in TEST_F()
1067 SRC src{entry, ad, dataIface}; in TEST_F() local
1069 EXPECT_FALSE(src.callouts()); in TEST_F()
1070 ASSERT_EQ(src.getDebugData().size(), 1); in TEST_F()
1071 EXPECT_EQ(src.getDebugData()[0], in TEST_F()
1082 SRC src{entry, ad, dataIface}; in TEST_F() local
1084 EXPECT_FALSE(src.callouts()); in TEST_F()
1085 ASSERT_EQ(src.getDebugData().size(), 1); in TEST_F()
1086 EXPECT_EQ(src.getDebugData()[0], in TEST_F()
1095 entry.src.type = 0xBD; in TEST_F()
1096 entry.src.reasonCode = 0xABCD; in TEST_F()
1110 "LocationCode": "P1-C40", in TEST_F()
1138 EXPECT_CALL(dataIface, expandLocationCode("P1-C40", 0)) in TEST_F()
1144 EXPECT_CALL(dataIface, getInventoryFromLocCode("P1-C40", 0, false)) in TEST_F()
1151 "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a340.i2c-bus/i2c-14/14-0072"}}; in TEST_F()
1154 SRC src{entry, ad, dataIface}; in TEST_F() local
1156 ASSERT_TRUE(src.callouts()); in TEST_F()
1157 auto& callouts = src.callouts()->callouts(); in TEST_F()
1163 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
1164 EXPECT_EQ(callouts[0]->locationCode(), "P1-C40"); in TEST_F()
1166 auto& fru = callouts[0]->fruIdentity(); in TEST_F()
1167 EXPECT_EQ(fru->getPN().value(), ""); in TEST_F()
1168 EXPECT_EQ(fru->getCCIN().value(), ""); in TEST_F()
1169 EXPECT_EQ(fru->getSN().value(), ""); in TEST_F()
1172 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
1173 EXPECT_EQ(callouts[1]->locationCode(), "P1"); in TEST_F()
1175 auto& fru = callouts[1]->fruIdentity(); in TEST_F()
1176 EXPECT_EQ(fru->getPN().value(), ""); in TEST_F()
1177 EXPECT_EQ(fru->getCCIN().value(), ""); in TEST_F()
1178 EXPECT_EQ(fru->getSN().value(), ""); in TEST_F()
1190 "LocationCode": "P0-C1", in TEST_F()
1217 "LocationCode": "P1-C23" in TEST_F()
1222 "LocationCode": "P1-C24" in TEST_F()
1240 entry.src.type = 0xBD; in TEST_F()
1241 entry.src.reasonCode = 0xABCD; in TEST_F()
1249 EXPECT_CALL(dataIface, expandLocationCode("P0-C1", 0)) in TEST_F()
1251 .WillOnce(Return("UXXX-P0-C1")); in TEST_F()
1252 EXPECT_CALL(dataIface, getInventoryFromLocCode("P0-C1", 0, false)) in TEST_F()
1268 .WillOnce(Return("UYYY-P5")); in TEST_F()
1279 EXPECT_CALL(dataIface, expandLocationCode("P1-C23", 0)) in TEST_F()
1281 .WillOnce(Return("UXXX-P1-C23")); in TEST_F()
1285 EXPECT_CALL(dataIface, expandLocationCode("P1-C24", 0)) in TEST_F()
1287 .WillOnce(Return("UXXX-P1-C24")); in TEST_F()
1290 SRC src{entry, ad, jsonCallouts, dataIface}; in TEST_F() local
1291 ASSERT_TRUE(src.callouts()); in TEST_F()
1294 EXPECT_TRUE(src.hexwordData()[3] & 0x03000000); in TEST_F()
1296 const auto& callouts = src.callouts()->callouts(); in TEST_F()
1301 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
1302 EXPECT_EQ(callouts[0]->locationCode(), "UXXX-P0-C1"); in TEST_F()
1304 auto& fru = callouts[0]->fruIdentity(); in TEST_F()
1305 EXPECT_EQ(fru->getPN().value(), "1234567"); in TEST_F()
1306 EXPECT_EQ(fru->getCCIN().value(), "CCCC"); in TEST_F()
1307 EXPECT_EQ(fru->getSN().value(), "123456789ABC"); in TEST_F()
1308 EXPECT_EQ(fru->failingComponentType(), src::FRUIdentity::hardwareFRU); in TEST_F()
1310 auto& mruCallouts = callouts[0]->mru(); in TEST_F()
1312 auto& mrus = mruCallouts->mrus(); in TEST_F()
1322 EXPECT_EQ(callouts[1]->priority(), 'M'); in TEST_F()
1323 EXPECT_EQ(callouts[1]->locationCode(), "UYYY-P5"); in TEST_F()
1325 auto& fru = callouts[1]->fruIdentity(); in TEST_F()
1326 EXPECT_EQ(fru->getPN().value(), "2345678"); in TEST_F()
1327 EXPECT_EQ(fru->getCCIN().value(), "DDDD"); in TEST_F()
1328 EXPECT_EQ(fru->getSN().value(), "23456789ABCD"); in TEST_F()
1329 EXPECT_EQ(fru->failingComponentType(), src::FRUIdentity::hardwareFRU); in TEST_F()
1334 EXPECT_EQ(callouts[2]->priority(), 'A'); in TEST_F()
1335 EXPECT_EQ(callouts[2]->locationCode(), ""); in TEST_F()
1337 auto& fru = callouts[2]->fruIdentity(); in TEST_F()
1338 EXPECT_EQ(fru->getMaintProc().value(), "PROCEDU"); in TEST_F()
1339 EXPECT_EQ(fru->failingComponentType(), in TEST_F()
1340 src::FRUIdentity::maintenanceProc); in TEST_F()
1345 EXPECT_EQ(callouts[3]->priority(), 'B'); in TEST_F()
1346 EXPECT_EQ(callouts[3]->locationCode(), "UXXX-P1-C23"); in TEST_F()
1348 auto& fru = callouts[3]->fruIdentity(); in TEST_F()
1349 EXPECT_EQ(fru->getPN().value(), "TRUSTED"); in TEST_F()
1350 EXPECT_EQ(fru->failingComponentType(), in TEST_F()
1351 src::FRUIdentity::symbolicFRUTrustedLocCode); in TEST_F()
1356 EXPECT_EQ(callouts[4]->priority(), 'C'); in TEST_F()
1357 EXPECT_EQ(callouts[4]->locationCode(), "UXXX-P1-C24"); in TEST_F()
1359 auto& fru = callouts[4]->fruIdentity(); in TEST_F()
1360 EXPECT_EQ(fru->getPN().value(), "FRUTST1"); in TEST_F()
1361 EXPECT_EQ(fru->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
1366 EXPECT_EQ(callouts[5]->priority(), 'L'); in TEST_F()
1367 EXPECT_EQ(callouts[5]->locationCode(), ""); in TEST_F()
1369 auto& fru = callouts[5]->fruIdentity(); in TEST_F()
1370 EXPECT_EQ(fru->getPN().value(), "FRUTST2"); in TEST_F()
1371 EXPECT_EQ(fru->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
1376 EXPECT_EQ(callouts[6]->priority(), 'L'); in TEST_F()
1377 EXPECT_EQ(callouts[6]->locationCode(), ""); in TEST_F()
1379 auto& fru = callouts[6]->fruIdentity(); in TEST_F()
1380 EXPECT_EQ(fru->getMaintProc().value(), "BMC0004"); in TEST_F()
1381 EXPECT_EQ(fru->failingComponentType(), in TEST_F()
1382 src::FRUIdentity::maintenanceProc); in TEST_F()
1387 EXPECT_EQ(callouts[7]->priority(), 'L'); in TEST_F()
1388 EXPECT_EQ(callouts[7]->locationCode(), ""); in TEST_F()
1390 auto& fru = callouts[7]->fruIdentity(); in TEST_F()
1391 EXPECT_EQ(fru->getPN().value(), "AMBTEMP"); in TEST_F()
1392 EXPECT_EQ(fru->failingComponentType(), src::FRUIdentity::symbolicFRU); in TEST_F()
1396 const auto& data = src.getDebugData(); in TEST_F()
1408 "LocationCode": "P0-C1", in TEST_F()
1412 "LocationCode": "P0-C2", in TEST_F()
1416 "LocationCode": "P0-C3" in TEST_F()
1419 "LocationCode": "P0-C4", in TEST_F()
1426 entry.src.type = 0xBD; in TEST_F()
1427 entry.src.reasonCode = 0xABCD; in TEST_F()
1437 EXPECT_CALL(dataIface, expandLocationCode("P0-C1", 0)) in TEST_F()
1440 EXPECT_CALL(dataIface, getInventoryFromLocCode("P0-C1", 0, false)) in TEST_F()
1457 EXPECT_CALL(dataIface, expandLocationCode("P0-C2", 0)) in TEST_F()
1459 .WillOnce(Return("UXXX-P0-C2")); in TEST_F()
1461 EXPECT_CALL(dataIface, getInventoryFromLocCode("P0-C2", 0, false)) in TEST_F()
1466 SRC src{entry, ad, jsonCallouts, dataIface}; in TEST_F() local
1468 ASSERT_TRUE(src.callouts()); in TEST_F()
1470 const auto& callouts = src.callouts()->callouts(); in TEST_F()
1475 EXPECT_EQ(callouts[0]->priority(), 'H'); in TEST_F()
1476 EXPECT_EQ(callouts[0]->locationCode(), "P0-C1"); in TEST_F()
1478 auto& fru0 = callouts[0]->fruIdentity(); in TEST_F()
1479 EXPECT_EQ(fru0->getPN().value(), "1234567"); in TEST_F()
1480 EXPECT_EQ(fru0->getCCIN().value(), "CCCC"); in TEST_F()
1481 EXPECT_EQ(fru0->getSN().value(), "123456789ABC"); in TEST_F()
1482 EXPECT_EQ(fru0->failingComponentType(), src::FRUIdentity::hardwareFRU); in TEST_F()
1485 EXPECT_EQ(callouts[1]->priority(), 'H'); in TEST_F()
1486 EXPECT_EQ(callouts[1]->locationCode(), "UXXX-P0-C2"); in TEST_F()
1488 auto& fru1 = callouts[1]->fruIdentity(); in TEST_F()
1489 EXPECT_EQ(fru1->getPN().value(), ""); in TEST_F()
1490 EXPECT_EQ(fru1->getCCIN().value(), ""); in TEST_F()
1491 EXPECT_EQ(fru1->getSN().value(), ""); in TEST_F()
1492 EXPECT_EQ(fru1->failingComponentType(), src::FRUIdentity::hardwareFRU); in TEST_F()
1494 const auto& data = src.getDebugData(); in TEST_F()
1496 EXPECT_STREQ(data[0].c_str(), "Unable to expand location code P0-C1: Fail"); in TEST_F()
1499 "Unable to get inventory path from location code: P0-C2: Fail"); in TEST_F()
1513 entry.src.type = 0xBD; in TEST_F()
1514 entry.src.reasonCode = 0xABCD; in TEST_F()
1523 .WillOnce(Return("UTMS-P1")); in TEST_F()
1530 SRC src{entry, ad, dataIface}; in TEST_F() local
1531 EXPECT_TRUE(src.valid()); in TEST_F()
1533 ASSERT_TRUE(src.callouts()); in TEST_F()
1535 EXPECT_EQ(src.callouts()->callouts().size(), 1); in TEST_F()
1537 auto& callout = src.callouts()->callouts().front(); in TEST_F()
1539 EXPECT_EQ(callout->locationCode(), "UTMS-P1"); in TEST_F()
1540 EXPECT_EQ(callout->priority(), 'M'); in TEST_F()
1543 // Test SRC with additional data - PEL_SUBSYSTEM
1547 entry.src.type = 0xBD; in TEST_F()
1548 entry.src.reasonCode = 0xABCD; in TEST_F()
1551 // Values for the SRC words pointed to above in TEST_F()
1558 SRC src{entry, ad, dataIface}; in TEST_F() local
1560 EXPECT_TRUE(src.valid()); in TEST_F()
1562 EXPECT_EQ(src.asciiString(), "BD20ABCD "); in TEST_F()
1565 void setAsciiString(std::vector<uint8_t>& src, const std::string& value) in setAsciiString() argument
1567 assert(40 + value.size() <= src.size()); in setAsciiString()
1571 src[40 + i] = value[i]; in setAsciiString()
1578 // A real SRC with CC009184 in TEST_F()
1579 std::vector<uint8_t> src{ in TEST_F() local
1586 EXPECT_EQ(SRC::getProgressCode(src), 0xCC009184); in TEST_F()
1590 // A real SRC with STANDBY in TEST_F()
1591 std::vector<uint8_t> src{ in TEST_F() local
1598 EXPECT_EQ(SRC::getProgressCode(src), 0); in TEST_F()
1602 // A real SRC with CC009184, but 1 byte too short in TEST_F()
1603 std::vector<uint8_t> src{ in TEST_F() local
1609 src.resize(71); in TEST_F()
1610 EXPECT_EQ(SRC::getProgressCode(src), 0); in TEST_F()
1620 std::vector<uint8_t> src(72, 0x0); in TEST_F() local
1624 setAsciiString(src, code); in TEST_F()
1625 EXPECT_EQ(SRC::getProgressCode(src), expected); in TEST_F()
1629 src.clear(); in TEST_F()
1630 EXPECT_EQ(SRC::getProgressCode(src), 0); in TEST_F()
1634 // Test progress is in right SRC hex data field
1638 entry.src.type = 0xBD; in TEST_F()
1639 entry.src.reasonCode = 0xABCD; in TEST_F()
1652 SRC src{entry, ad, dataIface}; in TEST_F() local
1653 EXPECT_TRUE(src.valid()); in TEST_F()
1656 EXPECT_EQ(src.hexwordData()[2], 0xCC009184); in TEST_F()