Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
test_result_types.cpp File Reference
Include dependency graph for test_result_types.cpp:

Go to the source code of this file.

Classes

class  ResultTypesTest
 Test basic Result pattern functionality. More...
 

Functions

 TEST_F (ResultTypesTest, SuccessResultContainsValue)
 
 TEST_F (ResultTypesTest, ErrorResultContainsError)
 
 TEST_F (ResultTypesTest, ValueOrReturnsDefaultOnError)
 
 TEST_F (ResultTypesTest, MapTransformsSuccessValue)
 
 TEST_F (ResultTypesTest, MapPropagatesError)
 
 TEST_F (ResultTypesTest, AndThenChainsOperations)
 
 TEST_F (ResultTypesTest, ResultVoidSuccess)
 
 TEST_F (ResultTypesTest, ResultVoidError)
 
 TEST_F (ResultTypesTest, ErrorCodeToString)
 
 TEST_F (ResultTypesTest, ErrorInfoWithContext)
 
 TEST_F (ResultTypesTest, MetricsSnapshotOperations)
 
 TEST_F (ResultTypesTest, MonitoringConfigValidation)
 
 TEST_F (ResultTypesTest, HealthCheckResult)
 

Function Documentation

◆ TEST_F() [1/13]

TEST_F ( ResultTypesTest ,
AndThenChainsOperations  )

Definition at line 62 of file test_result_types.cpp.

62 {
63 auto result = kcenon::common::ok(10);
64 auto chained = result.and_then([](int x) {
65 if (x > 5) {
66 return kcenon::common::ok(std::string("Large"));
67 }
68 return kcenon::common::make_error<std::string>(static_cast<int>(monitoring_error_code::invalid_configuration), "");
69 });
70
71 EXPECT_TRUE(chained.is_ok());
72 EXPECT_EQ(chained.value(), "Large");
73}

◆ TEST_F() [2/13]

TEST_F ( ResultTypesTest ,
ErrorCodeToString  )

Definition at line 90 of file test_result_types.cpp.

90 {
91 EXPECT_EQ(error_code_to_string(monitoring_error_code::success), "Success");
92 EXPECT_EQ(error_code_to_string(monitoring_error_code::collector_not_found), "Collector not found");
93 EXPECT_EQ(error_code_to_string(monitoring_error_code::storage_full), "Storage is full");
94 EXPECT_EQ(error_code_to_string(monitoring_error_code::invalid_configuration), "Invalid configuration");
95}
std::string error_code_to_string(monitoring_error_code code)
Convert error code to string representation.

References kcenon::monitoring::error_code_to_string().

Here is the call graph for this function:

◆ TEST_F() [3/13]

TEST_F ( ResultTypesTest ,
ErrorInfoWithContext  )

Definition at line 97 of file test_result_types.cpp.

97 {
98 auto result = kcenon::common::make_error<int>(
99 static_cast<int>(monitoring_error_code::collection_failed),
100 "Failed to collect metrics",
101 "",
102 "CPU collector timeout"
103 );
104
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");
110}
monitoring_error_code
Comprehensive error codes for monitoring system operations.
Definition error_codes.h:25

◆ TEST_F() [4/13]

TEST_F ( ResultTypesTest ,
ErrorResultContainsError  )

Definition at line 29 of file test_result_types.cpp.

29 {
30 auto result = kcenon::common::make_error<int>(static_cast<int>(monitoring_error_code::collector_not_found), "Test error");
31
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");
36}

◆ TEST_F() [5/13]

TEST_F ( ResultTypesTest ,
HealthCheckResult  )

Definition at line 158 of file test_result_types.cpp.

158 {
159 health_check_result health;
160
161 EXPECT_EQ(health.status, health_status::unknown);
162 EXPECT_FALSE(health.is_healthy());
163
164 health.status = health_status::healthy;
165 EXPECT_TRUE(health.is_healthy());
166
167 health.status = health_status::degraded;
168 health.issues.push_back("High memory usage");
169 EXPECT_FALSE(health.is_healthy());
170 EXPECT_EQ(health.issues.size(), 1);
171}
Result of a health check operation.

References kcenon::monitoring::health_check_result::is_healthy(), kcenon::monitoring::health_check_result::issues, and kcenon::monitoring::health_check_result::status.

Here is the call graph for this function:

◆ TEST_F() [6/13]

TEST_F ( ResultTypesTest ,
MapPropagatesError  )

Definition at line 54 of file test_result_types.cpp.

54 {
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; });
57
58 EXPECT_FALSE(mapped.is_ok());
59 EXPECT_EQ(static_cast<monitoring_error_code>(mapped.error().code), monitoring_error_code::invalid_configuration);
60}

