mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Merge "Fix assumptions in SensorsHidlTest.NoStaleEvents" into qt-dev
am: 0436097a3f
Change-Id: I1d030066a0542784b173ce7aa0505a4844f4af0b
This commit is contained in:
@@ -173,6 +173,7 @@ class SensorsHidlTest : public SensorsHidlTestBase {
|
||||
// Helper functions
|
||||
void activateAllSensors(bool enable);
|
||||
std::vector<SensorInfo> getNonOneShotSensors();
|
||||
std::vector<SensorInfo> getNonOneShotAndNonSpecialSensors();
|
||||
std::vector<SensorInfo> getOneShotSensors();
|
||||
std::vector<SensorInfo> getInjectEventSensors();
|
||||
int32_t getInvalidSensorHandle();
|
||||
@@ -255,6 +256,18 @@ std::vector<SensorInfo> SensorsHidlTest::getNonOneShotSensors() {
|
||||
return sensors;
|
||||
}
|
||||
|
||||
std::vector<SensorInfo> SensorsHidlTest::getNonOneShotAndNonSpecialSensors() {
|
||||
std::vector<SensorInfo> sensors;
|
||||
for (const SensorInfo& info : getSensorsList()) {
|
||||
SensorFlagBits reportMode = extractReportMode(info.flags);
|
||||
if (reportMode != SensorFlagBits::ONE_SHOT_MODE &&
|
||||
reportMode != SensorFlagBits::SPECIAL_REPORTING_MODE) {
|
||||
sensors.push_back(info);
|
||||
}
|
||||
}
|
||||
return sensors;
|
||||
}
|
||||
|
||||
std::vector<SensorInfo> SensorsHidlTest::getOneShotSensors() {
|
||||
std::vector<SensorInfo> sensors;
|
||||
for (const SensorInfo& info : getSensorsList()) {
|
||||
@@ -833,9 +846,10 @@ TEST_F(SensorsHidlTest, NoStaleEvents) {
|
||||
EventCallback callback;
|
||||
getEnvironment()->registerCallback(&callback);
|
||||
|
||||
const std::vector<SensorInfo> sensors = getSensorsList();
|
||||
// This test is not valid for one-shot or special-report-mode sensors
|
||||
const std::vector<SensorInfo> sensors = getNonOneShotAndNonSpecialSensors();
|
||||
int32_t maxMinDelay = 0;
|
||||
for (const SensorInfo& sensor : getSensorsList()) {
|
||||
for (const SensorInfo& sensor : sensors) {
|
||||
maxMinDelay = std::max(maxMinDelay, sensor.minDelay);
|
||||
}
|
||||
|
||||
@@ -851,9 +865,14 @@ TEST_F(SensorsHidlTest, NoStaleEvents) {
|
||||
// Save the last received event for each sensor
|
||||
std::map<int32_t, int64_t> lastEventTimestampMap;
|
||||
for (const SensorInfo& sensor : sensors) {
|
||||
ASSERT_GE(callback.getEvents(sensor.sensorHandle).size(), 1);
|
||||
lastEventTimestampMap[sensor.sensorHandle] =
|
||||
callback.getEvents(sensor.sensorHandle).back().timestamp;
|
||||
// Some on-change sensors may not report an event without stimulus
|
||||
if (extractReportMode(sensor.flags) != SensorFlagBits::ON_CHANGE_MODE) {
|
||||
ASSERT_GE(callback.getEvents(sensor.sensorHandle).size(), 1);
|
||||
}
|
||||
if (callback.getEvents(sensor.sensorHandle).size() >= 1) {
|
||||
lastEventTimestampMap[sensor.sensorHandle] =
|
||||
callback.getEvents(sensor.sensorHandle).back().timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
// Allow some time to pass, reset the callback, then reactivate the sensors
|
||||
@@ -864,6 +883,14 @@ TEST_F(SensorsHidlTest, NoStaleEvents) {
|
||||
activateAllSensors(false);
|
||||
|
||||
for (const SensorInfo& sensor : sensors) {
|
||||
// Skip sensors that did not previously report an event
|
||||
if (lastEventTimestampMap.find(sensor.sensorHandle) == lastEventTimestampMap.end()) {
|
||||
continue;
|
||||
}
|
||||
// Skip on-change sensors that do not consistently report an initial event
|
||||
if (callback.getEvents(sensor.sensorHandle).size() < 1) {
|
||||
continue;
|
||||
}
|
||||
// Ensure that the first event received is not stale by ensuring that its timestamp is
|
||||
// sufficiently different from the previous event
|
||||
const Event newEvent = callback.getEvents(sensor.sensorHandle).front();
|
||||
|
||||
Reference in New Issue
Block a user