1/*
2 * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
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 <cstdio>
17#include <string>
18
19#include <gtest/gtest.h>
20
21#include "hhlog.h"
22
23using namespace testing::ext;
24using namespace std;
25namespace OHOS {
26namespace Developtools {
27namespace Hiebpf {
28class HHLoggerTest : public ::testing::Test {
29public:
30    static void SetUpTestCase() {};
31    static void TearDownTestCase() {};
32
33    void SetUp() {}
34    void TearDown() {}
35};
36
37/**
38 * @tc.name: GetLogFileName
39 * @tc.desc: Test HHLogger GetLogFileName
40 * @tc.type: FUNC
41 */
42HWTEST_F(HHLoggerTest, GetLogFileName, TestSize.Level1)
43{
44    std::string fileName = HHLogger::GetInstance().GetLogFileName();
45    EXPECT_STRNE(fileName.c_str(), "");
46}
47
48/**
49 * @tc.name: GetFormatTime
50 * @tc.desc: Test HHLogger GetFormatTime
51 * @tc.type: FUNC
52 */
53HWTEST_F(HHLoggerTest, GetFormatTime, TestSize.Level1)
54{
55    std::string formatTime = HHLogger::GetInstance().GetFormatTime();
56    EXPECT_STRNE(formatTime.c_str(), "");
57}
58
59/**
60 * @tc.name: UpdateTimer
61 * @tc.desc: Test HHLogger UpdateTimer
62 * @tc.type: FUNC
63 */
64HWTEST_F(HHLoggerTest, UpdateTimer, TestSize.Level1)
65{
66    int ret = HHLogger::GetInstance().UpdateTimer();
67    EXPECT_EQ(ret, 0);
68}
69
70/**
71 * @tc.name: InitLogger
72 * @tc.desc: Test HHLogger InitLogger
73 * @tc.type: FUNC
74 */
75HWTEST_F(HHLoggerTest, InitLogger, TestSize.Level1)
76{
77    auto ret = HHLogger::GetInstance().InitLogger(HHLOG_DEBUG, "");
78    EXPECT_EQ(ret, -1);
79
80    ret = HHLogger::GetInstance().InitLogger(HHLOG_DEBUG, "stdout");
81    EXPECT_EQ(ret, 0);
82
83    std::string fileName = "/data/local/tmp/libebpf.log";
84    ret = HHLogger::GetInstance().InitLogger(HHLOG_DEBUG, fileName);
85    ASSERT_EQ(ret, 0);
86    std::string cmd = "rm " + fileName;
87    system(cmd.c_str());
88}
89
90/**
91 * @tc.name: Start
92 * @tc.desc: Test HHLogger Start
93 * @tc.type: FUNC
94 */
95HWTEST_F(HHLoggerTest, Start, TestSize.Level1)
96{
97    HHLogger logger;
98    auto ret = logger.Start(HHLOG_NONE);
99    EXPECT_EQ(ret, 0);
100    ret = logger.GetLogLevel();
101    EXPECT_EQ(ret, HHLOG_NONE);
102
103    ret = logger.Start(HHLOG_DEBUG, "");
104    EXPECT_EQ(ret, -1);
105
106    ret = logger.Start(HHLOG_DEBUG, "stdout");
107    EXPECT_EQ(ret, 0);
108    HHLOGD(true, HHLOG_DEBUG, "this is test");
109    sleep(1);
110
111    ret = logger.GetLogLevel();
112    EXPECT_EQ(ret, 0);
113    auto isStop = logger.IsStopped();
114    EXPECT_FALSE(isStop);
115}
116} // namespace Hiebpf
117} // namespace Developtools
118} // namespace OHOS
119