[Bf-blender-cvs] [532ac1163ce] master: Tests: bundle tests for some modules in their own executables

Brecht Van Lommel noreply at git.blender.org
Thu Sep 17 13:10:15 CEST 2020


Commit: 532ac1163ceea857df0f3f144de0dde837712bbe
Author: Brecht Van Lommel
Date:   Tue Sep 15 11:16:35 2020 +0200
Branches: master
https://developer.blender.org/rB532ac1163ceea857df0f3f144de0dde837712bbe

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.

Ref 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. @@



More information about the Bf-blender-cvs mailing list