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, metric::SubType::NA} 47 .contains(subType); 48 49 case metric::Type::inode: 50 return set_t{metric::SubType::NA}.contains(subType); 51 52 default: 53 return false; 54 } 55 } 56 57 TEST(HealthMonitorConfigTest, TestConfigValues) 58 { 59 auto healthMetricConfigs = getHealthMetricConfigs(); 60 for (const auto& [type, configs] : healthMetricConfigs) 61 { 62 EXPECT_NE(type, metric::Type::unknown); 63 EXPECT_GE(configs.size(), minConfigSize); 64 for (const auto& config : configs) 65 { 66 EXPECT_NE(config.name, std::string("")); 67 EXPECT_TRUE(isValidSubType(type, config.subType)); 68 EXPECT_GE(config.collectionFreq, HealthMetric::defaults::frequency); 69 EXPECT_GE(config.windowSize, HealthMetric::defaults::windowSize); 70 EXPECT_GE(config.thresholds.size(), minConfigSize); 71 } 72 } 73 } 74