1020a203aSopenharmony_ci/* 2020a203aSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3020a203aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4020a203aSopenharmony_ci * you may not use this file except in compliance with the License. 5020a203aSopenharmony_ci * You may obtain a copy of the License at 6020a203aSopenharmony_ci * 7020a203aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8020a203aSopenharmony_ci * 9020a203aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10020a203aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11020a203aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12020a203aSopenharmony_ci * See the License for the specific language governing permissions and 13020a203aSopenharmony_ci * limitations under the License. 14020a203aSopenharmony_ci */ 15020a203aSopenharmony_ci#include "faultlogger_client_test.h" 16020a203aSopenharmony_ci 17020a203aSopenharmony_ci#include <sys/types.h> 18020a203aSopenharmony_ci#include <unistd.h> 19020a203aSopenharmony_ci 20020a203aSopenharmony_ci#include <cinttypes> 21020a203aSopenharmony_ci#include <mutex> 22020a203aSopenharmony_ci#include <string> 23020a203aSopenharmony_ci 24020a203aSopenharmony_ci#include "file_util.h" 25020a203aSopenharmony_cinamespace OHOS { 26020a203aSopenharmony_cinamespace HiviewDFX { 27020a203aSopenharmony_cistd::string GetFaultLogName(const time_t& time, int32_t id, const std::string& type, const std::string& module) 28020a203aSopenharmony_ci{ 29020a203aSopenharmony_ci static std::mutex localMutex; 30020a203aSopenharmony_ci std::lock_guard<std::mutex> lock(localMutex); 31020a203aSopenharmony_ci const int32_t bufLen = 64; 32020a203aSopenharmony_ci struct tm* timeInfo = localtime(&time); 33020a203aSopenharmony_ci if (timeInfo == nullptr) { 34020a203aSopenharmony_ci return ""; 35020a203aSopenharmony_ci } 36020a203aSopenharmony_ci 37020a203aSopenharmony_ci char buf[bufLen] = {0}; 38020a203aSopenharmony_ci strftime(buf, bufLen - 1, "%Y%m%d%H%M%S", timeInfo); 39020a203aSopenharmony_ci auto fileName = type + "-" + module + "-" + std::to_string(id) + "-" + std::string(buf, strlen(buf)); 40020a203aSopenharmony_ci return fileName; 41020a203aSopenharmony_ci} 42020a203aSopenharmony_ci 43020a203aSopenharmony_ciFaultLogInfoInner CreateFaultLogInfo(const time_t& time, int32_t id, int32_t type, const std::string& module) 44020a203aSopenharmony_ci{ 45020a203aSopenharmony_ci FaultLogInfoInner info; 46020a203aSopenharmony_ci info.time = time; 47020a203aSopenharmony_ci info.id = id; 48020a203aSopenharmony_ci info.pid = getpid(); 49020a203aSopenharmony_ci info.faultLogType = type; 50020a203aSopenharmony_ci info.module = module; 51020a203aSopenharmony_ci info.summary = "faultlogger_client_test"; 52020a203aSopenharmony_ci info.sectionMaps["APPVERSION"] = "1.0"; 53020a203aSopenharmony_ci info.sectionMaps["FAULT_MESSAGE"] = "Nullpointer"; 54020a203aSopenharmony_ci info.sectionMaps["TRACEID"] = "0x1646145645646"; 55020a203aSopenharmony_ci info.sectionMaps["KEY_THREAD_INFO"] = "Test Thread Info"; 56020a203aSopenharmony_ci info.sectionMaps["REASON"] = "TestReason"; 57020a203aSopenharmony_ci info.sectionMaps["STACKTRACE"] = "#01 xxxxxx\n#02 xxxxxx\n"; 58020a203aSopenharmony_ci return info; 59020a203aSopenharmony_ci} 60020a203aSopenharmony_ci 61020a203aSopenharmony_cibool CheckLogFileExist(const time_t& time, int32_t id, const std::string& type, const std::string& module) 62020a203aSopenharmony_ci{ 63020a203aSopenharmony_ci auto fileName = GetFaultLogName(time, id, type, module); 64020a203aSopenharmony_ci auto path = "/data/log/faultlog/faultlogger/" + fileName; 65020a203aSopenharmony_ci return FileUtil::FileExists(path); 66020a203aSopenharmony_ci} 67020a203aSopenharmony_ci} // namespace HiviewDFX 68020a203aSopenharmony_ci} // namespace OHOS