Files
utun2/tests/test_debug_categories.c
T

106 lines
4.5 KiB
C

/**
* Тест настройки категорий отладки из аргументов командной строки
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../lib/debug_config.h"
int main(int argc, char *argv[]) {
DEBUG_INFO(DEBUG_CATEGORY_ALL, "=== Тест настройки категорий из аргументов ===");
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Запуск с аргументами:");
for (int i = 0; i < argc; i++) {
DEBUG_INFO(DEBUG_CATEGORY_ALL, "%s", argv[i]);
}
DEBUG_INFO(DEBUG_CATEGORY_ALL, "\n");
// Инициализация отладки
debug_config_init();
// Анализ аргументов командной строки
int debug_categories = 0;
// Если есть специфические категории, сначала отключаем все
int has_specific_categories = 0;
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--debug-etcp") == 0) {
has_specific_categories = 1;
} else if (strcmp(argv[i], "--debug-queue") == 0) {
has_specific_categories = 1;
} else if (strcmp(argv[i], "--debug-memory") == 0) {
has_specific_categories = 1;
} else if (strcmp(argv[i], "--debug-none") == 0) {
has_specific_categories = 1;
}
}
// Если есть специфические категории, отключаем все по умолчанию
if (has_specific_categories) {
debug_set_categories(DEBUG_CATEGORY_NONE);
debug_categories = DEBUG_CATEGORY_NONE;
}
// Теперь обрабатываем аргументы
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--debug-etcp") == 0) {
debug_enable_category(DEBUG_CATEGORY_ETCP);
debug_categories |= DEBUG_CATEGORY_ETCP;
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Включена категория ETCP");
} else if (strcmp(argv[i], "--debug-queue") == 0) {
debug_enable_category(DEBUG_CATEGORY_LL_QUEUE);
debug_categories |= DEBUG_CATEGORY_LL_QUEUE;
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Включена категория LL_QUEUE");
} else if (strcmp(argv[i], "--debug-memory") == 0) {
debug_enable_category(DEBUG_CATEGORY_MEMORY);
debug_categories |= DEBUG_CATEGORY_MEMORY;
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Включена категория MEMORY");
} else if (strcmp(argv[i], "--debug-all") == 0) {
debug_set_categories(DEBUG_CATEGORY_ALL);
debug_categories = DEBUG_CATEGORY_ALL;
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Включены все категории");
break; // Все категории уже включены
} else if (strcmp(argv[i], "--debug-none") == 0) {
debug_set_categories(DEBUG_CATEGORY_NONE);
debug_categories = DEBUG_CATEGORY_NONE;
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Выключены все категории");
break; // Все категории уже выключены
} else if (strcmp(argv[i], "--level") == 0 && i+1 < argc) {
i++;
if (strcmp(argv[i], "error") == 0) {
debug_set_level(DEBUG_LEVEL_ERROR);
DEBUG_ERROR(DEBUG_CATEGORY_ALL, "Установлен уровень ERROR");
} else if (strcmp(argv[i], "info") == 0) {
debug_set_level(DEBUG_LEVEL_INFO);
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Установлен уровень INFO");
} else if (strcmp(argv[i], "debug") == 0) {
debug_set_level(DEBUG_LEVEL_DEBUG);
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Установлен уровень DEBUG");
}
}
}
DEBUG_INFO(DEBUG_CATEGORY_ALL, "\n=== Тестовые сообщения ===");
// Сообщения от разных категорий
DEBUG_INFO(DEBUG_CATEGORY_ETCP, "Сообщение от ETCP категории");
DEBUG_INFO(DEBUG_CATEGORY_LL_QUEUE, "Сообщение от LL_QUEUE категории");
DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "Сообщение от MEMORY категории");
DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "Сообщение от CONNECTION категории");
DEBUG_INFO(DEBUG_CATEGORY_CRYPTO, "Сообщение от CRYPTO категории");
DEBUG_INFO(DEBUG_CATEGORY_ALL, "\n=== Информация о текущих настройках ===");
DEBUG_INFO(DEBUG_CATEGORY_ALL, "Активные категории:");
if (debug_categories & DEBUG_CATEGORY_ETCP) printf("ETCP ");
if (debug_categories & DEBUG_CATEGORY_LL_QUEUE) printf("LL_QUEUE ");
if (debug_categories & DEBUG_CATEGORY_MEMORY) printf("MEMORY ");
if (debug_categories & DEBUG_CATEGORY_CONNECTION) printf("CONNECTION ");
if (debug_categories & DEBUG_CATEGORY_CRYPTO) printf("CRYPTO ");
if (debug_categories == DEBUG_CATEGORY_ALL) printf("ALL ");
if (debug_categories == DEBUG_CATEGORY_NONE) printf("NONE ");
DEBUG_INFO(DEBUG_CATEGORY_ALL, "");
return 0;
}