Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6c4cb7b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix vibrator VTS failure on older HAL versions" into sc-dev am: 5fe68156 am: 72d5d90b

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/14937086

Change-Id: I04dd9049ff068e14d44508b6271d3c6217cbf375
parents 74f2750d 72d5d90b
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -71,6 +71,11 @@ class VibratorAidl : public testing::TestWithParam<std::string> {
    std::vector<int32_t> vibratorIds;
};

inline bool isUnknownOrUnsupported(Status status) {
    return status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
           status.transactionError() == android::UNKNOWN_TRANSACTION;
}

TEST_P(VibratorAidl, ValidateExistingVibrators) {
    sp<IVibrator> vibrator;
    for (auto& id : vibratorIds) {
@@ -101,8 +106,8 @@ TEST_P(VibratorAidl, PrepareSyncedEmptySetIsInvalid) {

TEST_P(VibratorAidl, PrepareSyncedNotSupported) {
    if (!(capabilities & IVibratorManager::CAP_SYNC)) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  manager->prepareSynced(vibratorIds).exceptionCode());
        Status status = manager->prepareSynced(vibratorIds);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -116,8 +121,8 @@ TEST_P(VibratorAidl, PrepareOnNotSupported) {
        for (auto& id : vibratorIds) {
            EXPECT_TRUE(manager->getVibrator(id, &vibrator).isOk());
            ASSERT_NE(vibrator, nullptr);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                      vibrator->on(durationMs, nullptr).exceptionCode());
            Status status = vibrator->on(durationMs, nullptr);
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
        EXPECT_TRUE(manager->cancelSynced().isOk());
    }
@@ -134,7 +139,7 @@ TEST_P(VibratorAidl, PreparePerformNotSupported) {
            ASSERT_NE(vibrator, nullptr);
            int32_t lengthMs = 0;
            Status status = vibrator->perform(kEffects[0], kEffectStrengths[0], nullptr, &lengthMs);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
        EXPECT_TRUE(manager->cancelSynced().isOk());
    }
@@ -157,7 +162,7 @@ TEST_P(VibratorAidl, PrepareComposeNotSupported) {
            EXPECT_TRUE(manager->getVibrator(id, &vibrator).isOk());
            ASSERT_NE(vibrator, nullptr);
            Status status = vibrator->compose(composite, nullptr);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
        EXPECT_TRUE(manager->cancelSynced().isOk());
    }
@@ -191,8 +196,8 @@ TEST_P(VibratorAidl, TriggerWithCallback) {

TEST_P(VibratorAidl, TriggerSyncNotSupported) {
    if (!(capabilities & IVibratorManager::CAP_SYNC)) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  manager->triggerSynced(nullptr).exceptionCode());
        Status status = manager->triggerSynced(nullptr);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -201,8 +206,8 @@ TEST_P(VibratorAidl, TriggerCallbackNotSupported) {
    if (!(capabilities & IVibratorManager::CAP_TRIGGER_CALLBACK)) {
        sp<CompletionCallback> callback = new CompletionCallback([] {});
        EXPECT_TRUE(manager->prepareSynced(vibratorIds).isOk());
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  manager->triggerSynced(callback).exceptionCode());
        Status status = manager->triggerSynced(callback);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

+31 −24
Original line number Diff line number Diff line
@@ -112,6 +112,11 @@ class VibratorAidl : public testing::TestWithParam<std::tuple<int32_t, int32_t>>
    int32_t capabilities;
};

inline bool isUnknownOrUnsupported(Status status) {
    return status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
           status.transactionError() == android::UNKNOWN_TRANSACTION;
}

static float getResonantFrequencyHz(sp<IVibrator> vibrator, int32_t capabilities) {
    float resonantFrequencyHz;
    Status status = vibrator->getResonantFrequency(&resonantFrequencyHz);
@@ -119,7 +124,7 @@ static float getResonantFrequencyHz(sp<IVibrator> vibrator, int32_t capabilities
        EXPECT_GT(resonantFrequencyHz, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
    return resonantFrequencyHz;
}
@@ -131,7 +136,7 @@ static float getFrequencyResolutionHz(sp<IVibrator> vibrator, int32_t capabiliti
        EXPECT_GT(freqResolutionHz, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
    return freqResolutionHz;
}
@@ -147,7 +152,7 @@ static float getFrequencyMinimumHz(sp<IVibrator> vibrator, int32_t capabilities)
        EXPECT_GT(freqMinimumHz, 0);
        EXPECT_LE(freqMinimumHz, resonantFrequencyHz);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
    return freqMinimumHz;
}
@@ -158,7 +163,7 @@ static float getFrequencyMaximumHz(sp<IVibrator> vibrator, int32_t capabilities)
    if (capabilities & IVibrator::CAP_FREQUENCY_CONTROL) {
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }

    float freqMaximumHz =
@@ -219,7 +224,8 @@ TEST_P(VibratorAidl, OnWithCallback) {
TEST_P(VibratorAidl, OnCallbackNotSupported) {
    if (!(capabilities & IVibrator::CAP_ON_CALLBACK)) {
        sp<CompletionCallback> callback = new CompletionCallback([] {});
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, vibrator->on(250, callback).exceptionCode());
        Status status = vibrator->on(250, callback);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -240,8 +246,8 @@ TEST_P(VibratorAidl, ValidateEffect) {
                EXPECT_GT(lengthMs, 0);
                usleep(lengthMs * 1000);
            } else {
                EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION)
                    << toString(effect) << " " << toString(strength);
                EXPECT_TRUE(isUnknownOrUnsupported(status))
                        << status << " " << toString(effect) << " " << toString(strength);
            }
        }
    }
@@ -270,7 +276,7 @@ TEST_P(VibratorAidl, ValidateEffectWithCallback) {
                EXPECT_TRUE(status.isOk());
                EXPECT_GT(lengthMs, 0);
            } else {
                EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
                EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            }

            if (!status.isOk())
@@ -293,7 +299,7 @@ TEST_P(VibratorAidl, ValidateEffectWithCallbackNotSupported) {
            sp<CompletionCallback> callback = new CompletionCallback([] {});
            int lengthMs;
            Status status = vibrator->perform(effect, strength, callback, &lengthMs);
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
        }
    }
}
@@ -311,8 +317,8 @@ TEST_P(VibratorAidl, InvalidEffectsUnsupported) {
        for (EffectStrength strength : kInvalidEffectStrengths) {
            int32_t lengthMs;
            Status status = vibrator->perform(effect, strength, nullptr /*callback*/, &lengthMs);
            EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION)
                << toString(effect) << " " << toString(strength);
            EXPECT_TRUE(isUnknownOrUnsupported(status))
                    << status << " " << toString(effect) << " " << toString(strength);
        }
    }
}
@@ -338,7 +344,8 @@ TEST_P(VibratorAidl, AmplitudeOutsideRangeFails) {

TEST_P(VibratorAidl, AmplitudeReturnsUnsupportedMatchingCapabilities) {
    if ((capabilities & IVibrator::CAP_AMPLITUDE_CONTROL) == 0) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, vibrator->setAmplitude(1).exceptionCode());
        Status status = vibrator->setAmplitude(1);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -362,7 +369,7 @@ TEST_P(VibratorAidl, ExternalAmplitudeControl) {
        if (supportsExternalAmplitudeControl) {
            EXPECT_TRUE(amplitudeStatus.isOk());
        } else {
            EXPECT_EQ(amplitudeStatus.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
            EXPECT_TRUE(isUnknownOrUnsupported(amplitudeStatus)) << amplitudeStatus;
        }
        EXPECT_TRUE(vibrator->setExternalControl(false).isOk());
    } else {
@@ -372,8 +379,8 @@ TEST_P(VibratorAidl, ExternalAmplitudeControl) {

TEST_P(VibratorAidl, ExternalControlUnsupportedMatchingCapabilities) {
    if ((capabilities & IVibrator::CAP_EXTERNAL_CONTROL) == 0) {
        EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                  vibrator->setExternalControl(true).exceptionCode());
        Status status = vibrator->setExternalControl(true);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -410,7 +417,7 @@ TEST_P(VibratorAidl, GetPrimitiveDuration) {
            if (isPrimitiveSupported) {
                EXPECT_EQ(Status::EX_NONE, status.exceptionCode());
            } else {
                EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode());
                EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            }
        }
    }
@@ -473,8 +480,8 @@ TEST_P(VibratorAidl, ComposeUnsupportedPrimitives) {
                effect.primitive = primitive;
                effect.scale = 1.0f;
            }
            EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION,
                      vibrator->compose(composite, nullptr).exceptionCode());
            Status status = vibrator->compose(composite, nullptr);
            EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            vibrator->off();
        }
    }
@@ -618,8 +625,8 @@ TEST_P(VibratorAidl, AlwaysOn) {
                    EXPECT_EQ(Status::EX_NONE, status.exceptionCode())
                        << toString(effect) << " " << toString(strength);
                } else {
                    EXPECT_EQ(Status::EX_UNSUPPORTED_OPERATION, status.exceptionCode())
                        << toString(effect) << " " << toString(strength);
                    EXPECT_TRUE(isUnknownOrUnsupported(status))
                            << status << " " << toString(effect) << " " << toString(strength);
                }
            }
        }
@@ -639,7 +646,7 @@ TEST_P(VibratorAidl, GetQFactor) {
        ASSERT_GT(qFactor, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -668,7 +675,7 @@ TEST_P(VibratorAidl, GetBandwidthAmplitudeMap) {
            ASSERT_LE(e, 1.0);
        }
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -690,7 +697,7 @@ TEST_P(VibratorAidl, GetPwleCompositionSizeMax) {
        ASSERT_NE(maxSize, 0);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}

@@ -703,7 +710,7 @@ TEST_P(VibratorAidl, GetSupportedBraking) {
        ASSERT_TRUE(isDefaultNoneSupported);
        EXPECT_EQ(status.exceptionCode(), Status::EX_NONE);
    } else {
        EXPECT_EQ(status.exceptionCode(), Status::EX_UNSUPPORTED_OPERATION);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
    }
}