1 #include "health_metric_config.hpp" 2 3 #include <sdbusplus/test/sdbus_mock.hpp> 4 5 #include <iostream> 6 #include <set> 7 #include <utility> 8 9 #include <gtest/gtest.h> 10 11 using namespace phosphor::health; 12 using namespace phosphor::health::metric::config; 13 14 constexpr auto minConfigSize = 1; 15 16 TEST(HealthMonitorConfigTest, TestConfigSize) 17 { 18 auto healthMetricConfigs = getHealthMetricConfigs(); 19 EXPECT_GE(healthMetricConfigs.size(), minConfigSize); 20 } 21 22 bool isValidSubType(metric::Type type, metric::SubType subType) 23 { 24 std::cout << "Metric Type: " << std::to_underlying(type) 25 << " Metric SubType: " << std::to_underlying(subType) 26 << std::endl; 27 28 using set_t = std::set<metric::SubType>; 29 30 switch (type) 31 { 32 case metric::Type::cpu: 33 return set_t{metric::SubType::cpuTotal, metric::SubType::cpuKernel, 34 metric::SubType::cpuUser} 35 .contains(subType); 36 37 case metric::Type::memory: 38 return set_t{metric::SubType::memoryAvailable, 39 metric::SubType::memoryBufferedAndCached, 40 metric::SubType::memoryFree, 41 metric::SubType::memoryShared, 42 metric::SubType::memoryTotal} 43 .contains(subType); 44 45 case metric::Type::storage: 46 return set_t{metric::SubType::storageReadWrite, 47 metric::SubType::storageTmp} 48 .contains(subType); 49 50 case metric::Type::inode: 51 return set_t{metric::SubType::NA}.contains(subType); 52 53 default: 54 return false; 55 } 56 } 57 58 TEST(HealthMonitorConfigTest, TestConfigValues) 59 { 60 auto healthMetricConfigs = getHealthMetricConfigs(); 61 auto count_with_thresholds = 0; 62 for (const auto& [type, configs] : healthMetricConfigs) 63 { 64 EXPECT_NE(type, metric::Type::unknown); 65 EXPECT_GE(configs.size(), minConfigSize); 66 for (const auto& config : configs) 67 { 68 EXPECT_NE(config.name, std::string("")); 69 EXPECT_TRUE(isValidSubType(type, config.subType)); 70 EXPECT_GE(config.collectionFreq, HealthMetric::defaults::frequency); 71 EXPECT_GE(config.windowSize, HealthMetric::defaults::windowSize); 72 if (config.thresholds.size()) 73 { 74 count_with_thresholds++; 75 } 76 } 77 78 EXPECT_GE(count_with_thresholds, 1); 79 } 80 } 81