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
HWTEST_F(TrafficManagementTest, TrafficManagementTest_001, Function | MediumTest | Level1)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
HWTEST_F(TrafficManagementTest, TrafficManagementTest_002, Function | MediumTest | Level1)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
HWTEST_F(TrafficManagementTest, TrafficManagementTest_003, Function | MediumTest | Level1)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
HWTEST_F(TrafficManagementTest, TrafficManagementTest_004, Function | MediumTest | Level1)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(_, _))
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