5#include <gtest/gtest.h>
22 auto result = kcenon::common::ok(42);
24 EXPECT_TRUE(result.is_ok());
25 EXPECT_FALSE(result.is_err());
26 EXPECT_EQ(result.value(), 42);
30 auto result = kcenon::common::make_error<int>(
static_cast<int>(monitoring_error_code::collector_not_found),
"Test error");
32 EXPECT_FALSE(result.is_ok());
33 EXPECT_TRUE(result.is_err());
34 EXPECT_EQ(
static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::collector_not_found);
35 EXPECT_EQ(result.error().message,
"Test error");
39 auto error_result = kcenon::common::make_error<int>(
static_cast<int>(monitoring_error_code::unknown_error),
"");
40 EXPECT_EQ(error_result.value_or(100), 100);
42 auto success_result = kcenon::common::ok(42);
43 EXPECT_EQ(success_result.value_or(100), 42);
47 auto result = kcenon::common::ok(10);
48 auto mapped = result.map([](
int x) {
return x * 2; });
50 EXPECT_TRUE(mapped.is_ok());
51 EXPECT_EQ(mapped.value(), 20);
55 auto result = kcenon::common::make_error<int>(
static_cast<int>(monitoring_error_code::invalid_configuration),
"");
56 auto mapped = result.map([](
int x) {
return x * 2; });
58 EXPECT_FALSE(mapped.is_ok());
59 EXPECT_EQ(
static_cast<monitoring_error_code>(mapped.error().code), monitoring_error_code::invalid_configuration);
63 auto result = kcenon::common::ok(10);
64 auto chained = result.and_then([](
int x) {
66 return kcenon::common::ok(std::string(
"Large"));
68 return kcenon::common::make_error<std::string>(
static_cast<int>(monitoring_error_code::invalid_configuration),
"");
71 EXPECT_TRUE(chained.is_ok());
72 EXPECT_EQ(chained.value(),
"Large");
76 auto result = kcenon::common::ok();
78 EXPECT_TRUE(result.is_ok());
79 EXPECT_FALSE(result.is_err());
83 auto result = kcenon::common::VoidResult::err(
static_cast<int>(monitoring_error_code::storage_full),
"Storage is full");
85 EXPECT_FALSE(result.is_ok());
86 EXPECT_TRUE(result.is_err());
87 EXPECT_EQ(
static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::storage_full);
92 EXPECT_EQ(
error_code_to_string(monitoring_error_code::collector_not_found),
"Collector not found");
94 EXPECT_EQ(
error_code_to_string(monitoring_error_code::invalid_configuration),
"Invalid configuration");
98 auto result = kcenon::common::make_error<int>(
99 static_cast<int>(monitoring_error_code::collection_failed),
100 "Failed to collect metrics",
102 "CPU collector timeout"
105 EXPECT_FALSE(result.is_ok());
106 EXPECT_EQ(
static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::collection_failed);
107 EXPECT_EQ(result.error().message,
"Failed to collect metrics");
108 EXPECT_TRUE(result.error().details.has_value());
109 EXPECT_EQ(result.error().details.value(),
"CPU collector timeout");
117 EXPECT_EQ(snapshot.
metrics.size(), 2);
120 EXPECT_TRUE(
cpu.has_value());
121 EXPECT_EQ(
cpu.value(), 45.5);
124 EXPECT_FALSE(
unknown.has_value());
135 EXPECT_TRUE(result.is_ok());
140 EXPECT_FALSE(result.is_ok());
141 EXPECT_EQ(
static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::invalid_capacity);
147 EXPECT_FALSE(result.is_ok());
148 EXPECT_EQ(
static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::invalid_interval);
154 EXPECT_FALSE(result.is_ok());
155 EXPECT_EQ(
static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::invalid_capacity);
161 EXPECT_EQ(health.
status, health_status::unknown);
164 health.
status = health_status::healthy;
167 health.
status = health_status::degraded;
168 health.
issues.push_back(
"High memory usage");
170 EXPECT_EQ(health.
issues.size(), 1);
Test basic Result pattern functionality.
Monitoring system specific error codes.
Core monitoring system interface definitions.
std::string error_code_to_string(monitoring_error_code code)
Convert error code to string representation.
monitoring_error_code
Comprehensive error codes for monitoring system operations.
@ cpu
CPU power domain (RAPL)
Result pattern type definitions for monitoring system.
Result of a health check operation.
std::vector< std::string > issues
Complete snapshot of metrics at a point in time.
std::optional< double > get_metric(const std::string &name) const
Get a specific metric value.
std::vector< metric_value > metrics
void add_metric(const std::string &name, double value)
Add a metric to the snapshot.
Configuration for the monitoring system.
std::chrono::milliseconds collection_interval
common::VoidResult validate() const
Validate configuration parameters.
TEST_F(ResultTypesTest, SuccessResultContainsValue)