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

Commit 41db0933 authored by Matthew Sedam's avatar Matthew Sedam
Browse files

ContextHub VTS: Only enable test mode when needed

Test mode is only needed for the following scenarios:

1. Testing test mode itself.
2. Testing the endpoint discovery APIs on cuttlefish.

Since all other tests do not involve nanoapps, we do not
enable test mode to save execution time.

Bug: 379342519
Change-Id: I8f7d7bfb04fbb0856665bc8470dac7e9bbd3fe34
Flag: TEST_ONLY
Test: atest VtsAidlHalContextHubTargetTest
parent b2ae164e
Loading
Loading
Loading
Loading
+31 −16
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ using ::android::hardware::contexthub::vts_utils::waitForCallback;
// 6612b522-b717-41c8-b48d-c0b1cc64e142
constexpr std::array<uint8_t, 16> kUuid = {0x66, 0x12, 0xb5, 0x22, 0xb7, 0x17, 0x41, 0xc8,
                                           0xb4, 0x8d, 0xc0, 0xb1, 0xcc, 0x64, 0xe1, 0x42};

const String16 kName{"VtsAidlHalContextHubTargetTest"};

const String16 kEchoServiceName{"android.hardware.contexthub.test.EchoService"};
@@ -72,19 +73,29 @@ class ContextHubAidl : public testing::TestWithParam<std::tuple<std::string, int
        contextHub = android::waitForDeclaredService<IContextHub>(
                String16(std::get<0>(GetParam()).c_str()));
        ASSERT_NE(contextHub, nullptr);

        // Best effort enable test mode - this may not be supported on older HALS, so we
        // ignore the return value.
        contextHub->setTestMode(/* enable= */ true);
    }

    virtual void TearDown() override { contextHub->setTestMode(/* enable= */ false); }

    uint32_t getHubId() { return std::get<1>(GetParam()); }

    sp<IContextHub> contextHub;

    void testSettingChanged(Setting setting);
};

    sp<IContextHub> contextHub;
class ContextHubAidlWithTestMode : public ContextHubAidl {
  public:
    virtual void SetUp() override {
        ContextHubAidl::SetUp();

        // Best effort enable test mode - this may not be supported on older HALS, so we
        // ignore the return value.
        contextHub->setTestMode(/* enable= */ true);
    }

    virtual void TearDown() override {
        contextHub->setTestMode(/* enable= */ false);
        ContextHubAidl::TearDown();
    }
};

TEST_P(ContextHubAidl, TestGetHubs) {
@@ -546,7 +557,7 @@ class TestEndpointCallback : public BnEndpointCallback {
    bool mWasOnEndpointSessionOpenCompleteCalled = false;
};

TEST_P(ContextHubAidl, RegisterEndpoint) {
TEST_P(ContextHubAidlWithTestMode, RegisterEndpoint) {
    EndpointInfo endpointInfo;
    endpointInfo.id.id = 1;
    endpointInfo.id.hubId = 0xCAFECAFECAFECAFE;
@@ -563,7 +574,7 @@ TEST_P(ContextHubAidl, RegisterEndpoint) {
    }
}

TEST_P(ContextHubAidl, RegisterEndpointSameNameFailure) {
TEST_P(ContextHubAidlWithTestMode, RegisterEndpointSameNameFailure) {
    EndpointInfo endpointInfo;
    endpointInfo.id.id = 2;
    endpointInfo.id.hubId = 0xCAFECAFECAFECAFE;
@@ -589,7 +600,7 @@ TEST_P(ContextHubAidl, RegisterEndpointSameNameFailure) {
    EXPECT_FALSE(contextHub->registerEndpoint(endpointInfo2).isOk());
}

TEST_P(ContextHubAidl, RegisterEndpointSameIdFailure) {
TEST_P(ContextHubAidlWithTestMode, RegisterEndpointSameIdFailure) {
    EndpointInfo endpointInfo;
    endpointInfo.id.id = 4;
    endpointInfo.id.hubId = 0xCAFECAFECAFECAFE;
@@ -615,7 +626,7 @@ TEST_P(ContextHubAidl, RegisterEndpointSameIdFailure) {
    EXPECT_FALSE(contextHub->registerEndpoint(endpointInfo2).isOk());
}

TEST_P(ContextHubAidl, UnregisterEndpoint) {
TEST_P(ContextHubAidlWithTestMode, UnregisterEndpoint) {
    EndpointInfo endpointInfo;
    endpointInfo.id.id = 6;
    endpointInfo.id.hubId = 0xCAFECAFECAFECAFE;
@@ -634,7 +645,7 @@ TEST_P(ContextHubAidl, UnregisterEndpoint) {
    EXPECT_TRUE(contextHub->unregisterEndpoint(endpointInfo).isOk());
}

TEST_P(ContextHubAidl, UnregisterEndpointNonexistent) {
TEST_P(ContextHubAidlWithTestMode, UnregisterEndpointNonexistent) {
    EndpointInfo endpointInfo;
    endpointInfo.id.id = 100;
    endpointInfo.id.hubId = 0xCAFECAFECAFECAFE;
@@ -651,7 +662,7 @@ TEST_P(ContextHubAidl, UnregisterEndpointNonexistent) {
    }
}

TEST_P(ContextHubAidl, RegisterCallback) {
TEST_P(ContextHubAidlWithTestMode, RegisterEndpointCallback) {
    auto cb = sp<TestEndpointCallback>::make();
    Status status = contextHub->registerEndpointCallback(cb);
    if (status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
@@ -662,7 +673,7 @@ TEST_P(ContextHubAidl, RegisterCallback) {
    }
}

TEST_P(ContextHubAidl, OpenEndpointSessionInvalidRange) {
TEST_P(ContextHubAidlWithTestMode, OpenEndpointSessionInvalidRange) {
    auto cb = sp<TestEndpointCallback>::make();
    Status status = contextHub->registerEndpointCallback(cb);
    if (status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
@@ -713,7 +724,7 @@ TEST_P(ContextHubAidl, OpenEndpointSessionInvalidRange) {
                         .isOk());
}

TEST_P(ContextHubAidl, OpenEndpointSessionAndSendMessageEchoesBack) {
TEST_P(ContextHubAidlWithTestMode, OpenEndpointSessionAndSendMessageEchoesBack) {
    auto cb = sp<TestEndpointCallback>::make();
    Status status = contextHub->registerEndpointCallback(cb);
    if (status.exceptionCode() == Status::EX_UNSUPPORTED_OPERATION ||
@@ -789,13 +800,17 @@ GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ContextHubAidl);
INSTANTIATE_TEST_SUITE_P(ContextHub, ContextHubAidl, testing::ValuesIn(generateContextHubMapping()),
                         PrintGeneratedTest);

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ContextHubAidlWithTestMode);
INSTANTIATE_TEST_SUITE_P(ContextHub, ContextHubAidlWithTestMode,
                         testing::ValuesIn(generateContextHubMapping()), PrintGeneratedTest);

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ContextHubTransactionTest);
INSTANTIATE_TEST_SUITE_P(ContextHub, ContextHubTransactionTest,
                         testing::ValuesIn(generateContextHubMapping()), PrintGeneratedTest);

int main(int argc, char** argv) {
    ::testing::InitGoogleTest(&argc, argv);
    ProcessState::self()->setThreadPoolMaxThreadCount(1);
    ProcessState::self()->setThreadPoolMaxThreadCount(2);
    ProcessState::self()->startThreadPool();
    return RUN_ALL_TESTS();
}