From 87e29602a03fe23c484315ebabadfd8e8e3498bf Mon Sep 17 00:00:00 2001 From: Hridya Valsaraju Date: Fri, 12 Jan 2018 17:46:22 -0800 Subject: [PATCH] Test API returning health information Bug: 71860528 Test: vts-tradefed run vts -m VtsHalHealthV2_0 Change-Id: I44f76b383a890a3f75f82da512d778c3572b3dea --- .../functional/VtsHalHealthV2_0TargetTest.cpp | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp b/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp index b2c6160d77..85dab44c6f 100644 --- a/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp +++ b/health/2.0/vts/functional/VtsHalHealthV2_0TargetTest.cpp @@ -35,7 +35,6 @@ namespace health { namespace V2_0 { using V1_0::BatteryStatus; -using V1_0::HealthInfo; // Test environment for graphics.composer class HealthHidlEnvironment : public VtsHalHidlTargetTestEnvBase { @@ -69,7 +68,7 @@ class HealthHidlTest : public ::testing::VtsHalHidlTargetTestBase { class Callback : public IHealthInfoCallback { public: - Return healthInfoChanged(const HealthInfo&) override { + Return healthInfoChanged(const V1_0::HealthInfo&) override { std::lock_guard lock(mMutex); mInvoked = true; mInvokedNotify.notify_all(); @@ -203,6 +202,43 @@ bool verifyDiskStats(const hidl_vec& stats) { return true; } +template +bool verifyEnum(T value) { + for (auto it : hidl_enum_iterator()) { + if (it == value) { + return true; + } + } + + return false; +} + +bool verifyHealthInfo(const HealthInfo& health_info) { + if (!verifyStorageInfo(health_info.storageInfos) || !verifyDiskStats(health_info.diskStats)) { + return false; + } + + using V1_0::BatteryStatus; + using V1_0::BatteryHealth; + + if (!((health_info.legacy.batteryChargeCounter > 0) && + (health_info.legacy.batteryCurrent != INT32_MIN) && + (0 <= health_info.legacy.batteryLevel && health_info.legacy.batteryLevel <= 100) && + verifyEnum(health_info.legacy.batteryHealth) && + (health_info.legacy.batteryStatus != BatteryStatus::UNKNOWN) && + verifyEnum(health_info.legacy.batteryStatus))) { + return false; + } + + return true; +} + +/* + * Tests the values returned by getChargeCounter(), + * getCurrentNow(), getCurrentAverage(), getCapacity(), getEnergyCounter(), + * getChargeStatus(), getStorageInfo(), getDiskStats() and getHealthInfo() from + * interface IHealth. + */ TEST_F(HealthHidlTest, Properties) { EXPECT_OK(mHealth->getChargeCounter([](auto result, auto value) { EXPECT_VALID_OR_UNSUPPORTED_PROP(result, std::to_string(value), value > 0); @@ -222,15 +258,17 @@ TEST_F(HealthHidlTest, Properties) { EXPECT_OK(mHealth->getChargeStatus([](auto result, auto value) { EXPECT_VALID_OR_UNSUPPORTED_PROP( result, toString(value), - value == BatteryStatus::CHARGING || value == BatteryStatus::DISCHARGING || - value == BatteryStatus::NOT_CHARGING || value == BatteryStatus::FULL); + value != BatteryStatus::UNKNOWN && verifyEnum(value)); })); EXPECT_OK(mHealth->getStorageInfo([](auto result, auto& value) { - EXPECT_VALID_OR_UNSUPPORTED_PROP(result, toString(value), (verifyStorageInfo(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)); })); + EXPECT_OK(mHealth->getHealthInfo([](auto result, auto& value) { + EXPECT_VALID_OR_UNSUPPORTED_PROP(result, toString(value), verifyHealthInfo(value)); + })); } } // namespace V2_0