blob: d9937ca0396bb91422004789ecf7764681c37563 [file] [log] [blame]
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +02001#pragma once
2
Michal Orzelb3e03d22024-06-28 13:55:47 +02003#include "helpers.hpp"
Wludzik, Jozefe2362792020-10-27 17:23:55 +01004#include "report_manager.hpp"
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00005#include "types/report_types.hpp"
Wludzik, Jozefe2362792020-10-27 17:23:55 +01006
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +02007#include <chrono>
8#include <string>
9
10class ReportParams final
11{
12 public:
Szymon Dompke32305f12022-07-05 15:37:21 +020013 ReportParams& reportId(std::string_view val)
Krzysztof Grobelnyb8cc78d2021-11-29 15:54:53 +010014 {
Szymon Dompke32305f12022-07-05 15:37:21 +020015 reportIdProperty = val;
Krzysztof Grobelnyb8cc78d2021-11-29 15:54:53 +010016 return *this;
17 }
18
19 const std::string& reportId() const
20 {
21 return reportIdProperty;
22 }
23
Szymon Dompke32305f12022-07-05 15:37:21 +020024 ReportParams& reportName(std::string_view val)
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +020025 {
Szymon Dompke32305f12022-07-05 15:37:21 +020026 reportNameProperty = val;
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +020027 return *this;
28 }
29
30 const std::string& reportName() const
31 {
32 return reportNameProperty;
33 }
34
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010035 ReportParams& reportingType(const ReportingType val)
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +020036 {
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010037 reportingTypeProperty = val;
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +020038 return *this;
39 }
40
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010041 ReportingType reportingType() const
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +020042 {
43 return reportingTypeProperty;
44 }
45
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010046 ReportParams& reportActions(std::vector<ReportAction> val)
Wludzik, Jozefe2362792020-10-27 17:23:55 +010047 {
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010048 reportActionsProperty = std::move(val);
Wludzik, Jozefe2362792020-10-27 17:23:55 +010049 return *this;
50 }
51
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010052 std::vector<ReportAction> reportActions() const
Wludzik, Jozefe2362792020-10-27 17:23:55 +010053 {
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010054 return reportActionsProperty;
Wludzik, Jozefe2362792020-10-27 17:23:55 +010055 }
56
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000057 ReportParams& interval(Milliseconds val)
Wludzik, Jozefe2362792020-10-27 17:23:55 +010058 {
59 intervalProperty = val;
60 return *this;
61 }
62
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000063 Milliseconds interval() const
Wludzik, Jozefe2362792020-10-27 17:23:55 +010064 {
65 return intervalProperty;
66 }
67
Lukasz Kazmierczak7e098e92021-09-16 15:59:56 +020068 ReportParams& enabled(bool val)
69 {
70 enabledProperty = val;
71 return *this;
72 }
73
74 bool enabled() const
75 {
76 return enabledProperty;
77 }
78
Szymon Dompke3eb56862021-09-20 15:32:04 +020079 ReportParams& appendLimit(uint64_t val)
80 {
81 appendLimitProperty = val;
82 return *this;
83 }
84
85 uint64_t appendLimit() const
86 {
87 return appendLimitProperty;
88 }
89
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010090 ReportParams& reportUpdates(ReportUpdates val)
Szymon Dompke3eb56862021-09-20 15:32:04 +020091 {
92 reportUpdatesProperty = val;
93 return *this;
94 }
95
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010096 ReportUpdates reportUpdates() const
Szymon Dompke3eb56862021-09-20 15:32:04 +020097 {
98 return reportUpdatesProperty;
99 }
100
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000101 ReportParams& metricParameters(std::vector<LabeledMetricParameters> val)
Wludzik, Jozefe2362792020-10-27 17:23:55 +0100102 {
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000103 metricParametersProperty = std::move(val);
Wludzik, Jozefe2362792020-10-27 17:23:55 +0100104 return *this;
105 }
106
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000107 const std::vector<LabeledMetricParameters>& metricParameters() const
Wludzik, Jozefe2362792020-10-27 17:23:55 +0100108 {
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000109 return metricParametersProperty;
Wludzik, Jozefe2362792020-10-27 17:23:55 +0100110 }
111
Krzysztof Grobelny493e62e2022-02-14 10:55:50 +0100112 ReportParams& readings(Readings val)
113 {
114 readingsProperty = std::move(val);
115 return *this;
116 }
117
118 Readings readings() const
119 {
120 return readingsProperty;
121 }
122
Michal Orzelb3e03d22024-06-28 13:55:47 +0200123 friend void PrintTo(const ReportParams& params, std::ostream* os)
124 {
125 *os << "{ Id: \"" << params.reportIdProperty << "\", Name: \""
126 << params.reportNameProperty << "\", ReportingType: \""
127 << utils::enumToString(params.reportingTypeProperty)
128 << "\", ReportActions: ";
129 PrintTo(params.reportActionsProperty, os);
130 *os << ", Interval: " << params.intervalProperty
131 << ", Enabled: " << params.enabledProperty
132 << ", AppendLimit: " << std::to_string(params.appendLimitProperty)
133 << ", ReportUpdates: \""
134 << utils::enumToString(params.reportUpdatesProperty)
135 << "\", MetricParameters: ";
136 PrintTo(params.metricParametersProperty, os);
137 *os << ", Readings: ";
138 PrintTo(params.readingsProperty, os);
139 *os << " }";
140 }
141
Wludzik, Jozefe2362792020-10-27 17:23:55 +0100142 private:
Krzysztof Grobelnyb8cc78d2021-11-29 15:54:53 +0100143 std::string reportIdProperty = "TestId";
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +0200144 std::string reportNameProperty = "TestReport";
Krzysztof Grobelny973b4bb2022-04-25 17:07:27 +0200145 ReportingType reportingTypeProperty = ReportingType::onChange;
Szymon Dompkefdb06a12022-02-11 11:04:44 +0100146 std::vector<ReportAction> reportActionsProperty = {
147 ReportAction::logToMetricReportsCollection};
Krzysztof Grobelny973b4bb2022-04-25 17:07:27 +0200148 Milliseconds intervalProperty{};
Szymon Dompke3eb56862021-09-20 15:32:04 +0200149 uint64_t appendLimitProperty = 123;
Krzysztof Grobelny51497a02021-11-09 14:56:22 +0100150 ReportUpdates reportUpdatesProperty = ReportUpdates::overwrite;
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000151 std::vector<LabeledMetricParameters> metricParametersProperty{
152 {LabeledMetricParameters{
Szymon Dompke94f71c52021-12-10 07:16:33 +0100153 {LabeledSensorInfo{"Service",
154 "/xyz/openbmc_project/sensors/power/p1",
155 "metadata1"}},
Krzysztof Grobelny60fee072022-01-13 16:25:04 +0100156 OperationType::avg,
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000157 CollectionTimeScope::point,
158 CollectionDuration(Milliseconds(0u))},
159 LabeledMetricParameters{
Szymon Dompke94f71c52021-12-10 07:16:33 +0100160 {LabeledSensorInfo{"Service",
161 "/xyz/openbmc_project/sensors/power/p2",
162 "metadata2"}},
Krzysztof Grobelny60fee072022-01-13 16:25:04 +0100163 OperationType::avg,
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +0000164 CollectionTimeScope::point,
165 CollectionDuration(Milliseconds(0u))}}};
Lukasz Kazmierczak7e098e92021-09-16 15:59:56 +0200166 bool enabledProperty = true;
Krzysztof Grobelny493e62e2022-02-14 10:55:50 +0100167 Readings readingsProperty = {};
Krzysztof Grobelnyd2238192020-12-02 09:27:28 +0000168};