From e7b177e69d11e274ea06e303e0770d19f2d7a945 Mon Sep 17 00:00:00 2001 From: Xiang Wang Date: Wed, 21 Dec 2022 17:55:11 -0800 Subject: [PATCH] Update VTS for AIDL HAL Bug: b/205762943 Test: atest VtsHalThermalTargetTest Change-Id: I9ae738ea4b27f92445020822877ccd24234fa3c0 --- thermal/aidl/vts/VtsHalThermalTargetTest.cpp | 150 +++++++++++++++++-- 1 file changed, 139 insertions(+), 11 deletions(-) diff --git a/thermal/aidl/vts/VtsHalThermalTargetTest.cpp b/thermal/aidl/vts/VtsHalThermalTargetTest.cpp index eb91e3133c..05cc8e0acf 100644 --- a/thermal/aidl/vts/VtsHalThermalTargetTest.cpp +++ b/thermal/aidl/vts/VtsHalThermalTargetTest.cpp @@ -95,20 +95,15 @@ class ThermalAidlTest : public testing::TestWithParam { mThermalCallback = ndk::SharedRefBase::make(); ASSERT_NE(mThermalCallback, nullptr); - auto status = mThermal->registerThermalChangedCallback(mThermalCallback); - ASSERT_TRUE(status.isOk()); - // Expect to fail if register again - status = mThermal->registerThermalChangedCallback(mThermalCallback); - ASSERT_FALSE(status.isOk()); - ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); + ::ndk::ScopedAStatus status = mThermal->registerThermalChangedCallback(mThermalCallback); + ASSERT_TRUE(status.isOk()) << status.getMessage(); } void TearDown() override { - auto status = mThermal->unregisterThermalChangedCallback(mThermalCallback); - ASSERT_TRUE(status.isOk()); + ::ndk::ScopedAStatus status = mThermal->unregisterThermalChangedCallback(mThermalCallback); + ASSERT_TRUE(status.isOk()) << status.getMessage(); // Expect to fail if unregister again status = mThermal->unregisterThermalChangedCallback(mThermalCallback); - ASSERT_FALSE(status.isOk()); ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); } @@ -121,11 +116,144 @@ class ThermalAidlTest : public testing::TestWithParam { // This just calls into and back from our local ThermalChangedCallback impl. TEST_P(ThermalAidlTest, NotifyThrottlingTest) { std::shared_ptr thermalCallback = ndk::SharedRefBase::make(); - auto ret = thermalCallback->notifyThrottling(kThrottleTemp); - ASSERT_TRUE(ret.isOk()); + ::ndk::ScopedAStatus status = thermalCallback->notifyThrottling(kThrottleTemp); + ASSERT_TRUE(status.isOk()) << status.getMessage(); ASSERT_TRUE(thermalCallback->waitForCallback(200ms)); } +// Test Thermal->registerThermalChangedCallback. +TEST_P(ThermalAidlTest, RegisterThermalChangedCallbackTest) { + // Expect to fail with same callback + ::ndk::ScopedAStatus status = mThermal->registerThermalChangedCallback(mThermalCallback); + ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); + // Expect to fail with null callback + status = mThermal->registerThermalChangedCallback(nullptr); + ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); + std::shared_ptr localThermalCallback = + ndk::SharedRefBase::make(); + // Expect to succeed with different callback + status = mThermal->registerThermalChangedCallback(localThermalCallback); + ASSERT_TRUE(status.isOk()) << status.getMessage(); + ASSERT_TRUE(localThermalCallback->waitForCallback(200ms)); + // Remove the local callback + status = mThermal->unregisterThermalChangedCallback(localThermalCallback); + ASSERT_TRUE(status.isOk()) << status.getMessage(); + // Expect to fail with null callback + status = mThermal->unregisterThermalChangedCallback(nullptr); + ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); +} + +// Test Thermal->registerThermalChangedCallbackWithType. +TEST_P(ThermalAidlTest, RegisterThermalChangedCallbackWithTypeTest) { + // Expect to fail with same callback + ::ndk::ScopedAStatus status = mThermal->registerThermalChangedCallbackWithType( + mThermalCallback, TemperatureType::SKIN); + ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); + // Expect to fail with null callback + status = mThermal->registerThermalChangedCallbackWithType(nullptr, TemperatureType::SKIN); + ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); + std::shared_ptr localThermalCallback = + ndk::SharedRefBase::make(); + // Expect to succeed with different callback + status = mThermal->registerThermalChangedCallbackWithType(localThermalCallback, + TemperatureType::SKIN); + ASSERT_TRUE(status.isOk()) << status.getMessage(); + ASSERT_TRUE(localThermalCallback->waitForCallback(200ms)); + // Remove the local callback + status = mThermal->unregisterThermalChangedCallback(localThermalCallback); + ASSERT_TRUE(status.isOk()) << status.getMessage(); + // Expect to fail with null callback + status = mThermal->unregisterThermalChangedCallback(nullptr); + ASSERT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode()); +} + +// Test Thermal->getCurrentTemperatures(). +TEST_P(ThermalAidlTest, TemperatureTest) { + std::vector ret; + ::ndk::ScopedAStatus status = mThermal->getTemperatures(&ret); + if (status.isOk()) { + for (auto& i : ret) { + EXPECT_LT(0u, i.name.size()); + LOG(INFO) << i.name + " " + toString(i.type) << "\n"; + } + } else { + ASSERT_EQ(EX_ILLEGAL_STATE, status.getExceptionCode()); + } + + auto types = ::ndk::enum_range(); + for (const auto& type : types) { + status = mThermal->getTemperaturesWithType(type, &ret); + + if (status.isOk()) { + for (auto& i : ret) { + EXPECT_EQ(type, i.type) << "Expect type " + toString(type) + " but got " + + toString(i.type) + " for " + i.name; + EXPECT_LT(0u, i.name.size()); + } + } else { + ASSERT_EQ(EX_ILLEGAL_STATE, status.getExceptionCode()); + } + } +} + +// Test Thermal->getTemperatureThresholds(). +TEST_P(ThermalAidlTest, TemperatureThresholdTest) { + std::vector ret; + ::ndk::ScopedAStatus status = mThermal->getTemperatureThresholds(&ret); + if (status.isOk()) { + for (auto& i : ret) { + EXPECT_LT(0u, i.name.size()); + LOG(INFO) << i.name + " " + toString(i.type) << "\n"; + } + } else { + ASSERT_EQ(EX_ILLEGAL_STATE, status.getExceptionCode()); + } + + auto types = ::ndk::enum_range(); + for (const auto& type : types) { + status = mThermal->getTemperatureThresholdsWithType(type, &ret); + + if (status.isOk()) { + for (auto& i : ret) { + EXPECT_EQ(type, i.type) << "Expect type " + toString(type) + " but got " + + toString(i.type) + " for " + i.name; + EXPECT_LT(0u, i.name.size()); + } + } else { + ASSERT_EQ(EX_ILLEGAL_STATE, status.getExceptionCode()); + } + } +} + +// Test Thermal->getCoolingDevices(). +TEST_P(ThermalAidlTest, CoolingDeviceTest) { + std::vector ret; + ::ndk::ScopedAStatus status = mThermal->getCoolingDevices(&ret); + if (status.isOk()) { + for (auto& i : ret) { + EXPECT_LT(0u, i.name.size()); + LOG(INFO) << i.name + " " + toString(i.type) << "\n"; + } + } else { + ASSERT_EQ(EX_ILLEGAL_STATE, status.getExceptionCode()); + } + + auto types = ::ndk::enum_range(); + for (const auto& type : types) { + status = mThermal->getCoolingDevicesWithType(type, &ret); + if (status.isOk()) { + ASSERT_TRUE(status.isOk()); + for (auto& i : ret) { + EXPECT_EQ(type, i.type) << "Expect type " + toString(type) + " but got " + + toString(i.type) + " for " + i.name; + EXPECT_LT(0u, i.name.size()); + } + } else { + ASSERT_EQ(EX_ILLEGAL_STATE, status.getExceptionCode()); + } + } +} + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ThermalAidlTest); INSTANTIATE_TEST_SUITE_P( Thermal, ThermalAidlTest,