5#include <gtest/gtest.h>
13class ContainerCollectorTest :
public ::testing::Test {
15 void SetUp()
override {
16 collector_ = std::make_unique<container_collector>();
17 std::unordered_map<std::string, std::string> config;
25TEST_F(ContainerCollectorTest, InitializesSuccessfully) {
30TEST_F(ContainerCollectorTest, ReturnsCorrectMetricTypes) {
31 auto metric_types =
collector_->get_metric_types();
34 EXPECT_FALSE(metric_types.empty());
37 auto contains = [&metric_types](
const std::string& type) {
38 return std::find(metric_types.begin(), metric_types.end(), type) != metric_types.end();
41 EXPECT_TRUE(contains(
"container_cpu_usage_percent"));
42 EXPECT_TRUE(contains(
"container_memory_usage_bytes"));
43 EXPECT_TRUE(contains(
"container_memory_limit_bytes"));
44 EXPECT_TRUE(contains(
"container_pids_current"));
48TEST_F(ContainerCollectorTest, ConfigurationOptions) {
49 auto custom_collector = std::make_unique<container_collector>();
51 std::unordered_map<std::string, std::string> config = {
52 {
"enabled",
"true"}, {
"collect_network",
"true"}, {
"collect_blkio",
"true"}};
54 EXPECT_TRUE(custom_collector->initialize(config));
58TEST_F(ContainerCollectorTest, CanBeDisabled) {
59 auto custom_collector = std::make_unique<container_collector>();
61 std::unordered_map<std::string, std::string> config = {{
"enabled",
"false"}};
63 custom_collector->initialize(config);
66 auto metrics = custom_collector->collect();
67 EXPECT_TRUE(metrics.empty());
71TEST_F(ContainerCollectorTest, TracksStatistics) {
75 EXPECT_TRUE(stats.find(
"collection_count") != stats.end());
76 EXPECT_TRUE(stats.find(
"collection_errors") != stats.end());
77 EXPECT_TRUE(stats.find(
"containers_found") != stats.end());
80 EXPECT_EQ(stats[
"collection_count"], 0.0);
81 EXPECT_EQ(stats[
"collection_errors"], 0.0);
85TEST_F(ContainerCollectorTest, CollectReturnsMetrics) {
91 EXPECT_GE(stats[
"collection_count"], 0.0);
95TEST_F(ContainerCollectorTest, GetLastMetrics) {
97 auto last_metrics =
collector_->get_last_metrics();
105TEST(ContainerMetricsTest, DefaultInitialization) {
106 container_metrics metrics;
108 EXPECT_TRUE(metrics.container_id.empty());
109 EXPECT_TRUE(metrics.container_name.empty());
110 EXPECT_EQ(metrics.cpu_usage_percent, 0.0);
111 EXPECT_EQ(metrics.memory_usage_bytes, 0);
112 EXPECT_EQ(metrics.network_rx_bytes, 0);
113 EXPECT_EQ(metrics.blkio_read_bytes, 0);
114 EXPECT_EQ(metrics.pids_current, 0);
118TEST(ContainerInfoTest, DefaultInitialization) {
121 EXPECT_TRUE(
info.container_id.empty());
122 EXPECT_TRUE(
info.container_name.empty());
123 EXPECT_TRUE(
info.cgroup_path.empty());
124 EXPECT_FALSE(
info.is_running);
128TEST(CgroupVersionTest, EnumValues) {
135TEST(ContainerInfoCollectorTest, BasicFunctionality) {
136 container_info_collector collector;
139 auto version = collector.detect_cgroup_version();
142#if !defined(__linux__)
152TEST(ContainerInfoCollectorTest, IsContainerizedDetection) {
153 container_info_collector collector;
156 bool is_containerized = collector.is_containerized();
157 (void)is_containerized;
161TEST(ContainerInfoCollectorTest, EnumerateContainers) {
162 container_info_collector collector;
164 auto containers = collector.enumerate_containers();
Container metrics collector for Docker/cgroup monitoring.
@ v2
Unified cgroups v2 hierarchy.
@ none
Not in a cgroup or not Linux.
@ info
Informational, no action required.
TEST(AdapterFunctionalityTest, WorksWithoutLogger)
Test Scenario 1: Adapter with NULL logger.
TEST_F(AdaptiveMonitoringTest, AdaptiveConfigDefaults)
std::unique_ptr< battery_collector > collector_