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 27 namespace OHOS { 28 namespace Telephony { 29 using namespace testing::ext; 30 using ::testing::_; 31 using ::testing::DoAll; 32 using ::testing::Mock; 33 using ::testing::Return; 34 using ::testing::SetArgReferee; 35 36 class TrafficManagementTest : public testing::Test { 37 public: TrafficManagementTest()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 ~TrafficManagementTest()51 ~TrafficManagementTest() 52 { 53 delete trafficManagement; 54 } 55 TearDownTestCase()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 74 HWTEST_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 87 HWTEST_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 98 HWTEST_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 124 HWTEST_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(_, _)) __anon71009db20102(int32_t netId, NetManagerStandard::NetLinkInfo &info) 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(_, _)) __anon71009db20202(int32_t netId, NetManagerStandard::NetLinkInfo &info) 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