/* * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifdef OHOS_ENABLE_PARAMETER #undef _GNU_SOURCE #include #define _GNU_SOURCE #include #include #endif #include #include #include #define OVERWRITE 1 #define ZERO 0 #define INVALID_ENV (-1) #define VALID_ENV 0 #define ENABLE_LOG "param set musl.log.enable true" #define LOG_LEVEL_FATAL "param set musl.log.level FATAL" #define LOG_LEVEL_WARN "param set musl.log.level WARN" #define LOG_LEVEL_ERROR "param set musl.log.level ERROR" #define LOG_LEVEL_DEBUG "param set musl.log.level DEBUG" #define LOG_LEVEL_INFO "param set musl.log.level INFO" int TestValidEnv(const char *str) { FILE *res = popen(str, "r"); if (res == NULL) { return INVALID_ENV; } char path[1035]; while (fgets(path, sizeof(path), res) != NULL) { if (strstr(path, "fail")) { return INVALID_ENV; } } pclose(res); return VALID_ENV; } void TestFatalLevel() { int result = TestValidEnv(LOG_LEVEL_FATAL); if (result == INVALID_ENV) { return; } musl_log_reset(); if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_FATAL)) { t_error("LOG_LEVEL_FATAL level LOG_FATAL print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_ERROR)) { t_error("LOG_LEVEL_FATAL level LOG_ERROR print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_WARN)) { t_error("LOG_LEVEL_FATAL level LOG_WARN print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_INFO)) { t_error("LOG_LEVEL_FATAL level LOG_INFO print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_DEBUG)) { t_error("LOG_LEVEL_FATAL level LOG_DEBUG print failed \n"); } } void TestErrorLevel() { int result = TestValidEnv(LOG_LEVEL_ERROR); if (result == INVALID_ENV) { return; } musl_log_reset(); if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_FATAL)) { t_error("LOG_LEVEL_ERROR level LOG_FATAL print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_ERROR)) { t_error("LOG_LEVEL_ERROR level LOG_ERROR print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_WARN)) { t_error("LOG_LEVEL_ERROR level LOG_WARN print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_INFO)) { t_error("LOG_LEVEL_ERROR level LOG_INFO print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_DEBUG)) { t_error("LOG_LEVEL_ERROR level LOG_DEBUG print failed \n"); } } void TestWarnLevel() { int result = TestValidEnv(LOG_LEVEL_WARN); if (result == INVALID_ENV) { return; } musl_log_reset(); if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_FATAL)) { t_error("LOG_LEVEL_WARN level LOG_FATAL print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_ERROR)) { t_error("LOG_LEVEL_WARN level LOG_ERROR print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_WARN)) { t_error("LOG_LEVEL_WARN level LOG_WARN print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_INFO)) { t_error("LOG_LEVEL_WARN level LOG_INFO print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_DEBUG)) { t_error("LOG_LEVEL_WARN level LOG_DEBUG print failed \n"); } } void TestInfoLevel() { int result = TestValidEnv(LOG_LEVEL_INFO); if (result == INVALID_ENV) { return; } musl_log_reset(); if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_FATAL)) { t_error("LOG_LEVEL_INFO level LOG_FATAL print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_ERROR)) { t_error("LOG_LEVEL_INFO level LOG_ERROR print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_WARN)) { t_error("LOG_LEVEL_INFO level LOG_WARN print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_INFO)) { t_error("LOG_LEVEL_INFO level LOG_INFO print failed \n"); } if (HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_DEBUG)) { t_error("LOG_LEVEL_INFO level LOG_DEBUG print failed \n"); } } void TestDebugLevel() { int result = TestValidEnv(LOG_LEVEL_DEBUG); if (result == INVALID_ENV) { return; } musl_log_reset(); if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_FATAL)) { t_error("LOG_LEVEL_DEBUG level LOG_FATAL print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_ERROR)) { t_error("LOG_LEVEL_DEBUG level LOG_ERROR print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_WARN)) { t_error("LOG_LEVEL_DEBUG level LOG_WARN print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_INFO)) { t_error("LOG_LEVEL_DEBUG level LOG_INFO print failed \n"); } if (!HiLogAdapterIsLoggable(MUSL_LOG_DOMAIN, MUSL_LOG_TAG, LOG_DEBUG)) { t_error("LOG_LEVEL_DEBUG level LOG_DEBUG print failed \n"); } } int main() { #ifdef OHOS_ENABLE_PARAMETER int result = TestValidEnv(ENABLE_LOG); if (result == INVALID_ENV) { return ZERO; } TestFatalLevel(); TestErrorLevel(); TestWarnLevel(); TestInfoLevel(); TestDebugLevel(); #endif return t_status; }