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

Commit ec235021 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "wifi: wait for the framework to be ready before checking features" into android11-tests-dev

parents 8695039f fa754356
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -275,3 +275,17 @@ bool turnOnExcessiveLogging(const sp<ISupplicant>& supplicant) {
        });
        });
    return !operation_failed;
    return !operation_failed;
}
}

bool waitForFrameworkReady() {
    int waitCount = 10;
    do {
        // Check whether package service is ready or not.
        if (!testing::checkSubstringInCommandOutput(
                "/system/bin/service check package", ": not found")) {
            return true;
        }
        LOG(INFO) << "Framework is not ready";
        sleep(1);
    } while (waitCount-- > 0);
    return false;
}
+49 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,8 @@
#ifndef SUPPLICANT_HIDL_TEST_UTILS_H
#ifndef SUPPLICANT_HIDL_TEST_UTILS_H
#define SUPPLICANT_HIDL_TEST_UTILS_H
#define SUPPLICANT_HIDL_TEST_UTILS_H


#include <VtsCoreUtil.h>
#include <android-base/logging.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicant.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicant.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicantP2pIface.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicantP2pIface.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaIface.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaIface.h>
@@ -62,4 +64,51 @@ bool turnOnExcessiveLogging(


bool turnOnExcessiveLogging();
bool turnOnExcessiveLogging();


bool waitForFrameworkReady();

class SupplicantHidlTestBase
    : public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
   public:
    virtual void SetUp() override {
        // should always be v1.0 wifi
        wifi_v1_0_instance_name_ = std::get<0>(GetParam());
        supplicant_instance_name_ = std::get<1>(GetParam());
        std::system("/system/bin/start");
        ASSERT_TRUE(waitForFrameworkReady());

        isP2pOn_ =
            testing::deviceSupportsFeature("android.hardware.wifi.direct");
        // Stop Framework
        std::system("/system/bin/stop");
        stopSupplicant(wifi_v1_0_instance_name_);
        startSupplicantAndWaitForHidlService(wifi_v1_0_instance_name_,
                                             supplicant_instance_name_);
        LOG(INFO) << "SupplicantHidlTestBase isP2pOn_: " << isP2pOn_;
    }

    virtual void TearDown() override {
        stopSupplicant(wifi_v1_0_instance_name_);
        // Start Framework
        std::system("/system/bin/start");
    }

   protected:
    bool isP2pOn_ = false;
    std::string wifi_v1_0_instance_name_;
    std::string supplicant_instance_name_;
};

class SupplicantHidlTestBaseV1_0 : public SupplicantHidlTestBase {
   public:
    virtual void SetUp() override {
        SupplicantHidlTestBase::SetUp();
        supplicant_ = getSupplicant(supplicant_instance_name_, isP2pOn_);
        ASSERT_NE(supplicant_.get(), nullptr);
        EXPECT_TRUE(turnOnExcessiveLogging(supplicant_));
    }

   protected:
    android::sp<android::hardware::wifi::supplicant::V1_0::ISupplicant>
        supplicant_;
};
#endif /* SUPPLICANT_HIDL_TEST_UTILS_H */
#endif /* SUPPLICANT_HIDL_TEST_UTILS_H */
+13 −32
Original line number Original line Diff line number Diff line
@@ -71,21 +71,13 @@ constexpr uint32_t kTestExtListenInterval = 400;
constexpr SupplicantNetworkId kTestNetworkId = 5;
constexpr SupplicantNetworkId kTestNetworkId = 5;
}  // namespace
}  // namespace


