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 EXPECT_FALSE(VAILD_IFNAME.find("GetScanInfos") != std::string::npos); 91 } 92 StopTest()93 void StopTest() 94 { 95 auto lock = AcquireGlobalLock(); 96 wifiVendorHalTest->Stop(&lock, [&]() {}); 97 wifiVendorHalTest->Start(); 98 wifiVendorHalTest->Stop(&lock, [&]() {}); 99 EXPECT_FALSE(VAILD_IFNAME.find("Stop") != std::string::npos); 100 } 101 GetChipCapsTest()102 void GetChipCapsTest() 103 { 104 uint32_t cap; 105 EXPECT_TRUE(wifiVendorHalTest->GetChipCaps(VAILD_IFNAME, cap) == HAL_SUCCESS); 106 EXPECT_TRUE(wifiVendorHalTest->GetChipCaps(INVAILD_IFNAME, cap) == HAL_UNKNOWN); 107 EXPECT_TRUE(wifiVendorHalTest->GetSupportedFeatureSet(VAILD_IFNAME, cap) == HAL_SUCCESS); 108 EXPECT_TRUE(wifiVendorHalTest->GetSupportedFeatureSet(INVAILD_IFNAME, cap) == HAL_UNKNOWN); 109 } 110 GetValidFrequenciesForBandTest()111 void GetValidFrequenciesForBandTest() 112 { 113 wifiVendorHalTest->GetValidFrequenciesForBand(VAILD_IFNAME, 0); 114 wifiVendorHalTest->CreateVirtualInterface(VAILD_IFNAME, HalIfaceType::HAL_TYPE_STA); 115 EXPECT_TRUE(wifiVendorHalTest->DeleteVirtualInterface(VAILD_IFNAME) == HAL_SUCCESS); 116 EXPECT_TRUE(wifiVendorHalTest->DeleteVirtualInterface(INVAILD_IFNAME) == HAL_NOT_SUPPORTED); 117 } 118 }; 119 120 HWTEST_F(WifiVendorHalTest, StartTest, TestSize.Level1) 121 { 122 StartTest(); 123 } 124 125 HWTEST_F(WifiVendorHalTest, ScanResultEventTest, TestSize.Level1) 126 { 127 ScanResultEventTest(); 128 } 129 130 HWTEST_F(WifiVendorHalTest, StopTest, TestSize.Level1) 131 { 132 StopTest(); 133 } 134 135 HWTEST_F(WifiVendorHalTest, GetChipCapsTest, TestSize.Level1) 136 { 137 GetChipCapsTest(); 138 } 139 140 HWTEST_F(WifiVendorHalTest, GetValidFrequenciesForBandTest, TestSize.Level1) 141 { 142 GetValidFrequenciesForBandTest(); 143 } 144 }