OCT 1. 增加doctest框架

2. 重新组织单测目录
This commit is contained in:
huangxin 2023-02-02 10:58:49 +08:00
parent fbe5ddc560
commit 60eda95739
15 changed files with 101 additions and 7073 deletions

View File

@ -1,5 +1,10 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR) CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
INCLUDE(depend/system_libs.cmake)
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/depend)
IF (BUILD_TESTING)
INCLUDE(doctest_framework)
ENDIF ()
INCLUDE(system_libs)
SET(VCPE_VERSION "1.0.1") SET(VCPE_VERSION "1.0.1")
PROJECT(vCPE VERSION "${VCPE_VERSION}") PROJECT(vCPE VERSION "${VCPE_VERSION}")
@ -9,7 +14,7 @@ OPTION(USED_LWIP "PPPoE of LWIP support for vCPE" OFF)
OPTION(USED_OPENDHCPD "DHCP server for vCPE" OFF) OPTION(USED_OPENDHCPD "DHCP server for vCPE" OFF)
OPTION(USED_OPENDHCPDDNS "DHCP And DNS server for vCPE" OFF) OPTION(USED_OPENDHCPDDNS "DHCP And DNS server for vCPE" OFF)
OPTION(USED_USER_VNI "Support pass user vni id from console command line" OFF) OPTION(USED_USER_VNI "Support pass user vni id from console command line" OFF)
option(BUILD_TESTING "Enable tests" OFF) OPTION(BUILD_TESTING "Enable tests" OFF)
# #
OPTION(USED_REDIS "Add redis database support for vCPE" OFF) OPTION(USED_REDIS "Add redis database support for vCPE" OFF)
@ -113,6 +118,5 @@ ADD_SUBDIRECTORY(srcs/libs)
ADD_SUBDIRECTORY(srcs/httpserver) ADD_SUBDIRECTORY(srcs/httpserver)
IF (BUILD_TESTING) IF (BUILD_TESTING)
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(unit_test)
ADD_SUBDIRECTORY(srcs/libs/unit_test)
ENDIF () ENDIF ()

BIN
depend/doctest-2.4.9.tar.gz Normal file

Binary file not shown.

View File

@ -0,0 +1,18 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.14 FATAL_ERROR)
INCLUDE(FetchContent)
IF (BUILD_TESTING)
FETCHCONTENT_DECLARE(doctest_framework
URL file://${CMAKE_SOURCE_DIR}/depend/doctest-2.4.9.tar.gz
URL_MD5 a7948b5ec1f69de6f84c7d7487aaf79b)
FETCHCONTENT_MAKEAVAILABLE(doctest_framework)
FETCHCONTENT_GETPROPERTIES(doctest_framework)
IF (NOT doctest_framework_POPULATED)
FETCHCONTENT_POPULATE(doctest_framework)
ADD_SUBDIRECTORY(${doctest_framework_SOURCE_DIR})
ENDIF ()
INCLUDE_DIRECTORIES(${doctest_framework_SOURCE_DIR}/doctest)
LIST(APPEND CMAKE_MODULE_PATH ${doctest_framework_SOURCE_DIR}/scripts/cmake)
ENDIF ()

View File