◆ TEST_F() [7/13]

TEST_F ( ResultTypesTest ,
MapTransformsSuccessValue  )

Definition at line 46 of file test_result_types.cpp.

46 {
47 auto result = kcenon::common::ok(10);
48 auto mapped = result.map([](int x) { return x * 2; });
49
50 EXPECT_TRUE(mapped.is_ok());
51 EXPECT_EQ(mapped.value(), 20);
52}

◆ TEST_F() [8/13]

TEST_F ( ResultTypesTest ,
MetricsSnapshotOperations  )

Definition at line 112 of file test_result_types.cpp.

112 {
113 metrics_snapshot snapshot;
114 snapshot.add_metric("cpu_usage", 45.5);
115 snapshot.add_metric("memory_usage", 2048.0);
116
117 EXPECT_EQ(snapshot.metrics.size(), 2);
118
119 auto cpu = snapshot.get_metric("cpu_usage");
120 EXPECT_TRUE(cpu.has_value());
121 EXPECT_EQ(cpu.value(), 45.5);
122
123 auto unknown = snapshot.get_metric("unknown_metric");
124 EXPECT_FALSE(unknown.has_value());
125}
@ cpu
CPU power domain (RAPL)
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.

References kcenon::monitoring::metrics_snapshot::add_metric(), kcenon::monitoring::cpu, kcenon::monitoring::metrics_snapshot::get_metric(), kcenon::monitoring::metrics_snapshot::metrics, and kcenon::monitoring::unknown.

Here is the call graph for this function:

◆ TEST_F() [9/13]

TEST_F ( ResultTypesTest ,
MonitoringConfigValidation  )

Definition at line 127 of file test_result_types.cpp.

127 {
128 monitoring_config config;
129
130 // Valid configuration
131 config.history_size = 100;
132 config.collection_interval = std::chrono::milliseconds(100);
133 config.buffer_size = 1000;
134 auto result = config.validate();
135 EXPECT_TRUE(result.is_ok());
136
137 // Invalid history size
138 config.history_size = 0;
139 result = config.validate();
140 EXPECT_FALSE(result.is_ok());
141 EXPECT_EQ(static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::invalid_capacity);
142
143 // Invalid interval
144 config.history_size = 100;
145 config.collection_interval = std::chrono::milliseconds(5);
146 result = config.validate();
147 EXPECT_FALSE(result.is_ok());
148 EXPECT_EQ(static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::invalid_interval);
149
150 // Invalid buffer size
151 config.collection_interval = std::chrono::milliseconds(100);
152 config.buffer_size = 50; // Less than history_size
153 result = config.validate();
154 EXPECT_FALSE(result.is_ok());
155 EXPECT_EQ(static_cast<monitoring_error_code>(result.error().code), monitoring_error_code::invalid_capacity);
156}
Configuration for the monitoring system.
std::chrono::milliseconds collection_interval
common::VoidResult validate() const
Validate configuration parameters.

References kcenon::monitoring::monitoring_config::buffer_size, kcenon::monitoring::monitoring_config::collection_interval, kcenon::monitoring::monitoring_config::history_size, and kcenon::monitoring::monitoring_config::validate().

Here is the call graph for this function:

◆ TEST_F() [10/13]

TEST_F ( ResultTypesTest ,
ResultVoidError  )

Definition at line 82 of file test_result_types.cpp.

82 {
83 auto result = kcenon::common::VoidResult::err(static_cast<int>(monitoring_error_code::storage_full), "Storage is full");
84
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);
88}

◆ TEST_F() [11/13]

TEST_F ( ResultTypesTest ,
ResultVoidSuccess  )

Definition at line 75 of file test_result_types.cpp.

75 {
76 auto result = kcenon::common::ok();
77
78 EXPECT_TRUE(result.is_ok());
79 EXPECT_FALSE(result.is_err());
80}

◆ TEST_F() [12/13]

TEST_F ( ResultTypesTest ,
SuccessResultContainsValue  )

Definition at line 21 of file test_result_types.cpp.

21 {
22 auto result = kcenon::common::ok(42);
23
24 EXPECT_TRUE(result.is_ok());
25 EXPECT_FALSE(result.is_err());
26 EXPECT_EQ(result.value(), 42);
27}

◆ TEST_F() [13/13]

TEST_F ( ResultTypesTest ,
ValueOrReturnsDefaultOnError  )

Definition at line 38 of file test_result_types.cpp.

38 {
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);
41
42 auto success_result = kcenon::common::ok(42);
43 EXPECT_EQ(success_result.value_or(100), 42);
44}