1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <gtest/gtest.h> 17 #include <hdf_log.h> 18 #include "../../../chip/hdi_service/wifi_vendor_hal.h" 19 #include "../../../chip/hdi_service/hdi_sync_util.h" 20 #include "v1_0/ichip_iface_callback.h" 21 #include "wifi_hal_fn.h" 22 23 using namespace testing::ext; 24 using namespace OHOS::HDI::Wlan::Chip::V1_0; 25 26 namespace WifiVendorHalTest { 27 const std::string VAILD_IFNAME = "wlan0"; 28 const std::string INVAILD_IFNAME = "wlan2"; 29 30 class WifiVendorHalTest : public testing::Test { 31 public: SetUpTestCase()32 static void SetUpTestCase() {} TearDownTestCase()33 static void TearDownTestCase() {} SetUp()34 void SetUp() 35 { 36 ifaceTool = std::make_shared<IfaceTool>(); 37 WifiHalFn fn = {}; 38 InitWifiHalFuncTable(&fn); 39 wifiVendorHalTest = std::make_shared<WifiVendorHal>(ifaceTool, fn, true); 40 } TearDown()41 void TearDown() 42 { 43 wifiVendorHalTest.reset(); 44 ifaceTool.reset(); 45 } 46 OnSubsystemRestartCallbackMock(const std::string & test)47 static void OnSubsystemRestartCallbackMock(const std::string& test) 48 { 49 HDF_LOGI("OnSubsystemRestartCallbackMock enter"); 50 } 51 OnStopCompleteCallbackMock(const std::string & test)52 static void OnStopCompleteCallbackMock(const std::string& test) 53 { 54 HDF_LOGI("OnStopCompleteCallbackMock enter"); 55 } 56 57 std::shared_ptr<WifiVendorHal> wifiVendorHalTest; 58 std::shared_ptr<IfaceTool> ifaceTool; 59 sptr<IChipIfaceCallback> ifaceCallback; 60 StartTest()61 void StartTest() 62 { 63 HDF_LOGI("StartTest started"); 64 EXPECT_TRUE(wifiVendorHalTest->Start() == HAL_SUCCESS); 65 EXPECT_TRUE(wifiVendorHalTest->Initialize() == HAL_SUCCESS); 66 wifiVendorHalTest->RegisterRestartCallback(OnSubsystemRestartCallbackMock); 67 wifiVendorHalTest->SetCountryCode(VAILD_IFNAME, "cn"); 68 SignalPollResult res; 69 wifiVendorHalTest->GetSignalPollInfo(VAILD_IFNAME, res); 70 wifiVendorHalTest->GetPowerMode(VAILD_IFNAME); 71 wifiVendorHalTest->SetPowerMode(VAILD_IFNAME, 0); 72 wifiVendorHalTest->EnablePowerMode(VAILD_IFNAME, 0); 73 wifiVendorHalTest->SetDpiMarkRule(0, 0, 0); 74 wifiVendorHalTest->SetTxPower(VAILD_IFNAME, 0); 75 } 76 ScanResultEventTest()77 void ScanResultEventTest() 78 { 79 ScanParams scanParam; 80 wifiVendorHalTest->StartScan(VAILD_IFNAME, scanParam); 81 wifiVendorHalTest->OnAsyncGscanFullResult(0); 82 wifiVendorHalTest->OnAsyncRssiReport(0, 0, 0); 83 PnoScanParams pnoParam; 84 wifiVendorHalTest->StartPnoScan(VAILD_IFNAME, pnoParam); 85 wifiVendorHalTest->RegisterIfaceCallBack(VAILD_IFNAME, ifaceCallback); 86 wifiVendorHalTest->UnRegisterIfaceCallBack(VAILD_IFNAME, ifaceCallback); 87 wifiVendorHalTest->StopPnoScan(VAILD_IFNAME); 88 std::vector<ScanResultsInfo> scanInfo; 89 wifiVendorHalTest->GetScanInfos(VAILD_IFNAME, scanInfo); 90 } 91 StopTest()92 void StopTest() 93 { 94 auto lock = AcquireGlobalLock(); 95 wifiVendorHalTest->Stop(&lock, [&]() {}); 96 wifiVendorHalTest->Start(); 97 wifiVendorHalTest->Stop(&lock, [&]() {}); 98 } 99 GetChipCapsTest()100 void GetChipCapsTest() 101 { 102 uint32_t cap; 103 EXPECT_TRUE(wifiVendorHalTest->GetChipCaps(VAILD_IFNAME, cap) == HAL_SUCCESS); 104 EXPECT_TRUE(wifiVendorHalTest->GetChipCaps(INVAILD_IFNAME, cap) == HAL_UNKNOWN); 105 EXPECT_TRUE(wifiVendorHalTest->GetSupportedFeatureSet(VAILD_IFNAME, cap) == HAL_SUCCESS); 106 EXPECT_TRUE(wifiVendorHalTest->GetSupportedFeatureSet(INVAILD_IFNAME, cap) == HAL_UNKNOWN); 107 } 108 GetValidFrequenciesForBandTest()109 void GetValidFrequenciesForBandTest() 110 { 111 wifiVendorHalTest->GetValidFrequenciesForBand(VAILD_IFNAME, 0); 112 wifiVendorHalTest->CreateVirtualInterface(VAILD_IFNAME, HalIfaceType::HAL_TYPE_STA); 113 EXPECT_TRUE(wifiVendorHalTest->DeleteVirtualInterface(VAILD_IFNAME) == HAL_SUCCESS); 114 EXPECT_TRUE(wifiVendorHalTest->DeleteVirtualInterface(INVAILD_IFNAME) == HAL_NOT_SUPPORTED); 115 } 116 }; 117 118 HWTEST_F(WifiVendorHalTest, StartTest, TestSize.Level1) 119 { 120 StartTest(); 121 } 122 123 HWTEST_F(WifiVendorHalTest, ScanResultEventTest, TestSize.Level1) 124 { 125 ScanResultEventTest(); 126 } 127 128 HWTEST_F(WifiVendorHalTest, StopTest, TestSize.Level1) 129 { 130 StopTest(); 131 } 132 133 HWTEST_F(WifiVendorHalTest, GetChipCapsTest, TestSize.Level1) 134 { 135 GetChipCapsTest(); 136 } 137 138 HWTEST_F(WifiVendorHalTest, GetValidFrequenciesForBandTest, TestSize.Level1) 139 { 140 GetValidFrequenciesForBandTest(); 141 } 142 }