class SupplicantP2pIfaceHidlTest
class SupplicantP2pIfaceHidlTest : public SupplicantHidlTestBaseV1_0 {
    : public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
   public:
   public:
    virtual void SetUp() override {
    virtual void SetUp() override {
        wifi_instance_name_ = std::get<0>(GetParam());
        SupplicantHidlTestBaseV1_0::SetUp();
        supplicant_instance_name_ = std::get<1>(GetParam());
        if (!isP2pOn_) {
        isP2pOn_ =
            GTEST_SKIP() << "Wi-Fi Direct is not supported, skip this test.";
            testing::deviceSupportsFeature("android.hardware.wifi.direct");
        }
        // Stop Framework
        std::system("/system/bin/stop");
        stopSupplicant(wifi_instance_name_);
        startSupplicantAndWaitForHidlService(wifi_instance_name_,
                                             supplicant_instance_name_);
        supplicant_ = getSupplicant(supplicant_instance_name_, isP2pOn_);
        EXPECT_TRUE(turnOnExcessiveLogging(supplicant_));
        p2p_iface_ = getSupplicantP2pIface(supplicant_);
        p2p_iface_ = getSupplicantP2pIface(supplicant_);
        ASSERT_NE(p2p_iface_.get(), nullptr);
        ASSERT_NE(p2p_iface_.get(), nullptr);


@@ -93,22 +85,11 @@ class SupplicantP2pIfaceHidlTest
        memcpy(peer_mac_addr_.data(), kTestPeerMacAddr, peer_mac_addr_.size());
        memcpy(peer_mac_addr_.data(), kTestPeerMacAddr, peer_mac_addr_.size());
    }
    }


    virtual void TearDown() override {
        stopSupplicant(wifi_instance_name_);
        // Start Framework
        std::system("/system/bin/start");
    }

   protected:
   protected:
    bool isP2pOn_ = false;
    sp<ISupplicant> supplicant_;
    // ISupplicantP2pIface object used for all tests in this fixture.
    sp<ISupplicantP2pIface> p2p_iface_;
    sp<ISupplicantP2pIface> p2p_iface_;
    // MAC address to use for various tests.
    // MAC address to use for various tests.
    std::array<uint8_t, 6> mac_addr_;
    std::array<uint8_t, 6> mac_addr_;
    std::array<uint8_t, 6> peer_mac_addr_;
    std::array<uint8_t, 6> peer_mac_addr_;
    std::string wifi_instance_name_;
    std::string supplicant_instance_name_;
};
};


class IfaceCallback : public ISupplicantP2pIfaceCallback {
class IfaceCallback : public ISupplicantP2pIfaceCallback {
@@ -201,8 +182,8 @@ class IfaceCallback : public ISupplicantP2pIfaceCallback {
 * successfully created.
 * successfully created.
 */
 */
TEST_P(SupplicantP2pIfaceHidlTest, Create) {
TEST_P(SupplicantP2pIfaceHidlTest, Create) {
    stopSupplicant(wifi_instance_name_);
    stopSupplicant(wifi_v1_0_instance_name_);
    startSupplicantAndWaitForHidlService(wifi_instance_name_,
    startSupplicantAndWaitForHidlService(wifi_v1_0_instance_name_,
                                         supplicant_instance_name_);
                                         supplicant_instance_name_);
    sp<ISupplicantP2pIface> p2p_iface = getSupplicantP2pIface(
    sp<ISupplicantP2pIface> p2p_iface = getSupplicantP2pIface(
        getSupplicant(supplicant_instance_name_, isP2pOn_));
        getSupplicant(supplicant_instance_name_, isP2pOn_));
@@ -301,8 +282,8 @@ TEST_P(SupplicantP2pIfaceHidlTest, Connect) {
        mac_addr_, ISupplicantP2pIface::WpsProvisionMethod::PBC,
        mac_addr_, ISupplicantP2pIface::WpsProvisionMethod::PBC,
        kTestConnectPin, false, false, kTestConnectGoIntent,
        kTestConnectPin, false, false, kTestConnectGoIntent,
        [](const SupplicantStatus& status, const hidl_string& /* pin */) {
        [](const SupplicantStatus& status, const hidl_string& /* pin */) {
            // This is not going to work with fake values.
            // After enabling auto-join, it will succeed always.
            EXPECT_EQ(SupplicantStatusCode::FAILURE_UNKNOWN, status.code);
            EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code);
        });
        });
}
}


@@ -314,12 +295,12 @@ TEST_P(SupplicantP2pIfaceHidlTest, CancelConnect) {
        mac_addr_, ISupplicantP2pIface::WpsProvisionMethod::PBC,
        mac_addr_, ISupplicantP2pIface::WpsProvisionMethod::PBC,
        kTestConnectPin, false, false, kTestConnectGoIntent,
        kTestConnectPin, false, false, kTestConnectGoIntent,
        [](const SupplicantStatus& status, const hidl_string& /* pin */) {
        [](const SupplicantStatus& status, const hidl_string& /* pin */) {
            // This is not going to work with fake values.
            // After enabling auto-join, it will succeed always.
            EXPECT_EQ(SupplicantStatusCode::FAILURE_UNKNOWN, status.code);
            EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code);
        });
        });


    p2p_iface_->cancelConnect([](const SupplicantStatus& status) {
    p2p_iface_->cancelConnect([](const SupplicantStatus& status) {
        EXPECT_EQ(SupplicantStatusCode::FAILURE_UNKNOWN, status.code);
        EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code);
    });
    });
}
}


