1d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil/* 2d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * Copyright (C) 2017 The Android Open Source Project 3d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * 4d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * Licensed under the Apache License, Version 2.0 (the "License"); 5d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * you may not use this file except in compliance with the License. 6d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * You may obtain a copy of the License at 7d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * 8d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * http://www.apache.org/licenses/LICENSE-2.0 9d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * 10d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * Unless required by applicable law or agreed to in writing, software 11d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * distributed under the License is distributed on an "AS IS" BASIS, 12d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * See the License for the specific language governing permissions and 14d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * limitations under the License. 15d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil */ 16d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 17d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil#define LOG_TAG "health_hidl_hal_test" 18d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 19d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil#include <android/hardware/health/1.0/IHealth.h> 20d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil#include <android/hardware/health/1.0/types.h> 21d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil#include <log/log.h> 2291456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang 23d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil#include <VtsHalHidlTargetTestBase.h> 2491456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang#include <VtsHalHidlTargetTestEnvBase.h> 25d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 26d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilusing HealthConfig = ::android::hardware::health::V1_0::HealthConfig; 27d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilusing HealthInfo = ::android::hardware::health::V1_0::HealthInfo; 28d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilusing IHealth = ::android::hardware::health::V1_0::IHealth; 29d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilusing Result = ::android::hardware::health::V1_0::Result; 30d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 31d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilusing ::android::sp; 32d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 3391456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang// Test environment for Health HIDL HAL. 3491456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhangclass HealthHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { 3591456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang public: 3691456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang // get the test environment singleton 3791456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang static HealthHidlEnvironment* Instance() { 3891456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang static HealthHidlEnvironment* instance = new HealthHidlEnvironment; 3991456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang return instance; 4091456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang } 4191456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang 4291456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang virtual void registerTestServices() override { registerTestService<IHealth>(); } 4391456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang private: 4491456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang HealthHidlEnvironment() {} 4591456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang}; 4691456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang 47d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilclass HealthHidlTest : public ::testing::VtsHalHidlTargetTestBase { 48d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil public: 49d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil virtual void SetUp() override { 5091456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang health = ::testing::VtsHalHidlTargetTestBase::getService<IHealth>( 5191456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang HealthHidlEnvironment::Instance()->getServiceName<IHealth>()); 52d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil ASSERT_NE(health, nullptr); 53d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil health->init(config, 54d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil [&](const auto& halConfigOut) { config = halConfigOut; }); 55d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil } 56d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 57d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil sp<IHealth> health; 58d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil HealthConfig config; 59d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil}; 60d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 61d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil/** 62d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil * Ensure EnergyCounter call returns positive energy counter or NOT_SUPPORTED 63d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil */ 64d22e2c5a87464ca252d088621abf0a9384f54618Sandeep PatilTEST_F(HealthHidlTest, TestEnergyCounter) { 65d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil Result result; 66d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil int64_t energy = 0; 67d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil health->energyCounter([&](Result ret, int64_t energyOut) { 68d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil result = ret; 69d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil energy = energyOut; 70d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil }); 71d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 72d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil ASSERT_TRUE(result == Result::SUCCESS || result == Result::NOT_SUPPORTED); 73d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil ASSERT_TRUE(result != Result::SUCCESS || energy > 0); 74d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil} 75d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil 76d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patilint main(int argc, char **argv) { 7791456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang ::testing::AddGlobalTestEnvironment(HealthHidlEnvironment::Instance()); 78d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil ::testing::InitGoogleTest(&argc, argv); 7991456084c29c6f4a3f629d7c44631ee3ee3b29e6Zhuoyao Zhang HealthHidlEnvironment::Instance()->init(&argc, argv); 80d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil int status = RUN_ALL_TESTS(); 81d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil ALOGI("Test result = %d", status); 82d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil return status; 83d22e2c5a87464ca252d088621abf0a9384f54618Sandeep Patil} 84