test.cmake 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. ## ======================================================================== ##
  2. ## Copyright 2009-2017 Intel Corporation ##
  3. ## ##
  4. ## Licensed under the Apache License, Version 2.0 (the "License"); ##
  5. ## you may not use this file except in compliance with the License. ##
  6. ## You may obtain a copy of the License at ##
  7. ## ##
  8. ## http://www.apache.org/licenses/LICENSE-2.0 ##
  9. ## ##
  10. ## Unless required by applicable law or agreed to in writing, software ##
  11. ## distributed under the License is distributed on an "AS IS" BASIS, ##
  12. ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ##
  13. ## See the License for the specific language governing permissions and ##
  14. ## limitations under the License. ##
  15. ## ======================================================================== ##
  16. IF(NOT BUILD_TESTING)
  17. SET(BUILD_TESTING OFF CACHE BOOL "Build the testing tree.")
  18. ENDIF()
  19. INCLUDE(CTest)
  20. IF (BUILD_TESTING)
  21. CMAKE_HOST_SYSTEM_INFORMATION(RESULT memory QUERY TOTAL_PHYSICAL_MEMORY)
  22. SET(EMBREE_TESTING_MODEL_DIR "${PROJECT_SOURCE_DIR}/models" CACHE PATH "Path to the folder containing the Embree models for regression testing.")
  23. SET(EMBREE_TESTING_INTENSIVE OFF CACHE BOOL "Turns intensive testing on.")
  24. SET(EMBREE_TESTING_MEMCHECK OFF CACHE BOOL "Turns on memory checking for some tests.")
  25. SET(EMBREE_TESTING_BENCHMARK OFF CACHE BOOL "Turns benchmarking on.")
  26. SET(EMBREE_TESTING_BENCHMARK_DATABASE "${PROJECT_BINARY_DIR}" CACHE PATH "Path to database for benchmarking.")
  27. SET(EMBREE_TESTING_PACKAGE OFF CACHE BOOL "Packages release as test.")
  28. SET(EMBREE_TESTING_KLOCWORK OFF CACHE BOOL "Runs Kocwork as test.")
  29. SET(EMBREE_TESTING_SDE OFF CACHE STRING "Uses SDE to run tests for specified CPU.")
  30. SET_PROPERTY(CACHE EMBREE_TESTING_SDE PROPERTY STRINGS OFF pnr nhm wsm snb ivb hsw bdw knl skl skx cnl)
  31. IF( NOT EXISTS "${EMBREE_TESTING_MODEL_DIR}/embree-models-subdiv.txt"
  32. OR NOT EXISTS "${EMBREE_TESTING_MODEL_DIR}/embree-models-small-win32.txt"
  33. OR NOT EXISTS "${EMBREE_TESTING_MODEL_DIR}/embree-models-small-x64.txt"
  34. OR NOT EXISTS "${EMBREE_TESTING_MODEL_DIR}/embree-models-large.txt")
  35. MESSAGE(FATAL_ERROR "Invalid Embree testing model repository. Either disable BUILD_TESTING or properly set EMBREE_TESTING_MODEL_DIR.")
  36. ENDIF()
  37. FILE(READ "${EMBREE_TESTING_MODEL_DIR}/embree-models-subdiv.txt" models_subdiv)
  38. STRING(REGEX REPLACE "\n" ";" models_subdiv "${models_subdiv}")
  39. FILE(READ "${EMBREE_TESTING_MODEL_DIR}/embree-models-small-win32.txt" models_small_win32)
  40. STRING(REGEX REPLACE "\n" ";" models_small_win32 "${models_small_win32}")
  41. FILE(READ "${EMBREE_TESTING_MODEL_DIR}/embree-models-small-x64.txt" models_small_x64)
  42. STRING(REGEX REPLACE "\n" ";" models_small_x64 "${models_small_x64}")
  43. FILE(READ "${EMBREE_TESTING_MODEL_DIR}/embree-models-large.txt" models_large)
  44. STRING(REGEX REPLACE "\n" ";" models_large "${models_large}")
  45. IF (EMBREE_TESTING_INTENSIVE)
  46. SET(models ${models_small_x64})
  47. IF (${memory} GREATER 10000)
  48. SET(models ${models} ${models_large})
  49. ENDIF()
  50. ELSE()
  51. SET(models ${models_small_win32})
  52. ENDIF()
  53. IF (WIN32)
  54. SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
  55. ELSE()
  56. SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
  57. ENDIF()
  58. MACRO (ADD_EMBREE_MODEL_TEST name reference executable args model)
  59. ADD_TEST(NAME ${name}
  60. WORKING_DIRECTORY ${MY_PROJECT_BINARY_DIR}
  61. COMMAND python ${PROJECT_SOURCE_DIR}/scripts/invoke_test.py
  62. --name ${name}
  63. --modeldir ${EMBREE_TESTING_MODEL_DIR}
  64. --reference ${reference}
  65. --model ${model}
  66. --sde ${EMBREE_TESTING_SDE}
  67. --execute ${MY_PROJECT_BINARY_DIR}/${executable} ${args})
  68. IF (EMBREE_ISPC_SUPPORT AND EMBREE_RAY_PACKETS)
  69. ADD_TEST(NAME ${name}_ispc
  70. WORKING_DIRECTORY ${MY_PROJECT_BINARY_DIR}
  71. COMMAND python ${PROJECT_SOURCE_DIR}/scripts/invoke_test.py
  72. --name ${name}_ispc
  73. --modeldir ${EMBREE_TESTING_MODEL_DIR}
  74. --reference ${reference}
  75. --model ${model}
  76. --sde ${EMBREE_TESTING_SDE}
  77. --execute ${MY_PROJECT_BINARY_DIR}/${executable}_ispc ${args})
  78. ENDIF()
  79. ENDMACRO()
  80. MACRO (ADD_EMBREE_MODELS_TEST name reference executable)
  81. FOREACH (model ${models})
  82. STRING(REGEX REPLACE "/" "_" modelname "${model}")
  83. STRING(REGEX REPLACE ".ecs" "" modelname "${modelname}")
  84. ADD_EMBREE_MODEL_TEST(${name}_${modelname} ${reference}_${modelname} ${executable} "${ARGN}" ${model})
  85. ENDFOREACH()
  86. ENDMACRO()
  87. MACRO (ADD_EMBREE_SUBDIV_MODELS_TEST name reference executable)
  88. FOREACH (model ${models_subdiv})
  89. STRING(REGEX REPLACE "/" "_" modelname "${model}")
  90. STRING(REGEX REPLACE ".ecs" "" modelname "${modelname}")
  91. ADD_EMBREE_MODEL_TEST(${name}_${modelname} ${reference}_${modelname} ${executable} "${ARGN}" ${model})
  92. ENDFOREACH()
  93. ENDMACRO()
  94. IF (EMBREE_TESTING_KLOCWORK)
  95. ADD_TEST(NAME Klocwork WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/klocwork.sh)
  96. SET_TESTS_PROPERTIES(Klocwork PROPERTIES TIMEOUT 1200)
  97. ENDIF()
  98. ELSE()
  99. MACRO (ADD_EMBREE_MODEL_TEST name reference executable args model)
  100. ENDMACRO()
  101. MACRO (ADD_EMBREE_SUBDIV_MODELS_TEST name reference executable)
  102. ENDMACRO()
  103. MACRO (ADD_EMBREE_MODELS_TEST name)
  104. ENDMACRO()
  105. ENDIF()
  106. MACRO (ADD_EMBREE_TEST name)
  107. ADD_EMBREE_MODEL_TEST(${name} ${name} ${name} "" "default")
  108. ENDMACRO()
  109. MACRO (ADD_EMBREE_TEST2 name exe args)
  110. ADD_EMBREE_MODEL_TEST(${name} ${exe} ${exe} "${args}" "default")
  111. ENDMACRO()
  112. IF (EMBREE_TESTING_MEMCHECK)
  113. find_program( EMBREE_MEMORYCHECK_COMMAND valgrind )
  114. set( EMBREE_MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --show-leak-kinds=definite --errors-for-leak-kinds=definite --error-exitcode=1" )
  115. FUNCTION(ADD_MEMCHECK_TEST name binary)
  116. set(memcheck_command "${EMBREE_MEMORYCHECK_COMMAND} ${EMBREE_MEMORYCHECK_COMMAND_OPTIONS}")
  117. separate_arguments(memcheck_command)
  118. add_test(NAME ${name} COMMAND ${memcheck_command} ${MY_PROJECT_BINARY_DIR}/${binary} ${ARGN})
  119. ENDFUNCTION()
  120. ENDIF()