Commit: 704fabc73afff0c5a318857dfaa9db4ad2e58335 Author: Brecht Van Lommel Date: Tue Sep 15 11:16:35 2020 +0200 Branches: temp-cmake-tests-bundle-linking https://developer.blender.org/rB704fabc73afff0c5a318857dfaa9db4ad2e58335
Tests: bundle tests for some modules in their own executables The ffmpeg, guardedalloc and blenlib are quite isolated and putting them in their own executable separate from blender_test is faster for development than linking the entire blender_tests executable. For Cycles, this also bundles all the unit tests into one executable. I also considered going back to having every test file in its own executable, but the size of these executables does add up quickly, and linking and running all blenlib tests is still < 1s here. Ref T79958 Reviewed By: LazyDodo Maniphest Tasks: T79958 Differential Revision: https://developer.blender.org/D8714 =================================================================== M build_files/cmake/macros.cmake M intern/cycles/test/CMakeLists.txt M intern/cycles/test/util_avxf_avx2_test.cpp M intern/cycles/test/util_avxf_avx_test.cpp M intern/cycles/test/util_avxf_test.h M intern/ffmpeg/CMakeLists.txt M intern/guardedalloc/CMakeLists.txt M source/blender/blenlib/CMakeLists.txt =================================================================== diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 268daa4aae3..1e3863ac567 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -375,9 +375,8 @@ function(blender_add_lib set_property(GLOBAL APPEND PROPERTY BLENDER_LINK_LIBS ${name}) endfunction() -# blender_add_test_lib() is used to define a test library. It is intended to be -# called in tandem with blender_add_lib(). The test library will be linked into -# the bf_gtest_runner_test executable (see tests/gtests/CMakeLists.txt). +# Add tests for a Blender library, to be called in tandem with blender_add_lib(). +# The tests will be part of the blender_test executable (see tests/gtests/runner). function(blender_add_test_lib name sources @@ -411,6 +410,48 @@ function(blender_add_test_lib set_property(GLOBAL APPEND PROPERTY BLENDER_TEST_LIBS ${name}) endfunction() + +# Add tests for a Blender library, to be called in tandem with blender_add_lib(). +# Test will be compiled into a ${name}_test executable. +# +# To be used for smaller isolated libraries, that do not have many dependencies. +# For libraries that do drag in many other Blender libraries and would create a +# very large executable, blender_add_test_lib() should be used instead. +function(blender_add_test_executable + name + sources + includes + includes_sys + library_deps + ) + + add_cc_flags_custom_test(${name} PARENT_SCOPE) + + ## Otherwise external projects will produce warnings that we cannot fix. + remove_strict_flags() + + include_directories(${includes}) + include_directories(${includes_sys}) + setup_libdirs() + + BLENDER_SRC_GTEST_EX( + NAME ${name} + SRC "${sources}" + EXTRA_LIBS "${library_deps}" + SKIP_ADD_TEST + ) + + include(GTest) + set(_GOOGLETEST_DISCOVER_TESTS_SCRIPT + ${CMAKE_SOURCE_DIR}/build_files/cmake/Modules/GTestAddTests.cmake + ) + + gtest_discover_tests(${name}_test + DISCOVERY_MODE PRE_TEST + WORKING_DIRECTORY "${TEST_INSTALL_DIR}" + ) +endfunction() + # Ninja only: assign 'heavy pool' to some targets that are especially RAM-consuming to build. function(setup_heavy_lib_pool) if(WITH_NINJA_POOL_JOBS AND NINJA_MAX_NUM_PARALLEL_COMPILE_HEAVY_JOBS) diff --git a/intern/cycles/test/CMakeLists.txt b/intern/cycles/test/CMakeLists.txt index 1dc3d44dead..7d8f5916fef 100644 --- a/intern/cycles/test/CMakeLists.txt +++ b/intern/cycles/test/CMakeLists.txt @@ -19,12 +19,6 @@ if(WITH_GTESTS) remove_strict_flags() endif() -macro(CYCLES_TEST SRC EXTRA_LIBS) - if(WITH_GTESTS) - BLENDER_SRC_GTEST("cycles_${SRC}" "${SRC}_test.cpp" "${EXTRA_LIBS}") - endif() -endmacro() - set(INC . .. @@ -50,15 +44,22 @@ include_directories(${INC}) cycles_link_directories() -CYCLES_TEST(render_graph_finalize "${ALL_CYCLES_LIBRARIES};bf_intern_numaapi") -cycles_target_link_libraries(cycles_render_graph_finalize_test) -CYCLES_TEST(util_aligned_malloc "cycles_util") -CYCLES_TEST(util_path "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}") -CYCLES_TEST(util_string "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}") -CYCLES_TEST(util_task "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES};bf_intern_numaapi") -CYCLES_TEST(util_time "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}") +set(SRC + render_graph_finalize_test.cpp + util_aligned_malloc_test.cpp + util_path_test.cpp + util_string_test.cpp + util_task_test.cpp + util_time_test.cpp + util_avxf_avx_test.cpp + util_avxf_avx2_test.cpp + util_transform_test.cpp +) + set_source_files_properties(util_avxf_avx_test.cpp PROPERTIES COMPILE_FLAGS "${CYCLES_AVX_KERNEL_FLAGS}") -CYCLES_TEST(util_avxf_avx "cycles_util;bf_intern_numaapi;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}") set_source_files_properties(util_avxf_avx2_test.cpp PROPERTIES COMPILE_FLAGS "${CYCLES_AVX2_KERNEL_FLAGS}") -CYCLES_TEST(util_avxf_avx2 "cycles_util;bf_intern_numaapi;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}") -CYCLES_TEST(util_transform "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}") + +if(WITH_GTESTS) + BLENDER_SRC_GTEST(cycles "${SRC}" "${ALL_CYCLES_LIBRARIES}") + cycles_target_link_libraries(cycles_test) +endif() diff --git a/intern/cycles/test/util_avxf_avx2_test.cpp b/intern/cycles/test/util_avxf_avx2_test.cpp index 9b466ddd3a0..c5365a81a51 100644 --- a/intern/cycles/test/util_avxf_avx2_test.cpp +++ b/intern/cycles/test/util_avxf_avx2_test.cpp @@ -16,6 +16,8 @@ #define __KERNEL_AVX2__ #define __KERNEL_CPU__ +#define TEST_CATEGORY_NAME util_avx2 + #if defined(i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) # include "util_avxf_test.h" #endif diff --git a/intern/cycles/test/util_avxf_avx_test.cpp b/intern/cycles/test/util_avxf_avx_test.cpp index cea67649b80..dbac20c69b3 100644 --- a/intern/cycles/test/util_avxf_avx_test.cpp +++ b/intern/cycles/test/util_avxf_avx_test.cpp @@ -16,6 +16,8 @@ #define __KERNEL_AVX__ #define __KERNEL_CPU__ +#define TEST_CATEGORY_NAME util_avx + #if defined(i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) # include "util_avxf_test.h" #endif diff --git a/intern/cycles/test/util_avxf_test.h b/intern/cycles/test/util_avxf_test.h index d93563fdb3f..64825200c9e 100644 --- a/intern/cycles/test/util_avxf_test.h +++ b/intern/cycles/test/util_avxf_test.h @@ -20,7 +20,7 @@ CCL_NAMESPACE_BEGIN -bool validate_cpu_capabilities() +static bool validate_cpu_capabilities() { #ifdef __KERNEL_AVX2__ @@ -61,21 +61,22 @@ bool validate_cpu_capabilities() for (size_t i = 0; i < a.size; i++) \ EXPECT_FLOAT_EQ(c[i], a[i] op b); -const avxf avxf_a(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f); -const avxf avxf_b(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f); -const avxf avxf_c(1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f); -const float float_b = 1.5f; - -TEST(util_avx, avxf_add_vv){basic_test_vv(avxf_a, avxf_b, +)} TEST(util_avx, avxf_sub_vv){ - basic_test_vv(avxf_a, avxf_b, -)} TEST(util_avx, avxf_mul_vv){ - basic_test_vv(avxf_a, avxf_b, *)} TEST(util_avx, avxf_div_vv){ - basic_test_vv(avxf_a, avxf_b, /)} TEST(util_avx, avxf_add_vf){ - basic_test_vf(avxf_a, float_b, +)} TEST(util_avx, avxf_sub_vf){ - basic_test_vf(avxf_a, float_b, -)} TEST(util_avx, avxf_mul_vf){ - basic_test_vf(avxf_a, float_b, *)} TEST(util_avx, +static const avxf avxf_a(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f); +static const avxf avxf_b(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f); +static const avxf avxf_c(1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f); +static const float float_b = 1.5f; + +TEST(TEST_CATEGORY_NAME, avxf_add_vv){basic_test_vv(avxf_a, avxf_b, +)} TEST(TEST_CATEGORY_NAME, + avxf_sub_vv){ + basic_test_vv(avxf_a, avxf_b, -)} TEST(TEST_CATEGORY_NAME, avxf_mul_vv){ + basic_test_vv(avxf_a, avxf_b, *)} TEST(TEST_CATEGORY_NAME, avxf_div_vv){ + basic_test_vv(avxf_a, avxf_b, /)} TEST(TEST_CATEGORY_NAME, avxf_add_vf){ + basic_test_vf(avxf_a, float_b, +)} TEST(TEST_CATEGORY_NAME, avxf_sub_vf){ + basic_test_vf(avxf_a, float_b, -)} TEST(TEST_CATEGORY_NAME, avxf_mul_vf){ + basic_test_vf(avxf_a, float_b, *)} TEST(TEST_CATEGORY_NAME, avxf_div_vf){basic_test_vf(avxf_a, float_b, /)} -TEST(util_avx, avxf_ctor) +TEST(TEST_CATEGORY_NAME, avxf_ctor) { VALIDATECPU compare_vector_scalar(avxf(7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.0f), @@ -88,28 +89,28 @@ TEST(util_avx, avxf_ctor) avxf(0.0f, 3.0f, 2.0f, 1.0f, 0.0f, 3.0f, 2.0f, 1.0f)); } -TEST(util_avx, avxf_sqrt) +TEST(TEST_CATEGORY_NAME, avxf_sqrt) { VALIDATECPU compare_vector_vector(mm256_sqrt(avxf(1.0f, 4.0f, 9.0f, 16.0f, 25.0f, 36.0f, 49.0f, 64.0f)), avxf(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f)); } -TEST(util_avx, avxf_min_max) +TEST(TEST_CATEGORY_NAME, avxf_min_max) { VALIDATECPU compare_vector_vector(min(avxf_a, avxf_b), avxf_a); compare_vector_vector(max(avxf_a, avxf_b), avxf_b); } -TEST(util_avx, avxf_set_sign) +TEST(TEST_CATEGORY_NAME, avxf_set_sign) { VALIDATECPU avxf res = set_sign_bit<1, 0, 0, 0, 0, 0, 0, 0>(avxf_a); compare_vector_vector(res, avxf(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, -0.8f)); } -TEST(util_avx, avxf_msub) +TEST(TEST_CATEGORY_NAME, avxf_msub) { VALIDATECPU avxf res = msub(avxf_a, avxf_b, avxf_c); @@ -124,7 +125,7 @@ TEST(util_avx, avxf_msub) compare_vector_vector(res, exp); } -TEST(util_avx, avxf_madd) +TEST(TEST_CATEGORY_NAME, avxf_madd) { VALIDATECPU avxf res = madd(avxf_a, avxf_b, avxf_c); @@ -139,7 +140,7 @@ TEST(util_avx, avxf_madd) compare_vector_vector(res, exp); } -TEST(util_avx, avxf_nmadd) +TEST(TEST_CATEGORY_NAME, avxf_nmadd) { VALIDATECPU avxf res = nmadd(avxf_a, avxf_b, avxf_c); @@ -154,7 +155,7 @@ TEST(util_avx, avxf_nmadd) compare_vector_vector(res, exp); } -TEST(util_avx, avxf_compare) +TEST(TEST_CATEGORY_NAME, avxf_compare) { VALIDATECPU avxf a(0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f); @@ -173,28 +174,28 @@ TEST(util_avx, avxf_compare) compare_vector_vector(res, exp); } -TEST(util_avx, avxf_permute) +TEST(TEST_CATEGORY_NAME, avxf_permute) { VALIDATECPU avxf res = permute<3, 0, 1, 7, 6, 5, 2, 4>(avxf_b); compare_vector_vector(res, avxf(4.0f, 6.0f, 3.0f, 2.0f, 1.0f, 7.0f, 8.0f, 5.0f)); } -TEST(util_avx, avxf_blend) +TEST(TEST_CATEGORY_NAME, avxf_blend) { VALIDATECPU avxf res = blend<0, 0, 1, 0, 1, 0, 1, 0>(avxf_a, avxf_b); compare_vector_vector(res, avxf(0.1f, 0.2f, 3.0f, 0.4f, 5.0f, 0.6f, 7.0f, 0.8f)); } -TEST(util_avx, avxf_shuffle) +TEST(TEST_CATEGORY_NAME, avxf_shuffle) { VALIDATECPU avxf res = shuffle<0, 1, 2, 3, 1, 3, 2, 0>(avxf_a); compare_vector_vector(res, avxf(0.4f, 0.2f, 0.1f, 0.3f, 0.5f, 0.6f, 0.7f, 0.8f)); } -TEST(util_avx, avxf_cross) +TEST(TEST_CATEGORY_NAME, avxf_cross) { VALIDATECPU avxf res = cross(avxf_b, avxf_c); @@ -210,7 +211,7 @@ TEST(util_avx, avxf_cross) 0.000002000f); } -TEST(util_avx, avxf_dot3) +TEST(TEST_CATEGORY_NAME, avxf_dot3) { VALIDATECPU floa @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
