xref: /openbmc/telemetry/tests/src/params/report_params.hpp (revision 51497a0c878d939c9ed2a6ed30d12b465af4d51c)
1 #pragma once
2 
3 #include "report_manager.hpp"
4 #include "types/report_types.hpp"
5 
6 #include <chrono>
7 #include <string>
8 
9 class 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(const ReportingType val)
24     {
25         reportingTypeProperty = val;
26         return *this;
27     }
28 
29     ReportingType reportingType() const
30     {
31         return reportingTypeProperty;
32     }
33 
34     ReportParams& reportActions(std::vector<ReportAction> val)
35     {
36         reportActionsProperty = std::move(val);
37         return *this;
38     }
39 
40     std::vector<ReportAction> reportActions() const
41     {
42         return reportActionsProperty;
43     }
44 
45     ReportParams& interval(Milliseconds val)
46     {
47         intervalProperty = val;
48         return *this;
49     }
50 
51     Milliseconds interval() const
52     {
53         return intervalProperty;
54     }
55 
56     ReportParams& enabled(bool val)
57     {
58         enabledProperty = val;
59         return *this;
60     }
61 
62     bool enabled() const
63     {
64         return enabledProperty;
65     }
66 
67     ReportParams& appendLimit(uint64_t val)
68     {
69         appendLimitProperty = val;
70         return *this;
71     }
72 
73     uint64_t appendLimit() const
74     {
75         return appendLimitProperty;
76     }
77 
78     ReportParams& reportUpdates(ReportUpdates val)
79     {
80         reportUpdatesProperty = val;
81         return *this;
82     }
83 
84     ReportUpdates reportUpdates() const
85     {
86         return reportUpdatesProperty;
87     }
88 
89     ReportParams& metricParameters(std::vector<LabeledMetricParameters> val)
90     {
91         metricParametersProperty = std::move(val);
92         return *this;
93     }
94 
95     const std::vector<LabeledMetricParameters>& metricParameters() const
96     {
97         return metricParametersProperty;
98     }
99 
100   private:
101     std::string reportNameProperty = "TestReport";
102     ReportingType reportingTypeProperty = ReportingType::onRequest;
103     std::vector<ReportAction> reportActionsProperty;
104     Milliseconds intervalProperty = ReportManager::minInterval;
105     uint64_t appendLimitProperty = 123;
106     ReportUpdates reportUpdatesProperty = ReportUpdates::overwrite;
107     std::vector<LabeledMetricParameters> metricParametersProperty{
108         {LabeledMetricParameters{
109              {LabeledSensorParameters{"Service",
110                                       "/xyz/openbmc_project/sensors/power/p1"}},
111              OperationType::single,
112              "MetricId1",
113              "Metadata1",
114              CollectionTimeScope::point,
115              CollectionDuration(Milliseconds(0u))},
116          LabeledMetricParameters{
117              {LabeledSensorParameters{"Service",
118                                       "/xyz/openbmc_project/sensors/power/p2"}},
119              OperationType::single,
120              "MetricId2",
121              "Metadata2",
122              CollectionTimeScope::point,
123              CollectionDuration(Milliseconds(0u))}}};
124     bool enabledProperty = true;
125 };
126