13f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh/* 23f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Copyright (C) 2017 The Android Open Source Project 33f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 43f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Licensed under the Apache License, Version 2.0 (the "License"); 53f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * you may not use this file except in compliance with the License. 63f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * You may obtain a copy of the License at 73f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 83f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * http://www.apache.org/licenses/LICENSE-2.0 93f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 103f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Unless required by applicable law or agreed to in writing, software 113f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * distributed under the License is distributed on an "AS IS" BASIS, 123f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * See the License for the specific language governing permissions and 143f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * limitations under the License. 153f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh */ 163f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 173f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "gtest/gtest.h" 183f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 193f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/chre_scan_params_safe.h" 203f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "include/utility.h" 213f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 223f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehclass ChreScanParamsSafeTest : public testing::Test { 233f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh public: 243f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload_test::RandomGenerator random_gen_; 253f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload::ScanParams nanoapp_scan_params_; 263f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 273f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh void ConstructChreScanParamsSafeAndCompareWithOrigScanParams() { 283f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload::ChreScanParamsSafe chre_scan_params_safe( 293f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh nanoapp_scan_params_); 303f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const chreWifiScanParams *chre_scan_params = 313f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params_safe.GetChreWifiScanParams(); 323f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 333f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(CHRE_WIFI_SCAN_TYPE_ACTIVE_PLUS_PASSIVE_DFS, 343f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->scanType); 353f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(0, chre_scan_params->maxScanAgeMs); 363f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 373f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_EQ(nanoapp_scan_params_.ssids_to_scan_.size(), 383f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->ssidListLen); 393f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh for (size_t i = 0; i < chre_scan_params->ssidListLen; i++) { 403f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chreWifiSsidListItem ssid_item; 413f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh nanoapp_scan_params_.ssids_to_scan_[i].ToChreWifiSsidListItem(&ssid_item); 423f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_EQ(ssid_item.ssidLen, chre_scan_params->ssidList[i].ssidLen); 433f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(0, 443f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh std::memcmp(ssid_item.ssid, chre_scan_params->ssidList[i].ssid, 453f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->ssidList[i].ssidLen)); 463f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 473f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_EQ(nanoapp_scan_params_.frequencies_to_scan_mhz_.size(), 483f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->frequencyListLen); 493f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ( 503f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 0, std::memcmp(nanoapp_scan_params_.frequencies_to_scan_mhz_.data(), 513f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->frequencyList, 523f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->frequencyListLen * sizeof(uint32_t))); 533f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 543f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh}; 553f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 563f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTEST_F(ChreScanParamsSafeTest, 573f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ConstructsChreScanParamsSafeAndComparesWithOriginalScanParams) { 583f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(nanoapp_scan_params_.frequencies_to_scan_mhz_, random_gen_, 593f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh CHRE_WIFI_FREQUENCY_LIST_MAX_LEN - 5); 603f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(nanoapp_scan_params_.ssids_to_scan_, random_gen_, 613f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh CHRE_WIFI_SSID_LIST_MAX_LEN - 2); 623f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ConstructChreScanParamsSafeAndCompareWithOrigScanParams(); 633f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 643f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 653f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTEST_F(ChreScanParamsSafeTest, ConstructsChreScanParamsSafeWithEmptyFreqList) { 663f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(nanoapp_scan_params_.ssids_to_scan_, random_gen_, 673f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh CHRE_WIFI_SSID_LIST_MAX_LEN - 2); 683f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ConstructChreScanParamsSafeAndCompareWithOrigScanParams(); 693f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 703f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 713f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTEST_F(ChreScanParamsSafeTest, ConstructsChreScanParamsSafeWithEmptySsidList) { 723f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(nanoapp_scan_params_.frequencies_to_scan_mhz_, random_gen_, 733f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh CHRE_WIFI_FREQUENCY_LIST_MAX_LEN - 5); 743f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ConstructChreScanParamsSafeAndCompareWithOrigScanParams(); 753f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 763f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 773f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTEST_F(ChreScanParamsSafeTest, ChreScanParamsSafeTruncatesLongLists) { 783f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh // initialize frequency and ssid lists to exceed limit size 793f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(nanoapp_scan_params_.frequencies_to_scan_mhz_, random_gen_, 803f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh CHRE_WIFI_FREQUENCY_LIST_MAX_LEN + 5); 813f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(nanoapp_scan_params_.ssids_to_scan_, random_gen_, 823f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh CHRE_WIFI_SSID_LIST_MAX_LEN + 2); 833f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 843f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload::ChreScanParamsSafe chre_scan_params_safe(nanoapp_scan_params_); 853f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const chreWifiScanParams *chre_scan_params = 863f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params_safe.GetChreWifiScanParams(); 873f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 883f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(CHRE_WIFI_SSID_LIST_MAX_LEN, chre_scan_params->ssidListLen); 893f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(CHRE_WIFI_FREQUENCY_LIST_MAX_LEN, 903f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh chre_scan_params->frequencyListLen); 913f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 92