From 4ff978196e4438e13eb660f660c5e93e45f1c2ff Mon Sep 17 00:00:00 2001 From: khizmax Date: Sun, 26 Feb 2017 18:16:38 +0300 Subject: [PATCH] Split stress-map-insdelfind test to HP and RCU part --- .../Win/vc14/stress-map-insdelfind.vcxproj | 15 ++-- test/stress/map/insdelfind/CMakeLists.txt | 42 ++++++--- test/stress/map/insdelfind/map_insdelfind.cpp | 2 +- ...ee.cpp => map_insdelfind_ellentree_hp.cpp} | 2 +- .../map_insdelfind_ellentree_rcu.cpp | 38 ++++++++ ... => map_insdelfind_feldman_hashset_hp.cpp} | 2 +- .../map_insdelfind_feldman_hashset_rcu.cpp | 38 ++++++++ ...hael.cpp => map_insdelfind_michael_hp.cpp} | 2 +- .../insdelfind/map_insdelfind_michael_rcu.cpp | 38 ++++++++ ...nd_skip.cpp => map_insdelfind_skip_hp.cpp} | 2 +- .../insdelfind/map_insdelfind_skip_rcu.cpp | 38 ++++++++ ..._split.cpp => map_insdelfind_split_hp.cpp} | 2 +- .../insdelfind/map_insdelfind_split_rcu.cpp | 38 ++++++++ test/stress/map/map_type_michael.h | 81 +++++++++++------ test/stress/map/map_type_skip_list.h | 87 ++++++++++++------- test/stress/map/map_type_split_list.h | 86 +++++++++++------- 16 files changed, 400 insertions(+), 113 deletions(-) rename test/stress/map/insdelfind/{map_insdelfind_ellentree.cpp => map_insdelfind_ellentree_hp.cpp} (95%) create mode 100644 test/stress/map/insdelfind/map_insdelfind_ellentree_rcu.cpp rename test/stress/map/insdelfind/{map_insdelfind_feldman_hashset.cpp => map_insdelfind_feldman_hashset_hp.cpp} (95%) create mode 100644 test/stress/map/insdelfind/map_insdelfind_feldman_hashset_rcu.cpp rename test/stress/map/insdelfind/{map_insdelfind_michael.cpp => map_insdelfind_michael_hp.cpp} (95%) create mode 100644 test/stress/map/insdelfind/map_insdelfind_michael_rcu.cpp rename test/stress/map/insdelfind/{map_insdelfind_skip.cpp => map_insdelfind_skip_hp.cpp} (95%) create mode 100644 test/stress/map/insdelfind/map_insdelfind_skip_rcu.cpp rename test/stress/map/insdelfind/{map_insdelfind_split.cpp => map_insdelfind_split_hp.cpp} (95%) create mode 100644 test/stress/map/insdelfind/map_insdelfind_split_rcu.cpp diff --git a/projects/Win/vc14/stress-map-insdelfind.vcxproj b/projects/Win/vc14/stress-map-insdelfind.vcxproj index 16bbd6ef..bc345624 100644 --- a/projects/Win/vc14/stress-map-insdelfind.vcxproj +++ b/projects/Win/vc14/stress-map-insdelfind.vcxproj @@ -38,11 +38,16 @@ _SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) _SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - - - - - + + + + + + + + + + 4503 4503 4503 diff --git a/test/stress/map/insdelfind/CMakeLists.txt b/test/stress/map/insdelfind/CMakeLists.txt index 8a88ad27..4b31739a 100644 --- a/test/stress/map/insdelfind/CMakeLists.txt +++ b/test/stress/map/insdelfind/CMakeLists.txt @@ -1,25 +1,45 @@ -set(PACKAGE_NAME stress-map-insdelfind) +set(MAP_INSDELFIND_HP stress-map-insdelfind-hp) +set(MAP_INSDELFIND_RCU stress-map-insdelfind-rcu) -set(CDSSTRESS_MAP_INSDELFIND_SOURCES +set(CDSSTRESS_MAP_INSDELFIND_HP_SOURCES ../../main.cpp map_insdelfind.cpp - map_insdelfind_bronsonavltree.cpp map_insdelfind_cuckoo.cpp - map_insdelfind_ellentree.cpp - map_insdelfind_feldman_hashset.cpp - map_insdelfind_michael.cpp - map_insdelfind_skip.cpp - map_insdelfind_split.cpp + map_insdelfind_ellentree_hp.cpp + map_insdelfind_feldman_hashset_hp.cpp + map_insdelfind_michael_hp.cpp + map_insdelfind_skip_hp.cpp + map_insdelfind_split_hp.cpp map_insdelfind_std.cpp map_insdelfind_striped.cpp ) +set(CDSSTRESS_MAP_INSDELFIND_RCU_SOURCES + ../../main.cpp + map_insdelfind.cpp + map_insdelfind_bronsonavltree.cpp + map_insdelfind_ellentree_rcu.cpp + map_insdelfind_feldman_hashset_rcu.cpp + map_insdelfind_michael_rcu.cpp + map_insdelfind_skip_rcu.cpp + map_insdelfind_split_rcu.cpp +) + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/.. ) -add_executable(${PACKAGE_NAME} ${CDSSTRESS_MAP_INSDELFIND_SOURCES} $) -target_link_libraries(${PACKAGE_NAME} ${CDS_TEST_LIBRARIES}) +add_executable(${MAP_INSDELFIND_HP} ${CDSSTRESS_MAP_INSDELFIND_HP_SOURCES} $) +target_link_libraries(${MAP_INSDELFIND_HP} ${CDS_TEST_LIBRARIES}) +add_test(NAME ${MAP_INSDELFIND_HP} COMMAND ${MAP_INSDELFIND_HP} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) -add_test(NAME ${PACKAGE_NAME} COMMAND ${PACKAGE_NAME} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) \ No newline at end of file +add_executable(${MAP_INSDELFIND_RCU} ${CDSSTRESS_MAP_INSDELFIND_RCU_SOURCES} $) +target_link_libraries(${MAP_INSDELFIND_RCU} ${CDS_TEST_LIBRARIES}) +add_test(NAME ${MAP_INSDELFIND_RCU} COMMAND ${MAP_INSDELFIND_RCU} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) + +add_custom_target( stress-map-insdelfind + DEPENDS + stress-map-insdelfind-hp + stress-map-insdelfind-rcu +) diff --git a/test/stress/map/insdelfind/map_insdelfind.cpp b/test/stress/map/insdelfind/map_insdelfind.cpp index 3dcea79b..642abd24 100644 --- a/test/stress/map/insdelfind/map_insdelfind.cpp +++ b/test/stress/map/insdelfind/map_insdelfind.cpp @@ -130,5 +130,5 @@ namespace map { return lf; } - INSTANTIATE_TEST_CASE_P( a, Map_InsDelFind_LF, ::testing::ValuesIn( Map_InsDelFind_LF::get_load_factors())); + INSTANTIATE_TEST_CASE_P( _, Map_InsDelFind_LF, ::testing::ValuesIn( Map_InsDelFind_LF::get_load_factors())); } // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_ellentree.cpp b/test/stress/map/insdelfind/map_insdelfind_ellentree_hp.cpp similarity index 95% rename from test/stress/map/insdelfind/map_insdelfind_ellentree.cpp rename to test/stress/map/insdelfind/map_insdelfind_ellentree_hp.cpp index ecceaf5a..d4c07ced 100644 --- a/test/stress/map/insdelfind/map_insdelfind_ellentree.cpp +++ b/test/stress/map/insdelfind/map_insdelfind_ellentree_hp.cpp @@ -33,6 +33,6 @@ namespace map { - CDSSTRESS_EllenBinTreeMap( Map_InsDelFind, run_test, size_t, size_t ) + CDSSTRESS_EllenBinTreeMap_HP( Map_InsDelFind, run_test, size_t, size_t ) } // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_ellentree_rcu.cpp b/test/stress/map/insdelfind/map_insdelfind_ellentree_rcu.cpp new file mode 100644 index 00000000..844c28de --- /dev/null +++ b/test/stress/map/insdelfind/map_insdelfind_ellentree_rcu.cpp @@ -0,0 +1,38 @@ +/* + This file is a part of libcds - Concurrent Data Structures library + + (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017 + + Source code repo: http://github.com/khizmax/libcds/ + Download: http://sourceforge.net/projects/libcds/files/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "map_insdelfind.h" +#include "map_type_ellen_bintree.h" + +namespace map { + + CDSSTRESS_EllenBinTreeMap_RCU( Map_InsDelFind, run_test, size_t, size_t ) + +} // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_feldman_hashset.cpp b/test/stress/map/insdelfind/map_insdelfind_feldman_hashset_hp.cpp similarity index 95% rename from test/stress/map/insdelfind/map_insdelfind_feldman_hashset.cpp rename to test/stress/map/insdelfind/map_insdelfind_feldman_hashset_hp.cpp index d6699aaa..b0978587 100644 --- a/test/stress/map/insdelfind/map_insdelfind_feldman_hashset.cpp +++ b/test/stress/map/insdelfind/map_insdelfind_feldman_hashset_hp.cpp @@ -33,6 +33,6 @@ namespace map { - CDSSTRESS_FeldmanHashMap_fixed( Map_InsDelFind, run_test, size_t, size_t ) + CDSSTRESS_FeldmanHashMap_fixed_HP( Map_InsDelFind, run_test, size_t, size_t ) } // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_feldman_hashset_rcu.cpp b/test/stress/map/insdelfind/map_insdelfind_feldman_hashset_rcu.cpp new file mode 100644 index 00000000..67c8821e --- /dev/null +++ b/test/stress/map/insdelfind/map_insdelfind_feldman_hashset_rcu.cpp @@ -0,0 +1,38 @@ +/* + This file is a part of libcds - Concurrent Data Structures library + + (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017 + + Source code repo: http://github.com/khizmax/libcds/ + Download: http://sourceforge.net/projects/libcds/files/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "map_insdelfind.h" +#include "map_type_feldman_hashmap.h" + +namespace map { + + CDSSTRESS_FeldmanHashMap_fixed_RCU( Map_InsDelFind, run_test, size_t, size_t ) + +} // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_michael.cpp b/test/stress/map/insdelfind/map_insdelfind_michael_hp.cpp similarity index 95% rename from test/stress/map/insdelfind/map_insdelfind_michael.cpp rename to test/stress/map/insdelfind/map_insdelfind_michael_hp.cpp index 1b0c4e79..afa4106d 100644 --- a/test/stress/map/insdelfind/map_insdelfind_michael.cpp +++ b/test/stress/map/insdelfind/map_insdelfind_michael_hp.cpp @@ -33,6 +33,6 @@ namespace map { - CDSSTRESS_MichaelMap( Map_InsDelFind_LF, run_test, size_t, size_t ) + CDSSTRESS_MichaelMap_HP( Map_InsDelFind_LF, run_test, size_t, size_t ) } // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_michael_rcu.cpp b/test/stress/map/insdelfind/map_insdelfind_michael_rcu.cpp new file mode 100644 index 00000000..3d441773 --- /dev/null +++ b/test/stress/map/insdelfind/map_insdelfind_michael_rcu.cpp @@ -0,0 +1,38 @@ +/* + This file is a part of libcds - Concurrent Data Structures library + + (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017 + + Source code repo: http://github.com/khizmax/libcds/ + Download: http://sourceforge.net/projects/libcds/files/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "map_insdelfind.h" +#include "map_type_michael.h" + +namespace map { + + CDSSTRESS_MichaelMap_RCU( Map_InsDelFind_LF, run_test, size_t, size_t ) + +} // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_skip.cpp b/test/stress/map/insdelfind/map_insdelfind_skip_hp.cpp similarity index 95% rename from test/stress/map/insdelfind/map_insdelfind_skip.cpp rename to test/stress/map/insdelfind/map_insdelfind_skip_hp.cpp index 655fc36d..cbc76e36 100644 --- a/test/stress/map/insdelfind/map_insdelfind_skip.cpp +++ b/test/stress/map/insdelfind/map_insdelfind_skip_hp.cpp @@ -33,6 +33,6 @@ namespace map { - CDSSTRESS_SkipListMap( Map_InsDelFind, run_test, size_t, size_t ) + CDSSTRESS_SkipListMap_HP( Map_InsDelFind, run_test, size_t, size_t ) } // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_skip_rcu.cpp b/test/stress/map/insdelfind/map_insdelfind_skip_rcu.cpp new file mode 100644 index 00000000..f70c5ee5 --- /dev/null +++ b/test/stress/map/insdelfind/map_insdelfind_skip_rcu.cpp @@ -0,0 +1,38 @@ +/* + This file is a part of libcds - Concurrent Data Structures library + + (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017 + + Source code repo: http://github.com/khizmax/libcds/ + Download: http://sourceforge.net/projects/libcds/files/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "map_insdelfind.h" +#include "map_type_skip_list.h" + +namespace map { + + CDSSTRESS_SkipListMap_RCU( Map_InsDelFind, run_test, size_t, size_t ) + +} // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_split.cpp b/test/stress/map/insdelfind/map_insdelfind_split_hp.cpp similarity index 95% rename from test/stress/map/insdelfind/map_insdelfind_split.cpp rename to test/stress/map/insdelfind/map_insdelfind_split_hp.cpp index 8cb13905..ece864c7 100644 --- a/test/stress/map/insdelfind/map_insdelfind_split.cpp +++ b/test/stress/map/insdelfind/map_insdelfind_split_hp.cpp @@ -33,7 +33,7 @@ namespace map { - CDSSTRESS_SplitListMap( Map_InsDelFind_LF, run_test, size_t, size_t ) + CDSSTRESS_SplitListMap_HP( Map_InsDelFind_LF, run_test, size_t, size_t ) CDSSTRESS_SplitListIterableMap( Map_InsDelFind_LF, run_test, size_t, size_t ) } // namespace map diff --git a/test/stress/map/insdelfind/map_insdelfind_split_rcu.cpp b/test/stress/map/insdelfind/map_insdelfind_split_rcu.cpp new file mode 100644 index 00000000..a090fad7 --- /dev/null +++ b/test/stress/map/insdelfind/map_insdelfind_split_rcu.cpp @@ -0,0 +1,38 @@ +/* + This file is a part of libcds - Concurrent Data Structures library + + (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017 + + Source code repo: http://github.com/khizmax/libcds/ + Download: http://sourceforge.net/projects/libcds/files/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "map_insdelfind.h" +#include "map_type_split_list.h" + +namespace map { + + CDSSTRESS_SplitListMap_RCU( Map_InsDelFind_LF, run_test, size_t, size_t ) + +} // namespace map diff --git a/test/stress/map/map_type_michael.h b/test/stress/map/map_type_michael.h index 56bc8e1d..393efc16 100644 --- a/test/stress/map/map_type_michael.h +++ b/test/stress/map/map_type_michael.h @@ -288,90 +288,119 @@ namespace map { #endif #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1 -# define CDSSTRESS_MichaelMap_2( fixture, test_case, key_type, value_type ) \ +# define CDSSTRESS_MichaelMap_HP_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_cmp_seqcst, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_less_seqcst, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_less_seqcst, key_type, value_type ) \ + \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_cmp_seqcst, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_cmp_seqcst, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_less_seqcst, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_less_seqcst, key_type, value_type ) \ + \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_HP_cmp_seqcst, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_DHP_cmp_seqcst, key_type, value_type ) \ + +# define CDSSTRESS_MichaelMap_RCU_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPI_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPB_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPT_cmp_seqcst, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_less_seqcst, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_less_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPI_less_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPB_less_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPT_less_seqcst, key_type, value_type ) \ \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_cmp_seqcst, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPI_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPB_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPT_cmp_seqcst, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_less_seqcst, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_less_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPI_less_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPB_less_seqcst, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPT_less_seqcst, key_type, value_type ) \ - \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_HP_cmp_seqcst, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_DHP_cmp_seqcst, key_type, value_type ) \ + +# define CDSSTRESS_MichaelMap_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_HP_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_RCU_2( fixture, test_case, key_type, value_type ) \ #else +# define CDSSTRESS_MichaelMap_HP_2( fixture, test_case, key_type, value_type ) +# define CDSSTRESS_MichaelMap_RCU_2( fixture, test_case, key_type, value_type ) # define CDSSTRESS_MichaelMap_2( fixture, test_case, key_type, value_type ) #endif #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1 -# define CDSSTRESS_MichaelMap_1( fixture, test_case, key_type, value_type ) \ +# define CDSSTRESS_MichaelMap_HP_1( fixture, test_case, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_cmp_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPB_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_less, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_less_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPI_less, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPT_less, key_type, value_type ) \ \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_cmp_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPB_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_less, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_less_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPI_less, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPT_less, key_type, value_type ) \ \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_DHP_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_HP_cmp_stat, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_HP_less, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_DHP_less_stat, key_type, value_type ) \ +# define CDSSTRESS_MichaelMap_RCU_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPB_cmp, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPI_less, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPT_less, key_type, value_type ) \ + \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPB_cmp, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPI_less, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPT_less, key_type, value_type ) \ + +# define CDSSTRESS_MichaelMap_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_RCU_1( fixture, test_case, key_type, value_type ) \ + #else +# define CDSSTRESS_MichaelMap_HP_1( fixture, test_case, key_type, value_type ) +# define CDSSTRESS_MichaelMap_RCU_1( fixture, test_case, key_type, value_type ) # define CDSSTRESS_MichaelMap_1( fixture, test_case, key_type, value_type ) #endif -#define CDSSTRESS_MichaelMap( fixture, test_case, key_type, value_type ) \ +#define CDSSTRESS_MichaelMap_HP( fixture, test_case, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_cmp_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPI_cmp, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPT_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_DHP_less, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_HP_less_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPB_less, key_type, value_type ) \ \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_cmp_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPI_cmp, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPT_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_DHP_less, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_HP_less_stat, key_type, value_type ) \ - CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPB_less, key_type, value_type ) \ \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_HP_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_DHP_cmp_stat, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_DHP_less, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Iterable_HP_less_stat, key_type, value_type ) \ \ - CDSSTRESS_MichaelMap_1( fixture, test_case, key_type, value_type ) \ - CDSSTRESS_MichaelMap_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_HP_2( fixture, test_case, key_type, value_type ) \ + + +#define CDSSTRESS_MichaelMap_RCU( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPI_cmp, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPT_cmp, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_RCU_GPB_less, key_type, value_type ) \ + \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPI_cmp, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPT_cmp, key_type, value_type ) \ + CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_Lazy_RCU_GPB_less, key_type, value_type ) \ + \ + CDSSTRESS_MichaelMap_RCU_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_RCU_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_MichaelMap_SHRCU( fixture, test_case, key_type, value_type ) \ +#define CDSSTRESS_MichaelMap( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_HP( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_MichaelMap_RCU( fixture, test_case, key_type, value_type ) \ + #define CDSSTRESS_MichaelMap_nogc( fixture, test_case, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_NOGC_cmp, key_type, value_type ) \ CDSSTRESS_MichaelMap_case( fixture, test_case, MichaelMap_NOGC_less, key_type, value_type ) \ diff --git a/test/stress/map/map_type_skip_list.h b/test/stress/map/map_type_skip_list.h index 4e73a5a1..d649998e 100644 --- a/test/stress/map/map_type_skip_list.h +++ b/test/stress/map/map_type_skip_list.h @@ -302,70 +302,94 @@ namespace map { #endif #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1 -# define CDSSTRESS_SkipListMap_2( fixture, test_case, key_type, value_type ) \ +# define CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal_seqcst, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal_seqcst, key_type, value_type ) \ + +# define CDSSTRESS_SkipListMap_RCU_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal_seqcst, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal_seqcst, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal_seqcst, key_type, value_type ) \ +# define CDSSTRESS_SkipListMap_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_RCU_2( fixture, test_case, key_type, value_type ) \ + #else +# define CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) +# define CDSSTRESS_SkipListMap_RCU_2( fixture, test_case, key_type, value_type ) # define CDSSTRESS_SkipListMap_2( fixture, test_case, key_type, value_type ) #endif #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1 +# define CDSSTRESS_SkipListMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift_stat, key_type, value_type ) \ + +# define CDSSTRESS_SkipListMap_RCU_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift_stat, key_type, value_type ) \ + # define CDSSTRESS_SkipListMap_1( fixture, test_case, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_RCU_1( fixture, test_case, key_type, value_type ) \ #else +# define CDSSTRESS_SkipListMap_HP_1( fixture, test_case, key_type, value_type ) +# define CDSSTRESS_SkipListMap_RCU_1( fixture, test_case, key_type, value_type ) # define CDSSTRESS_SkipListMap_1( fixture, test_case, key_type, value_type ) #endif -#define CDSSTRESS_SkipListMap( fixture, test_case, key_type, value_type ) \ +#define CDSSTRESS_SkipListMap_HP( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_pascal, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_pascal_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift, key_type, value_type ) \ + CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift_stat, key_type, value_type ) \ + CDSSTRESS_SkipListMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) \ + +#define CDSSTRESS_SkipListMap_RCU( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal_stat, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_pascal, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_pascal, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_pascal_stat, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_pascal_stat, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_pascal_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift_stat, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift, key_type, value_type ) \ - CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift_stat, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift_stat, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift_stat, key_type, value_type ) \ - CDSSTRESS_SkipListMap_1( fixture, test_case, key_type, value_type ) \ - CDSSTRESS_SkipListMap_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_RCU_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_RCU_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SkipListMap_SHRCU( fixture, test_case, key_type, value_type ) +#define CDSSTRESS_SkipListMap( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_HP( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SkipListMap_RCU( fixture, test_case, key_type, value_type ) \ + #define CDSSTRESS_SkipListMap_nogc( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_pascal, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_pascal_seqcst, key_type, value_type ) \ @@ -377,5 +401,4 @@ namespace map { CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_xorshift, key_type, value_type ) \ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_xorshift_stat, key_type, value_type ) \ - #endif // ifndef CDSUNIT_MAP_TYPE_SKIP_LIST_H diff --git a/test/stress/map/map_type_split_list.h b/test/stress/map/map_type_split_list.h index 17bd2e54..f02f287a 100644 --- a/test/stress/map/map_type_split_list.h +++ b/test/stress/map/map_type_split_list.h @@ -669,103 +669,124 @@ namespace map { CDSSTRESS_SplitListMap_SHRCU_1( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SplitListMap_SHRCU_2( fixture, test_case, key_type, value_type ) \ -# define CDSSTRESS_SplitListIterableMap_SHRCU( fixture, test_case, key_type, value_type ) - #else # define CDSSTRESS_SplitListMap_SHRCU( fixture, test_case, key_type, value_type ) -# define CDSSTRESS_SplitListIterableMap_SHRCU( fixture, test_case, key_type, value_type ) #endif #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1 -# define CDSSTRESS_SplitListMap_2( fixture, test_case, key_type, value_type ) \ +# define CDSSTRESS_SplitListMap_HP_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_dyn_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_dyn_cmp_seqcst, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_cmp_seqcst, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_cmp_seqcst, key_type, value_type ) \ + +# define CDSSTRESS_SplitListMap_RCU_2( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_dyn_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_dyn_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_dyn_cmp_seqcst, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_cmp_seqcst, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst, key_type, value_type ) \ +# define CDSSTRESS_SplitListMap_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_HP_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_RCU_2( fixture, test_case, key_type, value_type ) \ + + #else +# define CDSSTRESS_SplitListMap_HP_2( fixture, test_case, key_type, value_type ) +# define CDSSTRESS_SplitListMap_RCU_2( fixture, test_case, key_type, value_type ) # define CDSSTRESS_SplitListMap_2( fixture, test_case, key_type, value_type ) #endif #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1 -# define CDSSTRESS_SplitListMap_1( fixture, test_case, key_type, value_type ) \ +# define CDSSTRESS_SplitListMap_HP_1( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_dyn_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_dyn_cmp_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_st_cmp, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_dyn_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_st_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_st_less_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_cmp, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_cmp_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_st_cmp, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_st_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_st_less_stat, key_type, value_type ) \ + +# define CDSSTRESS_SplitListMap_RCU_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_dyn_cmp_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_dyn_cmp_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_st_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_st_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_st_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_dyn_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_dyn_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_st_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_st_less_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_st_less_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_dyn_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_cmp_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_dyn_cmp_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_dyn_cmp_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_st_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_st_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_st_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_dyn_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_st_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_st_less_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_st_less_stat, key_type, value_type ) \ +# define CDSSTRESS_SplitListMap_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_RCU_1( fixture, test_case, key_type, value_type ) \ + #else +# define CDSSTRESS_SplitListMap_HP_1( fixture, test_case, key_type, value_type ) +# define CDSSTRESS_SplitListMap_RCU_1( fixture, test_case, key_type, value_type ) # define CDSSTRESS_SplitListMap_1( fixture, test_case, key_type, value_type ) #endif -#define CDSSTRESS_SplitListMap( fixture, test_case, key_type, value_type ) \ +#define CDSSTRESS_SplitListMap_HP( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_dyn_cmp_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_st_cmp, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_dyn_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_st_less_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_st_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_cmp, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_cmp_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_st_cmp, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_st_less, key_type, value_type ) \ + CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_st_less_stat, key_type, value_type ) \ + CDSSTRESS_SplitListMap_HP_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_HP_2( fixture, test_case, key_type, value_type ) \ + +#define CDSSTRESS_SplitListMap_RCU( fixture, test_case, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_dyn_cmp_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_st_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_st_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_dyn_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_dyn_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_dyn_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_HP_st_less_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_DHP_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPB_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPI_st_less_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Michael_RCU_GPT_st_less_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_dyn_cmp_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_dyn_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_dyn_cmp_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_st_cmp, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_st_cmp, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_dyn_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_dyn_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_dyn_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_DHP_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPB_st_less, key_type, value_type ) \ - CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_HP_st_less_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPI_st_less_stat, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Lazy_RCU_GPT_st_less_stat, key_type, value_type ) \ - CDSSTRESS_SplitListMap_1( fixture, test_case, key_type, value_type ) \ - CDSSTRESS_SplitListMap_2( fixture, test_case, key_type, value_type ) \ - CDSSTRESS_SplitListMap_SHRCU( fixture, test_case, key_type, value_type ) + CDSSTRESS_SplitListMap_RCU_1( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_RCU_2( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_SHRCU( fixture, test_case, key_type, value_type ) \ +#define CDSSTRESS_SplitListMap( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_HP( fixture, test_case, key_type, value_type ) \ + CDSSTRESS_SplitListMap_RCU( fixture, test_case, key_type, value_type ) \ #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 0 # define CDSSTRESS_SplitListIterableMap_1( fixture, test_case, key_type, value_type ) \ @@ -789,7 +810,6 @@ namespace map { CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Iterable_DHP_st_less, key_type, value_type ) \ CDSSTRESS_SplitListMap_case( fixture, test_case, SplitList_Iterable_HP_st_less_stat, key_type, value_type ) \ CDSSTRESS_SplitListIterableMap_1( fixture, test_case, key_type, value_type ) \ - CDSSTRESS_SplitListIterableMap_SHRCU( fixture, test_case, key_type, value_type ) #define CDSSTRESS_SplitListMap_nogc( fixture, test_case, key_type, value_type ) \ -- 2.34.1