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

Commit 71967c42 authored by maheshkkv's avatar maheshkkv Committed by Mahesh KKV
Browse files

Add VTS coverage for TWT methods

Bug: 385776556
Test: atest VtsHalWifiStaIfaceTargetTest
flag: TEST_ONLY
Change-Id: I41ef2d44ec9095fb860cb1e1482d75d246e692b6
parent b37ecf0c
Loading
Loading
Loading
Loading
+76 −17
Original line number Diff line number Diff line
@@ -65,6 +65,12 @@ class WifiStaIfaceAidlTest : public testing::TestWithParam<std::string> {
        return features & static_cast<int32_t>(expected);
    }

    bool isTwtSupported() {
        TwtCapabilities twt_capabilities = {};
        auto status = wifi_sta_iface_->twtGetCapabilities(&twt_capabilities);
        return status.isOk() && twt_capabilities.isTwtRequesterSupported;
    }

    ndk::ScopedAStatus createStaIface(std::shared_ptr<IWifiStaIface>* sta_iface) {
        std::shared_ptr<IWifiChip> wifi_chip = getWifiChip(getInstanceName());
        EXPECT_NE(nullptr, wifi_chip.get());
@@ -379,6 +385,9 @@ TEST_P(WifiStaIfaceAidlTest, CachedScanData) {
    }
}

/**
 * TwtGetCapabilities
 */
TEST_P(WifiStaIfaceAidlTest, TwtGetCapabilities) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtGetCapabilities is available as of sta_iface V2";
@@ -400,6 +409,9 @@ TEST_P(WifiStaIfaceAidlTest, TwtGetCapabilities) {
    EXPECT_GT(twt_capabilities.maxWakeIntervalUs, 0);
}

/**
 * TwtSessionSetup
 */
TEST_P(WifiStaIfaceAidlTest, TwtSessionSetup) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtSessionSetup is available as of sta_iface V2";
@@ -424,18 +436,14 @@ TEST_P(WifiStaIfaceAidlTest, TwtSessionSetup) {
    EXPECT_TRUE(wifi_sta_iface_->twtSessionSetup(1, twtRequest).isOk());
}

/**
 * TwtSessionGetStats
 */
TEST_P(WifiStaIfaceAidlTest, TwtSessionGetStats) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtSessionGetStats is available as of sta_iface V2";
    }

    TwtCapabilities twt_capabilities = {};
    auto status = wifi_sta_iface_->twtGetCapabilities(&twt_capabilities);
    if (checkStatusCode(&status, WifiStatusCode::ERROR_NOT_SUPPORTED)) {
        GTEST_SKIP() << "twtGetCapabilities() is not supported by the vendor";
    }
    EXPECT_TRUE(status.isOk());
    if (!twt_capabilities.isTwtRequesterSupported) {
    if (!isTwtSupported()) {
        GTEST_SKIP() << "TWT is not supported";
    }

@@ -444,24 +452,75 @@ TEST_P(WifiStaIfaceAidlTest, TwtSessionGetStats) {
    EXPECT_TRUE(wifi_sta_iface_->twtSessionGetStats(1, 10).isOk());
}

/**
 * TwtSessionTeardown
 */
TEST_P(WifiStaIfaceAidlTest, TwtSessionTeardown) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtSessionTeardown is available as of sta_iface V3";
        GTEST_SKIP() << "TwtSessionTeardown is available as of sta_iface V2";
    }
    if (!isTwtSupported()) {
        GTEST_SKIP() << "TWT is not supported";
    }

    TwtCapabilities twt_capabilities = {};
    auto status = wifi_sta_iface_->twtGetCapabilities(&twt_capabilities);
    if (checkStatusCode(&status, WifiStatusCode::ERROR_NOT_SUPPORTED)) {
        GTEST_SKIP() << "twtGetCapabilities() is not supported by the vendor";
    // Expecting a IWifiStaIfaceEventCallback.onTwtFailure() with INVALID_PARAMS
    // as the error code.
    EXPECT_TRUE(wifi_sta_iface_->twtSessionTeardown(1, 10).isOk());
}
    EXPECT_TRUE(status.isOk());
    if (!twt_capabilities.isTwtRequesterSupported) {

/**
 * TwtSessionUpdate
 */
TEST_P(WifiStaIfaceAidlTest, TwtSessionUpdate) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtSessionUpdate is available as of sta_iface V2";
    }
    if (!isTwtSupported()) {
        GTEST_SKIP() << "TWT is not supported";
    }

    TwtRequest twtRequest;
    twtRequest.mloLinkId = 0;
    twtRequest.minWakeDurationUs = 1000;
    twtRequest.maxWakeDurationUs = 10000;
    twtRequest.minWakeIntervalUs = 10000;
    twtRequest.maxWakeIntervalUs = 100000;

    // Expecting a IWifiStaIfaceEventCallback.onTwtFailure() with INVALID_PARAMS
    // as the error code.
    EXPECT_TRUE(wifi_sta_iface_->twtSessionTeardown(1, 10).isOk());
    EXPECT_TRUE(wifi_sta_iface_->twtSessionUpdate(1, 10, twtRequest).isOk());
}

/**
 * TwtSessionSuspend
 */
TEST_P(WifiStaIfaceAidlTest, TwtSessionSuspend) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtSessionSuspend is available as of sta_iface V2";
    }
    if (!isTwtSupported()) {
        GTEST_SKIP() << "TWT is not supported";
    }

    // Expecting a IWifiStaIfaceEventCallback.onTwtFailure() with INVALID_PARAMS
    // as the error code.
    EXPECT_TRUE(wifi_sta_iface_->twtSessionSuspend(1, 10).isOk());
}

/**
 * TwtSessionResume
 */
TEST_P(WifiStaIfaceAidlTest, TwtSessionResume) {
    if (interface_version_ < 2) {
        GTEST_SKIP() << "TwtSessionResume is available as of sta_iface V2";
    }
    if (!isTwtSupported()) {
        GTEST_SKIP() << "TWT is not supported";
    }

    // Expecting a IWifiStaIfaceEventCallback.onTwtFailure() with INVALID_PARAMS
    // as the error code.
    EXPECT_TRUE(wifi_sta_iface_->twtSessionResume(1, 10).isOk());
}

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(WifiStaIfaceAidlTest);