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

Commit 30ff8923 authored by Gabriel Biren's avatar Gabriel Biren Committed by Android (Google) Code Review
Browse files

Merge "Add VTS tests for findWithParams and connectWithParams." into main

parents e31ff920 057de7cf
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -35,7 +35,9 @@ using aidl::android::hardware::wifi::supplicant::IfaceType;
using aidl::android::hardware::wifi::supplicant::ISupplicant;
using aidl::android::hardware::wifi::supplicant::ISupplicantP2pIface;
using aidl::android::hardware::wifi::supplicant::MiracastMode;
using aidl::android::hardware::wifi::supplicant::P2pConnectInfo;
using aidl::android::hardware::wifi::supplicant::P2pDeviceFoundEventParams;
using aidl::android::hardware::wifi::supplicant::P2pDiscoveryInfo;
using aidl::android::hardware::wifi::supplicant::P2pFrameTypeMask;
using aidl::android::hardware::wifi::supplicant::P2pGoNegotiationReqEventParams;
using aidl::android::hardware::wifi::supplicant::P2pGroupCapabilityMask;
@@ -45,6 +47,7 @@ using aidl::android::hardware::wifi::supplicant::P2pPeerClientDisconnectedEventP
using aidl::android::hardware::wifi::supplicant::P2pPeerClientJoinedEventParams;
using aidl::android::hardware::wifi::supplicant::P2pProvDiscStatusCode;
using aidl::android::hardware::wifi::supplicant::P2pProvisionDiscoveryCompletedEventParams;
using aidl::android::hardware::wifi::supplicant::P2pScanType;
using aidl::android::hardware::wifi::supplicant::P2pStatusCode;
using aidl::android::hardware::wifi::supplicant::SupplicantStatusCode;
using aidl::android::hardware::wifi::supplicant::WpsConfigMethods;
@@ -69,6 +72,7 @@ const uint32_t kTestNetworkId = 7;
const uint32_t kTestGroupFreq = 0;
const bool kTestGroupPersistent = false;
const bool kTestGroupIsJoin = false;
const auto& kTestVendorData = generateOuiKeyedDataList(5);

}  // namespace

@@ -222,6 +226,7 @@ class SupplicantP2pIfaceAidlTest : public testing::TestWithParam<std::string> {
        initializeService();
        supplicant_ = getSupplicant(GetParam().c_str());
        ASSERT_NE(supplicant_, nullptr);
        ASSERT_TRUE(supplicant_->getInterfaceVersion(&interface_version_).isOk());
        ASSERT_TRUE(supplicant_
                        ->setDebugParams(DebugLevel::EXCESSIVE,
                                         true,  // show timestamps
@@ -247,6 +252,7 @@ class SupplicantP2pIfaceAidlTest : public testing::TestWithParam<std::string> {
   protected:
    std::shared_ptr<ISupplicant> supplicant_;
    std::shared_ptr<ISupplicantP2pIface> p2p_iface_;
    int interface_version_;
};

/*
@@ -549,6 +555,34 @@ TEST_P(SupplicantP2pIfaceAidlTest, FindSpecificFrequency) {
    EXPECT_TRUE(p2p_iface_->findOnSpecificFrequency(2412, kTestFindTimeout).isOk());
}

/*
 * FindWithParams
 */
TEST_P(SupplicantP2pIfaceAidlTest, FindWithParams) {
    if (interface_version_ < 3) {
        GTEST_SKIP() << "findWithParams is available as of Supplicant V3";
    }

    P2pDiscoveryInfo discoveryParams;
    discoveryParams.timeoutInSec = kTestFindTimeout;
    discoveryParams.vendorData = kTestVendorData;

    discoveryParams.scanType = P2pScanType::FULL;
    EXPECT_TRUE(p2p_iface_->findWithParams(discoveryParams).isOk());
    EXPECT_TRUE(p2p_iface_->stopFind().isOk());
    sleep(1);

    discoveryParams.scanType = P2pScanType::SOCIAL;
    EXPECT_TRUE(p2p_iface_->findWithParams(discoveryParams).isOk());
    EXPECT_TRUE(p2p_iface_->stopFind().isOk());
    sleep(1);

    discoveryParams.scanType = P2pScanType::SPECIFIC_FREQ;
    discoveryParams.frequencyMhz = 2412;
    EXPECT_TRUE(p2p_iface_->findWithParams(discoveryParams).isOk());
    EXPECT_TRUE(p2p_iface_->stopFind().isOk());
}

/*
 * StopFind
 */
@@ -575,6 +609,27 @@ TEST_P(SupplicantP2pIfaceAidlTest, Connect) {
                        .isOk());
}

/*
 * ConnectWithParams
 */
TEST_P(SupplicantP2pIfaceAidlTest, ConnectWithParams) {
    if (interface_version_ < 3) {
        GTEST_SKIP() << "connectWithParams is available as of Supplicant V3";
    }

    P2pConnectInfo connectInfo;
    connectInfo.peerAddress = vecToArrayMacAddr(kTestMacAddr);
    connectInfo.provisionMethod = WpsProvisionMethod::PBC;
    connectInfo.preSelectedPin = kTestConnectPin;
    connectInfo.joinExistingGroup = true;
    connectInfo.persistent = false;
    connectInfo.goIntent = kTestConnectGoIntent;
    connectInfo.vendorData = kTestVendorData;

    std::string pin;
    EXPECT_TRUE(p2p_iface_->connectWithParams(connectInfo, &pin).isOk());
}

/*
 * CancelConnect
 */
+29 −0
Original line number Diff line number Diff line
@@ -16,14 +16,18 @@

#pragma once

#include <android/persistable_bundle_aidl.h>

#include "supplicant_aidl_test_utils.h"
#include "supplicant_legacy_test_utils.h"

using aidl::android::hardware::wifi::common::OuiKeyedData;
using aidl::android::hardware::wifi::supplicant::IfaceInfo;
using aidl::android::hardware::wifi::supplicant::ISupplicant;
using aidl::android::hardware::wifi::supplicant::ISupplicantP2pIface;
using aidl::android::hardware::wifi::supplicant::ISupplicantStaIface;
using aidl::android::hardware::wifi::supplicant::KeyMgmtMask;
using aidl::android::os::PersistableBundle;

std::string getStaIfaceName() {
    std::array<char, PROPERTY_VALUE_MAX> buffer;
@@ -91,3 +95,28 @@ std::shared_ptr<ISupplicant> getSupplicant(const char* supplicant_name) {
    }
    return supplicant;
}

std::array<uint8_t, 6> vecToArrayMacAddr(std::vector<uint8_t> vectorAddr) {
    std::array<uint8_t, 6> arrayAddr;
    std::copy(vectorAddr.begin(), vectorAddr.begin() + 6, arrayAddr.begin());
    return arrayAddr;
}

std::optional<OuiKeyedData> generateOuiKeyedData(int oui) {
    PersistableBundle bundle;
    bundle.putString("stringKey", "stringValue");
    bundle.putInt("intKey", 12345);

    OuiKeyedData data;
    data.oui = oui;
    data.vendorData = bundle;
    return std::optional<OuiKeyedData>{data};
}

std::optional<std::vector<std::optional<OuiKeyedData>>> generateOuiKeyedDataList(int size) {
    std::vector<std::optional<OuiKeyedData>> dataList;
    for (int i = 0; i < size; i++) {
        dataList.push_back(generateOuiKeyedData(i + 1));
    }
    return std::optional<std::vector<std::optional<OuiKeyedData>>>{dataList};
}