Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
test_interfaces_compile.cpp
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021-2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
16#include <memory>
17#include <iostream>
18
19using namespace kcenon::monitoring;
20
21// Test implementation of observer interface
23public:
24 void on_metric_collected(const metric_event& event) override {
25 std::cout << "Metric collected from: " << event.source() << std::endl;
26 }
27
28 void on_event_occurred(const system_event& event) override {
29 std::cout << "System event from: " << event.component() << std::endl;
30 }
31
32 void on_system_state_changed(const state_change_event& event) override {
33 std::cout << "State change in: " << event.component() << std::endl;
34 }
35};
36
37// Test that interfaces can be used as base classes
39public:
40 kcenon::common::Result<std::vector<metric>> collect_metrics() override {
41 return kcenon::common::ok(std::vector<metric>{});
42 }
43
44 kcenon::common::VoidResult start_collection(const collection_config& config) override {
45 (void)config;
46 return kcenon::common::ok();
47 }
48
49 kcenon::common::VoidResult stop_collection() override {
50 return kcenon::common::ok();
51 }
52
53 bool is_collecting() const override {
54 return false;
55 }
56
57 std::vector<std::string> get_metric_types() const override {
58 return {"test_metric"};
59 }
60
61 collection_config get_config() const override {
62 return collection_config{};
63 }
64
65 kcenon::common::VoidResult update_config(const collection_config& config) override {
66 (void)config;
67 return kcenon::common::ok();
68 }
69
70 kcenon::common::Result<std::vector<metric>> force_collect() override {
71 return collect_metrics();
72 }
73
74 metric_stats get_stats() const override {
75 return metric_stats{};
76 }
77
78 void reset_stats() override {}
79
80 // Observable interface methods
81 kcenon::common::VoidResult register_observer(std::shared_ptr<interface_monitoring_observer> observer) override {
82 (void)observer;
83 return kcenon::common::ok();
84 }
85
86 kcenon::common::VoidResult unregister_observer(std::shared_ptr<interface_monitoring_observer> observer) override {
87 (void)observer;
88 return kcenon::common::ok();
89 }
90
91 void notify_metric(const metric_event& event) override { (void)event; }
92 void notify_event(const system_event& event) override { (void)event; }
93 void notify_state_change(const state_change_event& event) override { (void)event; }
94};
95
96int main() {
97 std::cout << "=== Interface Compilation Test ===" << std::endl;
98
99 // Test that interfaces can be instantiated through implementations
100 auto observer = std::make_shared<test_observer>();
101 auto collector = std::make_shared<test_collector>();
102
103 // Test that interfaces can be used
104 metric m{"test", 42.0, {}};
105 metric_event me("test_source", m);
106 observer->on_metric_collected(me);
107
108 system_event se(system_event::event_type::component_started, "test_component", "Started");
109 observer->on_event_occurred(se);
110
111 state_change_event sce("test_component",
112 state_change_event::state::healthy,
113 state_change_event::state::degraded);
114 observer->on_system_state_changed(sce);
115
116 // Test collector interface
117 auto result = collector->collect_metrics();
118 if (result.is_ok()) {
119 std::cout << "Metrics collected successfully" << std::endl;
120 }
121
122 auto types = collector->get_metric_types();
123 std::cout << "Collector supports " << types.size() << " metric type(s)" << std::endl;
124
125 std::cout << "✅ All interface compilation tests passed!" << std::endl;
126
127 return 0;
128}
Pure virtual interface for metric collectors.
Pure virtual interface for monitoring event observers.
Event fired when a metric is collected.
Event fired when system state changes.
Generic system event for monitoring components.
kcenon::common::VoidResult update_config(const collection_config &config) override
Update collection configuration.
collection_config get_config() const override
Get current collection configuration.
kcenon::common::VoidResult start_collection(const collection_config &config) override
Start automatic metric collection.
kcenon::common::Result< std::vector< metric > > force_collect() override
Force immediate metric collection.
void reset_stats() override
Reset collector statistics.
kcenon::common::VoidResult register_observer(std::shared_ptr< interface_monitoring_observer > observer) override
Register an observer for events.
metric_stats get_stats() const override
Get collector statistics.
void notify_state_change(const state_change_event &event) override
Notify all observers of a state change.
kcenon::common::VoidResult unregister_observer(std::shared_ptr< interface_monitoring_observer > observer) override
Unregister an observer.
kcenon::common::VoidResult stop_collection() override
Stop automatic metric collection.
void notify_metric(const metric_event &event) override
Notify all observers of a metric event.
bool is_collecting() const override
Check if collector is currently active.
std::vector< std::string > get_metric_types() const override
Get the types of metrics this collector supports.
void notify_event(const system_event &event) override
Notify all observers of a system event.
kcenon::common::Result< std::vector< metric > > collect_metrics() override
Collect metrics based on current configuration.
void on_metric_collected(const metric_event &event) override
Called when a metric is collected.
void on_event_occurred(const system_event &event) override
Called when a system event occurs.
void on_system_state_changed(const state_change_event &event) override
Called when system state changes.
Event bus interface for decoupled component communication.
Abstract interface for metric collection components.
Observer pattern interface for monitoring system event handling.
Configuration for metric collection.
Statistics about metric collection.
Basic metric structure for interface compatibility.