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

Commit 87d8a5be authored by Gabriel Biren's avatar Gabriel Biren
Browse files

Add VTS tests for the USD methods.

Bug: 386810503
Test: atest VtsHalWifiSupplicantStaIfaceTargetTest
Change-Id: I088c1cfa2f2e7ee1328a091ca91d61334e610447
parent c96df1bc
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
@@ -47,8 +47,12 @@ using aidl::android::hardware::wifi::supplicant::MscsParams;
using aidl::android::hardware::wifi::supplicant::QosCharacteristics;
using aidl::android::hardware::wifi::supplicant::QosPolicyScsData;
using aidl::android::hardware::wifi::supplicant::QosPolicyScsRequestStatus;
using aidl::android::hardware::wifi::supplicant::UsdBaseConfig;
using aidl::android::hardware::wifi::supplicant::UsdCapabilities;
using aidl::android::hardware::wifi::supplicant::UsdMessageInfo;
using aidl::android::hardware::wifi::supplicant::UsdPublishConfig;
using aidl::android::hardware::wifi::supplicant::UsdServiceDiscoveryInfo;
using aidl::android::hardware::wifi::supplicant::UsdSubscribeConfig;
using aidl::android::hardware::wifi::supplicant::UsdTerminateReasonCode;
using aidl::android::hardware::wifi::supplicant::WpaDriverCapabilitiesMask;
using aidl::android::hardware::wifi::supplicant::WpsConfigMethods;
@@ -878,6 +882,68 @@ TEST_P(SupplicantStaIfaceAidlTest, AddAndRemoveQosWithTrafficChars) {
    EXPECT_EQ(1, responseList.size());
}

/*
 * Verify that all USD methods check the Service Specific Info (SSI) length
 * and fail if the provided SSI is too long.
 */
TEST_P(SupplicantStaIfaceAidlTest, InvalidUsdServiceSpecificInfo) {
    if (interface_version_ < 4) {
        GTEST_SKIP() << "USD is available as of Supplicant V4";
    }

    UsdCapabilities caps;
    EXPECT_TRUE(sta_iface_->getUsdCapabilities(&caps).isOk());
    if (!caps.isUsdPublisherSupported && !caps.isUsdSubscriberSupported) {
        GTEST_SKIP() << "USD publish and subscribe are not supported";
    }

    int commandId = 123;
    std::vector<uint8_t> invalidSsi(caps.maxLocalSsiLengthBytes + 1);
    UsdBaseConfig invalidBaseConfig;
    invalidBaseConfig.serviceSpecificInfo = invalidSsi;

    if (caps.isUsdPublisherSupported) {
        UsdPublishConfig publishConfig;
        publishConfig.usdBaseConfig = invalidBaseConfig;
        EXPECT_FALSE(sta_iface_->startUsdPublish(commandId, publishConfig).isOk());
        EXPECT_FALSE(sta_iface_->updateUsdPublish(commandId, invalidSsi).isOk());
    }

    if (caps.isUsdSubscriberSupported) {
        UsdSubscribeConfig subscribeConfig;
        subscribeConfig.usdBaseConfig = invalidBaseConfig;
        EXPECT_FALSE(sta_iface_->startUsdSubscribe(commandId, subscribeConfig).isOk());
    }

    UsdMessageInfo messageInfo;
    messageInfo.message = invalidSsi;
    EXPECT_FALSE(sta_iface_->sendUsdMessage(messageInfo).isOk());
}

/*
 * Cancel a USD Publish and Subscribe session.
 */
TEST_P(SupplicantStaIfaceAidlTest, CancelUsdSession) {
    if (interface_version_ < 4) {
        GTEST_SKIP() << "USD is available as of Supplicant V4";
    }

    UsdCapabilities caps;
    EXPECT_TRUE(sta_iface_->getUsdCapabilities(&caps).isOk());
    if (!caps.isUsdPublisherSupported && !caps.isUsdSubscriberSupported) {
        GTEST_SKIP() << "USD publish and subscribe are not supported";
    }

    int sessionId = 123;
    if (caps.isUsdPublisherSupported) {
        // Method is expected to succeed, even if the session does not exist.
        EXPECT_TRUE(sta_iface_->cancelUsdPublish(sessionId).isOk());
    }
    if (caps.isUsdSubscriberSupported) {
        EXPECT_TRUE(sta_iface_->cancelUsdSubscribe(sessionId).isOk());
    }
}

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SupplicantStaIfaceAidlTest);
INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantStaIfaceAidlTest,
                         testing::ValuesIn(android::getAidlHalInstanceNames(