106f6ba60Sopenharmony_ci/* 206f6ba60Sopenharmony_ci * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. 306f6ba60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 406f6ba60Sopenharmony_ci * you may not use this file except in compliance with the License. 506f6ba60Sopenharmony_ci * You may obtain a copy of the License at 606f6ba60Sopenharmony_ci * 706f6ba60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 806f6ba60Sopenharmony_ci * 906f6ba60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1006f6ba60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1106f6ba60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1206f6ba60Sopenharmony_ci * See the License for the specific language governing permissions and 1306f6ba60Sopenharmony_ci * limitations under the License. 1406f6ba60Sopenharmony_ci */ 1506f6ba60Sopenharmony_ci 1606f6ba60Sopenharmony_ci#include <cstdio> 1706f6ba60Sopenharmony_ci#include <string> 1806f6ba60Sopenharmony_ci 1906f6ba60Sopenharmony_ci#include <gtest/gtest.h> 2006f6ba60Sopenharmony_ci 2106f6ba60Sopenharmony_ci#include "libbpf_logger.h" 2206f6ba60Sopenharmony_ci 2306f6ba60Sopenharmony_ciusing namespace testing::ext; 2406f6ba60Sopenharmony_ciusing namespace std; 2506f6ba60Sopenharmony_cinamespace OHOS { 2606f6ba60Sopenharmony_cinamespace Developtools { 2706f6ba60Sopenharmony_cinamespace Hiebpf { 2806f6ba60Sopenharmony_ciclass LIBBPFLoggerTest : public ::testing::Test { 2906f6ba60Sopenharmony_cipublic: 3006f6ba60Sopenharmony_ci static void SetUpTestCase() {}; 3106f6ba60Sopenharmony_ci static void TearDownTestCase() {}; 3206f6ba60Sopenharmony_ci 3306f6ba60Sopenharmony_ci void SetUp() {} 3406f6ba60Sopenharmony_ci void TearDown() {} 3506f6ba60Sopenharmony_ci}; 3606f6ba60Sopenharmony_ci 3706f6ba60Sopenharmony_ci/** 3806f6ba60Sopenharmony_ci * @tc.name: MakeUnique 3906f6ba60Sopenharmony_ci * @tc.desc: Test LIBBPFLogger MakeUnique 4006f6ba60Sopenharmony_ci * @tc.type: FUNC 4106f6ba60Sopenharmony_ci */ 4206f6ba60Sopenharmony_ciHWTEST_F(LIBBPFLoggerTest, MakeUnique, TestSize.Level1) 4306f6ba60Sopenharmony_ci{ 4406f6ba60Sopenharmony_ci auto logger = LIBBPFLogger::MakeUnique("", -1); 4506f6ba60Sopenharmony_ci EXPECT_TRUE(logger == nullptr); 4606f6ba60Sopenharmony_ci 4706f6ba60Sopenharmony_ci logger = LIBBPFLogger::MakeUnique("stdout", 0); 4806f6ba60Sopenharmony_ci EXPECT_TRUE(logger != nullptr); 4906f6ba60Sopenharmony_ci} 5006f6ba60Sopenharmony_ci 5106f6ba60Sopenharmony_ci/** 5206f6ba60Sopenharmony_ci * @tc.name: Printf 5306f6ba60Sopenharmony_ci * @tc.desc: Test LIBBPFLogger Printf 5406f6ba60Sopenharmony_ci * @tc.type: FUNC 5506f6ba60Sopenharmony_ci */ 5606f6ba60Sopenharmony_ciHWTEST_F(LIBBPFLoggerTest, Printf, TestSize.Level1) 5706f6ba60Sopenharmony_ci{ 5806f6ba60Sopenharmony_ci LIBBPFLogger logger(0); 5906f6ba60Sopenharmony_ci va_list args; 6006f6ba60Sopenharmony_ci auto ret = logger.Printf(1, nullptr, args); 6106f6ba60Sopenharmony_ci EXPECT_EQ(ret, 0); 6206f6ba60Sopenharmony_ci 6306f6ba60Sopenharmony_ci char fmt[] = "text"; 6406f6ba60Sopenharmony_ci ret = logger.Printf(0, fmt, args); 6506f6ba60Sopenharmony_ci EXPECT_EQ(ret, -1); 6606f6ba60Sopenharmony_ci 6706f6ba60Sopenharmony_ci ret = logger.OpenLogFile("stdout"); 6806f6ba60Sopenharmony_ci EXPECT_EQ(ret, 0); 6906f6ba60Sopenharmony_ci ret = logger.Printf(0, fmt, args); 7006f6ba60Sopenharmony_ci EXPECT_GE(ret, 0); 7106f6ba60Sopenharmony_ci} 7206f6ba60Sopenharmony_ci 7306f6ba60Sopenharmony_ci/** 7406f6ba60Sopenharmony_ci * @tc.name: OpenLogFile 7506f6ba60Sopenharmony_ci * @tc.desc: Test LIBBPFLogger OpenLogFile 7606f6ba60Sopenharmony_ci * @tc.type: FUNC 7706f6ba60Sopenharmony_ci */ 7806f6ba60Sopenharmony_ciHWTEST_F(LIBBPFLoggerTest, OpenLogFile, TestSize.Level1) 7906f6ba60Sopenharmony_ci{ 8006f6ba60Sopenharmony_ci LIBBPFLogger logger(0); 8106f6ba60Sopenharmony_ci auto ret = logger.OpenLogFile(""); 8206f6ba60Sopenharmony_ci EXPECT_EQ(ret, -1); 8306f6ba60Sopenharmony_ci 8406f6ba60Sopenharmony_ci ret = logger.OpenLogFile("stdout"); 8506f6ba60Sopenharmony_ci EXPECT_EQ(ret, 0); 8606f6ba60Sopenharmony_ci 8706f6ba60Sopenharmony_ci std::string fileName = "/data/local/tmp/libebpf.log"; 8806f6ba60Sopenharmony_ci ret = logger.OpenLogFile(fileName); 8906f6ba60Sopenharmony_ci ASSERT_EQ(ret, 0); 9006f6ba60Sopenharmony_ci std::string cmd = "rm " + fileName; 9106f6ba60Sopenharmony_ci system(cmd.c_str()); 9206f6ba60Sopenharmony_ci} 9306f6ba60Sopenharmony_ci 9406f6ba60Sopenharmony_ci/** 9506f6ba60Sopenharmony_ci * @tc.name: GetLogFileName 9606f6ba60Sopenharmony_ci * @tc.desc: Test LIBBPFLogger GetLogFileName 9706f6ba60Sopenharmony_ci * @tc.type: FUNC 9806f6ba60Sopenharmony_ci */ 9906f6ba60Sopenharmony_ciHWTEST_F(LIBBPFLoggerTest, GetLogFileName, TestSize.Level1) 10006f6ba60Sopenharmony_ci{ 10106f6ba60Sopenharmony_ci LIBBPFLogger logger(0); 10206f6ba60Sopenharmony_ci std::string fileName = logger.GetLogFileName(); 10306f6ba60Sopenharmony_ci EXPECT_STRNE(fileName.c_str(), ""); 10406f6ba60Sopenharmony_ci} 10506f6ba60Sopenharmony_ci} // namespace Hiebpf 10606f6ba60Sopenharmony_ci} // namespace Developtools 10706f6ba60Sopenharmony_ci} // namespace OHOS 108