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#define private public 17#define protected public 18 19#include "mock/mock_net_conn_service.h" 20#include "mock/mock_sim_manager.h" 21#include "traffic_management.h" 22#include "core_manager_inner.h" 23#include "net_manager_constants.h" 24#include "net_conn_client.h" 25#include "net_link_info.h" 26 27namespace OHOS { 28namespace Telephony { 29using namespace testing::ext; 30using ::testing::_; 31using ::testing::DoAll; 32using ::testing::Mock; 33using ::testing::Return; 34using ::testing::SetArgReferee; 35 36class TrafficManagementTest : public testing::Test { 37public: 38 TrafficManagementTest() 39 { 40 trafficManagement = new TrafficManagement(0); 41 42 mockSimManager = new MockSimManager(); 43 std::shared_ptr<MockSimManager> mockSimManagerPtr(mockSimManager); 44 CoreManagerInner::GetInstance().simManager_ = mockSimManagerPtr; 45 46 mockNetConnService = new NetManagerStandard::MockINetConnService(); 47 sptr<NetManagerStandard::INetConnService> mockNetConnServicePtr(mockNetConnService); 48 NetManagerStandard::NetConnClient::GetInstance().NetConnService_ = mockNetConnServicePtr; 49 } 50 51 ~TrafficManagementTest() 52 { 53 delete trafficManagement; 54 } 55 56 static void TearDownTestCase() 57 { 58 if (CoreManagerInner::GetInstance().simManager_ != nullptr) { 59 CoreManagerInner::GetInstance().simManager_ = nullptr; 60 std::cout << "TrafficManagementTest set simManager_ nullptr" << std::endl; 61 } 62 63 if (NetManagerStandard::NetConnClient::GetInstance().NetConnService_ != nullptr) { 64 NetManagerStandard::NetConnClient::GetInstance().NetConnService_ = nullptr; 65 std::cout << "TrafficManagementTest set NetConnService_ nullptr" << std::endl; 66 } 67 } 68 69 MockSimManager *mockSimManager; 70 NetManagerStandard::MockINetConnService *mockNetConnService; 71 TrafficManagement *trafficManagement; 72}; 73 74HWTEST_F(TrafficManagementTest, TrafficManagementTest_001, Function | MediumTest | Level1) 75{ 76 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(1)); 77 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)).WillOnce(Return(1)); 78 trafficManagement->UpdatePacketData(); 79 80 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(1)); 81 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)).WillOnce(Return(1)); 82 std::string ifaceName = trafficManagement->GetIfaceName(); 83 std::cout << "TrafficManagementTest_001 interface name:" << ifaceName << std::endl; 84 ASSERT_TRUE(ifaceName.empty()); 85} 86 87HWTEST_F(TrafficManagementTest, TrafficManagementTest_002, Function | MediumTest | Level1) 88{ 89 trafficManagement->sendPackets_ = 100; 90 trafficManagement->recvPackets_ = 200; 91 int64_t sendP = 0; 92 int64_t recvP = 0; 93 trafficManagement->GetPacketData(sendP, recvP); 94 EXPECT_EQ(sendP, 100); 95 EXPECT_EQ(recvP, 200); 96} 97 98HWTEST_F(TrafficManagementTest, TrafficManagementTest_003, Function | MediumTest | Level1) 99{ 100 // get net id failed 101 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0)); 102 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)).WillOnce(Return(1)); 103 std::string ifaceName = trafficManagement->GetIfaceName(); 104 ASSERT_EQ(ifaceName, ""); 105 106 // get all nets failed 107 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0)); 108 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)).WillOnce(Return(0)); 109 EXPECT_CALL(*mockNetConnService, GetAllNets(_)).WillOnce(Return(1)); 110 ifaceName = trafficManagement->GetIfaceName(); 111 ASSERT_EQ(ifaceName, ""); 112 113 // net id not in netAllIds 114 std::list<int32_t> netIdList = {1, 2}; 115 std::list<int32_t> netAllIds = {3}; 116 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0)); 117 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)) 118 .WillOnce(DoAll(SetArgReferee<1>(netIdList), Return(0))); 119 EXPECT_CALL(*mockNetConnService, GetAllNets(_)).WillOnce(DoAll(SetArgReferee<0>(netAllIds), Return(0))); 120 ifaceName = trafficManagement->GetIfaceName(); 121 ASSERT_EQ(ifaceName, ""); 122} 123 124HWTEST_F(TrafficManagementTest, TrafficManagementTest_004, Function | MediumTest | Level1) 125{ 126 // net id in all netAllIds 127 std::list<int32_t> netIdList = {1, 2}; 128 std::list<int32_t> netAllIds = {1, 2}; 129 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0)); 130 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)) 131 .WillOnce(DoAll(SetArgReferee<1>(netIdList), Return(0))); 132 EXPECT_CALL(*mockNetConnService, GetAllNets(_)).WillOnce(DoAll(SetArgReferee<0>(netAllIds), Return(0))); 133 EXPECT_CALL(*mockNetConnService, GetConnectionProperties(_, _)) 134 .WillOnce([](int32_t netId, NetManagerStandard::NetLinkInfo &info) { 135 info.ifaceName_ = "mock_ifaceName"; 136 return 0; 137 }); 138 std::string ifaceName = trafficManagement->GetIfaceName(); 139 std::cout << "TrafficManagementTest_003 ifaceName: " << ifaceName << std::endl; 140 ASSERT_EQ(ifaceName, "mock_ifaceName"); 141 142 // update data 143 EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0)); 144 EXPECT_CALL(*mockNetConnService, GetNetIdByIdentifier(_, _)) 145 .WillOnce(DoAll(SetArgReferee<1>(netIdList), Return(0))); 146 EXPECT_CALL(*mockNetConnService, GetAllNets(_)).WillOnce(DoAll(SetArgReferee<0>(netAllIds), Return(0))); 147 EXPECT_CALL(*mockNetConnService, GetConnectionProperties(_, _)) 148 .WillOnce([](int32_t netId, NetManagerStandard::NetLinkInfo &info) { 149 info.ifaceName_ = "mock_ifaceName"; 150 return 0; 151 }); 152 trafficManagement->sendPackets_ = 100; 153 trafficManagement->recvPackets_ = 200; 154 trafficManagement->UpdatePacketData(); 155 EXPECT_EQ(trafficManagement->sendPackets_, 0); 156 EXPECT_EQ(trafficManagement->recvPackets_, 0); 157 158 Mock::VerifyAndClearExpectations(mockSimManager); 159} 160 161} // namespace Telephony 162} // namespace OHOS