5#include <gtest/gtest.h>
15class ContainerPluginTest :
public ::testing::Test {
17 void SetUp()
override {
19 ASSERT_NE(plugin_,
nullptr);
22 std::unique_ptr<container_plugin>
plugin_;
26TEST_F(ContainerPluginTest, CreatesSuccessfully) {
28 EXPECT_EQ(
plugin_->get_name(),
"container_plugin");
32TEST_F(ContainerPluginTest, CreatesWithCustomConfig) {
33 container_plugin_config config;
34 config.enable_docker =
true;
35 config.enable_kubernetes =
false;
36 config.enable_cgroup =
true;
37 config.docker_socket =
"/var/run/docker.sock";
40 ASSERT_NE(custom_plugin,
nullptr);
42 auto retrieved_config = custom_plugin->get_config();
43 EXPECT_EQ(retrieved_config.enable_docker,
true);
44 EXPECT_EQ(retrieved_config.enable_kubernetes,
false);
45 EXPECT_EQ(retrieved_config.enable_cgroup,
true);
46 EXPECT_EQ(retrieved_config.docker_socket,
"/var/run/docker.sock");
50TEST_F(ContainerPluginTest, InitializesFromConfigMap) {
51 std::unordered_map<std::string, std::string> config = {{
"enable_docker",
"true"},
52 {
"enable_kubernetes",
"false"},
53 {
"collect_network",
"true"},
54 {
"collect_blkio",
"false"}};
56 EXPECT_TRUE(
plugin_->initialize(config));
60TEST_F(ContainerPluginTest, ReturnsMetricTypes) {
61 auto metric_types =
plugin_->get_metric_types();
64 EXPECT_FALSE(metric_types.empty());
66 auto contains = [&metric_types](
const std::string& type) {
67 return std::find(metric_types.begin(), metric_types.end(), type) != metric_types.end();
70 EXPECT_TRUE(contains(
"container_cpu_usage_percent"));
71 EXPECT_TRUE(contains(
"container_memory_usage_bytes"));
75TEST_F(ContainerPluginTest, HealthCheck) {
77 EXPECT_TRUE(
plugin_->is_healthy());
81TEST_F(ContainerPluginTest, TracksStatistics) {
82 auto stats =
plugin_->get_statistics();
85 EXPECT_TRUE(stats.find(
"total_collections") != stats.end());
86 EXPECT_TRUE(stats.find(
"collection_errors") != stats.end());
87 EXPECT_TRUE(stats.find(
"containers_found") != stats.end());
91TEST_F(ContainerPluginTest, CollectMetrics) {
92 auto metrics =
plugin_->collect();
96 auto stats =
plugin_->get_statistics();
97 EXPECT_GE(stats[
"total_collections"], 0.0);
101TEST(ContainerRuntimeTest, EnumValues) {
110TEST(ContainerPluginStaticTest, IsRunningInContainerDetection) {
116TEST(ContainerPluginStaticTest, IsKubernetesEnvironmentDetection) {
122TEST(ContainerPluginStaticTest, DetectRuntimeDetection) {
129TEST_F(ContainerPluginTest, AvailabilityChecks) {
132 bool docker_available =
plugin_->is_docker_available();
133 bool k8s_available =
plugin_->is_kubernetes_available();
134 bool cgroup_available =
plugin_->is_cgroup_available();
136 (void)docker_available;
138 (void)cgroup_available;
142TEST(ContainerPluginConfigTest, DefaultValues) {
143 container_plugin_config config;
146 EXPECT_TRUE(config.enable_docker);
147 EXPECT_FALSE(config.enable_kubernetes);
148 EXPECT_TRUE(config.enable_cgroup);
149 EXPECT_EQ(config.docker_socket,
"/var/run/docker.sock");
150 EXPECT_TRUE(config.kubeconfig_path.empty());
151 EXPECT_TRUE(config.namespace_filter.empty());
152 EXPECT_TRUE(config.collect_network_metrics);
153 EXPECT_TRUE(config.collect_blkio_metrics);
154 EXPECT_TRUE(config.collect_pid_metrics);
static std::unique_ptr< container_plugin > create(const container_plugin_config &config={})
static bool is_kubernetes_environment()
static bool is_running_in_container()
static container_runtime detect_runtime()
Container monitoring plugin for Docker and Kubernetes metrics.
@ containerd
containerd runtime
@ auto_detect
Automatically detect the container runtime.
TEST(AdapterFunctionalityTest, WorksWithoutLogger)
Test Scenario 1: Adapter with NULL logger.
TEST_F(AdaptiveMonitoringTest, AdaptiveConfigDefaults)
std::unique_ptr< container_plugin > plugin_