1. python 目录的执行方式 — main.py 文件
  2. pygal的value模式:

    1. value_list = list(
    2. {
    3. 'value' : xxx,
    4. 'label' : xxx
    5. } for List Comprehensions
    6. )
    7. pie.add('{}'.format(xxx), values=value_list)
  3. CMake ```makefile UT CMakeList

UT

CMake 最低版本号要求

cmake_minimum_required (VERSION 2.8)

set(CMAKE_C_COMPILER “/usr/bin/gcc”)

set(CMAKE_CXX_COMPILER “/usr/bin/g++”)

项目信息

project(test)

版本号

set(test_VERSION_MAJOR 1)

set(test_VERSION_MINOR 0)

版本

set(CMAKE_BUILD_TYPE Debug)

option(CMAKE_ENABLE_FSANITIZE “This is a default option for valgrind” OFF)

set(CMAKE_ENABLE_FSANITIZE $ENV{ENABLE_FSANITIZE})

if (${CMAKE_ENABLE_FSANITIZE} STREQUAL “origin”)

set(COMM_C_FLAGS “-O0 -ggdb3 -Wall -Werror”)

else()

set(COMM_C_FLAGS “-O0 -ggdb3 -fsanitize=address -fno-omit-frame-pointer -static-libasan -fstack-protector-all -Wall -Werror”)

endif()

set(COMM_C_FLAGS “${COMM_C_FLAGS}”)

-Wno-uninitialized -Wno-unused-variable -Wno-unused-but-set-variable -Wno-sign-compare -Wno-pointer-sign

if(CMAKE_COMPILER_IS_GNUCXX)

这种写法的好处是,不会覆盖CMAKE_CXX_FLAGS本来的信息。只是把需要添加的内容添加进去。

set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11 -lstdc++”)

set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fpermissive -std=c++0x”)

set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -m32 -lstdc++ -DAUTOSTAR_LINUX -DDT_COMPILE_GCC -D_GLIBCXX_USE_CXX11_ABI=0”)

set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fpermissive -D_GLIBCXX_USE_CXX11_ABI=0”)

set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} -O0 -ggdb3 -Werror -Wfatal-errors”)

set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} -O0 -ggdb3”)

set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} ${COMM_C_FLAGS} -Wfatal-errors”)

message(STATUS “optional:-std=c++11”)

endif(CMAKE_COMPILER_IS_GNUCXX)

if(CMAKE_COMPILER_IS_GNUCC)

set(CMAKE_C_FLAGS “${CMAKE_C_FLAGS} -m32 -lstdc++ -DAUTOSTAR_LINUX -DDT_COMPILE_GCC -D_GLIBCXX_USE_CXX11_ABI=0”)

set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} -O0 -ggdb3 -Werror -Wfatal-errors”)

set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} -O0 -ggdb3”)

set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} ${COMM_C_FLAGS} -Wfatal-errors”)

endif(CMAKE_COMPILER_IS_GNUCC)

if(CMAKE_BUILD_TYPE)

MESSAGE(STATUS “Wifi_1152 debug version”)

else()

MESSAGE(STATUS “Wifi_1152 release version”)

endif(CMAKE_BUILD_TYPE)

MESSAGE(STATUS “Top CMakeLists.txt source dir:” ${PROJECT_SOURCE_DIR})

MESSAGE(STATUS “Top CMakeLists.txt binary dir:” ${PROJECT_BINARY_DIR})

打印环境变量信息

MESSAGE(STATUS “CMAKE_CURRENT_LIST_DIR:” ${CMAKE_CURRENT_LIST_DIR})

MESSAGE(STATUS “CMAKE_CURRENT_SOURCE_DIR:” ${CMAKE_CURRENT_SOURCE_DIR})

linux环境

if(CMAKE_HOST_SYSTEM_NAME MATCHES Linux*)

MESSAGE(STATUS “Current OS environment is Linux.”)

else()

MESSAGE(FATAL_ERROR “OS environment is ERROR!”)

endif()

UT/ST代码覆盖率编译 默认该项不开启

option(CMAKE_ENABLE_GCOV “This is a default option for CMAKE_ENABLE_GCOV” OFF)

set(CMAKE_ENABLE_GCOV $ENV{ENABLE_GCOV})

MESSAGE(STATUS “CMAKE ENABLE_GCOV:” ${CMAKE_ENABLE_GCOV})

if (${CMAKE_ENABLE_GCOV} STREQUAL “gcov”)

MESSAGE(STATUS “ENV ENABLE_GCOV:” $ENV{ENABLE_GCOV})

add_definitions(-fprofile-arcs)

add_definitions(-ftest-coverage)

set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage”)

set(CMAKE_C_FLAGS “${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage”)

set(CMAKE_C_LINK_FLAGS “${CMAKE_LINKER_FLAGS} -fprofile-arcs -lgcov”)

set(CMAKE_CXX_LINK_FLAGS “${CMAKE_LINKER_FLAGS} -fprofile-arcs -lgcov”)

endif()

set(ST_BIN_TARGET_NAME wifi_device_ut.bin)

设置可执行文件输出路径

SET(EXECUTABLE_OUTPUT_PATH “./../output”)

设置库文件输出路径

SET(LIBRARY_OUTPUT_PATH “./../output”)

设置公共头文件路径

SET(LLT_COMMON_115X “../../../../common/wifi/ut/alg/115x_ut”)

SET(LLT_COMMON_COM_UT “../../../../common/wifi/ut/alg/com_ut”)

设置device windows工程路径

SET(WIFI_WINDOWS_DEVICE_UT “../../hi1152v100device_ut”)

option(_PRE_IO_PRINT “marco” ON)

宏定义

add_definitions(-DWIN32)

add_definitions(-D_PRE_WCPU)

add_definitions(-D_PRE_HI1152_LINUX_UT)

add_definitions(-D_PRE_MULTI_CORE_MODE_SMP=0)

add_definitions(-D_PRE_MULTI_CORE_MODE_PIPELINE_AMP=1)

add_definitions(-D_PRE_MULTI_CORE_MODE_OFFLOAD_HMAC=2)

add_definitions(-D_PRE_MULTI_CORE_MODE_OFFLOAD_DMAC=3)

add_definitions(-D_PRE_MULTI_CORE_MODE=_PRE_MULTI_CORE_MODE_OFFLOAD_DMAC)

add_definitions(-D_PRE_PC_LINT)

#

配置头文件,传递CMake设置

configure_file(“${PROJECT_SOURCE_DIR}/wifi_ut_config.h.in” “${PROJECT_BINARY_DIR}/wifi_ut_config.h”)

源文件路径

set(WIFI_HOST_DIR .)

linux测试工程路径

set(WIFI_TEST_PROJECT_DIR “..”)

googletest-master路径

set(GOOGLE_TEST_DIR “../../../../tools/googletest-master”)

mockcpp路径

set(MOCKCPP_TEST_DIR “../../../../tools/godsme-mockcpp”)

host源代码路径

set(HI1152_WIFI_DEVICE_DIR “../../../../../device”)

set(HI1152_WIFI_DRIVER_DIR “../../../../../driver”)

device源代码路径

set(HI1152_WIFI_DEVICE_DIR “../../../../../device/wifi/1152/“)

public源代码路径

include

set(HI1152_WIFI_PUBLIC_DIR “../../../../../public”)

prj源代码路径

set(HI1152_WIFI_PRJ “../../../../prj”)

service头文件路径

set(HI1152_WIFI_SERVICE “../../../../../services/gateway_service”)

set(LDFLAGS “${LDFLAGS} -m32 -m elf_i386 -L ${HI1152_WIFI_PRJ}/autostar_linux/lib -ldtcenter”)

set(LDFLAGS “${LDFLAGS} -m64 -m elf32_x86_64 -L ${WIFI_TEST_PROJECT_DIR}/lib -lsecurec -lmockcpp”)

DTcenter

set(DT_PATH “../../../../tools/DTCenter”)

DTCenter入口路径

set(DT_LIB_PATH “${DT_PATH}/lib”)

DTCenter头文件路径

set(DT_INCLUDE_PATH “${DT_PATH}/include”)

include_directories(“${DT_INCLUDE_PATH}/DMT”)

include_directories(“${DT_INCLUDE_PATH}”)

include_directories(“${DT_INCLUDE_PATH}/AMock”)

include_directories(“${DT_INCLUDE_PATH}/Common”)

打印路径信息

MESSAGE(STATUS “WIFI_TEST_PROJECT_DIR:” ${WIFI_TEST_PROJECT_DIR})

MESSAGE(STATUS “GOOGLE_TEST_DIR:” ${GOOGLE_TEST_DIR})

MESSAGE(STATUS “MOCKCPP_TEST_DIR:” ${MOCKCPP_TEST_DIR})

MESSAGE(STATUS “HI1152_WIFI_HOST_DIR:” ${HI1152_WIFI_HOST_DIR})

MESSAGE(STATUS “HI1152_WIFI_HSIMU:” ${HI1152_WIFI_HSIMU})

添加头文件路径

include_directories(“./“)

include_directories(“./..”)

include_directories(“./../../hi1153v100device_ut_linux/include”)

include_directories(“./../../hi1153v100device_ut_linux/include/linux_ut”)

include_directories(“${WIFI_MAIN_PUBLIC}/wifi/resource”)

include_directories(“./../include/public/include”)

include_directories(“./../testcase”)

include_directories(“./../builder”)

include_directories(“${WIFI_WINDOWS_DEVICE_UT}/testcase/driver/wifi/main”)

include_directories(“${WIFI_WINDOWS_DEVICE_UT}/testcase/driver/wifi/comm”)

include_directories(“${HI1152_WIFI_PRJ}/autostar/include”)

include_directories(“${HI1152_WIFI_DEVICE_DIR}/bootloader/1152”)

include_directories(“${HI1152_WIFI_DEVICE_DIR}/platform/ip/uart_pl011”)

include_directories(“${HI1152_WIFI_DEVICE_DIR}/platform/ip/pcie”)

#

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PRJ}/hsimu/hsimu_reg.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_bus_if.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_fsm.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_main.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_mem.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_config.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_msg.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_queue.c)

list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_thread.c)

添加测试代码

指定生成目标

list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_TEST_PROJECT_DIR}/main_ut_prj.cpp)

list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_TEST_PROJECT_DIR}/platformutstub.c)

list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_TEST_PROJECT_DIR}/testcase/TestsuiteBase.cpp)

list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_WINDOWS_DEVICE_UT}/testcase/driver/wifi/comm/ut_comm.cpp)

list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_WINDOWS_DEVICE_UT}/testcase/platform/oal/ut_oal_device_mem_test.cpp)

添加依赖库

set(EXTRA_LIBS_UT ${EXTRA_LIBS_UT} dl pthread)

MESSAGE(STATUS “EXTRA_LIBS_UT:${EXTRA_LIBS_UT}”)

添加链接库

find_library(LIB_DT_CENTER libdtcenter.a ${DT_LIB_PATH})

find_library(LIB_GTEST libdtcenter.a ${DT_LIB_PATH})

MESSAGE(STATUS “LIB_GTESTMAIN:${DT_LIB_PATH}”)

target_link_libraries(${ST_BIN_TARGET_NAME} ${LIB_GTEST} ${EXTRA_LIBS_UT} ${LIB_DT_CENTER}) ```