1c8e3a64aSKrzysztof Grobelny #pragma once 2c8e3a64aSKrzysztof Grobelny 3*b3e03d2dSMichal Orzel #include "helpers.hpp" 4e2362796SWludzik, Jozef #include "report_manager.hpp" 5dcc4e193SKrzysztof Grobelny #include "types/report_types.hpp" 6e2362796SWludzik, Jozef 7c8e3a64aSKrzysztof Grobelny #include <chrono> 8c8e3a64aSKrzysztof Grobelny #include <string> 9c8e3a64aSKrzysztof Grobelny 10c8e3a64aSKrzysztof Grobelny class ReportParams final 11c8e3a64aSKrzysztof Grobelny { 12c8e3a64aSKrzysztof Grobelny public: reportId(std::string_view val)1332305f14SSzymon Dompke ReportParams& reportId(std::string_view val) 14b8cc78ddSKrzysztof Grobelny { 1532305f14SSzymon Dompke reportIdProperty = val; 16b8cc78ddSKrzysztof Grobelny return *this; 17b8cc78ddSKrzysztof Grobelny } 18b8cc78ddSKrzysztof Grobelny reportId() const19b8cc78ddSKrzysztof Grobelny const std::string& reportId() const 20b8cc78ddSKrzysztof Grobelny { 21b8cc78ddSKrzysztof Grobelny return reportIdProperty; 22b8cc78ddSKrzysztof Grobelny } 23b8cc78ddSKrzysztof Grobelny reportName(std::string_view val)2432305f14SSzymon Dompke ReportParams& reportName(std::string_view val) 25c8e3a64aSKrzysztof Grobelny { 2632305f14SSzymon Dompke reportNameProperty = val; 27c8e3a64aSKrzysztof Grobelny return *this; 28c8e3a64aSKrzysztof Grobelny } 29c8e3a64aSKrzysztof Grobelny reportName() const30c8e3a64aSKrzysztof Grobelny const std::string& reportName() const 31c8e3a64aSKrzysztof Grobelny { 32c8e3a64aSKrzysztof Grobelny return reportNameProperty; 33c8e3a64aSKrzysztof Grobelny } 34c8e3a64aSKrzysztof Grobelny reportingType(const ReportingType val)3551497a0cSKrzysztof Grobelny ReportParams& reportingType(const ReportingType val) 36c8e3a64aSKrzysztof Grobelny { 3751497a0cSKrzysztof Grobelny reportingTypeProperty = val; 38c8e3a64aSKrzysztof Grobelny return *this; 39c8e3a64aSKrzysztof Grobelny } 40c8e3a64aSKrzysztof Grobelny reportingType() const4151497a0cSKrzysztof Grobelny ReportingType reportingType() const 42c8e3a64aSKrzysztof Grobelny { 43c8e3a64aSKrzysztof Grobelny return reportingTypeProperty; 44c8e3a64aSKrzysztof Grobelny } 45c8e3a64aSKrzysztof Grobelny reportActions(std::vector<ReportAction> val)4651497a0cSKrzysztof Grobelny ReportParams& reportActions(std::vector<ReportAction> val) 47e2362796SWludzik, Jozef { 4851497a0cSKrzysztof Grobelny reportActionsProperty = std::move(val); 49e2362796SWludzik, Jozef return *this; 50e2362796SWludzik, Jozef } 51e2362796SWludzik, Jozef reportActions() const5251497a0cSKrzysztof Grobelny std::vector<ReportAction> reportActions() const 53e2362796SWludzik, Jozef { 5451497a0cSKrzysztof Grobelny return reportActionsProperty; 55e2362796SWludzik, Jozef } 56e2362796SWludzik, Jozef interval(Milliseconds val)57dcc4e193SKrzysztof Grobelny ReportParams& interval(Milliseconds val) 58e2362796SWludzik, Jozef { 59e2362796SWludzik, Jozef intervalProperty = val; 60e2362796SWludzik, Jozef return *this; 61e2362796SWludzik, Jozef } 62e2362796SWludzik, Jozef interval() const63dcc4e193SKrzysztof Grobelny Milliseconds interval() const 64e2362796SWludzik, Jozef { 65e2362796SWludzik, Jozef return intervalProperty; 66e2362796SWludzik, Jozef } 67e2362796SWludzik, Jozef enabled(bool val)687e098e93SLukasz Kazmierczak ReportParams& enabled(bool val) 697e098e93SLukasz Kazmierczak { 707e098e93SLukasz Kazmierczak enabledProperty = val; 717e098e93SLukasz Kazmierczak return *this; 727e098e93SLukasz Kazmierczak } 737e098e93SLukasz Kazmierczak enabled() const747e098e93SLukasz Kazmierczak bool enabled() const 757e098e93SLukasz Kazmierczak { 767e098e93SLukasz Kazmierczak return enabledProperty; 777e098e93SLukasz Kazmierczak } 787e098e93SLukasz Kazmierczak appendLimit(uint64_t val)793eb56865SSzymon Dompke ReportParams& appendLimit(uint64_t val) 803eb56865SSzymon Dompke { 813eb56865SSzymon Dompke appendLimitProperty = val; 823eb56865SSzymon Dompke return *this; 833eb56865SSzymon Dompke } 843eb56865SSzymon Dompke appendLimit() const853eb56865SSzymon Dompke uint64_t appendLimit() const 863eb56865SSzymon Dompke { 873eb56865SSzymon Dompke return appendLimitProperty; 883eb56865SSzymon Dompke } 893eb56865SSzymon Dompke reportUpdates(ReportUpdates val)9051497a0cSKrzysztof Grobelny ReportParams& reportUpdates(ReportUpdates val) 913eb56865SSzymon Dompke { 923eb56865SSzymon Dompke reportUpdatesProperty = val; 933eb56865SSzymon Dompke return *this; 943eb56865SSzymon Dompke } 953eb56865SSzymon Dompke reportUpdates() const9651497a0cSKrzysztof Grobelny ReportUpdates reportUpdates() const 973eb56865SSzymon Dompke { 983eb56865SSzymon Dompke return reportUpdatesProperty; 993eb56865SSzymon Dompke } 1003eb56865SSzymon Dompke metricParameters(std::vector<LabeledMetricParameters> val)101dcc4e193SKrzysztof Grobelny ReportParams& metricParameters(std::vector<LabeledMetricParameters> val) 102e2362796SWludzik, Jozef { 103dcc4e193SKrzysztof Grobelny metricParametersProperty = std::move(val); 104e2362796SWludzik, Jozef return *this; 105e2362796SWludzik, Jozef } 106e2362796SWludzik, Jozef metricParameters() const107dcc4e193SKrzysztof Grobelny const std::vector<LabeledMetricParameters>& metricParameters() const 108e2362796SWludzik, Jozef { 109dcc4e193SKrzysztof Grobelny return metricParametersProperty; 110e2362796SWludzik, Jozef } 111e2362796SWludzik, Jozef readings(Readings val)112493e62ebSKrzysztof Grobelny ReportParams& readings(Readings val) 113493e62ebSKrzysztof Grobelny { 114493e62ebSKrzysztof Grobelny readingsProperty = std::move(val); 115493e62ebSKrzysztof Grobelny return *this; 116493e62ebSKrzysztof Grobelny } 117493e62ebSKrzysztof Grobelny readings() const118493e62ebSKrzysztof Grobelny Readings readings() const 119493e62ebSKrzysztof Grobelny { 120493e62ebSKrzysztof Grobelny return readingsProperty; 121493e62ebSKrzysztof Grobelny } 122493e62ebSKrzysztof Grobelny PrintTo(const ReportParams & params,std::ostream * os)123*b3e03d2dSMichal Orzel friend void PrintTo(const ReportParams& params, std::ostream* os) 124*b3e03d2dSMichal Orzel { 125*b3e03d2dSMichal Orzel *os << "{ Id: \"" << params.reportIdProperty << "\", Name: \"" 126*b3e03d2dSMichal Orzel << params.reportNameProperty << "\", ReportingType: \"" 127*b3e03d2dSMichal Orzel << utils::enumToString(params.reportingTypeProperty) 128*b3e03d2dSMichal Orzel << "\", ReportActions: "; 129*b3e03d2dSMichal Orzel PrintTo(params.reportActionsProperty, os); 130*b3e03d2dSMichal Orzel *os << ", Interval: " << params.intervalProperty 131*b3e03d2dSMichal Orzel << ", Enabled: " << params.enabledProperty 132*b3e03d2dSMichal Orzel << ", AppendLimit: " << std::to_string(params.appendLimitProperty) 133*b3e03d2dSMichal Orzel << ", ReportUpdates: \"" 134*b3e03d2dSMichal Orzel << utils::enumToString(params.reportUpdatesProperty) 135*b3e03d2dSMichal Orzel << "\", MetricParameters: "; 136*b3e03d2dSMichal Orzel PrintTo(params.metricParametersProperty, os); 137*b3e03d2dSMichal Orzel *os << ", Readings: "; 138*b3e03d2dSMichal Orzel PrintTo(params.readingsProperty, os); 139*b3e03d2dSMichal Orzel *os << " }"; 140*b3e03d2dSMichal Orzel } 141*b3e03d2dSMichal Orzel 142e2362796SWludzik, Jozef private: 143b8cc78ddSKrzysztof Grobelny std::string reportIdProperty = "TestId"; 144c8e3a64aSKrzysztof Grobelny std::string reportNameProperty = "TestReport"; 145973b4bb0SKrzysztof Grobelny ReportingType reportingTypeProperty = ReportingType::onChange; 146fdb06a14SSzymon Dompke std::vector<ReportAction> reportActionsProperty = { 147fdb06a14SSzymon Dompke ReportAction::logToMetricReportsCollection}; 148973b4bb0SKrzysztof Grobelny Milliseconds intervalProperty{}; 1493eb56865SSzymon Dompke uint64_t appendLimitProperty = 123; 15051497a0cSKrzysztof Grobelny ReportUpdates reportUpdatesProperty = ReportUpdates::overwrite; 151dcc4e193SKrzysztof Grobelny std::vector<LabeledMetricParameters> metricParametersProperty{ 152dcc4e193SKrzysztof Grobelny {LabeledMetricParameters{ 15394f71c51SSzymon Dompke {LabeledSensorInfo{"Service", 154b8cc78ddSKrzysztof Grobelny "/xyz/openbmc_project/sensors/power/p1", 155b8cc78ddSKrzysztof Grobelny "metadata1"}}, 15660fee077SKrzysztof Grobelny OperationType::avg, 157dcc4e193SKrzysztof Grobelny CollectionTimeScope::point, 158dcc4e193SKrzysztof Grobelny CollectionDuration(Milliseconds(0u))}, 159dcc4e193SKrzysztof Grobelny LabeledMetricParameters{ 16094f71c51SSzymon Dompke {LabeledSensorInfo{"Service", 161b8cc78ddSKrzysztof Grobelny "/xyz/openbmc_project/sensors/power/p2", 162b8cc78ddSKrzysztof Grobelny "metadata2"}}, 16360fee077SKrzysztof Grobelny OperationType::avg, 164dcc4e193SKrzysztof Grobelny CollectionTimeScope::point, 165dcc4e193SKrzysztof Grobelny CollectionDuration(Milliseconds(0u))}}}; 1667e098e93SLukasz Kazmierczak bool enabledProperty = true; 167493e62ebSKrzysztof Grobelny Readings readingsProperty = {}; 168c8e3a64aSKrzysztof Grobelny }; 169