Fixed annoying warning in gtest: added 4th arg for INSTANTIATE_TEST_CASE_P macro...
authorkhizmax <libcds.dev@gmail.com>
Mon, 24 Apr 2017 20:53:29 +0000 (23:53 +0300)
committerkhizmax <libcds.dev@gmail.com>
Mon, 24 Apr 2017 20:53:29 +0000 (23:53 +0300)
18 files changed:
CMakeLists.txt
test/CMakeLists.txt
test/stress/map/del3/map_del3.cpp
test/stress/map/delodd/map_delodd.cpp
test/stress/map/find_string/map_find_string.cpp
test/stress/map/insdel_func/map_insdel_func.cpp
test/stress/map/insdel_item_int/map_insdel_item_int.cpp
test/stress/map/insdel_string/map_insdel_string.cpp
test/stress/map/insdelfind/map_insdelfind.cpp
test/stress/map/iter_erase/map_iter_erase.cpp
test/stress/set/del3/set_del3.cpp
test/stress/set/delodd/set_delodd.cpp
test/stress/set/insdel_find/CMakeLists.txt
test/stress/set/insdel_find/set_insdelfind.cpp
test/stress/set/insdel_func/set_insdel_func.cpp
test/stress/set/insdel_string/set_insdel_string.cpp
test/stress/set/iter_erase/set_iter_erase.cpp
test/stress/set/iteration/set_iteration.cpp

index df7ffa54cd1fc05e39bebb65899090f70b0e9c5f..d0645cb16678ab20c8213a3c69f8e33a52e2af65 100644 (file)
@@ -16,8 +16,8 @@ set(PROJECT_VERSION 2.3.0)
 option(WITH_TESTS "Build unit tests" OFF)
 option(WITH_TESTS_COVERAGE "Analyze test coverage using gcov (only for gcc)" OFF)
 option(WITH_BOOST_ATOMIC "Use boost atomics (only for boost >= 1.54)" OFF)
-option(WITH_ASAN "Build AddressSantinizer instrumented code" OFF)
-option(WITH_TSAN "Build ThreadSantinizer instrumented code" OFF)
+option(WITH_ASAN "Build ASan+UBSan instrumented code" OFF)
+option(WITH_TSAN "Build TSan instrumented code" OFF)
 set(CMAKE_TARGET_ARCHITECTURE "" CACHE string "Target build architecture")
 
 find_package(Threads)
index 3c13836921eb992c2d6a2cb1b609141465c428eb..be3587eb7012d4b04c06522fcedb990de54ea12b 100644 (file)
@@ -1,4 +1,6 @@
 
+INCLUDE(CheckCXXSourceCompiles)
+
 if (NOT GTEST_INCLUDE_DIRS)
    find_package(GTest REQUIRED)
 endif()
@@ -19,6 +21,46 @@ set(CDS_TEST_LIBRARIES
 )
 
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_LANG_CXX11") 
+
+# Check if gtest INSTANTIATE_TEST_CASE_P macro supports 4th arg
+# The optional last argument to INSTANTIATE_TEST_CASE_P allows the user
+# to specify a function or functor that generates custom test name suffixes
+# based on the test parameters. The function should accept one argument of
+# type testing::TestParamInfo<class ParamType>, and return std::string.
+set(CMAKE_REQUIRED_FLAGS "-DGTEST_USE_OWN_TR1_TUPLE ${CMAKE_EXE_LINKER_FLAGS}")
+set(CMAKE_REQUIRED_INCLUDES ${GTEST_INCLUDE_DIRS} )
+set(CMAKE_REQUIRED_LIBRARIES ${GTEST_LIBRARIES} ${EXTERNAL_SYSTEM_LIBS} )
+CHECK_CXX_SOURCE_COMPILES("
+#include <gtest/gtest.h>
+class fixture: public ::testing::Test, public ::testing::WithParamInterface< int >
+{
+public:
+    static std::vector< int > get_test_parameters()
+    {
+        std::vector< int > v{ 1, 2 };
+        return v;
+    }
+    static std::string get_test_parameter_name( ::testing::TestParamInfo<int> const& )
+    {
+        return std::string();
+    }
+};
+
+INSTANTIATE_TEST_CASE_P( a,
+    fixture,
+    ::testing::ValuesIn( fixture::get_test_parameters()),
+    fixture::get_test_parameter_name );
+
+int main( int argc, char **argv ) 
+{
+    ::testing::InitGoogleTest( &argc, argv );
+    return RUN_ALL_TESTS();
+}
+" GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG )
+
+if( GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG )
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_LANG_CXX11 -DCDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG") 
+endif()
  
 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/unit)
 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/stress)
