Add VTS to check temperature and thresholds are set for SKIN type

The test will only run if the product or board first API level is >= 35.

Bug: b/288119641
Bug: b/302018405
Test: atest VtsHalThermalTargetTest
Change-Id: I0954e23ea674cdc5f92842f7f72a66334deb386c
This commit is contained in:
Xiang Wang 2023-09-12 17:29:38 -07:00
parent 1e2411c737
commit e88a10c8e0

View file

@ -20,6 +20,7 @@
#include <memory>
#include <string>
#include <thread>
#include <unordered_map>
#include <vector>
#define LOG_TAG "thermal_aidl_hal_test"
@ -227,6 +228,49 @@ TEST_P(ThermalAidlTest, TemperatureThresholdTest) {
}
}
// Test Thermal->getTemperatureThresholdsWithType(SKIN).
// @VsrTest = GMS-VSR-3.2.5-001
// @VsrTest = VSR-3.2.5-001
// @VsrTest = GMS-VSR-3.2.5-002
// @VsrTest = VSR-3.2.5-002
TEST_P(ThermalAidlTest, SkinTemperatureThresholdsTest) {
auto apiLevel = ::android::base::GetIntProperty<int32_t>("ro.vendor.api_level", 0);
if (apiLevel < 35) {
GTEST_SKIP() << "Skipping test as the vendor level is below 35: " << apiLevel;
}
std::vector<Temperature> temperatures;
::ndk::ScopedAStatus status =
mThermal->getTemperaturesWithType(TemperatureType::SKIN, &temperatures);
ASSERT_TRUE(status.isOk()) << "getTemperaturesWithType(SKIN) failed";
ASSERT_FALSE(temperatures.empty()) << "getTemperaturesWithType(SKIN) returns empty";
ASSERT_EQ(1, temperatures.size())
<< "getTemperaturesWithType(SKIN) returns multiple temperatures";
std::vector<TemperatureThreshold> thresholds;
status = mThermal->getTemperatureThresholdsWithType(TemperatureType::SKIN, &thresholds);
ASSERT_TRUE(status.isOk()) << "getTemperatureThresholdsWithType(SKIN) failed";
ASSERT_FALSE(thresholds.empty()) << "getTemperatureThresholdsWithType(SKIN) returns empty";
ASSERT_EQ(1, thresholds.size())
<< "getTemperatureThresholdsWithType(SKIN) returns multiple thresholds";
auto temperature = temperatures[0];
auto threshold = thresholds[0];
ASSERT_EQ(temperature.name, threshold.name);
auto severities = ::ndk::enum_range<ThrottlingSeverity>();
auto cardinality = std::distance(severities.begin(), severities.end());
ASSERT_NE(NAN, temperature.value);
ASSERT_EQ(cardinality, threshold.hotThrottlingThresholds.size());
float lastThreshold = threshold.hotThrottlingThresholds[1];
// skip NONE, and check that the rest should be set and non-decreasing
for (auto i = 2; i < cardinality; i++) {
float t = threshold.hotThrottlingThresholds[i];
ASSERT_NE(NAN, t);
ASSERT_TRUE(t >= lastThreshold) << "Temperature thresholds should be non-decreasing "
<< "but got " << t << " for status " << i << " and "
<< lastThreshold << " for status " << i - 1;
lastThreshold = t;
}
}
// Test Thermal->getCoolingDevices().
TEST_P(ThermalAidlTest, CoolingDeviceTest) {
std::vector<CoolingDevice> ret;