summaryrefslogtreecommitdiffstats
path: root/sensors/1.0/vts
diff options
context:
space:
mode:
authorBrian Stack <bstack@google.com>2018-09-26 16:17:33 -0700
committerBrian Stack <bstack@google.com>2018-10-05 10:03:43 -0700
commitbc5a39bd249b46d6d6528e4489761ef0d8644aef (patch)
tree960b29716e971e2bd28bf2f0401febd17031a33b /sensors/1.0/vts
parentf0dbf813b22624375727f1f50d8d7df6c5dc5a8a (diff)
downloadandroid_hardware_interfaces-bc5a39bd249b46d6d6528e4489761ef0d8644aef.tar.gz
android_hardware_interfaces-bc5a39bd249b46d6d6528e4489761ef0d8644aef.tar.bz2
android_hardware_interfaces-bc5a39bd249b46d6d6528e4489761ef0d8644aef.zip
Create SensorsHidlEnvironmentBase
Move common parts of SensorsHidlEnvironment into a base class so they can be reused with other versions of sensors tests. Bug: 111070257 Test: Builds Change-Id: I1e04e734d00308adff35b9c16de1499573a84b03
Diffstat (limited to 'sensors/1.0/vts')
-rw-r--r--sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.cpp52
-rw-r--r--sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.h39
-rw-r--r--sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp28
3 files changed, 32 insertions, 87 deletions
diff --git a/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.cpp b/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.cpp
index bb478aeac..f8b021e00 100644
--- a/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.cpp
+++ b/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.cpp
@@ -18,30 +18,14 @@
#include <log/log.h>
+#include <vector>
+
using ::android::hardware::hidl_vec;
using ::android::hardware::sensors::V1_0::ISensors;
using ::android::hardware::sensors::V1_0::Result;
using ::android::hardware::sensors::V1_0::SensorInfo;
-void SensorsHidlEnvironment::HidlSetUp() {
- resetHal();
-
- ASSERT_NE(sensors, nullptr) << "sensors is nullptr, cannot get hidl service";
-
- collectionEnabled = false;
- startPollingThread();
-
- // In case framework just stopped for test and there is sensor events in the pipe,
- // wait some time for those events to be cleared to avoid them messing up the test.
- std::this_thread::sleep_for(std::chrono::seconds(3));
-}
-
-void SensorsHidlEnvironment::HidlTearDown() {
- stopThread = true;
- pollThread.detach();
-}
-
-void SensorsHidlEnvironment::resetHal() {
+bool SensorsHidlEnvironmentV1_0::resetHal() {
// wait upto 100ms * 10 = 1s for hidl service.
constexpr auto RETRY_DELAY = std::chrono::milliseconds(100);
@@ -52,7 +36,7 @@ void SensorsHidlEnvironment::resetHal() {
do {
step = "getService()";
sensors = ISensors::getService(
- SensorsHidlEnvironment::Instance()->getServiceName<ISensors>());
+ SensorsHidlEnvironmentV1_0::Instance()->getServiceName<ISensors>());
if (sensors == nullptr) {
break;
}
@@ -97,7 +81,7 @@ void SensorsHidlEnvironment::resetHal() {
} while (0);
if (succeed) {
- return;
+ return true;
}
// Delay 100ms before retry, hidl service is expected to come up in short time after crash.
@@ -106,35 +90,17 @@ void SensorsHidlEnvironment::resetHal() {
}
sensors = nullptr;
+ return false;
}
-void SensorsHidlEnvironment::catEvents(std::vector<Event>* output) {
- std::lock_guard<std::mutex> lock(events_mutex);
- if (output) {
- output->insert(output->end(), events.begin(), events.end());
- }
- events.clear();
-}
-
-void SensorsHidlEnvironment::setCollection(bool enable) {
- std::lock_guard<std::mutex> lock(events_mutex);
- collectionEnabled = enable;
-}
-
-void SensorsHidlEnvironment::addEvent(const Event& ev) {
- std::lock_guard<std::mutex> lock(events_mutex);
- if (collectionEnabled) {
- events.push_back(ev);
- }
-}
-
-void SensorsHidlEnvironment::startPollingThread() {
+void SensorsHidlEnvironmentV1_0::startPollingThread() {
stopThread = false;
pollThread = std::thread(pollingThread, this, std::ref(stopThread));
events.reserve(128);
}
-void SensorsHidlEnvironment::pollingThread(SensorsHidlEnvironment* env, std::atomic_bool& stop) {
+void SensorsHidlEnvironmentV1_0::pollingThread(SensorsHidlEnvironmentV1_0* env,
+ std::atomic_bool& stop) {
ALOGD("polling thread start");
while (!stop) {
diff --git a/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.h b/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.h
index d18461365..0a9e59f21 100644
--- a/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.h
+++ b/sensors/1.0/vts/functional/SensorsHidlEnvironmentV1_0.h
@@ -17,62 +17,43 @@
#ifndef ANDROID_SENSORS_HIDL_ENVIRONMENT_V1_0_H
#define ANDROID_SENSORS_HIDL_ENVIRONMENT_V1_0_H
-#include <VtsHalHidlTargetTestEnvBase.h>
+#include "sensors-vts-utils/SensorsHidlEnvironmentBase.h"
+
#include <android/hardware/sensors/1.0/ISensors.h>
#include <android/hardware/sensors/1.0/types.h>
#include <utils/StrongPointer.h>
#include <atomic>
#include <memory>
-#include <mutex>
-#include <thread>
-#include <vector>
using ::android::sp;
class SensorsHidlTest;
-class SensorsHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase {
+class SensorsHidlEnvironmentV1_0 : public SensorsHidlEnvironmentBase {
public:
using Event = ::android::hardware::sensors::V1_0::Event;
// get the test environment singleton
- static SensorsHidlEnvironment* Instance() {
- static SensorsHidlEnvironment* instance = new SensorsHidlEnvironment();
+ static SensorsHidlEnvironmentV1_0* Instance() {
+ static SensorsHidlEnvironmentV1_0* instance = new SensorsHidlEnvironmentV1_0();
return instance;
}
- virtual void HidlSetUp() override;
- virtual void HidlTearDown() override;
-
virtual void registerTestServices() override {
registerTestService<android::hardware::sensors::V1_0::ISensors>();
}
- // Get and clear all events collected so far (like "cat" shell command).
- // If output is nullptr, it clears all collected events.
- void catEvents(std::vector<Event>* output);
-
- // set sensor event collection status
- void setCollection(bool enable);
-
private:
friend SensorsHidlTest;
// sensors hidl service
sp<android::hardware::sensors::V1_0::ISensors> sensors;
- SensorsHidlEnvironment() {}
-
- void addEvent(const Event& ev);
- void startPollingThread();
- void resetHal();
- static void pollingThread(SensorsHidlEnvironment* env, std::atomic_bool& stop);
+ SensorsHidlEnvironmentV1_0() {}
- bool collectionEnabled;
- std::atomic_bool stopThread;
- std::thread pollThread;
- std::vector<Event> events;
- std::mutex events_mutex;
+ bool resetHal() override;
+ void startPollingThread() override;
+ static void pollingThread(SensorsHidlEnvironmentV1_0* env, std::atomic_bool& stop);
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SensorsHidlEnvironment);
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(SensorsHidlEnvironmentV1_0);
};
#endif // ANDROID_SENSORS_HIDL_ENVIRONMENT_V1_0_H \ No newline at end of file
diff --git a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
index 8e66466f5..54c9497ad 100644
--- a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
+++ b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
@@ -365,9 +365,7 @@ class SensorsHidlTest : public ::testing::VtsHalHidlTargetTestBase {
return S()->configDirectReport(sensorHandle, channelHandle, rate, _hidl_cb);
}
- inline sp<ISensors>& S() {
- return SensorsHidlEnvironment::Instance()->sensors;
- }
+ inline sp<ISensors>& S() { return SensorsHidlEnvironmentV1_0::Instance()->sensors; }
inline static SensorFlagBits extractReportMode(uint64_t flag) {
return (SensorFlagBits) (flag
@@ -453,10 +451,10 @@ std::vector<Event> SensorsHidlTest::collectEvents(useconds_t timeLimitUs, size_t
nEventLimit, timeLimitUs, clearBeforeStart);
if (changeCollection) {
- SensorsHidlEnvironment::Instance()->setCollection(true);
+ SensorsHidlEnvironmentV1_0::Instance()->setCollection(true);
}
if (clearBeforeStart) {
- SensorsHidlEnvironment::Instance()->catEvents(nullptr);
+ SensorsHidlEnvironmentV1_0::Instance()->catEvents(nullptr);
}
while (timeLimitUs > 0) {
@@ -464,7 +462,7 @@ std::vector<Event> SensorsHidlTest::collectEvents(useconds_t timeLimitUs, size_t
usleep(duration);
timeLimitUs -= duration;
- SensorsHidlEnvironment::Instance()->catEvents(&events);
+ SensorsHidlEnvironmentV1_0::Instance()->catEvents(&events);
if (events.size() >= nEventLimit) {
break;
}
@@ -473,7 +471,7 @@ std::vector<Event> SensorsHidlTest::collectEvents(useconds_t timeLimitUs, size_t
}
if (changeCollection) {
- SensorsHidlEnvironment::Instance()->setCollection(false);
+ SensorsHidlEnvironmentV1_0::Instance()->setCollection(false);
}
return events;
}
@@ -1068,7 +1066,7 @@ void SensorsHidlTest::testBatchingOperation(SensorType type) {
// since collection is not enabled all events will go down the drain
usleep(batchingPeriodInNs / 1000 * 8 / 10);
- SensorsHidlEnvironment::Instance()->setCollection(true);
+ SensorsHidlEnvironmentV1_0::Instance()->setCollection(true);
// clean existing collections
collectEvents(0 /*timeLimitUs*/, 0/*nEventLimit*/,
true /*clearBeforeStart*/, false /*change collection*/);
@@ -1081,7 +1079,7 @@ void SensorsHidlTest::testBatchingOperation(SensorType type) {
events = collectEvents(allowedBatchDeliverTimeNs / 1000,
minFifoCount, false /*clearBeforeStart*/, false /*change collection*/);
- SensorsHidlEnvironment::Instance()->setCollection(false);
+ SensorsHidlEnvironmentV1_0::Instance()->setCollection(false);
ASSERT_EQ(activate(handle, 0), Result::OK);
size_t nEvent = 0;
@@ -1337,11 +1335,11 @@ TEST_F(SensorsHidlTest, MagnetometerGrallocDirectReportOperationVeryFast) {
}
int main(int argc, char **argv) {
- ::testing::AddGlobalTestEnvironment(SensorsHidlEnvironment::Instance());
- ::testing::InitGoogleTest(&argc, argv);
- SensorsHidlEnvironment::Instance()->init(&argc, argv);
- int status = RUN_ALL_TESTS();
- ALOGI("Test result = %d", status);
- return status;
+ ::testing::AddGlobalTestEnvironment(SensorsHidlEnvironmentV1_0::Instance());
+ ::testing::InitGoogleTest(&argc, argv);
+ SensorsHidlEnvironmentV1_0::Instance()->init(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
}
// vim: set ts=2 sw=2