blob: cc71ce392cd12328dc055b08bfa54d344777f858 [file] [log] [blame]
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +02001#pragma once
2
Wludzik, Jozefe2362792020-10-27 17:23:55 +01003#include "report_manager.hpp"
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00004#include "types/report_types.hpp"
Wludzik, Jozefe2362792020-10-27 17:23:55 +01005
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +02006#include <chrono>
7#include <string>
8
9class ReportParams final
10{
11 public:
12 ReportParams& reportName(std::string val)
13 {
14 reportNameProperty = std::move(val);
15 return *this;
16 }
17
18 const std::string& reportName() const
19 {
20 return reportNameProperty;
21 }
22
23 ReportParams& reportingType(std::string val)
24 {
25 reportingTypeProperty = std::move(val);
26 return *this;
27 }
28
29 const std::string& reportingType() const
30 {
31 return reportingTypeProperty;
32 }
33
Wludzik, Jozefe2362792020-10-27 17:23:55 +010034 ReportParams& emitReadingUpdate(bool val)
35 {
36 emitReadingUpdateProperty = val;
37 return *this;
38 }
39
40 bool emitReadingUpdate() const
41 {
42 return emitReadingUpdateProperty;
43 }
44
45 ReportParams& logToMetricReportCollection(bool val)
46 {
47 logToMetricReportCollectionProperty = val;
48 return *this;
49 }
50
51 bool logToMetricReportCollection() const
52 {
53 return logToMetricReportCollectionProperty;
54 }
55
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000056 ReportParams& interval(Milliseconds val)
Wludzik, Jozefe2362792020-10-27 17:23:55 +010057 {
58 intervalProperty = val;
59 return *this;
60 }
61
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000062 Milliseconds interval() const
Wludzik, Jozefe2362792020-10-27 17:23:55 +010063 {
64 return intervalProperty;
65 }
66
Lukasz Kazmierczak7e098e92021-09-16 15:59:56 +020067 ReportParams& enabled(bool val)
68 {
69 enabledProperty = val;
70 return *this;
71 }
72
73 bool enabled() const
74 {
75 return enabledProperty;
76 }
77
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000078 ReportParams& metricParameters(std::vector<LabeledMetricParameters> val)
Wludzik, Jozefe2362792020-10-27 17:23:55 +010079 {
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000080 metricParametersProperty = std::move(val);
Wludzik, Jozefe2362792020-10-27 17:23:55 +010081 return *this;
82 }
83
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000084 const std::vector<LabeledMetricParameters>& metricParameters() const
Wludzik, Jozefe2362792020-10-27 17:23:55 +010085 {
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000086 return metricParametersProperty;
Wludzik, Jozefe2362792020-10-27 17:23:55 +010087 }
88
89 private:
Krzysztof Grobelnyc8e3a642020-10-23 12:29:16 +020090 std::string reportNameProperty = "TestReport";
91 std::string reportingTypeProperty = "OnRequest";
Wludzik, Jozefe2362792020-10-27 17:23:55 +010092 bool emitReadingUpdateProperty = true;
93 bool logToMetricReportCollectionProperty = true;
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000094 Milliseconds intervalProperty = ReportManager::minInterval;
95 std::vector<LabeledMetricParameters> metricParametersProperty{
96 {LabeledMetricParameters{
97 {LabeledSensorParameters{"Service",
98 "/xyz/openbmc_project/sensors/power/p1"}},
99 OperationType::single,
100 "MetricId1",
101 "Metadata1",
102 CollectionTimeScope::point,
103 CollectionDuration(Milliseconds(0u))},
104 LabeledMetricParameters{
105 {LabeledSensorParameters{"Service",
106 "/xyz/openbmc_project/sensors/power/p2"}},
107 OperationType::single,
108 "MetricId2",
109 "Metadata2",
110 CollectionTimeScope::point,
111 CollectionDuration(Milliseconds(0u))}}};
Lukasz Kazmierczak7e098e92021-09-16 15:59:56 +0200112 bool enabledProperty = true;
Krzysztof Grobelnyd2238192020-12-02 09:27:28 +0000113};