• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "adapter_utility_ohos_test.h"
17 
18 #include <fcntl.h>
19 #include <fstream>
20 #include <sys/types.h>
21 #include <sys/stat.h>
22 
23 #include "common_utils.h"
24 #include "file_util.h"
25 #include "socket_util.h"
26 #include "time_util.h"
27 
28 using namespace std;
29 
30 namespace OHOS {
31 namespace HiviewDFX {
32 namespace {
33 const char LOG_FILE_PATH[] = "/data/test/adapter_utility_test/";
34 constexpr int SUFFIX_0 = 0;
35 constexpr int SUFFIX_1 = 1;
36 
GetLogDir(std::string & testCaseName)37 std::string GetLogDir(std::string& testCaseName)
38 {
39     std::string workPath = std::string(LOG_FILE_PATH);
40     if (workPath.back() != '/') {
41         workPath = workPath + "/";
42     }
43     workPath.append(testCaseName);
44     workPath.append("/");
45     std::string logDestDir = workPath;
46     if (!FileUtil::FileExists(logDestDir)) {
47         FileUtil::ForceCreateDirectory(logDestDir, FileUtil::FILE_PERM_770);
48     }
49     return logDestDir;
50 }
51 
GenerateLogFileName(std::string & testCaseName,int index)52 std::string GenerateLogFileName(std::string& testCaseName, int index)
53 {
54     return GetLogDir(testCaseName) + "testFile" + std::to_string(index);
55 }
56 }
57 
SetUpTestCase()58 void AdapterUtilityOhosTest::SetUpTestCase() {}
59 
TearDownTestCase()60 void AdapterUtilityOhosTest::TearDownTestCase() {}
61 
SetUp()62 void AdapterUtilityOhosTest::SetUp() {}
63 
TearDown()64 void AdapterUtilityOhosTest::TearDown()
65 {
66     (void)FileUtil::ForceRemoveDirectory(LOG_FILE_PATH);
67 }
68 
69 /**
70  * @tc.name: SocketUtilOhosTest001
71  * @tc.desc: Test GetExistingSocketServer defined in namespace SocketUtil
72  * @tc.type: FUNC
73  * @tc.require: issueI65DUW
74  */
75 HWTEST_F(AdapterUtilityOhosTest, SocketUtilOhosTest001, testing::ext::TestSize.Level3)
76 {
77     int socketFdIndex = 0;
78     auto ret = SocketUtil::GetExistingSocketServer("/dev/socket/unix/hisysevent", socketFdIndex);
79     int expectedRet = -1;
80     ASSERT_EQ(expectedRet, ret);
81 }
82 
83 /**
84  * @tc.name: CommonUtilsOhosTest001
85  * @tc.desc: Test ExecCommand defined in namespace CommonUtils
86  * @tc.type: FUNC
87  * @tc.require: issueI65DUW
88  */
89 HWTEST_F(AdapterUtilityOhosTest, CommonUtilsOhosTest001, testing::ext::TestSize.Level3)
90 {
91     std::vector<std::string> cmdRet;
92     auto ret = CommonUtils::ExecCommand("hisysevent -l -m 10000", cmdRet);
93     int expectRet = 0;
94     ASSERT_EQ(expectRet, ret);
95     ret = CommonUtils::ExecCommand("", cmdRet);
96     ASSERT_EQ(expectRet, ret);
97 }
98 
99 /**
100  * @tc.name: CommonUtilsOhosTest002
101  * @tc.desc: Test GetPidByName defined in namespace CommonUtils
102  * @tc.type: FUNC
103  * @tc.require: issueI65DUW
104  */
105 HWTEST_F(AdapterUtilityOhosTest, CommonUtilsOhosTest002, testing::ext::TestSize.Level3)
106 {
107     std::vector<std::string> cmdRet;
108     auto hiviewProcessId = CommonUtils::GetPidByName("hiview");
109     ASSERT_TRUE(hiviewProcessId > 0);
110 }
111 
112 /**
113  * @tc.name: CommonUtilsOhosTest003
114  * @tc.desc: Test WriteCommandResultToFile defined in namespace CommonUtils
115  * @tc.type: FUNC
116  * @tc.require: issueI65DUW
117  */
118 HWTEST_F(AdapterUtilityOhosTest, CommonUtilsOhosTest003, testing::ext::TestSize.Level3)
119 {
120     std::string caseName("CommonUtilsOhosTest003");
121     std::string cmd = "";
122     auto ret = CommonUtils::WriteCommandResultToFile(0, cmd);
123     ASSERT_EQ(false, ret);
124     std::string cmd2 = "hisysevent -l -m 1 | wc -l";
125     auto fd = FileUtil::Open(GenerateLogFileName(caseName, SUFFIX_0),
126         O_CREAT | O_WRONLY | O_TRUNC, FileUtil::FILE_PERM_770);
127     ret = CommonUtils::WriteCommandResultToFile(fd, cmd2);
128     ASSERT_EQ(true, ret);
129     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "");
130     fd = FileUtil::Open(GenerateLogFileName(caseName, SUFFIX_0),
131         O_CREAT | O_WRONLY | O_TRUNC, FileUtil::FILE_PERM_770);
132     ret = CommonUtils::WriteCommandResultToFile(fd, cmd2);
133     ASSERT_EQ(true, ret);
134 }
135 
136 /**
137  * @tc.name: TimeUtilOhosTest001
138  * @tc.desc: Test Sleep/GetMillSecOfSec defined in namespace TimeUtil
139  * @tc.type: FUNC
140  * @tc.require: issueI65DUW
141  */
142 HWTEST_F(AdapterUtilityOhosTest, TimeUtilOhosTest001, testing::ext::TestSize.Level3)
143 {
144     auto time = TimeUtil::GetMillSecOfSec();
145     ASSERT_GE(time, 0);
146     int sleepSecs = 1;
147     TimeUtil::Sleep(sleepSecs);
148     ASSERT_TRUE(true);
149 }
150 
151 /**
152  * @tc.name: TimeUtilOhosTest002
153  * @tc.desc: Test Get0ClockStampMs/GetSteadyClockTimeMs defined in namespace TimeUtil
154  * @tc.type: FUNC
155  * @tc.require: issueI65DUW
156  */
157 HWTEST_F(AdapterUtilityOhosTest, TimeUtilOhosTest002, testing::ext::TestSize.Level3)
158 {
159     auto time1 = TimeUtil::Get0ClockStampMs();
160     auto time2 = TimeUtil::GetSteadyClockTimeMs();
161     ASSERT_GE(time1, 0);
162     ASSERT_GE(time2, 0);
163 }
164 
165 /**
166  * @tc.name: FileUtilOhosTest001
167  * @tc.desc: Test LoadBufferFromFile/SaveBufferToFile defined in namespace FileUtil
168  * @tc.type: FUNC
169  * @tc.require: issueI65DUW
170  */
171 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest001, testing::ext::TestSize.Level3)
172 {
173     std::string caseName("FileUtilOhosTest001");
174     std::vector<char> content;
175     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "123");
176     (void)FileUtil::LoadBufferFromFile(GenerateLogFileName(caseName, SUFFIX_0), content);
177     ASSERT_TRUE(true);
178     (void)FileUtil::SaveBufferToFile(GenerateLogFileName(caseName, SUFFIX_0), content, true);
179     ASSERT_TRUE(true);
180 }
181 
182 /**
183  * @tc.name: FileUtilOhosTest002
184  * @tc.desc: Test ExtractFilePath/ExtractFileName defined in namespace FileUtil
185  * @tc.type: FUNC
186  * @tc.require: issueI65DUW
187  */
188 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest002, testing::ext::TestSize.Level3)
189 {
190     std::string path = "ohos/test/123.txt";
191     auto dir = FileUtil::ExtractFilePath(path);
192     ASSERT_EQ("ohos/test/", dir);
193     auto name = FileUtil::ExtractFileName(path);
194     ASSERT_EQ("123.txt", name);
195 }
196 
197 /**
198  * @tc.name: FileUtilOhosTest003
199  * @tc.desc: Test ExcludeTrailingPathDelimiter/IncludeTrailingPathDelimiter defined in namespace FileUtil
200  * @tc.type: FUNC
201  * @tc.require: issueI65DUW
202  */
203 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest003, testing::ext::TestSize.Level3)
204 {
205     auto excludeRet = FileUtil::ExcludeTrailingPathDelimiter("ohos/test/123.txt");
206     ASSERT_EQ("ohos/test/123.txt", excludeRet);
207     auto name = FileUtil::IncludeTrailingPathDelimiter("ohos/test/123.txt/");
208     ASSERT_EQ("ohos/test/123.txt/", name);
209 }
210 
211 /**
212  * @tc.name: FileUtilOhosTest004
213  * @tc.desc: Test ChangeModeFile defined in namespace FileUtil
214  * @tc.type: FUNC
215  * @tc.require: issueI65DUW
216  */
217 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest004, testing::ext::TestSize.Level3)
218 {
219     std::string caseName("FileUtilOhosTest004");
220     (void)FileUtil::ChangeModeFile(GenerateLogFileName(caseName, SUFFIX_0), FileUtil::FILE_PERM_755);
221     ASSERT_TRUE(true);
222     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "test content");
223     (void)FileUtil::ChangeModeFile(GenerateLogFileName(caseName, SUFFIX_0), FileUtil::FILE_PERM_660);
224     ASSERT_TRUE(true);
225 }
226 
227 /**
228  * @tc.name: FileUtilOhosTest005
229  * @tc.desc: Test Umask defined in namespace FileUtil
230  * @tc.type: FUNC
231  * @tc.require: issueI65DUW
232  */
233 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest005, testing::ext::TestSize.Level3)
234 {
235     auto umask = FileUtil::Umask(FileUtil::FILE_PERM_755);
236     auto expectedRet = 18;
237     ASSERT_EQ(expectedRet, umask);
238 }
239 
240 /**
241  * @tc.name: FileUtilOhosTest006
242  * @tc.desc: Test FormatPath2UnixStyle/RemoveFolderBeginWith defined in namespace FileUtil
243  * @tc.type: FUNC
244  * @tc.require: issueI65DUW
245  */
246 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest006, testing::ext::TestSize.Level3)
247 {
248     std::string path = std::string(LOG_FILE_PATH);
249     FileUtil::FormatPath2UnixStyle(path);
250     ASSERT_TRUE(true);
251     FileUtil::RemoveFolderBeginWith(path, "data");
252     ASSERT_TRUE(true);
253 }
254 
255 /**
256  * @tc.name: FileUtilOhosTest007
257  * @tc.desc: Test WriteBufferToFd defined in namespace FileUtil
258  * @tc.type: FUNC
259  * @tc.require: issueI65DUW
260  */
261 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest007, testing::ext::TestSize.Level3)
262 {
263     std::string caseName("FileUtilOhosTest007");
264     auto fd = -1;
265     std::string writeContent = "write content";
266     auto ret = FileUtil::WriteBufferToFd(fd, writeContent.c_str(), writeContent.size());
267     ASSERT_TRUE(!ret);
268     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "test");
269     fd = FileUtil::Open(GenerateLogFileName(caseName, SUFFIX_0),
270         O_CREAT | O_WRONLY | O_TRUNC, FileUtil::FILE_PERM_770);
271     ret = FileUtil::WriteBufferToFd(fd, nullptr, writeContent.size());
272     ASSERT_TRUE(!ret);
273     (void)FileUtil::WriteBufferToFd(fd, "", writeContent.size());
274     ASSERT_TRUE(true);
275     (void)FileUtil::WriteBufferToFd(fd, writeContent.c_str(), writeContent.size());
276     ASSERT_TRUE(true);
277 }
278 
279 /**
280  * @tc.name: FileUtilOhosTest008
281  * @tc.desc: Test CreateFile defined in namespace FileUtil
282  * @tc.type: FUNC
283  * @tc.require: issueI65DUW
284  */
285 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest008, testing::ext::TestSize.Level3)
286 {
287     std::string caseName("FileUtilOhosTest008");
288     int expectedFailedRet = -1;
289     auto ret = FileUtil::CreateFile(GenerateLogFileName(caseName, SUFFIX_0));
290     ASSERT_EQ(expectedFailedRet, ret);
291     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "1111");
292     (void)FileUtil::CreateFile(GenerateLogFileName(caseName, SUFFIX_0));
293     ASSERT_TRUE(true);
294 }
295 
296 /**
297  * @tc.name: FileUtilOhosTest009
298  * @tc.desc: Test CopyFile defined in namespace FileUtil
299  * @tc.type: FUNC
300  * @tc.require: issueI65DUW
301  */
302 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest009, testing::ext::TestSize.Level3)
303 {
304     std::string caseName("FileUtilOhosTest009");
305     int expectedFailedRet = -1;
306     auto ret = FileUtil::CopyFile("//...../invalid_dest_file", GenerateLogFileName(caseName, SUFFIX_1));
307     ASSERT_EQ(expectedFailedRet, ret);
308     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "test");
309     ret = FileUtil::CopyFile(GenerateLogFileName(caseName, SUFFIX_0), "//...../invalid_dest_file");
310     ASSERT_EQ(expectedFailedRet, ret);
311     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_1), "test");
312     (void)FileUtil::CopyFile(GenerateLogFileName(caseName, SUFFIX_0), GenerateLogFileName(caseName, SUFFIX_1));
313     ASSERT_TRUE(true);
314 }
315 
316 /**
317  * @tc.name: FileUtilOhosTest010
318  * @tc.desc: Test GetLastLine defined in namespace FileUtil
319  * @tc.type: FUNC
320  * @tc.require: issueI65DUW
321  */
322 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest010, testing::ext::TestSize.Level3)
323 {
324     std::string caseName("FileUtilOhosTest010");
325     ifstream in(GenerateLogFileName(caseName, SUFFIX_0));
326     std::string line;
327     int invalidMaxLen = 5;
328     auto ret = FileUtil::GetLastLine(in, line, invalidMaxLen);
329     ASSERT_TRUE(!ret);
330     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_1), "line1");
331     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_1), "\nline2");
332     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_1), "\nline3");
333     ifstream in1(GenerateLogFileName(caseName, SUFFIX_1));
334     ret = FileUtil::GetLastLine(in1, line, invalidMaxLen);
335     ASSERT_TRUE(!ret);
336     int validMaxLen = 2;
337     ret = FileUtil::GetLastLine(in1, line, validMaxLen);
338     ASSERT_TRUE(!ret);
339     validMaxLen = 3;
340     ret = FileUtil::GetLastLine(in1, line, validMaxLen);
341     ASSERT_TRUE(!ret);
342 }
343 
344 /**
345  * @tc.name: FileUtilOhosTest011
346  * @tc.desc: Test GetParentDir defined in namespace FileUtil
347  * @tc.type: FUNC
348  * @tc.require: issueI65DUW
349  */
350 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest011, testing::ext::TestSize.Level3)
351 {
352     auto ret = FileUtil::GetParentDir("");
353     ASSERT_EQ("", ret);
354     ret = FileUtil::GetParentDir("123/345/789");
355     ASSERT_EQ("123/345", ret);
356 }
357 
358 /**
359  * @tc.name: FileUtilOhosTest012
360  * @tc.desc: Test IslegalPath defined in namespace FileUtil
361  * @tc.type: FUNC
362  * @tc.require: issueI65DUW
363  */
364 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest012, testing::ext::TestSize.Level3)
365 {
366     auto ret = FileUtil::IsLegalPath("aa/../bb");
367     ASSERT_TRUE(!ret);
368     ret = FileUtil::IsLegalPath("aa/./bb");
369     ASSERT_TRUE(!ret);
370     ret = FileUtil::IsLegalPath("aa/bb/");
371     ASSERT_TRUE(ret);
372     ret = FileUtil::IsLegalPath("aa/bb/cc");
373     ASSERT_TRUE(ret);
374 }
375 
376 /**
377  * @tc.name: FileUtilOhosTest013
378  * @tc.desc: Test RenameFile defined in namespace FileUtil
379  * @tc.type: FUNC
380  * @tc.require: issueI65DUW
381  */
382 HWTEST_F(AdapterUtilityOhosTest, FileUtilOhosTest013, testing::ext::TestSize.Level3)
383 {
384     std::string caseName("FileUtilOhosTest013");
385     auto ret = FileUtil::RenameFile(GenerateLogFileName(caseName, SUFFIX_0),
386         GenerateLogFileName(caseName, SUFFIX_1));
387     ASSERT_TRUE(!ret);
388     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_0), "line1");
389     (void)FileUtil::SaveStringToFile(GenerateLogFileName(caseName, SUFFIX_1), "line1");
390     (void)FileUtil::RenameFile(GenerateLogFileName(caseName, SUFFIX_0),
391         GenerateLogFileName(caseName, SUFFIX_1));
392     ASSERT_TRUE(true);
393 }
394 }
395 }