17e11ab0aSJagpal Singh Gill #include "health_metric_config.hpp"
27e11ab0aSJagpal Singh Gill
37e11ab0aSJagpal Singh Gill #include <sdbusplus/test/sdbus_mock.hpp>
47e11ab0aSJagpal Singh Gill
57e11ab0aSJagpal Singh Gill #include <iostream>
67e11ab0aSJagpal Singh Gill #include <set>
77e11ab0aSJagpal Singh Gill #include <utility>
87e11ab0aSJagpal Singh Gill
97e11ab0aSJagpal Singh Gill #include <gtest/gtest.h>
107e11ab0aSJagpal Singh Gill
117e11ab0aSJagpal Singh Gill using namespace phosphor::health;
127e11ab0aSJagpal Singh Gill using namespace phosphor::health::metric::config;
137e11ab0aSJagpal Singh Gill
147e11ab0aSJagpal Singh Gill constexpr auto minConfigSize = 1;
157e11ab0aSJagpal Singh Gill
TEST(HealthMonitorConfigTest,TestConfigSize)167e11ab0aSJagpal Singh Gill TEST(HealthMonitorConfigTest, TestConfigSize)
177e11ab0aSJagpal Singh Gill {
187e11ab0aSJagpal Singh Gill auto healthMetricConfigs = getHealthMetricConfigs();
197e11ab0aSJagpal Singh Gill EXPECT_GE(healthMetricConfigs.size(), minConfigSize);
207e11ab0aSJagpal Singh Gill }
217e11ab0aSJagpal Singh Gill
isValidSubType(metric::Type type,metric::SubType subType)227e11ab0aSJagpal Singh Gill bool isValidSubType(metric::Type type, metric::SubType subType)
237e11ab0aSJagpal Singh Gill {
247e11ab0aSJagpal Singh Gill std::cout << "Metric Type: " << std::to_underlying(type)
257e11ab0aSJagpal Singh Gill << " Metric SubType: " << std::to_underlying(subType)
267e11ab0aSJagpal Singh Gill << std::endl;
277e11ab0aSJagpal Singh Gill
287e11ab0aSJagpal Singh Gill using set_t = std::set<metric::SubType>;
297e11ab0aSJagpal Singh Gill
307e11ab0aSJagpal Singh Gill switch (type)
317e11ab0aSJagpal Singh Gill {
327e11ab0aSJagpal Singh Gill case metric::Type::cpu:
337e11ab0aSJagpal Singh Gill return set_t{metric::SubType::cpuTotal, metric::SubType::cpuKernel,
347e11ab0aSJagpal Singh Gill metric::SubType::cpuUser}
357e11ab0aSJagpal Singh Gill .contains(subType);
367e11ab0aSJagpal Singh Gill
377e11ab0aSJagpal Singh Gill case metric::Type::memory:
387e11ab0aSJagpal Singh Gill return set_t{metric::SubType::memoryAvailable,
397e11ab0aSJagpal Singh Gill metric::SubType::memoryBufferedAndCached,
407e11ab0aSJagpal Singh Gill metric::SubType::memoryFree,
417e11ab0aSJagpal Singh Gill metric::SubType::memoryShared,
427e11ab0aSJagpal Singh Gill metric::SubType::memoryTotal}
437e11ab0aSJagpal Singh Gill .contains(subType);
447e11ab0aSJagpal Singh Gill
457e11ab0aSJagpal Singh Gill case metric::Type::storage:
467e11ab0aSJagpal Singh Gill case metric::Type::inode:
477e11ab0aSJagpal Singh Gill return set_t{metric::SubType::NA}.contains(subType);
487e11ab0aSJagpal Singh Gill
497e11ab0aSJagpal Singh Gill default:
507e11ab0aSJagpal Singh Gill return false;
517e11ab0aSJagpal Singh Gill }
527e11ab0aSJagpal Singh Gill }
537e11ab0aSJagpal Singh Gill
TEST(HealthMonitorConfigTest,TestConfigValues)547e11ab0aSJagpal Singh Gill TEST(HealthMonitorConfigTest, TestConfigValues)
557e11ab0aSJagpal Singh Gill {
567e11ab0aSJagpal Singh Gill auto healthMetricConfigs = getHealthMetricConfigs();
57c00c19e0SPatrick Williams auto count_with_thresholds = 0;
587e11ab0aSJagpal Singh Gill for (const auto& [type, configs] : healthMetricConfigs)
597e11ab0aSJagpal Singh Gill {
607e11ab0aSJagpal Singh Gill EXPECT_NE(type, metric::Type::unknown);
617e11ab0aSJagpal Singh Gill EXPECT_GE(configs.size(), minConfigSize);
627e11ab0aSJagpal Singh Gill for (const auto& config : configs)
637e11ab0aSJagpal Singh Gill {
647e11ab0aSJagpal Singh Gill EXPECT_NE(config.name, std::string(""));
657e11ab0aSJagpal Singh Gill EXPECT_TRUE(isValidSubType(type, config.subType));
667e11ab0aSJagpal Singh Gill EXPECT_GE(config.windowSize, HealthMetric::defaults::windowSize);
67*a102762bSJagpal Singh Gill EXPECT_GE(config.hysteresis, HealthMetric::defaults::hysteresis);
68c00c19e0SPatrick Williams if (config.thresholds.size())
69c00c19e0SPatrick Williams {
70c00c19e0SPatrick Williams count_with_thresholds++;
717e11ab0aSJagpal Singh Gill }
727e11ab0aSJagpal Singh Gill }
73c00c19e0SPatrick Williams
74c00c19e0SPatrick Williams EXPECT_GE(count_with_thresholds, 1);
75c00c19e0SPatrick Williams }
767e11ab0aSJagpal Singh Gill }
77