1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright OpenBMC Authors
#include "utils/dump_utils.hpp"
#include "bmcweb_config.h"
#include "async_resp.hpp"
#include "dbus_utility.hpp"
#include "generated/enums/log_entry.hpp"
#include <boost/beast/http/status.hpp>
#include <boost/url/format.hpp>
#include <sdbusplus/message/native_types.hpp>
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <gtest/gtest.h>
namespace redfish::dump_utils
{
TEST(DumpUtils, GetDumpServiceInfo)
{
auto shareAsyncResp = std::make_shared<bmcweb::AsyncResp>();
dump_utils::getDumpServiceInfo(shareAsyncResp, static_cast<DumpType>(99));
EXPECT_EQ(shareAsyncResp->res.result(),
boost::beast::http::status::internal_server_error);
}
TEST(DumpUtils, DumpTypeToStr)
{
EXPECT_EQ(dumpTypeToStr(DumpType::BMC), "BMC");
EXPECT_EQ(dumpTypeToStr(DumpType::System), "System");
EXPECT_EQ(dumpTypeToStr(DumpType::FaultLog), "FaultLog");
EXPECT_EQ(dumpTypeToStr(static_cast<DumpType>(99)), std::nullopt);
}
TEST(DumpUtils, DumpTypeToObjPath)
{
EXPECT_EQ(dumpTypeToObjPath(DumpType::BMC),
sdbusplus::object_path{"/xyz/openbmc_project/dump/bmc"});
EXPECT_EQ(dumpTypeToObjPath(DumpType::System),
sdbusplus::object_path{"/xyz/openbmc_project/dump/system"});
EXPECT_EQ(dumpTypeToObjPath(DumpType::FaultLog),
sdbusplus::object_path{"/xyz/openbmc_project/dump/faultlog"});
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
EXPECT_EQ(dumpTypeToObjPath(static_cast<DumpType>(99)), std::nullopt);
}
TEST(DumpUtils, GetDumpEntriesUrl)
{
EXPECT_EQ(
getDumpEntriesUrl(DumpType::BMC),
boost::urls::format("/redfish/v1/Managers/{}/LogServices/Dump/Entries",
BMCWEB_REDFISH_MANAGER_URI_NAME));
EXPECT_EQ(getDumpEntriesUrl(DumpType::FaultLog),
boost::urls::format(
"/redfish/v1/Managers/{}/LogServices/FaultLog/Entries",
BMCWEB_REDFISH_MANAGER_URI_NAME));
EXPECT_EQ(
getDumpEntriesUrl(DumpType::System),
boost::urls::format("/redfish/v1/Systems/{}/LogServices/Dump/Entries",
BMCWEB_REDFISH_SYSTEM_URI_NAME));
// NOLINTNEXTLINE(clang-analyzer-optin.core.EnumCastOutOfRange)
EXPECT_EQ(getDumpEntriesUrl(static_cast<DumpType>(99)), std::nullopt);
}
TEST(DumpUtils, MapDbusStatusToDumpProgress)
{
EXPECT_EQ(
mapDbusStatusToDumpProgress(
"xyz.openbmc_project.Common.Progress.OperationStatus.Completed"),
DumpCreationProgress::DUMP_CREATE_SUCCESS);
EXPECT_EQ(mapDbusStatusToDumpProgress(
"xyz.openbmc_project.Common.Progress.OperationStatus.Failed"),
DumpCreationProgress::DUMP_CREATE_FAILED);
EXPECT_EQ(
mapDbusStatusToDumpProgress(
"xyz.openbmc_project.Common.Progress.OperationStatus.Aborted"),
DumpCreationProgress::DUMP_CREATE_FAILED);
EXPECT_EQ(
mapDbusStatusToDumpProgress(
"xyz.openbmc_project.Common.Progress.OperationStatus.InProgress"),
DumpCreationProgress::DUMP_CREATE_INPROGRESS);
EXPECT_EQ(mapDbusStatusToDumpProgress(""),
DumpCreationProgress::DUMP_CREATE_INPROGRESS);
}
TEST(DumpUtils, GetDumpCompletionStatus)
{
dbus::utility::DBusPropertiesMap values;
values.emplace_back(
"Status",
dbus::utility::DbusVariantType{std::string{
"xyz.openbmc_project.Common.Progress.OperationStatus.Completed"}});
EXPECT_EQ(getDumpCompletionStatus(values),
DumpCreationProgress::DUMP_CREATE_SUCCESS);
values[0].second =
"xyz.openbmc_project.Common.Progress.OperationStatus.Failed";
EXPECT_EQ(getDumpCompletionStatus(values),
DumpCreationProgress::DUMP_CREATE_FAILED);
values[0].second =
"xyz.openbmc_project.Common.Progress.OperationStatus.Aborted";
EXPECT_EQ(getDumpCompletionStatus(values),
DumpCreationProgress::DUMP_CREATE_FAILED);
values[0].second =
"xyz.openbmc_project.Common.Progress.OperationStatus.InProgress";
EXPECT_EQ(getDumpCompletionStatus(values),
DumpCreationProgress::DUMP_CREATE_INPROGRESS);
values[0].second = dbus::utility::DbusVariantType{uint64_t{1}};
EXPECT_EQ(getDumpCompletionStatus(values),
DumpCreationProgress::DUMP_CREATE_FAILED);
values.clear();
EXPECT_EQ(getDumpCompletionStatus(values),
DumpCreationProgress::DUMP_CREATE_INPROGRESS);
}
TEST(DumpUtils, MapDbusOriginatorTypeToRedfish)
{
EXPECT_EQ(
mapDbusOriginatorTypeToRedfish(
"xyz.openbmc_project.Common.OriginatedBy.OriginatorTypes.Client"),
log_entry::OriginatorTypes::Client);
EXPECT_EQ(
mapDbusOriginatorTypeToRedfish(
"xyz.openbmc_project.Common.OriginatedBy.OriginatorTypes.Internal"),
log_entry::OriginatorTypes::Internal);
EXPECT_EQ(
mapDbusOriginatorTypeToRedfish(
"xyz.openbmc_project.Common.OriginatedBy.OriginatorTypes.SupportingService"),
log_entry::OriginatorTypes::SupportingService);
EXPECT_EQ(mapDbusOriginatorTypeToRedfish(""),
log_entry::OriginatorTypes::Invalid);
}
} // namespace redfish::dump_utils
|