blob: 89d23363263b741e926ab08fb6f1b1a052eed37b [file] [log] [blame]
Zane Shelleye90b85d2021-12-17 17:24:49 -06001#include <stdio.h>
2
3#include <analyzer/plugins/plugin.hpp>
4#include <analyzer/util.hpp>
5#include <util/pdbg.hpp>
6#include <util/trace.hpp>
7
8#include "gtest/gtest.h"
9
10//------------------------------------------------------------------------------
11
12using namespace analyzer;
13
14extern bool g_lpcTimeout;
15
16// Test #1: - no LPC timeout
17TEST(LpcTimeout, TestSet1)
18{
19 pdbg_targets_init(nullptr);
20
21 g_lpcTimeout = false; // no timeout
22
23 libhei::Chip chip{util::pdbg::getTrgt("/proc0"), P10_20};
24
25 auto plugin = PluginMap::getSingleton().get(chip.getType(), "lpc_timeout");
26
27 ServiceData sd{libhei::Signature{}, AnalysisType::SYSTEM_CHECKSTOP,
28 libhei::IsolationData{}};
29
30 plugin(0, chip, sd);
31
32 nlohmann::json j{};
33 std::string s{};
34
35 // Callout list
36 j = sd.getCalloutList();
37 s = R"([
38 {
39 "Priority": "H",
40 "Procedure": "next_level_support"
41 }
42])";
43 EXPECT_EQ(s, j.dump(4));
44
45 // Callout FFDC
46 j = sd.getCalloutFFDC();
47 s = R"([
48 {
49 "Callout Type": "Procedure Callout",
50 "Priority": "high",
51 "Procedure": "next_level_support"
52 }
53])";
54 EXPECT_EQ(s, j.dump(4));
55}
56
57// Test #2: - LPC timeout
58TEST(LpcTimeout, TestSet2)
59{
60 pdbg_targets_init(nullptr);
61
62 g_lpcTimeout = true; // force timeout
63
64 libhei::Chip chip{util::pdbg::getTrgt("/proc0"), P10_20};
65
66 auto plugin = PluginMap::getSingleton().get(chip.getType(), "lpc_timeout");
67
68 ServiceData sd{libhei::Signature{}, AnalysisType::SYSTEM_CHECKSTOP,
69 libhei::IsolationData{}};
70
71 plugin(0, chip, sd);
72
73 nlohmann::json j{};
74 std::string s{};
75
76 // Callout list
77 j = sd.getCalloutList();
78 s = R"([
79 {
80 "Deconfigured": false,
81 "Guarded": false,
82 "LocationCode": "/bmc0",
83 "Priority": "M"
84 },
85 {
86 "Deconfigured": false,
87 "Guarded": false,
88 "LocationCode": "P0",
89 "Priority": "M"
90 },
91 {
92 "Deconfigured": false,
93 "Guarded": false,
94 "LocationCode": "/proc0",
95 "Priority": "M"
96 }
97])";
98 EXPECT_EQ(s, j.dump(4));
99
100 // Callout FFDC
101 j = sd.getCalloutFFDC();
102 s = R"([
103 {
104 "Callout Type": "Part Callout",
105 "Part Type": "PNOR",
106 "Priority": "medium"
107 },
108 {
109 "Callout Type": "Clock Callout",
110 "Clock Type": "OSC_REF_CLOCK_0",
111 "Priority": "medium"
112 },
113 {
114 "Callout Type": "Hardware Callout",
115 "Guard": false,
116 "Priority": "medium",
117 "Target": "/proc0"
118 }
119])";
120 EXPECT_EQ(s, j.dump(4));
121}