AudioControl: add version check for module change callback APIs

With Stable-AIDL structure, we have the same VTS test serving
multiple versions. It is possible that vendors implement older
version on the latest tree.

Therefore, the new API tests should not add new requirements on
older versions. Protect the new tests with version check to
ensure they are only executed if meeting version requirements.

Bug: 281945739
Test: run vts --module VtsAidlHalAudioControlTest
Change-Id: Ia186313088a3e8551b11a92259667edd0c6a3878
This commit is contained in:
Raj Goparaju
2023-05-13 13:07:41 -07:00
parent 7b8c1f81e1
commit 4a118d4e10

View File

@@ -53,17 +53,25 @@ using namespace android::audio::policy::configuration::V7_0;
namespace audiohalcommon = android::hardware::audio::common;
namespace audiomediacommon = android::media::audio::common;
namespace {
constexpr int32_t kAidlVersionThree = 3;
}
class AudioControlAidl : public testing::TestWithParam<std::string> {
public:
virtual void SetUp() override {
audioControl = android::waitForDeclaredService<IAudioControl>(String16(GetParam().c_str()));
ASSERT_NE(audioControl, nullptr);
aidlVersion = audioControl->getInterfaceVersion();
}
void TearDown() override { audioControl = nullptr; }
bool isAidlVersionAtleast(int version) const { return aidlVersion >= version; }
sp<IAudioControl> audioControl;
int32_t capabilities;
int32_t aidlVersion;
};
TEST_P(AudioControlAidl, OnSetFadeTowardsFront) {
@@ -250,6 +258,11 @@ struct ModuleChangeCallbackMock : BnModuleChangeCallback {
TEST_P(AudioControlAidl, RegisterModuleChangeCallbackTwiceThrowsException) {
ALOGI("Register Module change callback test");
if (!isAidlVersionAtleast(kAidlVersionThree)) {
GTEST_SKIP() << "Device does not support the new APIs for module change callback";
return;
}
// make sure no stale callbacks.
audioControl->clearModuleChangeCallback();
@@ -269,6 +282,11 @@ TEST_P(AudioControlAidl, RegisterModuleChangeCallbackTwiceThrowsException) {
TEST_P(AudioControlAidl, RegisterModuleChangeNullCallbackThrowsException) {
ALOGI("Register Module change callback with nullptr test");
if (!isAidlVersionAtleast(kAidlVersionThree)) {
GTEST_SKIP() << "Device does not support the new APIs for module change callback";
return;
}
auto status = audioControl->setModuleChangeCallback(nullptr);
EXPECT_THAT(status.exceptionCode(),
AnyOf(Eq(Status::EX_ILLEGAL_ARGUMENT), Eq(Status::EX_UNSUPPORTED_OPERATION)));