index dddad6b385efe9c42875ab79ba48f5abddd0d856..b8fff4e5ac13eed671f38b4b45c66c392486bea7 100644 (file)
@@ -118,5 +118,13 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Map_Del3_LF, ::testing::ValuesIn( Map_Del3_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_Del3_LF, ::testing::ValuesIn( Map_Del3_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_Del3_LF, ::testing::ValuesIn( Map_Del3_LF::get_load_factors() ) );
+#endif
 } // namespace map
index bd9d9855d5e80394dd9847e55acd7e7898d0068d..098c54b7290df100c7822ac28f62ab9955d83c6e 100644 (file)
@@ -118,5 +118,14 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Map_DelOdd_LF, ::testing::ValuesIn( Map_DelOdd_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_DelOdd_LF, ::testing::ValuesIn( Map_DelOdd_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_DelOdd_LF, ::testing::ValuesIn( Map_DelOdd_LF::get_load_factors() ) );
+#endif
+
 } // namespace map
index adac0a30a7415ee850c70aa18074970f1b2c8c15..1f47bd9d186d52194af5a40cdd62e4b5deb97118 100644 (file)
@@ -195,5 +195,15 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Map_find_string_LF, ::testing::ValuesIn( Map_find_string::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_find_string_LF, ::testing::ValuesIn( Map_find_string::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_find_string_LF, ::testing::ValuesIn( Map_find_string::get_load_factors() ) );
+#endif
+
+
 } // namespace map
index 5d3574320f27588a868d218d48795bdabdfb7be1..15983f581cbe7fe3ebbb2f2475e8d603121892fd 100644 (file)
@@ -122,5 +122,14 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_func_LF, ::testing::ValuesIn( Map_InsDel_func_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_func_LF, ::testing::ValuesIn( Map_InsDel_func_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_func_LF, ::testing::ValuesIn( Map_InsDel_func_LF::get_load_factors() ) );
+#endif
+
 } // namespace map
index 75456429db7bbead7c99b75753b769c507b498ed..3c40b57f83035070fa59dc06161b99f4f89583b3 100644 (file)
@@ -107,5 +107,14 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_item_int_LF, ::testing::ValuesIn( Map_InsDel_item_int_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_item_int_LF, ::testing::ValuesIn( Map_InsDel_item_int_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_item_int_LF, ::testing::ValuesIn( Map_InsDel_item_int_LF::get_load_factors() ) );
+#endif
+
 } // namespace map
index a0826be28a2b6089045c1faa127f414c551cbca7..a067cb9d65206423e62e073d481917a5e0e1cf64 100644 (file)
@@ -178,6 +178,14 @@ namespace map {
 
 #endif
 
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_string_LF, ::testing::ValuesIn( Map_InsDel_string::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_string_LF, ::testing::ValuesIn( Map_InsDel_string::get_load_factors() ) );
+#endif
 
-    INSTANTIATE_TEST_CASE_P( a, Map_InsDel_string_LF, ::testing::ValuesIn( Map_InsDel_string::get_load_factors()));
 } // namespace map
index 68faa318120599415041bb7e2bc592df4c7b642c..a846bdf084a6ad85761279e2cf1c44387294c7e7 100644 (file)
@@ -130,5 +130,14 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( _, Map_InsDelFind_LF, ::testing::ValuesIn( Map_InsDelFind_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDelFind_LF, ::testing::ValuesIn( Map_InsDelFind_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_InsDelFind_LF, ::testing::ValuesIn( Map_InsDelFind_LF::get_load_factors() ) ); 
+#endif
+
 } // namespace map
index 70a513008e8c38ef63fd233a5fcc753e080dd161..1f227e12d894ed98f53905d78792b34ecf4a66bc 100644 (file)
@@ -104,5 +104,14 @@ namespace map {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Map_Iter_Del3_LF, ::testing::ValuesIn( Map_Iter_Del3_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Map_Iter_Del3_LF, ::testing::ValuesIn( Map_Iter_Del3_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Map_Iter_Del3_LF, ::testing::ValuesIn( Map_Iter_Del3_LF::get_load_factors() ) );
+#endif
+
 } // namespace map
index e365cd0c68722acd571e119fd327d9a104561194..05579093cc26a647f32d921a801d7e6b65097301 100644 (file)
@@ -29,6 +29,7 @@
 */
 
 #include "set_del3.h"
+#include <string>
 
 namespace set {
 
@@ -119,5 +120,14 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Set_Del3_LF, ::testing::ValuesIn( Set_Del3_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_Del3_LF, ::testing::ValuesIn( Set_Del3_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_Del3_LF, ::testing::ValuesIn( Set_Del3_LF::get_load_factors() ) );
+#endif
+
 } // namespace set
index 04c5199e079b4e00c3bb544cc9ae6eea8aec2ed1..7243bab75b120273069483521618470c679ef462 100644 (file)
@@ -119,5 +119,13 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Set_DelOdd_LF, ::testing::ValuesIn( Set_DelOdd_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_DelOdd_LF, ::testing::ValuesIn( Set_DelOdd_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_DelOdd_LF, ::testing::ValuesIn( Set_DelOdd_LF::get_load_factors() ) );
+#endif
 } // namespace set
index b079d9195dd3eb2a0767f0c59eebe3dbba141d20..197f75f1be2337872ae6be0c12fdae2274747c27 100644 (file)
@@ -1,17 +1,15 @@
 set(EXE_SET_INSDELFIND_HP stress-set-insdelfind-hp)
 set(EXE_SET_INSDELFIND_RCU stress-set-insdelfind-rcu)
+set(EXE_SET_INSDELFIND_LOCK stress-set-insdelfind-lock)
 
 set(CDSSTRESS_SET_INSDELFIND_HP_SOURCES
     ../../main.cpp
     set_insdelfind.cpp
-    set_insdelfind_cuckoo.cpp
     set_insdelfind_ellentree_hp.cpp
     set_insdelfind_feldman_hashset_hp.cpp
     set_insdelfind_michael_hp.cpp
     set_insdelfind_skip_hp.cpp
     set_insdelfind_split_hp.cpp
-    set_insdelfind_std.cpp
-    set_insdelfind_striped.cpp
 )
 
 set(CDSSTRESS_SET_INSDELFIND_RCU_SOURCES
@@ -24,6 +22,14 @@ set(CDSSTRESS_SET_INSDELFIND_RCU_SOURCES
     set_insdelfind_split_rcu.cpp
 )
 
+set(CDSSTRESS_SET_INSDELFIND_LOCK_SOURCES
+    ../../main.cpp
+    set_insdelfind.cpp
+    set_insdelfind_cuckoo.cpp
+    set_insdelfind_std.cpp
+    set_insdelfind_striped.cpp
+)
+
 include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/..
@@ -37,9 +43,14 @@ add_executable(${EXE_SET_INSDELFIND_RCU} ${CDSSTRESS_SET_INSDELFIND_RCU_SOURCES}
 target_link_libraries(${EXE_SET_INSDELFIND_RCU} ${CDS_TEST_LIBRARIES})
 add_test(NAME ${EXE_SET_INSDELFIND_RCU} COMMAND ${EXE_SET_INSDELFIND_RCU} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
 
+add_executable(${EXE_SET_INSDELFIND_LOCK} ${CDSSTRESS_SET_INSDELFIND_LOCK_SOURCES} $<TARGET_OBJECTS:${CDSSTRESS_FRAMEWORK_LIBRARY}>)
+target_link_libraries(${EXE_SET_INSDELFIND_LOCK} ${CDS_TEST_LIBRARIES})
+add_test(NAME ${EXE_SET_INSDELFIND_LOCK} COMMAND ${EXE_SET_INSDELFIND_LOCK} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
+
 add_custom_target( stress-set-insdelfind
     DEPENDS
         stress-set-insdelfind-hp
         stress-set-insdelfind-rcu
+        stress-set-insdelfind-lock
 )
 
index e35e8ea726e95f2d451b61a76b7761834606dabd..1b9296ca11f97db07517658f18b1abfb4a866089 100644 (file)
@@ -123,5 +123,14 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( _, Set_InsDelFind_LF, ::testing::ValuesIn( Set_InsDelFind_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDelFind_LF, ::testing::ValuesIn( Set_InsDelFind_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDelFind_LF, ::testing::ValuesIn( Set_InsDelFind_LF::get_load_factors() ) );
+#endif
+
 } // namespace set
index 3fcbdac3287b9395289289db2e094abf8098604d..deddcf29fd66eba05552ff7a9e0c551e3886631d 100644 (file)
@@ -110,5 +110,13 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_func_LF, ::testing::ValuesIn( Set_InsDel_func_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_func_LF, ::testing::ValuesIn( Set_InsDel_func_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_func_LF, ::testing::ValuesIn( Set_InsDel_func_LF::get_load_factors() ) );
+#endif
 } // namespace set
index 4690a4ecb04d5428f021fca9b88513eef1622410..03f61d096e87d85355b1bb0daf0b7e4e3753e259 100644 (file)
@@ -114,5 +114,15 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_string_LF, ::testing::ValuesIn( Set_InsDel_string_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_string_LF, ::testing::ValuesIn( Set_InsDel_string_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_string_LF, ::testing::ValuesIn( Set_InsDel_string_LF::get_load_factors() ) );
+#endif
+
+    
 } // namespace set
index d984b61c3de950845018d95ef70c07550de6ca72..c549af57725aefb34a00881a3db01d8e11f7ee3c 100644 (file)
@@ -104,5 +104,13 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Set_Iter_Del3_LF, ::testing::ValuesIn( Set_Iter_Del3_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_Iter_Del3_LF, ::testing::ValuesIn( Set_Iter_Del3_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_Iter_Del3_LF, ::testing::ValuesIn( Set_Iter_Del3_LF::get_load_factors() ) );
+#endif
 } // namespace set
index 888a620d13c4bb1e7c1c036ae1f1e1a0438f25b2..b41eb7db6fa9c93bbfdc67fed97e5ab2d22ddeee 100644 (file)
@@ -114,5 +114,13 @@ namespace set {
         return lf;
     }
 
-    INSTANTIATE_TEST_CASE_P( a, Set_Iteration_LF, ::testing::ValuesIn( Set_Iteration_LF::get_load_factors()));
+#ifdef CDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG
+    static std::string get_test_parameter_name( testing::TestParamInfo<size_t> const& p )
+    {
+        return std::to_string( p.param );
+    }
+    INSTANTIATE_TEST_CASE_P( a, Set_Iteration_LF, ::testing::ValuesIn( Set_Iteration_LF::get_load_factors() ), get_test_parameter_name );
+#else
+    INSTANTIATE_TEST_CASE_P( a, Set_Iteration_LF, ::testing::ValuesIn( Set_Iteration_LF::get_load_factors() ) );
+#endif
 } // namespace set