@ -68,9 +68,9 @@ ADD_CUSTOM_COMMAND(TARGET ${PROJECT_TARGET}
COMMENT "!!!!!! Notice: Automatic upgreade configuration files after build project." COMMENT "!!!!!! Notice: Automatic upgreade configuration files after build project."
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/config/" COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/config/"
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/log/" COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/log/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/../config/zlog.conf" "${CMAKE_CURRENT_BINARY_DIR}/config/" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config/zlog.conf" "${CMAKE_CURRENT_BINARY_DIR}/config/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/../config/vcpe.cfg" "${CMAKE_CURRENT_BINARY_DIR}/config/" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config/vcpe.cfg" "${CMAKE_CURRENT_BINARY_DIR}/config/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/../config/banner.txt" "${CMAKE_CURRENT_BINARY_DIR}/config/") COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config/banner.txt" "${CMAKE_CURRENT_BINARY_DIR}/config/")
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install/") SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install/")
INSTALL(FILES ../config/vcpe.cfg ../config/vcpe@.service ../config/banner.txt ../config/zlog.conf INSTALL(FILES ../config/vcpe.cfg ../config/vcpe@.service ../config/banner.txt ../config/zlog.conf

View File

@ -83,9 +83,6 @@ typedef enum {
CONFIG_ITEM_ID_MAX CONFIG_ITEM_ID_MAX
} CONFIG_ITEM_ID; } CONFIG_ITEM_ID;
const char *get_cur_process_dir();
const char *get_cur_process_name();
const char *config_get_ssl_ca_path(); const char *config_get_ssl_ca_path();
const char *cfg_get_config_directory(); const char *cfg_get_config_directory();
int cfg_get_banner_enable(); int cfg_get_banner_enable();

View File

@ -44,6 +44,8 @@ extern "C" {
#define DEBUG_CODE_LINE() (dzlog_debug("\n")) #define DEBUG_CODE_LINE() (dzlog_debug("\n"))
const char *get_cur_process_dir();
const char *get_cur_process_name();
int file_exists(const char *pPath); int file_exists(const char *pPath);
const char *basename_v2(const char *path); const char *basename_v2(const char *path);
int dirname_v2(const char *path, char *dir); int dirname_v2(const char *path, char *dir);

View File

@ -7,7 +7,8 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
typedef unsigned char uuid_t[16]; #define UUID_BYTES (16)
typedef unsigned char uuid_t[UUID_BYTES];
#define uuid_generate(out) uuid_generate_random(out) #define uuid_generate(out) uuid_generate_random(out)

View File

@ -94,8 +94,8 @@ char *bin2hex(char *p, const unsigned char *cp, unsigned int count) {
while (count) { while (count) {
unsigned char c = *cp++; unsigned char c = *cp++;
/* put lowercase hex digits */ /* put lowercase hex digits */
*p++ = (char)(0x20 | hex_asc[c >> 4]); *p++ = (char)(0x20 | hex_asc[c >> 4]);
*p++ = (char)(0x20 | hex_asc[c & 0xf]); *p++ = (char)(0x20 | hex_asc[c & 0xf]);
count--; count--;
} }
@ -245,7 +245,11 @@ int get_nic_info(const char *pName,
} }
const char *get_cur_process_name() { const char *get_cur_process_name() {
static char g_exeName[1024]; static char g_exeName[1024] = {0};
if (strlen(g_exeName) > 0) {
return basename_v2(g_exeName);
}
memset(g_exeName, 0, 1024); memset(g_exeName, 0, 1024);
if (readlink("/proc/self/exe", g_exeName, 1023) <= 0) { if (readlink("/proc/self/exe", g_exeName, 1023) <= 0) {

View File

@ -1,8 +0,0 @@
PROJECT(libcommon_utest)
INCLUDE_DIRECTORIES(./ ../include ../../include ../../../test)
AUX_SOURCE_DIRECTORY(misc UTEST_SRC)
ADD_EXECUTABLE(${PROJECT_NAME} ${UTEST_SRC})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} common)

View File

@ -1,29 +0,0 @@
//
// Created by xajhuang on 2023/1/31.
//
// provides main(); this line is required in only one .cpp file
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
#include "uuid.h"
TEST_SUITE("Miscellaneous functions") {
TEST_CASE("UUID test") {
uuid_t msgId;
char strMsgId[64];
memset(msgId, 0, sizeof(msgId));
memset(strMsgId, 0, 64);
uuid_generate_random(msgId);
for (int i = 0; i < sizeof(msgId); i++) {
CHECK_NE(msgId[0], 0);
}
uuid_unparse(msgId, strMsgId);
CHECK_EQ(strlen(strMsgId), 36);
INFO("Random UUID: ", strMsgId);
}
}

View File

@ -1,3 +0,0 @@
PROJECT(vcpe_utest)
INCLUDE_DIRECTORIES(./ ../srcs/include ../srcs/libs/include)

File diff suppressed because it is too large Load Diff

15
unit_test/CMakeLists.txt Normal file
View File

@ -0,0 +1,15 @@
PROJECT(libcommon_utest)
INCLUDE_DIRECTORIES(. ${CMAKE_SOURCE_DIR}/srcs/include ${CMAKE_SOURCE_DIR}/srcs/libs/include)
AUX_SOURCE_DIRECTORY(misc UTEST_SRC)
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
ADD_EXECUTABLE(${PROJECT_NAME} ${UTEST_SRC})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} common)
#INCLUDE(CTest)
#INCLUDE(doctest)
#doctest_discover_tests(${PROJECT_NAME})

View File

@ -0,0 +1,13 @@
//
// Created by xajhuang on 2023/2/1.
//
#include "doctest.h"
#include "misc.h"
TEST_SUITE("Miscellaneous functions") {
TEST_CASE("GetProcessName") {
const char *processName = get_cur_process_name();
CHECK_EQ(doctest::String(processName), PROJECT_NAME);
}
}

View File

@ -0,0 +1,33 @@
//
// Created by xajhuang on 2023/1/31.
//
// provides main(); this line is required in only one .cpp file
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
#include "uuid.h"
TEST_SUITE("Miscellaneous functions") {
TEST_CASE("UUID TEST") {
int i;
uuid_t msgId;
memset(msgId, 0, sizeof(msgId));
uuid_generate_random(msgId);
SUBCASE("Generate UUID") {
unsigned int sum = 0;
for (i = 0; i < UUID_BYTES; i++) {
sum += msgId[i];
}
REQUIRE_NE(sum, 0);
}
SUBCASE("UUID String") {
char strMsgId[64];
memset(strMsgId, 0, 64);
uuid_unparse(msgId, strMsgId);
REQUIRE_MESSAGE((strlen(strMsgId) == 36), "UUID:", strMsgId);
}
}
}