1 /*
2 * Copyright (c) 2022-2023 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 <thread>
17
18 #include <gtest/gtest.h>
19
20 #include "net_mgr_log_wrapper.h"
21 #include "net_policy_callback_test.h"
22 #include "net_policy_client.h"
23 #include "net_policy_constants.h"
24 #define private public
25 #include "net_policy_core.h"
26 #include "net_policy_firewall.h"
27 #include "net_policy_inner_define.h"
28 #include "net_policy_rule.h"
29 #include "net_policy_traffic.h"
30
31 namespace OHOS {
32 namespace NetManagerStandard {
33 namespace {
34 using namespace testing::ext;
35 constexpr const char *NET_POLICY_WORK_TEST_THREAD = "NET_POLICY_WORK_TEST_THREAD";
36 constexpr const char *NET_POLICY_STUB_QUEUE = "NET_POLICY_STUB_QUEUE";
37 constexpr const char *TEST_EVENT_ACTION = "TEST_ACTION";
38 constexpr const char *EVENT_PARAM_DELETED_UID = "DeletedUid";
39 std::shared_ptr<NetPolicyCore> g_netPolicyCore;
40 std::shared_ptr<AppExecFwk::EventRunner> g_runner;
41 std::shared_ptr<NetPolicyEventHandler> g_handler;
42 ffrt::queue ffrtQueue_ = NET_POLICY_STUB_QUEUE;
43 } // namespace
44
45 class UtNetPolicyCore : public testing::Test {
46 public:
47 static void SetUpTestCase();
48 static void TearDownTestCase();
49 void SetUp();
50 void TearDown();
51 };
52
SetUpTestCase()53 void UtNetPolicyCore::SetUpTestCase()
54 {
55 g_runner = AppExecFwk::EventRunner::Create(NET_POLICY_WORK_TEST_THREAD);
56 g_netPolicyCore = DelayedSingleton<NetPolicyCore>::GetInstance();
57 std::make_shared<NetPolicyEventHandler>(g_netPolicyCore, ffrtQueue_);
58 g_netPolicyCore->Init(g_handler);
59 }
60
TearDownTestCase()61 void UtNetPolicyCore::TearDownTestCase()
62 {
63 g_netPolicyCore.reset();
64 }
65
SetUp()66 void UtNetPolicyCore::SetUp() {}
67
TearDown()68 void UtNetPolicyCore::TearDown() {}
69
70 /**
71 * @tc.name: CreateCore001
72 * @tc.desc: Test NetPolicyCore CreateCore.
73 * @tc.type: FUNC
74 */
75 HWTEST_F(UtNetPolicyCore, CreateCore001, TestSize.Level1)
76 {
77 auto netPolicyTraffic = g_netPolicyCore->CreateCore<NetPolicyTraffic>();
78 auto netPolicyFirewall = g_netPolicyCore->CreateCore<NetPolicyFirewall>();
79 auto netPolicyRule = g_netPolicyCore->CreateCore<NetPolicyRule>();
80 ASSERT_TRUE(netPolicyTraffic != nullptr && netPolicyFirewall != nullptr && g_netPolicyCore != nullptr);
81 }
82
83 /**
84 * @tc.name: HandleEvent001
85 * @tc.desc: Test NetPolicyCore HandleEvent.
86 * @tc.type: FUNC
87 */
88 HWTEST_F(UtNetPolicyCore, HandleEvent001, TestSize.Level1)
89 {
90 AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get();
91 auto eventId = static_cast<int32_t>(event->GetInnerEventId());
92 auto eventData = event->GetSharedObject<PolicyEvent>();
93 ASSERT_NE(g_netPolicyCore, nullptr);
94 g_netPolicyCore->HandleEvent(eventId, eventData);
95 }
96
97 /**
98 * @tc.name: HandleEvent002
99 * @tc.desc: Test NetPolicyCore HandleEvent.
100 * @tc.type: FUNC
101 */
102 HWTEST_F(UtNetPolicyCore, HandleEvent002, TestSize.Level1)
103 {
104 AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get();
105 auto eventId = static_cast<int32_t>(event->GetInnerEventId());
106 auto eventData = event->GetSharedObject<PolicyEvent>();
107 event.reset();
108 ASSERT_NE(g_netPolicyCore, nullptr);
109 g_netPolicyCore->HandleEvent(eventId, eventData);
110 }
111
112 /**
113 * @tc.name: SendEvent001
114 * @tc.desc: Test NetPolicyCore HandleEvent.
115 * @tc.type: FUNC
116 */
117 HWTEST_F(UtNetPolicyCore, SendEvent001, TestSize.Level1)
118 {
119 int32_t testEventId = 1154;
120 int32_t testDelayTime = 100;
121 std::shared_ptr<PolicyEvent> event = nullptr;
122 ASSERT_NE(g_netPolicyCore, nullptr);
123 g_netPolicyCore->SendEvent(testEventId, event, testDelayTime);
124 }
125
126 /**
127 * @tc.name: OnReceiveEvent001
128 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
129 * @tc.type: FUNC
130 */
131 HWTEST_F(UtNetPolicyCore, OnReceiveEvent001, TestSize.Level1)
132 {
133 EventFwk::CommonEventData eventData;
134 eventData.SetCode(SAVE_MODE);
135 EventFwk::Want want;
136 want.SetAction(COMMON_EVENT_POWER_SAVE_MODE_CHANGED);
137 eventData.SetWant(want);
138 ASSERT_NE(g_netPolicyCore, nullptr);
139 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
140 }
141
142 /**
143 * @tc.name: OnReceiveEvent002
144 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
145 * @tc.type: FUNC
146 */
147 HWTEST_F(UtNetPolicyCore, OnReceiveEvent002, TestSize.Level1)
148 {
149 EventFwk::CommonEventData eventData;
150 eventData.SetCode(LOWPOWER_MODE);
151 EventFwk::Want want;
152 want.SetAction(COMMON_EVENT_POWER_SAVE_MODE_CHANGED);
153 eventData.SetWant(want);
154 ASSERT_NE(g_netPolicyCore, nullptr);
155 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
156 }
157
158 /**
159 * @tc.name: OnReceiveEvent003
160 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
161 * @tc.type: FUNC
162 */
163 HWTEST_F(UtNetPolicyCore, OnReceiveEvent003, TestSize.Level1)
164 {
165 EventFwk::CommonEventData eventData;
166 eventData.SetCode(NORMAL_MODE);
167 EventFwk::Want want;
168 want.SetAction(COMMON_EVENT_POWER_SAVE_MODE_CHANGED);
169 eventData.SetWant(want);
170 ASSERT_NE(g_netPolicyCore, nullptr);
171 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
172 }
173
174 /**
175 * @tc.name: OnReceiveEvent004
176 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
177 * @tc.type: FUNC
178 */
179 HWTEST_F(UtNetPolicyCore, OnReceiveEvent004, TestSize.Level1)
180 {
181 EventFwk::CommonEventData eventData;
182 eventData.SetCode(EXTREME_MODE);
183 EventFwk::Want want;
184 want.SetAction(COMMON_EVENT_DEVICE_IDLE_MODE_CHANGED);
185 eventData.SetWant(want);
186 ASSERT_NE(g_netPolicyCore, nullptr);
187 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
188 }
189
190 /**
191 * @tc.name: OnReceiveEvent005
192 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
193 * @tc.type: FUNC
194 */
195 HWTEST_F(UtNetPolicyCore, OnReceiveEvent005, TestSize.Level1)
196 {
197 EventFwk::CommonEventData eventData;
198 eventData.SetCode(NORMAL_MODE);
199 EventFwk::Want want;
200 want.SetAction(COMMON_EVENT_DEVICE_IDLE_MODE_CHANGED);
201 eventData.SetWant(want);
202 ASSERT_NE(g_netPolicyCore, nullptr);
203 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
204 }
205
206 /**
207 * @tc.name: OnReceiveEvent006
208 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
209 * @tc.type: FUNC
210 */
211 HWTEST_F(UtNetPolicyCore, OnReceiveEvent006, TestSize.Level1)
212 {
213 std::string testUid = "111";
214 EventFwk::CommonEventData eventData;
215 eventData.SetCode(NORMAL_MODE);
216 EventFwk::Want want;
217 want.SetParam(EVENT_PARAM_DELETED_UID, testUid);
218 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_UID_REMOVED);
219 eventData.SetWant(want);
220 ASSERT_NE(g_netPolicyCore, nullptr);
221 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
222 }
223
224 /**
225 * @tc.name: OnReceiveEvent007
226 * @tc.desc: Test NetPolicyCore OnReceiveEvent.
227 * @tc.type: FUNC
228 */
229 HWTEST_F(UtNetPolicyCore, OnReceiveEvent007, TestSize.Level1)
230 {
231 EventFwk::CommonEventData eventData;
232 eventData.SetCode(NORMAL_MODE);
233 EventFwk::Want want;
234 want.SetAction(TEST_EVENT_ACTION);
235 eventData.SetWant(want);
236 ASSERT_NE(g_netPolicyCore, nullptr);
237 g_netPolicyCore->subscriber_->OnReceiveEvent(eventData);
238 }
239 } // namespace NetManagerStandard
240 } // namespace OHOS
241