blob: 2670daba31d375d9594d4a7f33b00f58c3fb91a7 [file] [log] [blame]
Jagpal Singh Gill7e11ab02023-12-08 11:41:41 -08001#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
11using namespace phosphor::health;
12using namespace phosphor::health::metric::config;
13
14constexpr auto minConfigSize = 1;
15
16TEST(HealthMonitorConfigTest, TestConfigSize)
17{
18 auto healthMetricConfigs = getHealthMetricConfigs();
19 EXPECT_GE(healthMetricConfigs.size(), minConfigSize);
20}
21
22bool 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:
Jagpal Singh Gilldfe839f2024-02-16 09:54:02 -080046 return set_t{metric::SubType::storageReadWrite,
47 metric::SubType::storageTmp}
Jagpal Singh Gill7e11ab02023-12-08 11:41:41 -080048 .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
58TEST(HealthMonitorConfigTest, TestConfigValues)
59{
60 auto healthMetricConfigs = getHealthMetricConfigs();
Patrick Williamsc00c19e2024-02-23 19:07:32 -060061 auto count_with_thresholds = 0;
Jagpal Singh Gill7e11ab02023-12-08 11:41:41 -080062 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);
Patrick Williamsc00c19e2024-02-23 19:07:32 -060072 if (config.thresholds.size())
73 {
74 count_with_thresholds++;
75 }
Jagpal Singh Gill7e11ab02023-12-08 11:41:41 -080076 }
Patrick Williamsc00c19e2024-02-23 19:07:32 -060077
78 EXPECT_GE(count_with_thresholds, 1);
Jagpal Singh Gill7e11ab02023-12-08 11:41:41 -080079 }
80}