diff --git a/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp b/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp index bf8548c94b..b2c6160d77 100644 --- a/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp +++ b/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp @@ -180,6 +180,29 @@ AssertionResult isPropertyOk(Result res, const std::string& valueStr, bool pred, return AssertionFailure() << "Result is not SUCCESS or NOT_SUPPORTED: " << toString(res); } +bool verifyStorageInfo(const hidl_vec& info) { + for (size_t i = 0; i < info.size(); i++) { + if (!(0 <= info[i].eol && info[i].eol <= 3 && 0 <= info[i].lifetimeA && + info[i].lifetimeA <= 0x0B && 0 <= info[i].lifetimeB && info[i].lifetimeB <= 0x0B)) { + return false; + } + } + + return true; +} + +bool verifyDiskStats(const hidl_vec& stats) { + for (size_t i = 0; i < stats.size(); i++) { + if (!(stats[i].reads > 0 && stats[i].readMerges > 0 && stats[i].readSectors > 0 && + stats[i].readTicks > 0 && stats[i].writes > 0 && stats[i].writeMerges > 0 && + stats[i].writeSectors > 0 && stats[i].writeTicks > 0 && stats[i].ioTicks > 0)) { + return false; + } + } + + return true; +} + TEST_F(HealthHidlTest, Properties) { EXPECT_OK(mHealth->getChargeCounter([](auto result, auto value) { EXPECT_VALID_OR_UNSUPPORTED_PROP(result, std::to_string(value), value > 0); @@ -202,6 +225,12 @@ TEST_F(HealthHidlTest, Properties) { value == BatteryStatus::CHARGING || value == BatteryStatus::DISCHARGING || value == BatteryStatus::NOT_CHARGING || value == BatteryStatus::FULL); })); + EXPECT_OK(mHealth->getStorageInfo([](auto result, auto& value) { + EXPECT_VALID_OR_UNSUPPORTED_PROP(result, toString(value), (verifyStorageInfo(value))); + })); + EXPECT_OK(mHealth->getDiskStats([](auto result, auto& value) { + EXPECT_VALID_OR_UNSUPPORTED_PROP(result, toString(value), verifyDiskStats(value)); + })); } } // namespace V2_0