+5 −25
Original line number Original line Diff line number Diff line
@@ -66,42 +66,22 @@ constexpr uint8_t kTestWpsDeviceType[] = {[0 ... 7] = 0x01};
constexpr uint16_t kTestWpsConfigMethods = 0xffff;
constexpr uint16_t kTestWpsConfigMethods = 0xffff;
}  // namespace
}  // namespace


class SupplicantStaIfaceHidlTest
class SupplicantStaIfaceHidlTest : public SupplicantHidlTestBaseV1_0 {
    : public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
   public:
   public:
    virtual void SetUp() override {
    virtual void SetUp() override {
        wifi_instance_name_ = std::get<0>(GetParam());
        SupplicantHidlTestBaseV1_0::SetUp();
        supplicant_instance_name_ = std::get<1>(GetParam());
        isP2pOn_ =
            testing::deviceSupportsFeature("android.hardware.wifi.direct");
        // Stop Framework
        std::system("/system/bin/stop");
        stopSupplicant(wifi_instance_name_);
        startSupplicantAndWaitForHidlService(wifi_instance_name_,
                                             supplicant_instance_name_);
        supplicant_ = getSupplicant(supplicant_instance_name_, isP2pOn_);
        EXPECT_TRUE(turnOnExcessiveLogging(supplicant_));
        sta_iface_ = getSupplicantStaIface(supplicant_);
        sta_iface_ = getSupplicantStaIface(supplicant_);
        ASSERT_NE(sta_iface_.get(), nullptr);
        ASSERT_NE(sta_iface_.get(), nullptr);


        memcpy(mac_addr_.data(), kTestMacAddr, mac_addr_.size());
        memcpy(mac_addr_.data(), kTestMacAddr, mac_addr_.size());
    }
    }


    virtual void TearDown() override {
        stopSupplicant(wifi_instance_name_);
        // Start Framework
        std::system("/system/bin/start");
    }

   protected:
   protected:
    bool isP2pOn_ = false;
    bool isP2pOn_ = false;
    sp<ISupplicant> supplicant_;
    // ISupplicantStaIface object used for all tests in this fixture.
    // ISupplicantStaIface object used for all tests in this fixture.
    sp<ISupplicantStaIface> sta_iface_;
    sp<ISupplicantStaIface> sta_iface_;
    // MAC address to use for various tests.
    // MAC address to use for various tests.
    std::array<uint8_t, 6> mac_addr_;
    std::array<uint8_t, 6> mac_addr_;
    std::string wifi_instance_name_;
    std::string supplicant_instance_name_;
};
};


