1 /*
2 * Copyright (c) 2022 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 <memory>
17
18 #include <gtest/gtest.h>
19
20 #ifdef GTEST_API_
21 #define private public
22 #endif
23 #include "net_manager_constants.h"
24 #include "net_mgr_log_wrapper.h"
25 #include "net_stats_database_helper.h"
26 #include "net_stats_database_defines.h"
27 #include "net_stats_constants.h"
28 namespace OHOS {
29 namespace NetManagerStandard {
30 using namespace NetStatsDatabaseDefines;
31 using namespace testing::ext;
32 namespace {
33 constexpr const char *NET_STATS_DATABASE_TEST_PATH = "/data/service/el1/public/netmanager/net_stats_test.db";
34 } // namespace
35 class NetStatsDatabaseHelperTest : public testing::Test {
36 public:
37 static void SetUpTestCase();
38 static void TearDownTestCase();
39 void SetUp();
40 void TearDown();
41 };
42
SetUpTestCase()43 void NetStatsDatabaseHelperTest::SetUpTestCase() {}
44
TearDownTestCase()45 void NetStatsDatabaseHelperTest::TearDownTestCase() {}
46
SetUp()47 void NetStatsDatabaseHelperTest::SetUp() {}
48
TearDown()49 void NetStatsDatabaseHelperTest::TearDown() {}
50
51 HWTEST_F(NetStatsDatabaseHelperTest, CreateTableTest001, TestSize.Level1)
52 {
53 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
54 std::string tableInfo =
55 "ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50)";
56 int32_t ret = helper->CreateTable("testTable", tableInfo);
57 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
58 }
59
60 HWTEST_F(NetStatsDatabaseHelperTest, CreateTableTest002, TestSize.Level1)
61 {
62 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
63 const std::string tableInfo =
64 "UID INTEGER NOT NULL,"
65 "IFace CHAR(50) NOT NULL,"
66 "Date INTEGER NOT NULL,"
67 "RxBytes INTEGER NOT NULL,"
68 "RxPackets INTEGER NOT NULL,"
69 "TxBytes INTEGER NOT NULL,"
70 "TxPackets INTEGER NOT NULL";
71 int32_t ret = helper->CreateTable(UID_TABLE, tableInfo);
72 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
73 }
74
75 HWTEST_F(NetStatsDatabaseHelperTest, CreateTableTest003, TestSize.Level1)
76 {
77 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
78 const std::string tableInfo =
79 "UID INTEGER NOT NULL,"
80 "Date INTEGER NOT NULL,"
81 "RxBytes INTEGER NOT NULL,"
82 "RxPackets INTEGER NOT NULL,"
83 "TxBytes INTEGER NOT NULL,"
84 "TxPackets INTEGER NOT NULL";
85 int32_t ret = helper->CreateTable(IFACE_TABLE, tableInfo);
86 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
87 }
88
89 HWTEST_F(NetStatsDatabaseHelperTest, InsertDataHelperTest001, TestSize.Level1)
90 {
91 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
92 NETMGR_LOG_I("InsertDataHelperTest001");
93 NetStatsInfo info;
94 info.uid_ = 10222;
95 info.iface_ = "eth0";
96 info.date_ = 15254500;
97 info.rxBytes_ = 4455;
98 info.txBytes_ = 8536;
99 info.rxPackets_ = 45122;
100 info.txPackets_ = 144215;
101 int32_t ret = helper->InsertData(UID_TABLE, UID_TABLE_PARAM_LIST, info);
102 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
103 ret = helper->InsertData("", UID_TABLE_PARAM_LIST, info);
104 EXPECT_EQ(ret, NetStatsResultCode::STATS_ERR_WRITE_DATA_FAIL);
105 }
106
107 HWTEST_F(NetStatsDatabaseHelperTest, SelectDataHelperTest001, TestSize.Level1)
108 {
109 NETMGR_LOG_I("SelectDataHelperTest001");
110 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
111 std::vector<NetStatsInfo> infos;
112 int32_t ret = helper->SelectData(infos, UID_TABLE, 0, LONG_MAX);
113 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
114 for (auto const &info : infos) {
115 NETMGR_LOG_I("uid:%{public}d, iface:%{public}s, date:%{public}s", info.uid_, info.iface_.c_str(),
116 std::to_string(info.date_).c_str());
117 }
118 infos.clear();
119 uint64_t date = 15254400;
120 ret = helper->SelectData(infos, UID_TABLE, date, LONG_MAX);
121 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
122 ret = helper->SelectData(infos, "", date, LONG_MAX);
123 EXPECT_EQ(ret, NetStatsResultCode::STATS_ERR_READ_DATA_FAIL);
124 }
125
126 HWTEST_F(NetStatsDatabaseHelperTest, SelectDataHelperTest002, TestSize.Level1)
127 {
128 NETMGR_LOG_I("SelectDataHelperTest002");
129 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
130 std::vector<NetStatsInfo> infos;
131 uint32_t uid = 100;
132 int32_t ret = helper->SelectData(uid, 0, LONG_MAX, infos);
133 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
134 infos.clear();
135 uint64_t date = 15254400;
136 ret = helper->SelectData(uid, date, LONG_MAX, infos);
137 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
138 }
139
140 HWTEST_F(NetStatsDatabaseHelperTest, SelectDataHelperTest003, TestSize.Level1)
141 {
142 NETMGR_LOG_I("SelectDataHelperTest003");
143 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
144 std::vector<NetStatsInfo> infos;
145 std::string iface = "wlan0";
146 int32_t ret = helper->SelectData(iface, 0, LONG_MAX, infos);
147 EXPECT_EQ(ret, STATS_ERR_READ_DATA_FAIL);
148 infos.clear();
149 uint64_t date = 15254400;
150 ret = helper->SelectData(iface, date, LONG_MAX, infos);
151 EXPECT_EQ(ret, STATS_ERR_READ_DATA_FAIL);
152 }
153
154 HWTEST_F(NetStatsDatabaseHelperTest, SelectDataHelperTest004, TestSize.Level1)
155 {
156 NETMGR_LOG_I("SelectDataHelperTest004");
157 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
158 std::vector<NetStatsInfo> infos;
159 std::string iface = "wlan0";
160 uint32_t uid = 100;
161 int32_t ret = helper->SelectData(iface, uid, 0, LONG_MAX, infos);
162 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
163 infos.clear();
164 uint64_t date = 15254400;
165 ret = helper->SelectData(iface, uid, date, LONG_MAX, infos);
166 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
167 }
168
169 HWTEST_F(NetStatsDatabaseHelperTest, DeleteDataHelperTest001, TestSize.Level1)
170 {
171 NETMGR_LOG_I("DeleteDataHelperTest001");
172 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
173 uint64_t date = 15254400;
174 int32_t ret = helper->DeleteData(UID_TABLE, date, 15254560);
175 std::vector<NetStatsInfo> infos;
176 helper->SelectData(infos, UID_TABLE, 0, LONG_MAX);
177 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
178 }
179
180 HWTEST_F(NetStatsDatabaseHelperTest, DeleteDataHelperTest002, TestSize.Level1)
181 {
182 NETMGR_LOG_I("DeleteDataHelperTest002");
183 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
184 uint32_t uid = 100;
185 int32_t ret = helper->DeleteData(UID_TABLE, uid);
186 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
187 }
188
189 HWTEST_F(NetStatsDatabaseHelperTest, ClearDataHelperTest001, TestSize.Level1)
190 {
191 auto helper = std::make_unique<NetStatsDatabaseHelper>(NET_STATS_DATABASE_TEST_PATH);
192 std::vector<NetStatsInfo> infos;
193 std::string iface = "wlan0";
194 uint32_t uid = 100;
195 int32_t ret = helper->SelectData(iface, uid, 0, LONG_MAX, infos);
196 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
197 ret = helper->ClearData(UID_TABLE);
198 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
199 }
200
201 HWTEST_F(NetStatsDatabaseHelperTest, NetStatsDatabaseHelperBranchTest001, TestSize.Level1)
202 {
203 auto helper = std::make_unique<NetStatsDatabaseHelper>("");
204 int32_t ret = helper->Open("");
205 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
206
207 ret = helper->Close();
208 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
209
210 int32_t id = 0;
211 ret = helper->BindInt64(id, 0, 0);
212 EXPECT_EQ(ret, STATS_ERR_READ_DATA_FAIL);
213
214 ret = helper->ClearData("");
215 EXPECT_EQ(ret, NETMANAGER_ERROR);
216 }
217 } // namespace NetManagerStandard
218 } // namespace OHOS
219