diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 2a1c6aeb6..96c37cc0b 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -38,7 +38,7 @@ jobs: ########################################################################## - name: Login-Server | Unit tests run: | - docker run -v ~/coverage:/code/build/coverage -v $(pwd)/configs/login_server:/etc/grd_login gradido/login_server:test + docker run --network -v ~/coverage:/code/build/coverage -v $(pwd)/configs/login_server:/etc/grd_login gradido/login_server:test cp -r ~/coverage ./coverage ########################################################################## # COVERAGE CHECK BACKEND LOGIN-SERVER #################################### @@ -66,8 +66,8 @@ jobs: MARIADB_ALLOW_EMPTY_PASSWORD: 1 MARIADB_USER: root MARIADB_DATABASE: gradido_community_test - ports: - - 3306:3306 + #ports: + #- 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s @@ -76,6 +76,8 @@ jobs: - name: Get MySQL service ID id: mariadb-service run: echo "::set-output name=container-id::$(docker ps | grep -i mariadb | awk '{print $1}')" + - name: Create docker network + run: docker network create gradido-network - name: Debug service run: echo "$(docker ps)" #- name: Get Github network gateway address @@ -101,6 +103,7 @@ jobs: run: | docker run -v ~/coverage:/var/www/cakephp/webroot/coverage gradido/community_server:test ./vendor/bin/phpunit --coverage-html ./webroot/coverage cp -r ~/coverage ./coverage + ########################################################################## # COVERAGE CHECK BACKEND COMMUNITY-SERVER #################################### ########################################################################## diff --git a/docker-compose.test.yml b/docker-compose.test.yml index d8f307dfe..b9d44363e 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -37,8 +37,10 @@ services: - internal-net volumes: - ./logs:/var/log/grd_login + - ./login_server/src:/code/src - ./configs/login_server:/etc/grd_login - - ~/coverage/login:/code/build/coverage + - login_build_cov:/code/build_cov + - ./coverage/login:/code/build_cov/coverage_html ######################################################### ## COMMUNITY SERVER (cakephp with php-fpm) ############## @@ -55,7 +57,7 @@ services: volumes: - ./community_server/config/php-fpm/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini - ./community_server/src:/var/www/cakephp/src - - ~/coverage/community:/var/www/cakephp/webroot/coverage + - ./coverage/community:/var/www/cakephp/webroot/coverage ######################################################### @@ -93,4 +95,5 @@ networks: internal: true volumes: - db_test_vol: \ No newline at end of file + db_test_vol: + login_build_cov: \ No newline at end of file diff --git a/login_server/CMakeLists.txt.lib b/login_server/CMakeLists.txt.lib index fe655c846..7f34719eb 100644 --- a/login_server/CMakeLists.txt.lib +++ b/login_server/CMakeLists.txt.lib @@ -211,30 +211,43 @@ project(Gradido_LoginServer_Test C CXX) enable_testing() -if(UNIX) -include(cmake/CodeCoverage.cmake) -append_coverage_compiler_flags() -set(EXCLUDE_FOR_HTML_COV - "${CMAKE_CURRENT_SOURCE_DIR}/build/proto/*" - "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/*" - "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/test/*" -) -#setup_target_for_coverage_gcovr_html( -# NAME coverage_html -# EXECUTABLE Gradido_LoginServer_Test -# EXCLUDE ${EXCLUDE_FOR_HTML_COV} - #DEPENDENCIES lib/libmariadb.so.3 -#) -set(EXCLUDE_FOR_COV - #${EXCLUDE_FOR_HTML_COV} - #"/usr/include/*" -) -setup_target_for_coverage_lcov( - NAME coverage - EXECUTABLE Gradido_LoginServer_Test - EXCLUDE "${EXCLUDE_FOR_COV}" - #DEPENDENCIES lib/libmariadb.so.3 -) +option(COLLECT_COVERAGE_DATA "Use cov to collect coverage informations" OFF) +set(COVERAGE_TOOL "Coverage Tool (gcovr|lcov)" CACHE STRING "gcovr") + + +if(COLLECT_COVERAGE_DATA) + + include(cmake/CodeCoverage.cmake) + append_coverage_compiler_flags() + set(EXCLUDE_FOR_HTML_COV + "${CMAKE_CURRENT_SOURCE_DIR}/build/proto/*" + "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/*" + "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/test/*" + "${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/include/gtest/internal/*" + "${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/src/" + ) + if("${COVERAGE_TOOL}" STREQUAL "gcovr") + setup_target_for_coverage_gcovr_html( + NAME coverage_html + EXECUTABLE Gradido_LoginServer_Test + EXCLUDE ${EXCLUDE_FOR_HTML_COV} + #DEPENDENCIES lib/libmariadb.so.3 + ) + endif() + + set(EXCLUDE_FOR_COV + ${EXCLUDE_FOR_HTML_COV} + "/usr/include/*" + ) + if("${COVERAGE_TOOL}" STREQUAL "lcov") + setup_target_for_coverage_lcov( + NAME coverage + EXECUTABLE Gradido_LoginServer_Test + EXCLUDE "${EXCLUDE_FOR_COV}" + #DEPENDENCIES lib/libmariadb.so.3 + ) + endif() + endif() #_TEST_BUILD diff --git a/login_server/Dockerfile b/login_server/Dockerfile index a933ce28f..6a75e0103 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -18,31 +18,44 @@ COPY ./dependencies/spirit-po ./dependencies/spirit-po COPY ./dependencies/tinf ./dependencies/tinf COPY ./scripts ./scripts + +######################################################################################################### +# Install Coverage tool +######################################################################################################### +FROM prepare_debug as coverage + + +RUN apt-get update && \ + apt-get install -y --no-install-recommends python3-pip && \ + apt-get autoclean && \ + apt-get autoremove && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN pip3 install gcovr + + ######################################################################################################### # Build test ######################################################################################################### -FROM prepare_debug as test +FROM coverage as test ENV DOCKER_WORKDIR="/code" WORKDIR ${DOCKER_WORKDIR} -#RUN apt-get update && \ -# apt-get install -y --no-install-recommends gdb && \ -# apt-get autoclean && \ -# apt-get autoremove && \ -# apt-get clean && \ -# rm -rf /var/lib/apt/lists/* +RUN if [ ! -d "./build_cov" ] ; then mkdir build_cov; fi -RUN mkdir build && cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug .. && \ - make -j$(nproc) Gradido_LoginServer_Test +RUN cd build_cov && \ + cmake -DCMAKE_BUILD_TYPE=Debug -DCOLLECT_COVERAGE_DATA=ON .. + #make -j$(nproc) Gradido_LoginServer_Test -RUN chmod +x build/bin/Gradido_LoginServer_Test -#CMD gdb -ex run ./build/bin/Gradido_LoginServer_Test -CMD ./build/bin/Gradido_LoginServer_Test +#RUN chmod +x build_cov/bin/Gradido_LoginServer_Test +#CMD gdb -ex run ./build_cov/bin/Gradido_LoginServer_Test +#CMD ./build_cov/bin/Gradido_LoginServer_Test -#ENTRYPOINT make -C build coverage +#ENTRYPOINT make -C build_cov coverage +CMD cd build_cov && make -j$(nproc) Gradido_LoginServer_Test && make coverage_html ######################################################################################################### # Build debug