class IfaceCallback : public ISupplicantStaIfaceCallback {
class IfaceCallback : public ISupplicantStaIfaceCallback {
@@ -183,8 +163,8 @@ class IfaceCallback : public ISupplicantStaIfaceCallback {
 * successfully created.
 * successfully created.
 */
 */
TEST_P(SupplicantStaIfaceHidlTest, Create) {
TEST_P(SupplicantStaIfaceHidlTest, Create) {
    stopSupplicant(wifi_instance_name_);
    stopSupplicant(wifi_v1_0_instance_name_);
    startSupplicantAndWaitForHidlService(wifi_instance_name_,
    startSupplicantAndWaitForHidlService(wifi_v1_0_instance_name_,
                                         supplicant_instance_name_);
                                         supplicant_instance_name_);
    EXPECT_NE(nullptr, getSupplicantStaIface(
    EXPECT_NE(nullptr, getSupplicantStaIface(
                           getSupplicant(supplicant_instance_name_, isP2pOn_))
                           getSupplicant(supplicant_instance_name_, isP2pOn_))
+4 −25
Original line number Original line Diff line number Diff line
@@ -79,21 +79,10 @@ constexpr uint32_t kTestPairwiseCipher =
     ISupplicantStaNetwork::PairwiseCipherMask::TKIP);
     ISupplicantStaNetwork::PairwiseCipherMask::TKIP);
}  // namespace
}  // namespace


class SupplicantStaNetworkHidlTest
class SupplicantStaNetworkHidlTest : public SupplicantHidlTestBaseV1_0 {
    : public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
   public:
   public:
    virtual void SetUp() override {
    virtual void SetUp() override {
        wifi_instance_name_ = std::get<0>(GetParam());
        SupplicantHidlTestBaseV1_0::SetUp();
        supplicant_instance_name_ = std::get<1>(GetParam());
        isP2pOn_ =
            testing::deviceSupportsFeature("android.hardware.wifi.direct");
        // Stop Framework
        std::system("/system/bin/stop");
        stopSupplicant(wifi_instance_name_);
        startSupplicantAndWaitForHidlService(wifi_instance_name_,
                                             supplicant_instance_name_);
        supplicant_ = getSupplicant(supplicant_instance_name_, isP2pOn_);
        EXPECT_TRUE(turnOnExcessiveLogging(supplicant_));
        sta_network_ = createSupplicantStaNetwork(supplicant_);
        sta_network_ = createSupplicantStaNetwork(supplicant_);
        ASSERT_NE(sta_network_.get(), nullptr);
        ASSERT_NE(sta_network_.get(), nullptr);
        /* variable used to check if the underlying HAL version is 1.3 or
        /* variable used to check if the underlying HAL version is 1.3 or
@@ -105,12 +94,6 @@ class SupplicantStaNetworkHidlTest
        ssid_.assign(kTestSsidStr, kTestSsidStr + strlen(kTestSsidStr));
        ssid_.assign(kTestSsidStr, kTestSsidStr + strlen(kTestSsidStr));
    }
    }


    virtual void TearDown() override {
        stopSupplicant(wifi_instance_name_);
        // Start Framework
        std::system("/system/bin/start");
    }

   protected:
   protected:
    void removeNetwork() {
    void removeNetwork() {
        sp<ISupplicantStaIface> sta_iface = getSupplicantStaIface(supplicant_);
        sp<ISupplicantStaIface> sta_iface = getSupplicantStaIface(supplicant_);
@@ -128,14 +111,10 @@ class SupplicantStaNetworkHidlTest


    sp<::android::hardware::wifi::supplicant::V1_3::ISupplicantStaNetwork>
    sp<::android::hardware::wifi::supplicant::V1_3::ISupplicantStaNetwork>
        v1_3 = nullptr;
        v1_3 = nullptr;
    bool isP2pOn_ = false;
    sp<ISupplicant> supplicant_;
    // ISupplicantStaNetwork object used for all tests in this fixture.
    // ISupplicantStaNetwork object used for all tests in this fixture.
    sp<ISupplicantStaNetwork> sta_network_;
    sp<ISupplicantStaNetwork> sta_network_;
    // SSID to use for various tests.
    // SSID to use for various tests.
    std::vector<uint8_t> ssid_;
    std::vector<uint8_t> ssid_;
    std::string wifi_instance_name_;
    std::string supplicant_instance_name_;
};
};


class NetworkCallback : public ISupplicantStaNetworkCallback {
class NetworkCallback : public ISupplicantStaNetworkCallback {
@@ -158,8 +137,8 @@ class NetworkCallback : public ISupplicantStaNetworkCallback {
 * successfully created.
 * successfully created.
 */
 */
TEST_P(SupplicantStaNetworkHidlTest, Create) {
TEST_P(SupplicantStaNetworkHidlTest, Create) {
    stopSupplicant(wifi_instance_name_);
    stopSupplicant(wifi_v1_0_instance_name_);
    startSupplicantAndWaitForHidlService(wifi_instance_name_,
    startSupplicantAndWaitForHidlService(wifi_v1_0_instance_name_,
                                         supplicant_instance_name_);
                                         supplicant_instance_name_);
    sp<ISupplicant> supplicant =
    sp<ISupplicant> supplicant =
        getSupplicant(supplicant_instance_name_, isP2pOn_);
        getSupplicant(supplicant_instance_name_, isP2pOn_);
Loading