Merge "VTS tests for IWifiStaIface@1.2." into pi-dev
This commit is contained in:
commit
4524827699
1 changed files with 54 additions and 1 deletions
|
@ -14,6 +14,9 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <numeric>
|
||||
#include <vector>
|
||||
|
||||
#include <android-base/logging.h>
|
||||
|
||||
#include <android/hardware/wifi/1.2/IWifiStaIface.h>
|
||||
|
@ -24,8 +27,9 @@
|
|||
#include "wifi_hidl_test_utils.h"
|
||||
|
||||
using ::android::sp;
|
||||
using ::android::hardware::wifi::V1_2::IWifiStaIface;
|
||||
using ::android::hardware::wifi::V1_0::CommandId;
|
||||
using ::android::hardware::wifi::V1_0::WifiStatusCode;
|
||||
using ::android::hardware::wifi::V1_2::IWifiStaIface;
|
||||
|
||||
/**
|
||||
* Fixture to use for all STA Iface HIDL interface tests.
|
||||
|
@ -40,6 +44,13 @@ class WifiStaIfaceHidlTest : public ::testing::VtsHalHidlTargetTestBase {
|
|||
virtual void TearDown() override { stopWifi(); }
|
||||
|
||||
protected:
|
||||
bool isCapabilitySupported(IWifiStaIface::StaIfaceCapabilityMask cap_mask) {
|
||||
const auto& status_and_caps =
|
||||
HIDL_INVOKE(wifi_sta_iface_, getCapabilities);
|
||||
EXPECT_EQ(WifiStatusCode::SUCCESS, status_and_caps.first.code);
|
||||
return (status_and_caps.second & cap_mask) != 0;
|
||||
}
|
||||
|
||||
sp<IWifiStaIface> wifi_sta_iface_;
|
||||
};
|
||||
|
||||
|
@ -54,3 +65,45 @@ TEST_F(WifiStaIfaceHidlTest, SetMacAddress) {
|
|||
EXPECT_EQ(WifiStatusCode::SUCCESS,
|
||||
HIDL_INVOKE(wifi_sta_iface_, setMacAddress, kMac).code);
|
||||
}
|
||||
|
||||
/*
|
||||
* ReadApfPacketFilterData:
|
||||
* Ensures that we can read the APF working memory when supported.
|
||||
*
|
||||
* TODO: Test disabled because we can't even test reading and writing the APF
|
||||
* memory while the interface is in disconnected state (b/73804303#comment25).
|
||||
* There's a pending bug on VTS infra to add such support (b/32974062).
|
||||
* TODO: We can't execute APF opcodes from this test because there's no way
|
||||
* to loop test packets through the wifi firmware (b/73804303#comment29).
|
||||
*/
|
||||
TEST_F(WifiStaIfaceHidlTest, DISABLED_ReadApfPacketFilterData) {
|
||||
if (!isCapabilitySupported(IWifiStaIface::StaIfaceCapabilityMask::APF)) {
|
||||
// Disable test if APF packet filer is not supported.
|
||||
LOG(WARNING) << "TEST SKIPPED: APF packet filtering not supported";
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& status_and_caps =
|
||||
HIDL_INVOKE(wifi_sta_iface_, getApfPacketFilterCapabilities);
|
||||
EXPECT_EQ(WifiStatusCode::SUCCESS, status_and_caps.first.code);
|
||||
LOG(WARNING) << "StaApfPacketFilterCapabilities: version="
|
||||
<< status_and_caps.second.version
|
||||
<< " maxLength=" << status_and_caps.second.maxLength;
|
||||
|
||||
const CommandId kCmd = 0; // Matches what WifiVendorHal.java uses.
|
||||
const uint32_t kDataSize =
|
||||
std::min(status_and_caps.second.maxLength, static_cast<uint32_t>(500));
|
||||
|
||||
// Create a buffer and fill it with some values.
|
||||
std::vector<uint8_t> data(kDataSize);
|
||||
std::iota(data.begin(), data.end(), 0);
|
||||
|
||||
EXPECT_EQ(
|
||||
HIDL_INVOKE(wifi_sta_iface_, installApfPacketFilter, kCmd, data).code,
|
||||
WifiStatusCode::SUCCESS);
|
||||
const auto& status_and_data =
|
||||
HIDL_INVOKE(wifi_sta_iface_, readApfPacketFilterData);
|
||||
EXPECT_EQ(WifiStatusCode::SUCCESS, status_and_data.first.code);
|
||||
|
||||
EXPECT_EQ(status_and_data.second, data);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue