gltest.cmake 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. # Initialize global vars with values came from outside (from gitlab-ci)
  2. # This is main test suite which runs all the tests.
  3. set ( CI_PROJECT_DIR "$ENV{CI_PROJECT_DIR}" )
  4. set ( CTEST_BUILD_NAME "$ENV{CI_COMMIT_REF_NAME}" )
  5. set ( CTEST_CONFIGURATION_TYPE "$ENV{CTEST_CONFIGURATION_TYPE}" )
  6. set ( CTEST_CMAKE_GENERATOR "$ENV{CTEST_CMAKE_GENERATOR}" )
  7. set ( LIBS_BUNDLE "$ENV{LIBS_BUNDLE}" )
  8. set ( DISABLE_GTESTS "$ENV{DISABLE_GTESTS}" )
  9. set ( CTEST_REGEX "$ENV{CTEST_REGEX}" )
  10. set ( CTEST_EXCLUDE_REGEX "$ENV{CTEST_EXCLUDE_REGEX}" )
  11. set ( CTEST_START "$ENV{CTEST_START}" )
  12. set ( CTEST_END "$ENV{CTEST_END}" )
  13. set ( SEARCHD_CLI_EXTRA "$ENV{SEARCHD_CLI_EXTRA}" )
  14. set ( PACK "$ENV{PACK}" )
  15. set ( WITH_COVERAGE "$ENV{WITH_COVERAGE}" )
  16. set ( NO_TESTS "$ENV{NO_TESTS}" )
  17. set ( NO_BUILD "$ENV{NO_BUILD}" )
  18. set ( UNITY_BUILD "$ENV{UNITY_BUILD}" )
  19. set ( BUILD_DIR "$ENV{BUILD_DIR}" )
  20. set ( CTEST_RESOURCE "$ENV{CTEST_RESOURCE}" )
  21. set_property ( GLOBAL PROPERTY Label P$ENV{CI_PIPELINE_ID} J$ENV{CI_JOB_ID} )
  22. # how may times try the test before it is considered failed
  23. set (RETRIES 5)
  24. include ( ProcessorCount )
  25. ProcessorCount ( N )
  26. if (NOT CTEST_CMAKE_GENERATOR)
  27. set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
  28. endif ()
  29. # platform specific options
  30. set ( CTEST_SITE "$ENV{CI_SERVER_NAME} ${CTEST_CONFIGURATION_TYPE}" )
  31. # fallback to run without ctest
  32. if ( NOT CTEST_SOURCE_DIRECTORY )
  33. set ( CTEST_SOURCE_DIRECTORY ".." )
  34. endif ()
  35. if (WITH_COVERAGE)
  36. set (WITH_POSTGRESQL "$ENV{WITH_POSTGRESQL}" )
  37. endif()
  38. # common test options
  39. set ( CONFIG_OPTIONS "WITH_ODBC=1;WITH_RE2=1;WITH_STEMMER=1;WITH_POSTGRESQL=${WITH_POSTGRESQL};WITH_EXPAT=1;WITH_SSL=1" )
  40. if ( PACK )
  41. LIST ( APPEND CONFIG_OPTIONS "PACK=1" )
  42. endif ()
  43. if (BUILD_DIR)
  44. set ( CTEST_BINARY_DIRECTORY ${BUILD_DIR} )
  45. else()
  46. set ( CTEST_BINARY_DIRECTORY "build" )
  47. endif ()
  48. if (WITH_COVERAGE)
  49. # configure coverage
  50. find_program ( CTEST_COVERAGE_COMMAND NAMES llvm-cov )
  51. set ( CTEST_COVERAGE_EXTRA_FLAGS "gcov" )
  52. LIST ( APPEND CONFIG_OPTIONS "COVERAGE_TEST=1" )
  53. LIST ( APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE "googletest-src/.*" )
  54. LIST ( APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE "/sysroot/.*" )
  55. endif ()
  56. if ( DISABLE_GTESTS )
  57. LIST ( APPEND CONFIG_OPTIONS "DISABLE_GTESTS=${DISABLE_GTESTS}" )
  58. endif ()
  59. if ( LIBS_BUNDLE )
  60. LIST ( APPEND CONFIG_OPTIONS "LIBS_BUNDLE=${LIBS_BUNDLE}" )
  61. endif ()
  62. if ( SEARCHD_CLI_EXTRA )
  63. LIST ( APPEND CONFIG_OPTIONS "SEARCHD_CLI_EXTRA=${SEARCHD_CLI_EXTRA}" )
  64. endif()
  65. if (UNITY_BUILD)
  66. LIST ( APPEND CONFIG_OPTIONS "CMAKE_UNITY_BUILD=${UNITY_BUILD}" )
  67. endif ()
  68. if (CTEST_RESOURCE)
  69. if (EXISTS "${CTEST_RESOURCE}")
  70. math ( EXPR PR "${N} + ${N}" OUTPUT_FORMAT DECIMAL )
  71. if ( PR GREATER 16 )
  72. set ( PR 16 )
  73. endif()
  74. message ( STATUS "Parallel test in ${PR} threads" )
  75. if (NOT PR EQUAL 0)
  76. set ( CTEST_RESOURCE_SPEC_FILE ${CTEST_RESOURCE} )
  77. set ( ctest_test_args PARALLEL_LEVEL ${PR} )
  78. # set ( CTEST_TEST_LOAD ${N} )
  79. endif ()
  80. endif()
  81. endif ()
  82. SET ( CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE )
  83. #ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
  84. #######################################################################
  85. file ( WRITE "${CTEST_BINARY_DIRECTORY}/CTestConfig.cmake" "
  86. set ( CTEST_PROJECT_NAME \"Manticoresearch\" )
  87. set ( CTEST_NIGHTLY_START_TIME \"01:00:00 UTC\" )
  88. set ( CTEST_DROP_SITE_CDASH TRUE )
  89. " )
  90. # configure memcheck
  91. SET ( WITH_MEMCHECK FALSE )
  92. #find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
  93. #set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE ${CTEST_SOURCE_DIRECTORY}/tests/valgrind.supp)
  94. # configure update (will log git rev id)
  95. find_program ( CTEST_GIT_COMMAND NAMES git )
  96. SET ( CTEST_UPDATE_COMMAND "${CTEST_GIT_COMMAND}" )
  97. SET ( CTEST_UPDATE_VERSION_ONLY ON )
  98. set ( CMAKE_CALL "\"${CMAKE_COMMAND}\" -G \"${CTEST_CMAKE_GENERATOR}\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_CONFIGURATION_TYPE}" )
  99. foreach ( OPTION ${CONFIG_OPTIONS} )
  100. set ( CMAKE_CALL "${CMAKE_CALL} -D${OPTION}" )
  101. endforeach ()
  102. set ( CTEST_CONFIGURE_COMMAND "${CMAKE_CALL} ${CTEST_SOURCE_DIRECTORY}" )
  103. # will not write and count warnings in auto-generated files of lexer
  104. set ( CTEST_CUSTOM_WARNING_EXCEPTION ".*flexsphinx.*" )
  105. # Do the test suite
  106. ctest_start ( "Continuous" )
  107. ctest_update ()
  108. ctest_configure ()
  109. if (NOT NO_BUILD)
  110. if (NOT N EQUAL 0)
  111. if ( NOT CTEST_CMAKE_GENERATOR STREQUAL "Visual Studio 16 2019" )
  112. set ( CTEST_BUILD_FLAGS -j${N} )
  113. endif()
  114. endif ()
  115. ctest_build ()
  116. endif()
  117. if (NO_TESTS)
  118. return()
  119. endif()
  120. set ( ctest_test_args ${ctest_test_args} RETURN_VALUE retcode REPEAT UNTIL_PASS:${RETRIES} )
  121. if ( CTEST_REGEX )
  122. set ( ctest_test_args ${ctest_test_args} INCLUDE "${CTEST_REGEX}" )
  123. endif()
  124. if (CTEST_EXCLUDE_REGEX)
  125. set ( ctest_test_args ${ctest_test_args} EXCLUDE "${CTEST_EXCLUDE_REGEX}" )
  126. endif ()
  127. if( CTEST_START AND CTEST_END )
  128. set ( ctest_test_args ${ctest_test_args} START ${CTEST_START} END ${CTEST_END})
  129. endif()
  130. message ( STATUS "run ctest with params: ${ctest_test_args}" )
  131. ctest_test ( ${ctest_test_args} )
  132. #ctest_test ( STRIDE 50 )
  133. #ctest_test ( STRIDE 50 EXCLUDE_LABEL RT RETURN_VALUE retcode )
  134. if ( WITH_COVERAGE AND CTEST_COVERAGE_COMMAND )
  135. ctest_coverage ( CAPTURE_CMAKE_ERROR foo )
  136. if (foo)
  137. MESSAGE ( STATUS "coverage failed, but we continue..." )
  138. endif ()
  139. endif ( WITH_COVERAGE AND CTEST_COVERAGE_COMMAND )
  140. if ( WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND )
  141. ctest_memcheck ()
  142. endif ( WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND )
  143. #ctest_submit ()
  144. if ( retcode )
  145. MESSAGE ( FATAL_ERROR "tests failed with ${retcode} code" )
  146. endif ()