Migrated set-insdel-string stress test to gtest
authorkhizmax <libcds.dev@gmail.com>
Sat, 14 May 2016 06:37:52 +0000 (09:37 +0300)
committerkhizmax <libcds.dev@gmail.com>
Sat, 14 May 2016 06:37:52 +0000 (09:37 +0300)
Removed old set stres tests

84 files changed:
build/Makefile
projects/Win/vc14/cds.sln
projects/Win/vc14/stress-set-insdel_string.vcxproj [new file with mode: 0644]
projects/Win/vc14/stress-set-insdel_string.vcxproj.filters [new file with mode: 0644]
projects/Win/vc14/unit-set-insdel.vcxproj [deleted file]
projects/Win/vc14/unit-set-insdel.vcxproj.filters [deleted file]
projects/source.unit.set.mk [deleted file]
test/include/cds_test/stress_test.h
test/stress/data/test-debug.conf
test/stress/data/test-express.conf
test/stress/data/test.conf
test/stress/framework/stress_test.cpp
test/stress/set/CMakeLists.txt
test/stress/set/delodd/set_delodd_feldman_hashset.cpp
test/stress/set/insdel_find/CMakeLists.txt
test/stress/set/insdel_find/set_insdelfind_feldman_hashset.cpp
test/stress/set/insdel_func/CMakeLists.txt
test/stress/set/insdel_func/set_insdel_func.h
test/stress/set/insdel_func/set_insdel_func_feldman_hashset.cpp
test/stress/set/insdel_string/CMakeLists.txt [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string.h [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_cuckoo.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_ellentree.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_feldman_hashset.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_michael.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_skip.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_split.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_std.cpp [new file with mode: 0644]
test/stress/set/insdel_string/set_insdel_string_striped.cpp [new file with mode: 0644]
test/stress/set/set_type.h
test/stress/set/set_type_feldman_hashset.h
tests/unit/CMakeLists.txt
tests/unit/map2/map_insdel_string.h
tests/unit/set2/CMakeLists.txt [deleted file]
tests/unit/set2/set_defs.h [deleted file]
tests/unit/set2/set_delodd.cpp [deleted file]
tests/unit/set2/set_delodd.h [deleted file]
tests/unit/set2/set_delodd_cuckoo.cpp [deleted file]
tests/unit/set2/set_delodd_ellentree.cpp [deleted file]
tests/unit/set2/set_delodd_feldmanhashset.cpp [deleted file]
tests/unit/set2/set_delodd_michael.cpp [deleted file]
tests/unit/set2/set_delodd_skip.cpp [deleted file]
tests/unit/set2/set_delodd_split.cpp [deleted file]
tests/unit/set2/set_insdel_func.cpp [deleted file]
tests/unit/set2/set_insdel_func.h [deleted file]
tests/unit/set2/set_insdel_func_cuckoo.cpp [deleted file]
tests/unit/set2/set_insdel_func_ellentree.cpp [deleted file]
tests/unit/set2/set_insdel_func_feldmanhashset.cpp [deleted file]
tests/unit/set2/set_insdel_func_michael.cpp [deleted file]
tests/unit/set2/set_insdel_func_skip.cpp [deleted file]
tests/unit/set2/set_insdel_func_split.cpp [deleted file]
tests/unit/set2/set_insdel_func_striped.cpp [deleted file]
tests/unit/set2/set_insdel_string.cpp [deleted file]
tests/unit/set2/set_insdel_string.h [deleted file]
tests/unit/set2/set_insdel_string_cuckoo.cpp [deleted file]
tests/unit/set2/set_insdel_string_ellentree.cpp [deleted file]
tests/unit/set2/set_insdel_string_feldmanhashset.cpp [deleted file]
tests/unit/set2/set_insdel_string_michael.cpp [deleted file]
tests/unit/set2/set_insdel_string_skip.cpp [deleted file]
tests/unit/set2/set_insdel_string_split.cpp [deleted file]
tests/unit/set2/set_insdel_string_std.cpp [deleted file]
tests/unit/set2/set_insdel_string_striped.cpp [deleted file]
tests/unit/set2/set_insdelfind.cpp [deleted file]
tests/unit/set2/set_insdelfind.h [deleted file]
tests/unit/set2/set_insdelfind_cuckoo.cpp [deleted file]
tests/unit/set2/set_insdelfind_ellentree.cpp [deleted file]
tests/unit/set2/set_insdelfind_feldmanhashset.cpp [deleted file]
tests/unit/set2/set_insdelfind_michael.cpp [deleted file]
tests/unit/set2/set_insdelfind_skip.cpp [deleted file]
tests/unit/set2/set_insdelfind_split.cpp [deleted file]
tests/unit/set2/set_insdelfind_std.cpp [deleted file]
tests/unit/set2/set_insdelfind_striped.cpp [deleted file]
tests/unit/set2/set_type.h [deleted file]
tests/unit/set2/set_type_cuckoo.h [deleted file]
tests/unit/set2/set_type_ellen_bintree.h [deleted file]
tests/unit/set2/set_type_feldman_hashset.h [deleted file]
tests/unit/set2/set_type_lazy_list.h [deleted file]
tests/unit/set2/set_type_michael.h [deleted file]
tests/unit/set2/set_type_michael_list.h [deleted file]
tests/unit/set2/set_type_skip_list.h [deleted file]
tests/unit/set2/set_type_split_list.h [deleted file]
tests/unit/set2/set_type_std.h [deleted file]
tests/unit/set2/set_type_striped.h [deleted file]

index 78e0fc6..baca808 100644 (file)
@@ -120,16 +120,11 @@ include ../projects/source.unit.map.mk
 CDSUNIT_MAP_SOURCES := $(CDSUNIT_MAP_SOURCES:%.cpp=../%.cpp)
 CDSUNIT_MAP_OBJS := $(CDSUNIT_MAP_SOURCES:%.cpp=%.o)
 
-include ../projects/source.unit.set.mk
-CDSUNIT_SET_SOURCES := $(CDSUNIT_SET_SOURCES:%.cpp=../%.cpp)
-CDSUNIT_SET_OBJS := $(CDSUNIT_SET_SOURCES:%.cpp=%.o)
-
 include ../projects/source.unit.misc.mk
 CDSUNIT_MISC_SOURCES := $(CDSUNIT_MISC_SOURCES:%.cpp=../%.cpp)
 CDSUNIT_MISC_OBJS := $(CDSUNIT_MISC_SOURCES:%.cpp=%.o)
 
-TEST_OBJ_FILE := $(CDSUNIT_COMMON_FILE) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_SET_OBJS) \
-       $(CDSUNIT_STACK_OBJS) $(CDSUNIT_MISC_OBJS)
+TEST_OBJ_FILE := $(CDSUNIT_COMMON_FILE) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_MISC_OBJS)
 TEST_OBJ_FILE_DEPS := $(TEST_OBJ_FILE:%.o=%.d)
 
 -include $(TEST_OBJ_FILE_DEPS)
@@ -137,12 +132,10 @@ $(TEST_OBJ_FILE): %.o: %.cpp
        $(CXX) $(CPP_COMP_OPT) -I$(TEST_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
 
 CDSUNIT_MAP_EXE=$(BIN_PATH)/cdsu-map
-CDSUNIT_SET_EXE=$(BIN_PATH)/cdsu-set
 CDSUNIT_MISC_EXE=$(BIN_PATH)/cdsu-misc
-CDSUNIT_EXE_FILES= $(CDSUNIT_MAP_EXE) $(CDSUNIT_SET_EXE) $(CDSUNIT_MISC_EXE)
+CDSUNIT_EXE_FILES= $(CDSUNIT_MAP_EXE) $(CDSUNIT_MISC_EXE)
 
 unit-map: $(CDSUNIT_MAP_EXE)
-unit-set: $(CDSUNIT_SET_EXE)
 
 ifeq ($(platform),mingw)
 make_test : $(CDSUNIT_EXE_FILES)
@@ -157,20 +150,15 @@ endif
 $(CDSUNIT_MAP_EXE) : $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
        $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS)
 
-$(CDSUNIT_SET_EXE) : $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
-       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS)
-
 $(CDSUNIT_MISC_EXE) : $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
        $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS)
 
 
 CDSUNIT_MAP_EXE_DBG=$(CDSUNIT_MAP_EXE)-d
-CDSUNIT_SET_EXE_DBG=$(CDSUNIT_SET_EXE)-d
 CDSUNIT_MISC_EXE_DBG=$(CDSUNIT_MISC_EXE)-d
-CDSUNIT_EXE_DBG_FILES= $(CDSUNIT_MAP_EXE_DBG) $(CDSUNIT_SET_EXE_DBG) $(CDSUNIT_MISC_EXE_DBG)
+CDSUNIT_EXE_DBG_FILES= $(CDSUNIT_MAP_EXE_DBG) $(CDSUNIT_MISC_EXE_DBG)
 
 unit-map-dbg: $(CDSUNIT_MAP_EXE_DBG)
-unit-set-dbg: $(CDSUNIT_SET_EXE_DBG)
 
 ifeq ($(platform),mingw)
 make_debug_test : $(CDSUNIT_EXE_DBG_FILES)
@@ -185,9 +173,6 @@ endif
 $(CDSUNIT_MAP_EXE_DBG) : $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
        $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS)
 
-$(CDSUNIT_SET_EXE_DBG) : $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
-       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS)
-
 $(CDSUNIT_MISC_EXE_DBG) : $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
        $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS)
 
index c3c9611..6701986 100644 (file)
@@ -48,22 +48,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "map", "map", "{6BB7A27F-FC5
                ..\..\..\tests\unit\map2\std_map.h = ..\..\..\tests\unit\map2\std_map.h\r
        EndProjectSection\r
 EndProject\r
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "set", "set", "{A64449B7-90FB-4E2B-A686-9EFC0E298644}"\r
-       ProjectSection(SolutionItems) = preProject\r
-               ..\..\..\tests\unit\set2\set_defs.h = ..\..\..\tests\unit\set2\set_defs.h\r
-               ..\..\..\tests\unit\set2\set_type.h = ..\..\..\tests\unit\set2\set_type.h\r
-               ..\..\..\tests\unit\set2\set_type_cuckoo.h = ..\..\..\tests\unit\set2\set_type_cuckoo.h\r
-               ..\..\..\tests\unit\set2\set_type_ellen_bintree.h = ..\..\..\tests\unit\set2\set_type_ellen_bintree.h\r
-               ..\..\..\tests\unit\set2\set_type_feldman_hashset.h = ..\..\..\tests\unit\set2\set_type_feldman_hashset.h\r
-               ..\..\..\tests\unit\set2\set_type_lazy_list.h = ..\..\..\tests\unit\set2\set_type_lazy_list.h\r
-               ..\..\..\tests\unit\set2\set_type_michael.h = ..\..\..\tests\unit\set2\set_type_michael.h\r
-               ..\..\..\tests\unit\set2\set_type_michael_list.h = ..\..\..\tests\unit\set2\set_type_michael_list.h\r
-               ..\..\..\tests\unit\set2\set_type_skip_list.h = ..\..\..\tests\unit\set2\set_type_skip_list.h\r
-               ..\..\..\tests\unit\set2\set_type_split_list.h = ..\..\..\tests\unit\set2\set_type_split_list.h\r
-               ..\..\..\tests\unit\set2\set_type_std.h = ..\..\..\tests\unit\set2\set_type_std.h\r
-               ..\..\..\tests\unit\set2\set_type_striped.h = ..\..\..\tests\unit\set2\set_type_striped.h\r
-       EndProjectSection\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit-map-delodd", "unit-map-delodd.vcxproj", "{3C598F96-FB84-4D42-9B43-F697F53B0221}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {61179F2F-07E1-490D-B64D-D85A90B6EF81} = {61179F2F-07E1-490D-B64D-D85A90B6EF81}\r
@@ -82,12 +66,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit-map-insdel", "unit-map
                {408FE9BC-44F0-4E6A-89FA-D6F952584239} = {408FE9BC-44F0-4E6A-89FA-D6F952584239}\r
        EndProjectSection\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit-set-insdel", "unit-set-insdel.vcxproj", "{BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {61179F2F-07E1-490D-B64D-D85A90B6EF81} = {61179F2F-07E1-490D-B64D-D85A90B6EF81}\r
-               {408FE9BC-44F0-4E6A-89FA-D6F952584239} = {408FE9BC-44F0-4E6A-89FA-D6F952584239}\r
-       EndProjectSection\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit-map-insdel-item", "unit-map-insdel-item.vcxproj", "{7521DD92-56FF-4ECA-93E5-CCE50862354B}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {61179F2F-07E1-490D-B64D-D85A90B6EF81} = {61179F2F-07E1-490D-B64D-D85A90B6EF81}\r
@@ -227,6 +205,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stress-set-insdelfind", "st
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stress-set-insdel-func", "stress-set-insdel_func.vcxproj", "{EE7A269E-83E4-402B-9C79-85058826E81E}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stress-set-insdel-string", "stress-set-insdel_string.vcxproj", "{937D82C6-92AB-4C58-ACE8-F88E7063BFA9}"\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Debug|Win32 = Debug|Win32\r
@@ -309,18 +289,6 @@ Global
                {CA25BDBF-B354-4597-B6D2-220ABBB0D2F4}.Release|Win32.Build.0 = Release|Win32\r
                {CA25BDBF-B354-4597-B6D2-220ABBB0D2F4}.Release|x64.ActiveCfg = Release|x64\r
                {CA25BDBF-B354-4597-B6D2-220ABBB0D2F4}.Release|x64.Build.0 = Release|x64\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Debug|Win32.Build.0 = Debug|Win32\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Debug|x64.ActiveCfg = Debug|x64\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Debug|x64.Build.0 = Debug|x64\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.DebugVLD|Win32.ActiveCfg = DebugVLD|Win32\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.DebugVLD|Win32.Build.0 = DebugVLD|Win32\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.DebugVLD|x64.ActiveCfg = DebugVLD|x64\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.DebugVLD|x64.Build.0 = DebugVLD|x64\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Release|Win32.ActiveCfg = Release|Win32\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Release|Win32.Build.0 = Release|Win32\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Release|x64.ActiveCfg = Release|x64\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}.Release|x64.Build.0 = Release|x64\r
                {7521DD92-56FF-4ECA-93E5-CCE50862354B}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {7521DD92-56FF-4ECA-93E5-CCE50862354B}.Debug|Win32.Build.0 = Debug|Win32\r
                {7521DD92-56FF-4ECA-93E5-CCE50862354B}.Debug|x64.ActiveCfg = Debug|x64\r
@@ -573,6 +541,18 @@ Global
                {EE7A269E-83E4-402B-9C79-85058826E81E}.Release|Win32.Build.0 = Release|Win32\r
                {EE7A269E-83E4-402B-9C79-85058826E81E}.Release|x64.ActiveCfg = Release|x64\r
                {EE7A269E-83E4-402B-9C79-85058826E81E}.Release|x64.Build.0 = Release|x64\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Debug|Win32.Build.0 = Debug|Win32\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Debug|x64.ActiveCfg = Debug|x64\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Debug|x64.Build.0 = Debug|x64\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.DebugVLD|Win32.ActiveCfg = DebugVLD|Win32\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.DebugVLD|Win32.Build.0 = DebugVLD|Win32\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.DebugVLD|x64.ActiveCfg = DebugVLD|x64\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.DebugVLD|x64.Build.0 = DebugVLD|x64\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Release|Win32.ActiveCfg = Release|Win32\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Release|Win32.Build.0 = Release|Win32\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Release|x64.ActiveCfg = Release|x64\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9}.Release|x64.Build.0 = Release|x64\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
@@ -581,11 +561,9 @@ Global
                {61179F2F-07E1-490D-B64D-D85A90B6EF81} = {B30CA283-1796-4763-92C3-2E4848D443F7}\r
                {77350FDC-9E51-438B-9A8F-D2FEA11D46B2} = {B30CA283-1796-4763-92C3-2E4848D443F7}\r
                {6BB7A27F-FC59-4267-B6FA-D034176D1459} = {B30CA283-1796-4763-92C3-2E4848D443F7}\r
-               {A64449B7-90FB-4E2B-A686-9EFC0E298644} = {B30CA283-1796-4763-92C3-2E4848D443F7}\r
                {3C598F96-FB84-4D42-9B43-F697F53B0221} = {6BB7A27F-FC59-4267-B6FA-D034176D1459}\r
                {BA2A9239-0299-4069-BB0E-16DACE87ADE0} = {6BB7A27F-FC59-4267-B6FA-D034176D1459}\r
                {CA25BDBF-B354-4597-B6D2-220ABBB0D2F4} = {6BB7A27F-FC59-4267-B6FA-D034176D1459}\r
-               {BA23811C-D4CB-4836-B2F3-6791BD6FFCD1} = {A64449B7-90FB-4E2B-A686-9EFC0E298644}\r
                {7521DD92-56FF-4ECA-93E5-CCE50862354B} = {6BB7A27F-FC59-4267-B6FA-D034176D1459}\r
                {CA6F0834-0628-4CD7-8800-AEABCD636360} = {6BB7A27F-FC59-4267-B6FA-D034176D1459}\r
                {5407E9D2-67D9-4266-976E-7A90BDE2541D} = {810490B7-31E5-49AE-8455-CAF99A9658B6}\r
@@ -609,6 +587,7 @@ Global
                {D968B0F5-52BD-40C1-B230-28104567CE97} = {0D83E8C7-97D1-4BA1-928A-6846E7089652}\r
                {133D1AEE-3BAF-42D1-B1AB-93D5239F4926} = {0D83E8C7-97D1-4BA1-928A-6846E7089652}\r
                {EE7A269E-83E4-402B-9C79-85058826E81E} = {0D83E8C7-97D1-4BA1-928A-6846E7089652}\r
+               {937D82C6-92AB-4C58-ACE8-F88E7063BFA9} = {0D83E8C7-97D1-4BA1-928A-6846E7089652}\r
        EndGlobalSection\r
        GlobalSection(DPCodeReviewSolutionGUID) = preSolution\r
                DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}\r
diff --git a/projects/Win/vc14/stress-set-insdel_string.vcxproj b/projects/Win/vc14/stress-set-insdel_string.vcxproj
new file mode 100644 (file)
index 0000000..4c22fc7
--- /dev/null
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DebugVLD|Win32">
+      <Configuration>DebugVLD</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugVLD|x64">
+      <Configuration>DebugVLD</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\test\stress\main.cpp" />
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string.cpp" />
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_cuckoo.cpp">
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_ellentree.cpp">
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_feldman_hashset.cpp" />
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_michael.cpp" />
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_skip.cpp" />
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_split.cpp">
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">4503</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_std.cpp" />
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_striped.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\test\stress\set\insdel_string\set_insdel_string.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <Text Include="..\..\..\test\stress\set\insdel_string\CMakeLists.txt" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{937D82C6-92AB-4C58-ACE8-F88E7063BFA9}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>stress_set_insdel_string</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+    <ProjectName>stress-set-insdel-string</ProjectName>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v140</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v140</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)_d</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)_d</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)_d</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)_d</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)-release\</OutDir>
+    <IntDir>$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)-release\</OutDir>
+    <IntDir>$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_ENABLE_ATOMIC_ALIGNMENT_FIX;CDSUNIT_USE_URCU;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(GTEST_ROOT)/include;$(SolutionDir)..\..\..\test\include;$(SolutionDir)..\..\..\test\stress\set;$(SolutionDir)..\..\..\test\stress\;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_ENABLE_ATOMIC_ALIGNMENT_FIX;CDSUNIT_USE_URCU;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(GTEST_ROOT)/include;$(SolutionDir)..\..\..\test\include;$(SolutionDir)..\..\..\test\stress\set;$(SolutionDir)..\..\..\test\stress\;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_ENABLE_ATOMIC_ALIGNMENT_FIX;CDSUNIT_USE_URCU;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(GTEST_ROOT)/include;$(SolutionDir)..\..\..\test\include;$(SolutionDir)..\..\..\test\stress\set;$(SolutionDir)..\..\..\test\stress\;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_ENABLE_ATOMIC_ALIGNMENT_FIX;CDSUNIT_USE_URCU;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(GTEST_ROOT)/include;$(SolutionDir)..\..\..\test\include;$(SolutionDir)..\..\..\test\stress\set;$(SolutionDir)..\..\..\test\stress\;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>_ENABLE_ATOMIC_ALIGNMENT_FIX;CDSUNIT_USE_URCU;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(GTEST_ROOT)/include;$(SolutionDir)..\..\..\test\include;$(SolutionDir)..\..\..\test\stress\set;$(SolutionDir)..\..\..\test\stress\;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>gtest.lib;stress-framework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>_ENABLE_ATOMIC_ALIGNMENT_FIX;CDSUNIT_USE_URCU;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(GTEST_ROOT)/include;$(SolutionDir)..\..\..\test\include;$(SolutionDir)..\..\..\test\stress\set;$(SolutionDir)..\..\..\test\stress\;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>gtest.lib;stress-framework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/projects/Win/vc14/stress-set-insdel_string.vcxproj.filters b/projects/Win/vc14/stress-set-insdel_string.vcxproj.filters
new file mode 100644 (file)
index 0000000..9e1bf0e
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\test\stress\main.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_michael.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_cuckoo.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_ellentree.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_feldman_hashset.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_skip.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_split.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_striped.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\test\stress\set\insdel_string\set_insdel_string_std.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\test\stress\set\insdel_string\set_insdel_string.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <Text Include="..\..\..\test\stress\set\insdel_string\CMakeLists.txt" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/projects/Win/vc14/unit-set-insdel.vcxproj b/projects/Win/vc14/unit-set-insdel.vcxproj
deleted file mode 100644 (file)
index a510845..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="DebugVLD|Win32">\r
-      <Configuration>DebugVLD</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DebugVLD|x64">\r
-      <Configuration>DebugVLD</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_cuckoo.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_ellentree.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_michael.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_feldmanhashset.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_skip.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_split.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_std.cpp" />\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_striped.cpp" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\..\..\tests\unit\set2\set_insdel_string.h" />\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{BA23811C-D4CB-4836-B2F3-6791BD6FFCD1}</ProjectGuid>\r
-    <RootNamespace>unitset</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)-release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\..\..\bin\vc.$(PlatformToolset)\$(Platform)-release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)..\..\..\obj\vc.$(PlatformToolset)\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'" />\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'" />\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">$(ProjectName)_d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">$(ProjectName)_d</TargetName>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\unit;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0501;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <DisableSpecificWarnings>4503;4520;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>unit-prerequisites_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(TargetPath)</OutputFile>\r
-      <AdditionalLibraryDirectories>$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <ForceFileOutput>MultiplyDefinedSymbolOnly</ForceFileOutput>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">\r
-    <ClCompile>\r
-      <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\unit;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;CDS_USE_VLD;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0501;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <DisableSpecificWarnings>4503;4520;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>unit-prerequisites_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(TargetPath)</OutputFile>\r
-      <AdditionalLibraryDirectories>$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <ForceFileOutput>MultiplyDefinedSymbolOnly</ForceFileOutput>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\unit;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0501;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <DisableSpecificWarnings>4503;4520;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>unit-prerequisites_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(TargetPath)</OutputFile>\r
-      <AdditionalLibraryDirectories>$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <ForceFileOutput>MultiplyDefinedSymbolOnly</ForceFileOutput>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugVLD|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\unit;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;CDS_USE_VLD;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0501;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <DisableSpecificWarnings>4503;4520;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>unit-prerequisites_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(TargetPath)</OutputFile>\r
-      <AdditionalLibraryDirectories>$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <ForceFileOutput>MultiplyDefinedSymbolOnly</ForceFileOutput>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\unit;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0501;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <DisableSpecificWarnings>4503;4520;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>unit-prerequisites.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <OutputFile>$(TargetPath)</OutputFile>\r
-      <ForceFileOutput>MultiplyDefinedSymbolOnly</ForceFileOutput>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\unit;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0501;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <DisableSpecificWarnings>4503;4520;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>unit-prerequisites.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <OutputFile>$(TargetPath)</OutputFile>\r
-      <ForceFileOutput>MultiplyDefinedSymbolOnly</ForceFileOutput>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
diff --git a/projects/Win/vc14/unit-set-insdel.vcxproj.filters b/projects/Win/vc14/unit-set-insdel.vcxproj.filters
deleted file mode 100644 (file)
index dd411a9..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_cuckoo.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_ellentree.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_michael.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_skip.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_split.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_std.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_striped.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\..\..\tests\unit\set2\set_insdel_string_feldmanhashset.cpp">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Filter Include="set_insdel_string">\r
-      <UniqueIdentifier>{8a51ae1e-c41c-4394-bf84-3de8c45ea8bb}</UniqueIdentifier>\r
-    </Filter>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\..\..\tests\unit\set2\set_insdel_string.h">\r
-      <Filter>set_insdel_string</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
-</Project>
\ No newline at end of file
diff --git a/projects/source.unit.set.mk b/projects/source.unit.set.mk
deleted file mode 100644 (file)
index f0c8ee5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-CDSUNIT_SET_SOURCES := \
-       tests/unit/set2/set_insdel_string.cpp \
-       tests/unit/set2/set_insdel_string_cuckoo.cpp \
-       tests/unit/set2/set_insdel_string_ellentree.cpp \
-       tests/unit/set2/set_insdel_string_michael.cpp \
-    tests/unit/set2/set_insdel_string_feldmanhashset.cpp \
-       tests/unit/set2/set_insdel_string_skip.cpp \
-       tests/unit/set2/set_insdel_string_split.cpp \
-       tests/unit/set2/set_insdel_string_striped.cpp \
-    tests/unit/set2/set_insdel_string_std.cpp \
index 10aeff5..60fe06c 100644 (file)
@@ -167,6 +167,8 @@ namespace cds_test {
         static config const& get_config( char const * slot );\r
         static config const& get_config( std::string const& slot );\r
 \r
+        static std::vector<std::string> load_dictionary();\r
+\r
     private:\r
         thread_pool     m_thread_pool;\r
     };
index 845b3be..82fae8d 100644 (file)
@@ -251,13 +251,14 @@ CuckooProbesetThreshold=0
 FeldmanMapHeadBits=8\r
 FeldmanMapArrayBits=4\r
 \r
-[Map_InsDel_string]\r
+[map_insdel_string]\r
 InsertThreadCount=4\r
 DeleteThreadCount=4\r
 ThreadPassCount=8\r
 MapSize=10000\r
 MaxLoadFactor=4\r
 PrintGCStateFlag=1\r
+\r
 # *** Cuckoo map properties\r
 CuckooInitialSize=256\r
 CuckooProbesetSize=8\r
index f7171d3..04e7a10 100644 (file)
@@ -245,13 +245,14 @@ CuckooProbesetThreshold=0
 FeldmanMapHeadBits=8\r
 FeldmanMapArrayBits=4\r
 \r
-[Map_InsDel_string]\r
+[map_insdel_string]\r
 InsertThreadCount=4\r
 DeleteThreadCount=4\r
 ThreadPassCount=2\r
 MapSize=100000\r
 MaxLoadFactor=4\r
 PrintGCStateFlag=1\r
+\r
 # *** Cuckoo map properties\r
 CuckooInitialSize=1024\r
 CuckooProbesetSize=16\r
index 320c965..50aa398 100644 (file)
@@ -243,13 +243,13 @@ CuckooProbesetThreshold=0
 FeldmanMapHeadBits=10\r
 FeldmanMapArrayBits=4\r
 \r
-[Map_InsDel_string]\r
+[map_insdel_string]\r
 InsertThreadCount=4\r
 DeleteThreadCount=4\r
 ThreadPassCount=2\r
 MapSize=500000\r
 MaxLoadFactor=4\r
-PrintGCStateFlag=1\r
+\r
 # *** Cuckoo map properties\r
 CuckooInitialSize=1024\r
 CuckooProbesetSize=16\r
index 498f314..b9e4d7d 100644 (file)
@@ -28,6 +28,8 @@
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+#include <fstream>
+#include <iostream>
 #include <cds_test/stress_test.h>
 \r
 namespace cds_test {\r
@@ -40,4 +42,33 @@ namespace cds_test {
         static property_stream s_prop_stream;\r
         return s_prop_stream;\r
     }\r
+\r
+    /*static*/ std::vector<std::string> stress_fixture::load_dictionary()\r
+    {\r
+        std::vector<std::string> arrString;\r
+\r
+        std::ifstream s;
+        char const* filename = "./dictionary.txt";
+        s.open( filename );
+        if ( !s.is_open() ) {
+            std::cerr << "WARNING: Cannot open test file " << filename << std::endl;
+            return arrString;
+        }
+\r
+        std::string line;\r
+        std::getline( s, line );\r
+\r
+        arrString.reserve( std::stoul( line ));\r
+\r
+        while ( !s.eof() ) {\r
+            std::getline( s, line );\r
+            if ( !line.empty() )\r
+                arrString.push_back( std::move( line ));\r
+        }\r
+\r
+        s.close();\r
+\r
+        return arrString;\r
+    }\r
+\r
 } // namespace\r
index 90dccbc..473f4e5 100644 (file)
@@ -4,10 +4,12 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCDSUNIT_USE_URCU")
 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/delodd)
 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/insdel_find)
 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/insdel_func)
+add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/insdel_string)
 
 add_custom_target( stress-set
     DEPENDS
         stress-set-delodd
         stress-set-insdelfind
         stress-set-insdel-func
+        stress-set-insdel-string
 )
index 64e9f81..207139f 100644 (file)
@@ -33,6 +33,6 @@
 
 namespace set {
 
-    CDSSTRESS_FeldmanHashSet( Set_DelOdd, run_test_extract, key_thread, size_t )
+    CDSSTRESS_FeldmanHashSet_fixed( Set_DelOdd, run_test_extract, key_thread, size_t )
 
 } // namespace set
index dd7f88e..5c8b0d6 100644 (file)
@@ -1,6 +1,6 @@
 set(PACKAGE_NAME stress-set-insdelfind)
 
-set(CDSSTRESS_SET_DELODD_SOURCES
+set(CDSSTRESS_SET_INSDELFIND_SOURCES
     ../../main.cpp
     set_insdelfind.cpp
     set_insdelfind_cuckoo.cpp
@@ -18,7 +18,7 @@ include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}/..
 )
 
-add_executable(${PACKAGE_NAME} ${CDSSTRESS_SET_DELODD_SOURCES} $<TARGET_OBJECTS:${CDSSTRESS_FRAMEWORK_LIBRARY}>)
+add_executable(${PACKAGE_NAME} ${CDSSTRESS_SET_INSDELFIND_SOURCES} $<TARGET_OBJECTS:${CDSSTRESS_FRAMEWORK_LIBRARY}>)
 target_link_libraries(${PACKAGE_NAME} 
     ${CDS_SHARED_LIBRARY}
     ${GTEST_LIBRARY}
index 37543c4..586036b 100644 (file)
@@ -33,6 +33,6 @@
 
 namespace set {
 
-    CDSSTRESS_FeldmanHashSet( Set_InsDelFind, run_test, size_t, size_t )
+    CDSSTRESS_FeldmanHashSet_fixed( Set_InsDelFind, run_test, size_t, size_t )
 
 } // namespace set
index 99a31d0..13c2b2c 100644 (file)
@@ -1,6 +1,6 @@
 set(PACKAGE_NAME stress-set-insdel-func)
 
-set(CDSSTRESS_SET_DELODD_SOURCES
+set(CDSSTRESS_SET_INSDEL_FUNC_SOURCES
     ../../main.cpp
     set_insdel_func.cpp
     set_insdel_func_cuckoo.cpp
@@ -17,7 +17,7 @@ include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}/..
 )
 
-add_executable(${PACKAGE_NAME} ${CDSSTRESS_SET_DELODD_SOURCES} $<TARGET_OBJECTS:${CDSSTRESS_FRAMEWORK_LIBRARY}>)
+add_executable(${PACKAGE_NAME} ${CDSSTRESS_SET_INSDEL_FUNC_SOURCES} $<TARGET_OBJECTS:${CDSSTRESS_FRAMEWORK_LIBRARY}>)
 target_link_libraries(${PACKAGE_NAME} 
     ${CDS_SHARED_LIBRARY}
     ${GTEST_LIBRARY}
index 0e69476..8d6a5bf 100644 (file)
@@ -136,7 +136,6 @@ namespace set {
         public:
             size_t  m_nInsertSuccess = 0;
             size_t  m_nInsertFailed = 0;
-
             size_t  m_nTestFunctorRef = 0;
 
         public:
@@ -349,7 +348,6 @@ namespace set {
         public:
             size_t  m_nDeleteSuccess = 0;
             size_t  m_nDeleteFailed = 0;
-
             size_t  m_nValueSuccess = 0;
             size_t  m_nValueFailed = 0;
 
index 1d88c51..05a8f6c 100644 (file)
@@ -33,6 +33,6 @@
 
 namespace set {
 
-    CDSSTRESS_FeldmanHashSet( Set_InsDel_func, run_test, size_t, value )
+    CDSSTRESS_FeldmanHashSet_fixed( Set_InsDel_func, run_test, size_t, value )
 
 } // namespace set
diff --git a/test/stress/set/insdel_string/CMakeLists.txt b/test/stress/set/insdel_string/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0b557e3
--- /dev/null
@@ -0,0 +1,30 @@
+set(PACKAGE_NAME stress-set-insdel-string)
+
+set(CDSSTRESS_SET_INSDEL_STRING_SOURCES
+    ../../main.cpp
+    set_insdel_string.cpp
+    set_insdel_string_cuckoo.cpp
+    set_insdel_string_ellentree.cpp
+    set_insdel_string_feldman_hashset.cpp
+    set_insdel_string_michael.cpp
+    set_insdel_string_skip.cpp
+    set_insdel_string_split.cpp
+    set_insdel_string_std.cpp
+    set_insdel_string_striped.cpp
+)
+
+include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/..
+)
+
+add_executable(${PACKAGE_NAME} ${CDSSTRESS_SET_INSDEL_STRING_SOURCES} $<TARGET_OBJECTS:${CDSSTRESS_FRAMEWORK_LIBRARY}>)
+target_link_libraries(${PACKAGE_NAME} 
+    ${CDS_SHARED_LIBRARY}
+    ${GTEST_LIBRARY}
+    ${Boost_THREAD_LIBRARY}
+    ${Boost_SYSTEM_LIBRARY}
+    ${CMAKE_THREAD_LIBS_INIT}
+)
+
+add_test(NAME ${PACKAGE_NAME} COMMAND ${PACKAGE_NAME} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
\ No newline at end of file
diff --git a/test/stress/set/insdel_string/set_insdel_string.cpp b/test/stress/set/insdel_string/set_insdel_string.cpp
new file mode 100644 (file)
index 0000000..eeb9fbc
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+
+namespace set {
+
+    size_t Set_InsDel_string::s_nSetSize = 1000000;      // set size
+    size_t Set_InsDel_string::s_nInsertThreadCount = 4;  // count of insertion thread
+    size_t Set_InsDel_string::s_nDeleteThreadCount = 4;  // count of deletion thread
+    size_t Set_InsDel_string::s_nThreadPassCount = 4;    // pass count for each thread
+    size_t Set_InsDel_string::s_nMaxLoadFactor = 8;      // maximum load factor
+
+    size_t Set_InsDel_string::s_nCuckooInitialSize = 1024;// initial size for CuckooSet
+    size_t Set_InsDel_string::s_nCuckooProbesetSize = 16; // CuckooSet probeset size (only for list-based probeset)
+    size_t Set_InsDel_string::s_nCuckooProbesetThreshold = 0; // CUckooSet probeset threshold (0 - use default)
+
+    size_t Set_InsDel_string::s_nFeldmanSet_HeadBits = 10;
+    size_t Set_InsDel_string::s_nFeldmanSet_ArrayBits = 4;
+
+    size_t Set_InsDel_string::s_nLoadFactor = 1;
+    std::vector<std::string> Set_InsDel_string::m_arrString;
+
+    void Set_InsDel_string::SetUpTestCase()
+    {
+        cds_test::config const& cfg = get_config( "map_insdel_func" );
+
+        s_nSetSize = cfg.get_size_t( "MapSize", s_nSetSize );
+        if ( s_nSetSize < 1000 )
+            s_nSetSize = 1000;
+
+        s_nInsertThreadCount = cfg.get_size_t( "InsertThreadCount", s_nInsertThreadCount );
+        if ( s_nInsertThreadCount == 0 )
+            s_nInsertThreadCount = 2;
+
+        s_nDeleteThreadCount = cfg.get_size_t( "DeleteThreadCount", s_nDeleteThreadCount );
+        if ( s_nDeleteThreadCount == 0 )
+            s_nDeleteThreadCount = 2;
+
+        s_nThreadPassCount = cfg.get_size_t( "ThreadPassCount", s_nThreadPassCount );
+        if ( s_nThreadPassCount == 0 )
+            s_nThreadPassCount = 4;
+
+        s_nMaxLoadFactor = cfg.get_size_t( "MaxLoadFactor", s_nMaxLoadFactor );
+        if ( s_nMaxLoadFactor == 0 )
+            s_nMaxLoadFactor = 1;
+
+        s_nCuckooInitialSize = cfg.get_size_t( "CuckooInitialSize", s_nCuckooInitialSize );
+        if ( s_nCuckooInitialSize < 256 )
+            s_nCuckooInitialSize = 256;
+
+        s_nCuckooProbesetSize = cfg.get_size_t( "CuckooProbesetSize", s_nCuckooProbesetSize );
+        if ( s_nCuckooProbesetSize < 8 )
+            s_nCuckooProbesetSize = 8;
+
+        s_nCuckooProbesetThreshold = cfg.get_size_t( "CuckooProbesetThreshold", s_nCuckooProbesetThreshold );
+
+        s_nFeldmanSet_HeadBits = cfg.get_size_t( "FeldmanMapHeadBits", s_nFeldmanSet_HeadBits );
+        if ( s_nFeldmanSet_HeadBits == 0 )
+            s_nFeldmanSet_HeadBits = 2;
+
+        s_nFeldmanSet_ArrayBits = cfg.get_size_t( "FeldmanMapArrayBits", s_nFeldmanSet_ArrayBits );
+        if ( s_nFeldmanSet_ArrayBits == 0 )
+            s_nFeldmanSet_ArrayBits = 2;
+
+        // Load string dictionary
+        m_arrString = load_dictionary();
+    }
+
+    void Set_InsDel_string::TearDownTestCase()
+    {
+        m_arrString.clear();
+    }
+
+    std::vector<size_t> Set_InsDel_string_LF::get_load_factors()
+    {
+        cds_test::config const& cfg = get_config( "map_insdel_func" );
+
+        s_nMaxLoadFactor = cfg.get_size_t( "MaxLoadFactor", s_nMaxLoadFactor );
+        if ( s_nMaxLoadFactor == 0 )
+            s_nMaxLoadFactor = 1;
+
+        std::vector<size_t> lf;
+        for ( size_t n = 1; n <= s_nMaxLoadFactor; n *= 2 )
+            lf.push_back( n );
+
+        return lf;
+    }
+
+    INSTANTIATE_TEST_CASE_P( a, Set_InsDel_string_LF, ::testing::ValuesIn( Set_InsDel_string_LF::get_load_factors()));
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string.h b/test/stress/set/insdel_string/set_insdel_string.h
new file mode 100644 (file)
index 0000000..28e75ee
--- /dev/null
@@ -0,0 +1,515 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_type.h"
+
+namespace set {
+
+#define TEST_CASE(TAG, X)  void X();
+
+    class Set_InsDel_string: public cds_test::stress_fixture
+    {
+    public:
+        static size_t s_nSetSize;               // set size
+        static size_t s_nInsertThreadCount;     // count of insertion thread
+        static size_t s_nDeleteThreadCount;     // count of deletion thread
+        static size_t s_nThreadPassCount;       // pass count for each thread
+        static size_t s_nMaxLoadFactor;         // maximum load factor
+
+        static size_t s_nCuckooInitialSize;     // initial size for CuckooSet
+        static size_t s_nCuckooProbesetSize;    // CuckooSet probeset size (only for list-based probeset)
+        static size_t s_nCuckooProbesetThreshold; // CUckooSet probeset threshold (0 - use default)
+
+        static size_t s_nFeldmanSet_HeadBits;
+        static size_t s_nFeldmanSet_ArrayBits;
+
+        static size_t s_nLoadFactor;
+        static std::vector<std::string>  m_arrString;
+
+        static void SetUpTestCase();
+        static void TearDownTestCase();
+
+    private:
+        typedef std::string key_type;
+        typedef size_t      value_type;
+
+        enum {
+            insert_thread,
+            delete_thread,
+            extract_thread
+        };
+
+        template <class Set>
+        class Inserter: public cds_test::thread
+        {
+            typedef cds_test::thread base_class;
+
+            Set&     m_Set;
+            typedef typename Set::value_type    keyval_type;
+
+        public:
+            size_t  m_nInsertSuccess = 0;
+            size_t  m_nInsertFailed = 0;
+
+        public:
+            Inserter( cds_test::thread_pool& pool, Set& set )
+                : base_class( pool, insert_thread )
+                , m_Set( set )
+            {}
+
+            Inserter( Inserter& src )
+                : base_class( src )
+                , m_Set( src.m_Set )
+            {}
+
+            virtual thread * clone()
+            {
+                return new Inserter( *this );
+            }
+
+            virtual void test()
+            {
+                Set& rSet = m_Set;
+
+                Set_InsDel_string& fixture = pool().template fixture<Set_InsDel_string>();
+                size_t nArrSize = m_arrString.size();
+                size_t const nSetSize = fixture.s_nSetSize;
+                size_t const nPassCount = fixture.s_nThreadPassCount;
+
+                if ( id() & 1 ) {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
+                            if ( rSet.insert( keyval_type( m_arrString[nItem % nArrSize], nItem * 8 )))
+                                ++m_nInsertSuccess;
+                            else
+                                ++m_nInsertFailed;
+                        }
+                    }
+                }
+                else {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
+                            if ( rSet.insert( keyval_type( m_arrString[nItem % nArrSize], nItem * 8 )))
+                                ++m_nInsertSuccess;
+                            else
+                                ++m_nInsertFailed;
+                        }
+                    }
+                }
+            }
+        };
+
+        template <class Set>
+        class Deleter: public cds_test::thread
+        {
+            typedef cds_test::thread base_class;
+
+            Set&     m_Set;
+        public:
+            size_t  m_nDeleteSuccess = 0;
+            size_t  m_nDeleteFailed = 0;
+
+        public:
+            Deleter( cds_test::thread_pool& pool, Set& set )
+                : base_class( pool, delete_thread )
+                , m_Set( set )
+            {}
+
+            Deleter( Deleter& src )
+                : base_class( src )
+                , m_Set( src.m_Set )
+            {}
+
+            virtual thread * clone()
+            {
+                return new Deleter( *this );
+            }
+
+            virtual void test()
+            {
+                Set& rSet = m_Set;
+
+                Set_InsDel_string& fixture = pool().template fixture<Set_InsDel_string>();
+                size_t nArrSize = m_arrString.size();
+                size_t const nSetSize = fixture.s_nSetSize;
+                size_t const nPassCount = fixture.s_nThreadPassCount;
+
+                if ( id() & 1 ) {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
+                            if ( rSet.erase( m_arrString[nItem % nArrSize] ))
+                                ++m_nDeleteSuccess;
+                            else
+                                ++m_nDeleteFailed;
+                        }
+                    }
+                }
+                else {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
+                            if ( rSet.erase( m_arrString[nItem % nArrSize] ))
+                                ++m_nDeleteSuccess;
+                            else
+                                ++m_nDeleteFailed;
+                        }
+                    }
+                }
+            }
+        };
+
+        template <typename GC, class Set>
+        class Extractor: public cds_test::thread
+        {
+            typedef cds_test::thread base_class;
+            Set&     m_Set;
+
+        public:
+            size_t  m_nDeleteSuccess = 0;
+            size_t  m_nDeleteFailed = 0;
+
+        public:
+            Extractor( cds_test::thread_pool& pool, Set& set )
+                : base_class( pool, extract_thread )
+                , m_Set( set )
+            {}
+
+            Extractor( Extractor& src )
+                : base_class( src )
+                , m_Set( src.m_Set )
+            {}
+
+            virtual thread * clone()
+            {
+                return new Extractor( *this );
+            }
+
+            virtual void test()
+            {
+                Set& rSet = m_Set;
+
+                typename Set::guarded_ptr gp;
+
+                Set_InsDel_string& fixture = pool().template fixture<Set_InsDel_string>();
+                size_t nArrSize = m_arrString.size();
+                size_t const nSetSize = fixture.s_nSetSize;
+                size_t const nPassCount = fixture.s_nThreadPassCount;
+
+                if ( id() & 1 ) {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
+                            gp = rSet.extract( m_arrString[nItem % nArrSize] );
+                            if ( gp )
+                                ++m_nDeleteSuccess;
+                            else
+                                ++m_nDeleteFailed;
+                            gp.release();
+                        }
+                    }
+                }
+                else {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
+                            gp = rSet.extract( m_arrString[nItem % nArrSize] );
+                            if ( gp )
+                                ++m_nDeleteSuccess;
+                            else
+                                ++m_nDeleteFailed;
+                            gp.release();
+                        }
+                    }
+                }
+            }
+        };
+
+        template <typename RCU, class Set>
+        class Extractor<cds::urcu::gc<RCU>, Set >: public cds_test::thread
+        {
+            typedef cds_test::thread base_class;
+            Set&     m_Set;
+
+        public:
+            size_t  m_nDeleteSuccess = 0;
+            size_t  m_nDeleteFailed = 0;
+
+        public:
+            Extractor( cds_test::thread_pool& pool, Set& set )
+                : base_class( pool, extract_thread )
+                , m_Set( set )
+            {}
+
+            Extractor( Extractor& src )
+                : base_class( src )
+                , m_Set( src.m_Set )
+            {}
+
+            virtual thread * clone()
+            {
+                return new Extractor( *this );
+            }
+
+            virtual void test()
+            {
+                Set& rSet = m_Set;
+
+                typename Set::exempt_ptr xp;
+
+                Set_InsDel_string& fixture = pool().template fixture<Set_InsDel_string>();
+                size_t nArrSize = m_arrString.size();
+                size_t const nSetSize = fixture.s_nSetSize;
+                size_t const nPassCount = fixture.s_nThreadPassCount;
+
+                if ( id() & 1 ) {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
+                            if ( Set::c_bExtractLockExternal ) {
+                                typename Set::rcu_lock l;
+                                xp = rSet.extract( m_arrString[nItem % nArrSize] );
+                                if ( xp )
+                                    ++m_nDeleteSuccess;
+                                else
+                                    ++m_nDeleteFailed;
+                            }
+                            else {
+                                xp = rSet.extract( m_arrString[nItem % nArrSize] );
+                                if ( xp )
+                                    ++m_nDeleteSuccess;
+                                else
+                                    ++m_nDeleteFailed;
+                            }
+                            xp.release();
+                        }
+                    }
+                }
+                else {
+                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
+                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
+                            if ( Set::c_bExtractLockExternal ) {
+                                typename Set::rcu_lock l;
+                                xp = rSet.extract( m_arrString[nItem % nArrSize] );
+                                if ( xp )
+                                    ++m_nDeleteSuccess;
+                                else
+                                    ++m_nDeleteFailed;
+                            }
+                            else {
+                                xp = rSet.extract( m_arrString[nItem % nArrSize] );
+                                if ( xp )
+                                    ++m_nDeleteSuccess;
+                                else
+                                    ++m_nDeleteFailed;
+                            }
+                            xp.release();
+                        }
+                    }
+                }
+            }
+        };
+
+    protected:
+        template <class Set>
+        void do_test( Set& testSet )
+        {
+            typedef Inserter<Set> InserterThread;
+            typedef Deleter<Set>  DeleterThread;
+
+            cds_test::thread_pool& pool = get_pool();
+            pool.add( new InserterThread( pool, testSet ), s_nInsertThreadCount );
+            pool.add( new DeleterThread( pool, testSet ), s_nDeleteThreadCount );
+
+            propout() << std::make_pair( "insert_thread_count", s_nInsertThreadCount )
+                << std::make_pair( "delete_thread_count", s_nDeleteThreadCount )
+                << std::make_pair( "thread_pass_count", s_nThreadPassCount )
+                << std::make_pair( "set_size", s_nSetSize );
+
+            std::chrono::milliseconds duration = pool.run();
+
+            propout() << std::make_pair( "duration", duration );
+
+            size_t nInsertSuccess = 0;
+            size_t nInsertFailed = 0;
+            size_t nDeleteSuccess = 0;
+            size_t nDeleteFailed = 0;
+            for ( size_t i = 0; i < pool.size(); ++i ) {
+                cds_test::thread& thr = pool.get( i );
+                switch ( thr.type() ) {
+                case insert_thread:
+                    {
+                        InserterThread& inserter = static_cast<InserterThread&>( thr );
+                        nInsertSuccess += inserter.m_nInsertSuccess;
+                        nInsertFailed += inserter.m_nInsertFailed;
+                    }
+                    break;
+                case delete_thread:
+                    {
+                        DeleterThread& deleter = static_cast<DeleterThread&>(thr);
+                        nDeleteSuccess += deleter.m_nDeleteSuccess;
+                        nDeleteFailed += deleter.m_nDeleteFailed;
+                }
+                    break;
+                default:
+                    assert( false ); // Forgot anything?..
+                }
+            }
+
+            propout()
+                << std::make_pair( "insert_success", nInsertSuccess )
+                << std::make_pair( "delete_success", nDeleteSuccess )
+                << std::make_pair( "insert_failed", nInsertFailed )
+                << std::make_pair( "delete_failed", nDeleteFailed )
+                << std::make_pair( "final_set_size", testSet.size() );
+
+            testSet.clear();
+            EXPECT_TRUE( testSet.empty() );
+
+            additional_check( testSet );
+            print_stat( propout(), testSet );
+            additional_cleanup( testSet );
+        }
+
+        template <class Set>
+        void do_test_extract( Set& testSet )
+        {
+            typedef Inserter<Set> InserterThread;
+            typedef Deleter<Set>  DeleterThread;
+            typedef Extractor<typename Set::gc, Set> ExtractThread;
+
+            size_t const nDelThreadCount = s_nDeleteThreadCount / 2;
+            size_t const nExtractThreadCount = s_nDeleteThreadCount - nDelThreadCount;
+
+            cds_test::thread_pool& pool = get_pool();
+            pool.add( new InserterThread( pool, testSet ), s_nInsertThreadCount );
+            pool.add( new DeleterThread( pool, testSet ), nDelThreadCount );
+            pool.add( new ExtractThread( pool, testSet ), nExtractThreadCount );
+
+            propout() << std::make_pair( "insert_thread_count", s_nInsertThreadCount )
+                << std::make_pair( "delete_thread_count", nDelThreadCount )
+                << std::make_pair( "extract_thread_count", nExtractThreadCount )
+                << std::make_pair( "thread_pass_count", s_nThreadPassCount )
+                << std::make_pair( "set_size", s_nSetSize );
+
+            std::chrono::milliseconds duration = pool.run();
+
+            propout() << std::make_pair( "duration", duration );
+
+            size_t nInsertSuccess = 0;
+            size_t nInsertFailed = 0;
+            size_t nDeleteSuccess = 0;
+            size_t nDeleteFailed = 0;
+            size_t nExtractSuccess = 0;
+            size_t nExtractFailed = 0;
+            for ( size_t i = 0; i < pool.size(); ++i ) {
+                cds_test::thread& thr = pool.get( i );
+                switch ( thr.type() ) {
+                case insert_thread:
+                    {
+                        InserterThread& inserter = static_cast<InserterThread&>(thr);
+                        nInsertSuccess += inserter.m_nInsertSuccess;
+                        nInsertFailed += inserter.m_nInsertFailed;
+                    }
+                    break;
+                case delete_thread:
+                    {
+                        DeleterThread& deleter = static_cast<DeleterThread&>(thr);
+                        nDeleteSuccess += deleter.m_nDeleteSuccess;
+                        nDeleteFailed += deleter.m_nDeleteFailed;
+                    }
+                    break;
+                case extract_thread:
+                    {
+                        ExtractThread& extractor = static_cast<ExtractThread&>(thr);
+                        nExtractSuccess += extractor.m_nDeleteSuccess;
+                        nExtractFailed += extractor.m_nDeleteFailed;
+                    }
+                    break;
+                default:
+                    assert( false ); // Forgot anything?..
+                }
+            }
+
+            propout()
+                << std::make_pair( "insert_success", nInsertSuccess )
+                << std::make_pair( "delete_success", nDeleteSuccess )
+                << std::make_pair( "extract_success", nExtractSuccess )
+                << std::make_pair( "insert_failed",  nInsertFailed )
+                << std::make_pair( "delete_failed",  nDeleteFailed )
+                << std::make_pair( "extract_failed", nExtractFailed )
+                << std::make_pair( "final_set_size", testSet.size() );
+
+            testSet.clear();
+            EXPECT_TRUE( testSet.empty() );
+
+            additional_check( testSet );
+            print_stat( propout(), testSet );
+            additional_cleanup( testSet );
+        }
+
+        template <class Set>
+        void run_test()
+        {
+            ASSERT_TRUE( m_arrString.size() > 0 );
+
+            Set s( *this );
+            do_test( s );
+        }
+
+        template <class Set>
+        void run_test_extract()
+        {
+            ASSERT_TRUE( m_arrString.size() > 0 );
+
+            Set s( *this );
+            do_test_extract( s );
+        }
+    };
+
+    class Set_InsDel_string_LF: public Set_InsDel_string
+        , public ::testing::WithParamInterface<size_t>
+    {
+    public:
+        template <class Set>
+        void run_test()
+        {
+            s_nLoadFactor = GetParam();
+            propout() << std::make_pair( "load_factor", s_nLoadFactor );
+            Set_InsDel_string::run_test<Set>();
+        }
+
+        template <class Set>
+        void run_test_extract()
+        {
+            s_nLoadFactor = GetParam();
+            propout() << std::make_pair( "load_factor", s_nLoadFactor );
+            Set_InsDel_string::run_test_extract<Set>();
+        }
+
+        static std::vector<size_t> get_load_factors();
+    };
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_cuckoo.cpp b/test/stress/set/insdel_string/set_insdel_string_cuckoo.cpp
new file mode 100644 (file)
index 0000000..c9b02b0
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_cuckoo.h"
+
+namespace set {
+
+    CDSSTRESS_CuckooSet( Set_InsDel_string, run_test, std::string, size_t )
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_ellentree.cpp b/test/stress/set/insdel_string/set_insdel_string_ellentree.cpp
new file mode 100644 (file)
index 0000000..7c78bff
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_ellen_bintree.h"
+
+namespace set {
+
+    CDSSTRESS_EllenBinTreeSet( Set_InsDel_string, run_test_extract, std::string, size_t )
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_feldman_hashset.cpp b/test/stress/set/insdel_string/set_insdel_string_feldman_hashset.cpp
new file mode 100644 (file)
index 0000000..792d116
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_feldman_hashset.h"
+
+namespace set {
+
+    CDSSTRESS_FeldmanHashSet_stdhash( Set_InsDel_string, run_test_extract, std::string, size_t )
+    CDSSTRESS_FeldmanHashSet_city( Set_InsDel_string, run_test_extract, std::string, size_t )
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_michael.cpp b/test/stress/set/insdel_string/set_insdel_string_michael.cpp
new file mode 100644 (file)
index 0000000..26561cc
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_michael.h"
+
+namespace set {
+
+    CDSSTRESS_MichaelSet( Set_InsDel_string_LF, run_test_extract, std::string, size_t )
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_skip.cpp b/test/stress/set/insdel_string/set_insdel_string_skip.cpp
new file mode 100644 (file)
index 0000000..1ba4b2c
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_skip_list.h"
+
+namespace set {
+
+    CDSSTRESS_SkipListSet( Set_InsDel_string, run_test_extract, std::string, size_t )
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_split.cpp b/test/stress/set/insdel_string/set_insdel_string_split.cpp
new file mode 100644 (file)
index 0000000..b570933
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_split_list.h"
+
+namespace set {
+
+    CDSSTRESS_SplitListSet( Set_InsDel_string_LF, run_test_extract, std::string, size_t )
+
+} // namespace set
diff --git a/test/stress/set/insdel_string/set_insdel_string_std.cpp b/test/stress/set/insdel_string/set_insdel_string_std.cpp
new file mode 100644 (file)
index 0000000..2bb7b03
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_std.h"
+
+namespace set {
+    CDSSTRESS_StdSet( Set_InsDel_string, run_test, std::string, size_t )
+} // namespace set
+
diff --git a/test/stress/set/insdel_string/set_insdel_string_striped.cpp b/test/stress/set/insdel_string/set_insdel_string_striped.cpp
new file mode 100644 (file)
index 0000000..3026dfd
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    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 "set_insdel_string.h"
+#include "set_type_striped.h"
+
+namespace set {
+
+    CDSSTRESS_StripedSet( Set_InsDel_string_LF, run_test, std::string, size_t )
+
+} // namespace set
+
index 2c524ed..37bc106 100644 (file)
@@ -111,6 +111,23 @@ namespace set {
         }
     };
 
+    template <>
+    struct less<std::string>
+    {
+        bool operator ()( std::string const& k1, std::string const& k2 ) const
+        {
+            return cmp<std::string>()( k1, k2 ) < 0;
+        }
+        bool operator ()( std::string const& k1, char const* k2 ) const
+        {
+            return cmp<std::string>()( k1, k2 ) < 0;
+        }
+        bool operator ()( char const* k1, std::string const& k2 ) const
+        {
+            return cmp<std::string>()( k1, k2 ) < 0;
+        }
+    };
+
     template <typename T>
     struct hash
     {
@@ -140,6 +157,17 @@ namespace set {
         }
     };
 
+    template <>
+    struct hash<std::string>
+    {
+        typedef size_t result_type;
+        typedef std::string argument_type;
+
+        size_t operator()( std::string const& k ) const
+        {
+            return std::hash<std::string>()(k);
+        }
+    };
 
     // forward
     template <typename ImplSelector, typename Key, typename Value>
index 03c0686..30e9d62 100644 (file)
@@ -133,11 +133,11 @@ namespace set {
 
             hash_type hash;
 
-            /*explicit*/ key_val( key_type const& k ): base(k), hash( hasher()( k )) {}
+            explicit key_val( key_type const& k ): base(k), hash( hasher()( k )) {}
             key_val( key_type const& k, value_type const& v ): base(k, v), hash( hasher()( k )) {}
 
             template <typename K>
-            /*explicit*/ key_val( K const& k ): base(k), hash( hasher()( k )) {}
+            explicit key_val( K const& k ): base(k), hash( hasher()( k )) {}
 
             template <typename K, typename T>
             key_val( K const& k, T const& v ): base(k, v), hash( hasher()( k )) {}
@@ -326,17 +326,40 @@ namespace set {
     }
 
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSSTRESS_FeldmanHashSet_SHRCU( fixture, test_case, key_type, value_type ) \
+#   define CDSSTRESS_FeldmanHashSet_fixed_SHRCU( fixture, test_case, key_type, value_type ) \
         CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_fixed,      key_type, value_type ) \
         CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_fixed,      key_type, value_type ) \
         CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_fixed_stat, key_type, value_type ) \
         CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_fixed_stat, key_type, value_type )
+
+#   define CDSSTRESS_FeldmanHashSet_stdhash_SHRCU( fixture, test_case, key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_stdhash,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_stdhash,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_stdhash_stat, key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_stdhash_stat, key_type, value_type )
+
+#   if CDS_BUILD_BITS == 64
+#       define CDSSTRESS_FeldmanHashSet_city_SHRCU( fixture, test_case, key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city64,       key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city64,       key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city64_stat,  key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city64_stat,  key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city128,      key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city128,      key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city128_stat, key_type, value_type ) \
+            CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city128_stat, key_type, value_type )
+#   else
+#       define CDSSTRESS_FeldmanHashSet_city_SHRCU( fixture, test_case, key_type, value_type )
+#   endif
+
 #else
-#   define CDSSTRESS_FeldmanHashSet_SHRCU( fixture, test_case, key_type, value_type )
+#   define CDSSTRESS_FeldmanHashSet_fixed_SHRCU( fixture, test_case, key_type, value_type )
+#   define CDSSTRESS_FeldmanHashSet_stdhash_SHRCU( fixture, test_case, key_type, value_type )
+#   define CDSSTRESS_FeldmanHashSet_city_SHRCU( fixture, test_case, key_type, value_type )
 #endif
 
 
-#define CDSSTRESS_FeldmanHashSet( fixture, test_case, key_type, value_type ) \
+#define CDSSTRESS_FeldmanHashSet_fixed( fixture, test_case, key_type, value_type ) \
     CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_fixed,             key_type, value_type ) \
     CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_fixed,            key_type, value_type ) \
     CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_fixed,        key_type, value_type ) \
@@ -347,6 +370,46 @@ namespace set {
     CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_fixed_stat,   key_type, value_type ) \
     CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_fixed_stat,   key_type, value_type ) \
     CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_fixed_stat,   key_type, value_type ) \
-    CDSSTRESS_FeldmanHashSet_SHRCU( fixture, test_case, key_type, value_type )
+    CDSSTRESS_FeldmanHashSet_fixed_SHRCU( fixture, test_case, key_type, value_type )
+
+#define CDSSTRESS_FeldmanHashSet_stdhash( fixture, test_case, key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_stdhash,           key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_stdhash,          key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_stdhash,      key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_stdhash,      key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_stdhash,      key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_stdhash_stat,      key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_stdhash_stat,     key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_stdhash_stat, key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_stdhash_stat, key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_stdhash_stat, key_type, value_type ) \
+    CDSSTRESS_FeldmanHashSet_stdhash_SHRCU( fixture, test_case, key_type, value_type )
+
+#if CDS_BUILD_BITS == 64
+#   define CDSSTRESS_FeldmanHashSet_city( fixture, test_case, key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_city64,            key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_city64,           key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_city64,       key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_city64,       key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_city64,       key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_city64_stat,       key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_city64_stat,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_city64_stat,  key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_city64_stat,  key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_city64_stat,  key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_city128,           key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_city128,          key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_city128,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_city128,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_city128,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_hp_city128_stat,      key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_dhp_city128_stat,     key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpi_city128_stat, key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpb_city128_stat, key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_gpt_city128_stat, key_type, value_type ) \
+        CDSSTRESS_FeldmanHashSet_city_SHRCU( fixture, test_case, key_type, value_type )
+#else
+#   define CDSSTRESS_FeldmanHashSet_city( fixture, test_case, key_type, value_type )
+#endif
 
 #endif // #ifndef CDSUNIT_SET_TYPE_FELDMAN_HASHSET_H
index 3efcf92..81fe9e1 100644 (file)
@@ -15,4 +15,3 @@ target_link_libraries(${PACKAGE_NAME} ${CDS_SHARED_LIBRARY} ${Boost_THREAD_LIBRA
 add_test(NAME ${PACKAGE_NAME} COMMAND ${PACKAGE_NAME} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
 
 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/map2)
-add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/set2)
index 8b2e1b3..3163e21 100644 (file)
@@ -291,7 +291,7 @@ namespace map2 {
         CDSUNIT_DECLARE_CuckooMap
         CDSUNIT_DECLARE_StdMap
 
-        CPPUNIT_TEST_SUITE(Map_InsDel_string)
+        CPPUNIT_TEST_SUITE_(Map_InsDel_string, "map_insdel_func")
             CDSUNIT_TEST_MichaelMap
             CDSUNIT_TEST_SplitList
             CDSUNIT_TEST_SkipListMap
diff --git a/tests/unit/set2/CMakeLists.txt b/tests/unit/set2/CMakeLists.txt
deleted file mode 100644 (file)
index 8a4a482..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-set(PACKAGE_NAME cdsu-set)
-
-set(CDSUNIT_SET_SOURCES
-    set_insdel_string.cpp
-    set_insdel_string_cuckoo.cpp
-    set_insdel_string_ellentree.cpp
-    set_insdel_string_michael.cpp
-    set_insdel_string_feldmanhashset.cpp
-    set_insdel_string_skip.cpp
-    set_insdel_string_split.cpp
-    set_insdel_string_striped.cpp
-    set_insdel_string_std.cpp
-)
-
-add_executable(${PACKAGE_NAME} ${CDSUNIT_SET_SOURCES} $<TARGET_OBJECTS:${TEST_COMMON}>)
-target_link_libraries(${PACKAGE_NAME} ${CDS_SHARED_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
-add_test(NAME ${PACKAGE_NAME} COMMAND ${PACKAGE_NAME} WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
\ No newline at end of file
diff --git a/tests/unit/set2/set_defs.h b/tests/unit/set2/set_defs.h
deleted file mode 100644 (file)
index a6054bb..0000000
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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.     
-*/
-
-#define CDSUNIT_DECLARE_StdSet \
-    TEST_CASE( tag_StdSet, StdSet_Spin) \
-    TEST_CASE( tag_StdSet, StdSet_Mutex) \
-    TEST_CASE( tag_StdSet, StdHashSet_Spin)
-
-#define CDSUNIT_TEST_StdSet \
-    CPPUNIT_TEST(StdSet_Spin) \
-    CPPUNIT_TEST(StdSet_Mutex) \
-    CPPUNIT_TEST(StdHashSet_Spin)
-
-//********************************************************************
-// MichaelHashSet
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_MichaelSet_RCU_signal  \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHB_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHB_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHT_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHT_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHB_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHB_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHT_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHT_less_michaelAlloc)
-
-#   define CDSUNIT_TEST_MichaelSet_RCU_signal  \
-    CPPUNIT_TEST(MichaelSet_RCU_SHB_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_SHB_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_SHT_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_SHT_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHB_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHB_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHT_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHT_less_michaelAlloc)
-#else
-#   define CDSUNIT_DECLARE_MichaelSet_RCU_signal
-#   define CDSUNIT_TEST_MichaelSet_RCU_signal
-#endif
-
-
-#define CDSUNIT_DECLARE_MichaelSet  \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_HP_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_HP_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_DHP_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_DHP_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPI_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPI_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPB_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPB_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPT_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPT_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_HP_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_HP_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_DHP_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_DHP_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPI_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPI_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPB_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPB_less_michaelAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPT_cmp_stdAlloc) \
-    TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPT_less_michaelAlloc) \
-    CDSUNIT_DECLARE_MichaelSet_RCU_signal
-
-#define CDSUNIT_TEST_MichaelSet  \
-    CPPUNIT_TEST(MichaelSet_HP_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_HP_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_DHP_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_DHP_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_GPI_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_GPI_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_GPB_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_GPB_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_GPT_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_RCU_GPT_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_HP_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_HP_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_DHP_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_DHP_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPI_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPI_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPB_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPB_less_michaelAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPT_cmp_stdAlloc) \
-    CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPT_less_michaelAlloc) \
-    CDSUNIT_TEST_MichaelSet_RCU_signal
-
-//********************************************************************
-// SplitListSet
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_SplitList_RCU_signal  \
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_st_less_stat)
-
-#   define CDSUNIT_TEST_SplitList_RCU_signal  \
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less_stat)
-
-#else
-#   define CDSUNIT_DECLARE_SplitList_RCU_signal
-#   define CDSUNIT_TEST_SplitList_RCU_signal
-#endif
-
-#define CDSUNIT_DECLARE_SplitList  \
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_st_less_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_dyn_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_st_cmp)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_dyn_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_st_less)\
-    TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_st_less_stat)\
-    CDSUNIT_DECLARE_SplitList_RCU_signal
-
-#define CDSUNIT_TEST_SplitList  \
-    CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_HP_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_HP_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_HP_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_HP_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_DHP_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_DHP_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_DHP_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_DHP_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_cmp)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less)\
-    CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_DHP_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_DHP_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_DHP_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_cmp)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less)\
-    CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less_stat)\
-    CDSUNIT_TEST_SplitList_RCU_signal
-
-//********************************************************************
-// CuckooSet
-
-#define CDSUNIT_DECLARE_CuckooSet \
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_unord)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_unord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_ord)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_ord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_unord)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_ord)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_unord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_ord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_unord)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_ord)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_unord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_ord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_unord)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_unord_stat)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_ord) \
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_ord_stat) \
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_unord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_ord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_unord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_ord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_unord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_ord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_unord_storehash)\
-    TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_ord_storehash)
-
-#define CDSUNIT_TEST_CuckooSet \
-    CPPUNIT_TEST(CuckooStripedSet_list_unord)\
-    CPPUNIT_TEST(CuckooStripedSet_list_unord_stat)\
-    CPPUNIT_TEST(CuckooStripedSet_list_unord_storehash)\
-    CPPUNIT_TEST(CuckooStripedSet_list_ord)\
-    CPPUNIT_TEST(CuckooStripedSet_list_ord_stat)\
-    CPPUNIT_TEST(CuckooStripedSet_list_ord_storehash)\
-    CPPUNIT_TEST(CuckooStripedSet_vector_unord)\
-    CPPUNIT_TEST(CuckooStripedSet_vector_unord_stat)\
-    CPPUNIT_TEST(CuckooStripedSet_vector_unord_storehash)\
-    CPPUNIT_TEST(CuckooStripedSet_vector_ord)\
-    CPPUNIT_TEST(CuckooStripedSet_vector_ord_stat)\
-    CPPUNIT_TEST(CuckooStripedSet_vector_ord_storehash)\
-    CPPUNIT_TEST(CuckooRefinableSet_list_unord)\
-    CPPUNIT_TEST(CuckooRefinableSet_list_unord_stat)\
-    CPPUNIT_TEST(CuckooRefinableSet_list_unord_storehash)\
-    CPPUNIT_TEST(CuckooRefinableSet_list_ord)\
-    CPPUNIT_TEST(CuckooRefinableSet_list_ord_stat)\
-    CPPUNIT_TEST(CuckooRefinableSet_list_ord_storehash)\
-    CPPUNIT_TEST(CuckooRefinableSet_vector_unord)\
-    CPPUNIT_TEST(CuckooRefinableSet_vector_unord_stat)\
-    CPPUNIT_TEST(CuckooRefinableSet_vector_unord_storehash)\
-    CPPUNIT_TEST(CuckooRefinableSet_vector_ord) \
-    CPPUNIT_TEST(CuckooRefinableSet_vector_ord_stat) \
-    CPPUNIT_TEST(CuckooRefinableSet_vector_ord_storehash)
-
-//********************************************************************
-// SkipListSet
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_SkipListSet_RCU_signal \
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_cmp_xorshift_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_cmp_xorshift_stat)
-
-#   define CDSUNIT_TEST_SkipListSet_RCU_signal \
-    CPPUNIT_TEST(SkipListSet_rcu_shb_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_rcu_shb_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_shb_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_rcu_shb_cmp_xorshift_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_sht_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_rcu_sht_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_sht_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_rcu_sht_cmp_xorshift_stat)
-
-#else
-#   define CDSUNIT_DECLARE_SkipListSet_RCU_signal
-#   define CDSUNIT_TEST_SkipListSet_RCU_signal
-#endif
-
-#define CDSUNIT_DECLARE_SkipListSet \
-    TEST_CASE(tag_SkipListSet, SkipListSet_hp_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_hp_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_hp_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_hp_cmp_xorshift_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_dhp_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_dhp_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_dhp_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_dhp_cmp_xorshift_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_cmp_xorshift_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_cmp_xorshift_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_less_pascal)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_cmp_pascal_stat)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_less_xorshift)\
-    TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_cmp_xorshift_stat)\
-    CDSUNIT_DECLARE_SkipListSet_RCU_signal
-
-#define CDSUNIT_TEST_SkipListSet \
-    CPPUNIT_TEST(SkipListSet_hp_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_hp_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_hp_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_hp_cmp_xorshift_stat)\
-    CPPUNIT_TEST(SkipListSet_dhp_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_dhp_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_dhp_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_dhp_cmp_xorshift_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpi_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpi_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpi_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpi_cmp_xorshift_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpb_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpb_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpb_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpb_cmp_xorshift_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpt_less_pascal)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpt_cmp_pascal_stat)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpt_less_xorshift)\
-    CPPUNIT_TEST(SkipListSet_rcu_gpt_cmp_xorshift_stat)\
-    CDSUNIT_TEST_SkipListSet_RCU_signal
-
-//********************************************************************
-// EllenBinTreeSet
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_EllenBinTreeSet_RCU_signal \
-        TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_shb)\
-        TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_shb_stat)\
-        TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_sht)\
-        TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_sht_stat)
-
-#   define CDSUNIT_TEST_EllenBinTreeSet_RCU_signal \
-        CPPUNIT_TEST(EllenBinTreeSet_rcu_shb)\
-        CPPUNIT_TEST(EllenBinTreeSet_rcu_shb_stat)\
-        CPPUNIT_TEST(EllenBinTreeSet_rcu_sht)\
-        CPPUNIT_TEST(EllenBinTreeSet_rcu_sht_stat)
-#else
-#   define CDSUNIT_DECLARE_EllenBinTreeSet_RCU_signal
-#   define CDSUNIT_TEST_EllenBinTreeSet_RCU_signal
-#endif
-
-#define CDSUNIT_DECLARE_EllenBinTreeSet \
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_hp)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_yield_hp)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_hp_stat)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_dhp)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_yield_dhp)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_dhp_stat)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpi)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpi_stat)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpb)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_yield_rcu_gpb)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpb_stat)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpt)\
-    TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpt_stat)\
-    CDSUNIT_DECLARE_EllenBinTreeSet_RCU_signal
-
-#define CDSUNIT_TEST_EllenBinTreeSet \
-    CPPUNIT_TEST(EllenBinTreeSet_hp)\
-    CPPUNIT_TEST(EllenBinTreeSet_yield_hp)\
-    CPPUNIT_TEST(EllenBinTreeSet_hp_stat)\
-    CPPUNIT_TEST(EllenBinTreeSet_dhp)\
-    CPPUNIT_TEST(EllenBinTreeSet_yield_dhp)\
-    CPPUNIT_TEST(EllenBinTreeSet_dhp_stat)\
-    CPPUNIT_TEST(EllenBinTreeSet_rcu_gpi)\
-    /*CPPUNIT_TEST(EllenBinTreeSet_rcu_gpi_stat)*/\
-    CPPUNIT_TEST(EllenBinTreeSet_rcu_gpb)\
-    CPPUNIT_TEST(EllenBinTreeSet_yield_rcu_gpb)\
-    CPPUNIT_TEST(EllenBinTreeSet_rcu_gpb_stat)\
-    CPPUNIT_TEST(EllenBinTreeSet_rcu_gpt)\
-    CPPUNIT_TEST(EllenBinTreeSet_rcu_gpt_stat)\
-    CDSUNIT_TEST_EllenBinTreeSet_RCU_signal
-
-//********************************************************************
-// StripedSet
-
-#define CDSUNIT_DECLARE_StripedSet_common \
-    TEST_CASE( tag_StripedSet, StripedSet_list) \
-    TEST_CASE( tag_StripedSet, StripedSet_vector) \
-    TEST_CASE( tag_StripedSet, StripedSet_set) \
-    TEST_CASE( tag_StripedSet, StripedSet_hashset) \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_unordered_set) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_list) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_vector) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_set) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_hashset) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_unordered_set)
-
-#define CDSUNIT_TEST_StripedSet_common \
-    CPPUNIT_TEST(StripedSet_list) \
-    CPPUNIT_TEST(StripedSet_vector) \
-    CPPUNIT_TEST(StripedSet_set) \
-    CPPUNIT_TEST(StripedSet_hashset) \
-    CPPUNIT_TEST(StripedSet_boost_unordered_set) \
-    CPPUNIT_TEST(StripedSet_rational_list) \
-    CPPUNIT_TEST(StripedSet_rational_vector) \
-    CPPUNIT_TEST(StripedSet_rational_set) \
-    CPPUNIT_TEST(StripedSet_rational_hashset) \
-    CPPUNIT_TEST(StripedSet_rational_boost_unordered_set)
-
-#if BOOST_VERSION >= 104800
-#   define CDSUNIT_DECLARE_StripedSet_boost_container \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_list) \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_slist) \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_vector) \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_stable_vector) \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_set) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_list) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_slist) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_vector) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_stable_vector) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_set)
-
-#   define CDSUNIT_TEST_StripedSet_boost_container \
-    CPPUNIT_TEST(StripedSet_boost_list) \
-    CPPUNIT_TEST(StripedSet_boost_slist) \
-    CPPUNIT_TEST(StripedSet_boost_vector) \
-    CPPUNIT_TEST(StripedSet_boost_stable_vector) \
-    CPPUNIT_TEST(StripedSet_boost_set) \
-    CPPUNIT_TEST(StripedSet_rational_boost_list) \
-    CPPUNIT_TEST(StripedSet_rational_boost_slist) \
-    CPPUNIT_TEST(StripedSet_rational_boost_vector) \
-    CPPUNIT_TEST(StripedSet_rational_boost_stable_vector) \
-    CPPUNIT_TEST(StripedSet_rational_boost_set)
-#else
-#   define CDSUNIT_DECLARE_StripedSet_boost_container
-#   define CDSUNIT_TEST_StripedSet_boost_container
-#endif
-
-#if BOOST_VERSION >= 104800 && defined(CDS_UNIT_SET_TYPES_ENABLE_BOOST_FLAT_CONTAINERS)
-#   define CDSUNIT_DECLARE_StripedSet_boost_flat_container \
-    TEST_CASE( tag_StripedSet, StripedSet_boost_flat_set) \
-    TEST_CASE( tag_StripedSet, StripedSet_rational_boost_flat_set)
-
-#   define CDSUNIT_TEST_StripedSet_boost_flat_container \
-    CPPUNIT_TEST(StripedSet_boost_flat_set) \
-    CPPUNIT_TEST(StripedSet_rational_boost_flat_set)
-#else
-#   define CDSUNIT_DECLARE_StripedSet_boost_flat_container
-#   define CDSUNIT_TEST_StripedSet_boost_flat_container
-#endif
-
-#define CDSUNIT_DECLARE_StripedSet \
-    CDSUNIT_DECLARE_StripedSet_common \
-    CDSUNIT_DECLARE_StripedSet_boost_container \
-    CDSUNIT_DECLARE_StripedSet_boost_flat_container
-
-#define CDSUNIT_TEST_StripedSet \
-    CDSUNIT_TEST_StripedSet_common \
-    CDSUNIT_TEST_StripedSet_boost_container \
-    CDSUNIT_TEST_StripedSet_boost_flat_container
-
-
-#define CDSUNIT_DECLARE_RefinableSet_common \
-    TEST_CASE( tag_StripedSet, RefinableSet_list) \
-    TEST_CASE( tag_StripedSet, RefinableSet_vector) \
-    TEST_CASE( tag_StripedSet, RefinableSet_set) \
-    TEST_CASE( tag_StripedSet, RefinableSet_hashset) \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_unordered_set) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_list) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_vector) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_set) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_hashset) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_unordered_set)
-
-
-//********************************************************************
-// RefinableSet
-
-#define CDSUNIT_TEST_RefinableSet_common \
-    CPPUNIT_TEST(RefinableSet_list) \
-    CPPUNIT_TEST(RefinableSet_vector) \
-    CPPUNIT_TEST(RefinableSet_set) \
-    CPPUNIT_TEST(RefinableSet_hashset) \
-    CPPUNIT_TEST(RefinableSet_boost_unordered_set) \
-    CPPUNIT_TEST(RefinableSet_rational_list) \
-    CPPUNIT_TEST(RefinableSet_rational_vector) \
-    CPPUNIT_TEST(RefinableSet_rational_set) \
-    CPPUNIT_TEST(RefinableSet_rational_hashset) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_unordered_set)
-
-#if BOOST_VERSION >= 104800
-#   define CDSUNIT_DECLARE_RefinableSet_boost_container \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_list) \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_slist) \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_vector) \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_stable_vector) \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_set) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_list) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_slist) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_vector) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_stable_vector) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_set)
-
-#   define CDSUNIT_TEST_RefinableSet_boost_container \
-    CPPUNIT_TEST(RefinableSet_boost_list) \
-    CPPUNIT_TEST(RefinableSet_boost_slist) \
-    CPPUNIT_TEST(RefinableSet_boost_vector) \
-    CPPUNIT_TEST(RefinableSet_boost_stable_vector) \
-    CPPUNIT_TEST(RefinableSet_boost_set) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_list) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_slist) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_vector) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_stable_vector) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_set)
-#else
-#   define CDSUNIT_DECLARE_RefinableSet_boost_container
-#   define CDSUNIT_TEST_RefinableSet_boost_container
-#endif
-
-#if BOOST_VERSION >= 104800 && defined(CDS_UNIT_SET_TYPES_ENABLE_BOOST_FLAT_CONTAINERS)
-#   define CDSUNIT_DECLARE_RefinableSet_boost_flat_container \
-    TEST_CASE( tag_StripedSet, RefinableSet_boost_flat_set) \
-    TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_flat_set)
-
-#   define CDSUNIT_TEST_RefinableSet_boost_flat_container \
-    CPPUNIT_TEST(RefinableSet_boost_flat_set) \
-    CPPUNIT_TEST(RefinableSet_rational_boost_flat_set)
-#else
-#   define CDSUNIT_DECLARE_RefinableSet_boost_flat_container
-#   define CDSUNIT_TEST_RefinableSet_boost_flat_container
-#endif
-
-#define CDSUNIT_DECLARE_RefinableSet \
-    CDSUNIT_DECLARE_RefinableSet_common \
-    CDSUNIT_DECLARE_RefinableSet_boost_container \
-    CDSUNIT_DECLARE_RefinableSet_boost_flat_container
-
-#define CDSUNIT_TEST_RefinableSet \
-    CDSUNIT_TEST_RefinableSet_common \
-    CDSUNIT_TEST_RefinableSet_boost_container \
-    CDSUNIT_TEST_RefinableSet_boost_flat_container
-
-
-//***********************************************
-// FeldmanHashSet
-
-// For fixed-sized key - no hash function is needed
-
-#undef CDSUNIT_DECLARE_FeldmanHashSet_fixed
-#undef CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal
-#undef CDSUNIT_TEST_FeldmanHashSet_fixed
-#undef CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal  \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed_stat) \
-
-#   define CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed_stat) \
-
-#else
-#   define CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal
-#   define CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal
-#endif
-
-#define CDSUNIT_DECLARE_FeldmanHashSet_fixed  \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_fixed) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_fixed_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_fixed) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_fixed_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_fixed) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_fixed_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_fixed) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_fixed_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_fixed) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_fixed_stat) \
-    CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal
-
-#define CDSUNIT_TEST_FeldmanHashSet_fixed  \
-    CPPUNIT_TEST(FeldmanHashSet_hp_fixed) \
-    CPPUNIT_TEST(FeldmanHashSet_hp_fixed_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_fixed) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_fixed_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_fixed) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_fixed_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_fixed) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_fixed_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_fixed) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_fixed_stat) \
-    CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal
-
-// std::hash
-#undef CDSUNIT_DECLARE_FeldmanHashSet_stdhash
-#undef CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal
-#undef CDSUNIT_TEST_FeldmanHashSet_stdhash
-#undef CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal  \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash_stat) \
-
-#   define CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash_stat) \
-
-#else
-#   define CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal
-#   define CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal
-#endif
-
-#define CDSUNIT_DECLARE_FeldmanHashSet_stdhash  \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_stdhash) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_stdhash_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_stdhash) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_stdhash_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_stdhash) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_stdhash_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_stdhash) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_stdhash_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_stdhash) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_stdhash_stat) \
-    CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal
-
-#define CDSUNIT_TEST_FeldmanHashSet_stdhash  \
-    CPPUNIT_TEST(FeldmanHashSet_hp_stdhash) \
-    CPPUNIT_TEST(FeldmanHashSet_hp_stdhash_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_stdhash) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_stdhash_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_stdhash) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_stdhash_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_stdhash) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_stdhash_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_stdhash) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_stdhash_stat) \
-    CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal
-
-
-// CityHash -only for 64bit
-
-#undef CDSUNIT_DECLARE_FeldmanHashSet_city
-#undef CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
-#undef CDSUNIT_TEST_FeldmanHashSet_city
-#undef CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
-
-#if CDS_BUILD_BITS == 64
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#   define CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal  \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128_stat) \
-
-#   define CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128_stat) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128) \
-        TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128_stat) \
-
-#else
-#   define CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
-#   define CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
-#endif
-
-#define CDSUNIT_DECLARE_FeldmanHashSet_city  \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city64) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city64_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city64) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city64_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city64) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city64_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city64) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city64_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city64) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city64_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city128) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city128_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city128) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city128_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city128) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city128_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city128) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city128_stat) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city128) \
-    TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city128_stat) \
-    CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
-
-#define CDSUNIT_TEST_FeldmanHashSet_city  \
-    CPPUNIT_TEST(FeldmanHashSet_hp_city64) \
-    CPPUNIT_TEST(FeldmanHashSet_hp_city64_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_city64) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_city64_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city64) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city64_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city64) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city64_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city64) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city64_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_hp_city128) \
-    CPPUNIT_TEST(FeldmanHashSet_hp_city128_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_city128) \
-    CPPUNIT_TEST(FeldmanHashSet_dhp_city128_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city128) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city128_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city128) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city128_stat) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city128) \
-    CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city128_stat) \
-    CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
-
-#else
-#   define CDSUNIT_DECLARE_FeldmanHashSet_city
-#   define CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
-#   define CDSUNIT_TEST_FeldmanHashSet_city
-#   define CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
-#endif // CDS_BUILD_BITS == 64
-
-
-// All
-
-#define CDSUNIT_DECLARE_FeldmanHashSet \
-    CDSUNIT_DECLARE_FeldmanHashSet_fixed \
-    CDSUNIT_DECLARE_FeldmanHashSet_stdhash \
-    CDSUNIT_DECLARE_FeldmanHashSet_city
-
-#define CDSUNIT_TEST_FeldmanHashSet \
-    CDSUNIT_TEST_FeldmanHashSet_fixed \
-    CDSUNIT_TEST_FeldmanHashSet_stdhash \
-    CDSUNIT_TEST_FeldmanHashSet_city
diff --git a/tests/unit/set2/set_delodd.cpp b/tests/unit/set2/set_delodd.cpp
deleted file mode 100644 (file)
index 77f57b5..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-
-namespace set2 {
-    CPPUNIT_TEST_SUITE_REGISTRATION( Set_DelOdd );
-
-    void Set_DelOdd::setUpParams( const CppUnitMini::TestCfg& cfg )
-    {
-        c_nSetSize = cfg.getSizeT("MapSize", c_nSetSize );
-        c_nInsThreadCount = cfg.getSizeT("InsThreadCount", c_nInsThreadCount);
-        c_nDelThreadCount = cfg.getSizeT("DelThreadCount", c_nDelThreadCount);
-        c_nExtractThreadCount = cfg.getSizeT("ExtractThreadCount", c_nExtractThreadCount);
-        c_nMaxLoadFactor = cfg.getSizeT("MaxLoadFactor", c_nMaxLoadFactor);
-        c_bPrintGCState = cfg.getBool("PrintGCStateFlag", true );
-
-        c_nCuckooInitialSize = cfg.getSizeT("CuckooInitialSize", c_nCuckooInitialSize );
-        c_nCuckooProbesetSize = cfg.getSizeT("CuckooProbesetSize", c_nCuckooProbesetSize );
-        c_nCuckooProbesetThreshold = cfg.getSizeT("CuckooProbesetThreshold", c_nCuckooProbesetThreshold );
-
-        c_nFeldmanSet_HeadBits = cfg.getSizeT("FeldmanMapHeadBits", c_nFeldmanSet_HeadBits);
-        c_nFeldmanSet_ArrayBits = cfg.getSizeT("FeldmanMapArrayBits", c_nFeldmanSet_ArrayBits);
-
-        if ( c_nInsThreadCount == 0 )
-            c_nInsThreadCount = std::thread::hardware_concurrency();
-        if ( c_nDelThreadCount == 0 && c_nExtractThreadCount == 0 ) {
-            c_nExtractThreadCount = std::thread::hardware_concurrency() / 2;
-            c_nDelThreadCount = std::thread::hardware_concurrency() - c_nExtractThreadCount;
-        }
-
-        m_arrData.resize( c_nSetSize );
-        for ( size_t i = 0; i < c_nSetSize; ++i )
-            m_arrData[i] = i;
-        shuffle( m_arrData.begin(), m_arrData.end() );
-    }
-
-    void Set_DelOdd::endTestCase()
-    {
-        m_arrData.resize( 0 );
-    }
-
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd.h b/tests/unit/set2/set_delodd.h
deleted file mode 100644 (file)
index 086c4bf..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "cppunit/thread.h"
-#include "set2/set_type.h"
-
-namespace set2 {
-
-#define TEST_CASE(TAG, X)  void X();
-
-    namespace {
-        struct key_thread
-        {
-            uint32_t  nKey;
-            uint16_t  nThread;
-            uint16_t  pad_;
-
-            key_thread( size_t key, size_t threadNo )
-                : nKey( static_cast<uint32_t>(key))
-                , nThread( static_cast<uint16_t>(threadNo))
-                , pad_(0)
-            {}
-
-            key_thread()
-            {}
-        };
-
-        typedef set_type_base<key_thread, size_t>::key_val     key_value_pair;
-    }
-
-    template <>
-    struct cmp<key_thread> {
-        int operator ()(key_thread const& k1, key_thread const& k2) const
-        {
-            if ( k1.nKey < k2.nKey )
-                return -1;
-            if ( k1.nKey > k2.nKey )
-                return 1;
-            if ( k1.nThread < k2.nThread )
-                return -1;
-            if ( k1.nThread > k2.nThread )
-                return 1;
-            return 0;
-        }
-        int operator ()(key_thread const& k1, size_t k2) const
-        {
-            if ( k1.nKey < k2 )
-                return -1;
-            if ( k1.nKey > k2 )
-                return 1;
-            return 0;
-        }
-        int operator ()(size_t k1, key_thread const& k2) const
-        {
-            if ( k1 < k2.nKey )
-                return -1;
-            if ( k1 > k2.nKey )
-                return 1;
-            return 0;
-        }
-    };
-
-} // namespace set2
-
-namespace std {
-    template <>
-    struct less<set2::key_thread>
-    {
-        bool operator()(set2::key_thread const& k1, set2::key_thread const& k2) const
-        {
-            if ( k1.nKey <= k2.nKey )
-                return k1.nKey < k2.nKey || k1.nThread < k2.nThread;
-            return false;
-        }
-    };
-
-    template <>
-    struct hash<set2::key_thread>
-    {
-        typedef size_t              result_type;
-        typedef set2::key_thread    argument_type;
-
-        size_t operator()( set2::key_thread const& k ) const
-        {
-            return std::hash<size_t>()(k.nKey);
-        }
-        size_t operator()( size_t k ) const
-        {
-            return std::hash<size_t>()(k);
-        }
-    };
-
-} // namespace std
-
-namespace boost {
-    inline size_t hash_value( set2::key_thread const& k )
-    {
-        return std::hash<size_t>()( k.nKey );
-    }
-
-    template <>
-    struct hash<set2::key_thread>
-    {
-        typedef size_t              result_type;
-        typedef set2::key_thread    argument_type;
-
-        size_t operator()(set2::key_thread const& k) const
-        {
-            return boost::hash<size_t>()( k.nKey );
-        }
-        size_t operator()(size_t k) const
-        {
-            return boost::hash<size_t>()( k );
-        }
-    };
-} // namespace boost
-
-namespace set2 {
-
-    class Set_DelOdd: public CppUnitMini::TestCase
-    {
-    public:
-        size_t  c_nSetSize =1000000;          // max set size
-        size_t  c_nInsThreadCount = 4;   // insert thread count
-        size_t  c_nDelThreadCount = 4;   // delete thread count
-        size_t  c_nExtractThreadCount = 4;  // extract thread count
-        size_t  c_nMaxLoadFactor = 8;    // maximum load factor
-        bool    c_bPrintGCState = true;
-
-        size_t  c_nCuckooInitialSize = 1024;// initial size for CuckooSet
-        size_t  c_nCuckooProbesetSize = 16; // CuckooSet probeset size (only for list-based probeset)
-        size_t  c_nCuckooProbesetThreshold = 0; // CUckooSet probeset threshold (0 - use default)
-
-        size_t c_nFeldmanSet_HeadBits = 10;
-        size_t c_nFeldmanSet_ArrayBits = 4;
-
-        size_t c_nLoadFactor = 2;
-        std::vector<size_t>     m_arrData;
-
-    protected:
-        typedef key_thread  key_type;
-        typedef size_t      value_type;
-
-        atomics::atomic<size_t>      m_nInsThreadCount;
-
-        // Inserts keys from [0..N)
-        template <class Set>
-        class InsertThread: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual InsertThread *    clone()
-            {
-                return new InsertThread( *this );
-            }
-
-            struct update_functor
-            {
-                template <typename Q>
-                void operator()( bool /*bNew*/, key_value_pair const&, Q const& )
-                {}
-
-                void operator()(key_value_pair& /*cur*/, key_value_pair * /*prev*/)
-                {}
-            };
-        public:
-            size_t  m_nInsertSuccess;
-            size_t  m_nInsertFailed;
-
-        public:
-            InsertThread( CppUnitMini::ThreadPool& pool, Set& rMap )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rMap )
-            {}
-            InsertThread( InsertThread& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_DelOdd&  getTest()
-            {
-                return reinterpret_cast<Set_DelOdd&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nInsertSuccess =
-                    m_nInsertFailed = 0;
-
-                std::vector<size_t>& arrData = getTest().m_arrData;
-                for ( size_t i = 0; i < arrData.size(); ++i ) {
-                    if ( rSet.insert( key_type( arrData[i], m_nThreadNo )))
-                        ++m_nInsertSuccess;
-                    else
-                        ++m_nInsertFailed;
-                }
-
-                update_functor f;
-                for ( size_t i = arrData.size() - 1; i > 0; --i ) {
-                    if ( arrData[i] & 1 ) {
-                        rSet.update( key_type( arrData[i], m_nThreadNo ), f, true );
-                    }
-                }
-
-                getTest().m_nInsThreadCount.fetch_sub( 1, atomics::memory_order_release );
-            }
-        };
-
-        struct key_equal {
-            bool operator()( key_type const& k1, key_type const& k2 ) const
-            {
-                return k1.nKey == k2.nKey;
-            }
-            bool operator()( size_t k1, key_type const& k2 ) const
-            {
-                return k1 == k2.nKey;
-            }
-            bool operator()( key_type const& k1, size_t k2 ) const
-            {
-                return k1.nKey == k2;
-            }
-            bool operator ()( key_value_pair const& k1, key_value_pair const& k2 ) const
-            {
-                return operator()( k1.key, k2.key );
-            }
-            bool operator ()( key_value_pair const& k1, key_type const& k2 ) const
-            {
-                return operator()( k1.key, k2 );
-            }
-            bool operator ()( key_type const& k1, key_value_pair const& k2 ) const
-            {
-                return operator()( k1, k2.key );
-            }
-            bool operator ()( key_value_pair const& k1, size_t k2 ) const
-            {
-                return operator()( k1.key, k2 );
-            }
-            bool operator ()( size_t k1, key_value_pair const& k2 ) const
-            {
-                return operator()( k1, k2.key );
-            }
-        };
-
-        struct key_less {
-            bool operator()( key_type const& k1, key_type const& k2 ) const
-            {
-                return k1.nKey < k2.nKey;
-            }
-            bool operator()( size_t k1, key_type const& k2 ) const
-            {
-                return k1 < k2.nKey;
-            }
-            bool operator()( key_type const& k1, size_t k2 ) const
-            {
-                return k1.nKey < k2;
-            }
-            bool operator ()( key_value_pair const& k1, key_value_pair const& k2 ) const
-            {
-                return operator()( k1.key, k2.key );
-            }
-            bool operator ()( key_value_pair const& k1, key_type const& k2 ) const
-            {
-                return operator()( k1.key, k2 );
-            }
-            bool operator ()( key_type const& k1, key_value_pair const& k2 ) const
-            {
-                return operator()( k1, k2.key );
-            }
-            bool operator ()( key_value_pair const& k1, size_t k2 ) const
-            {
-                return operator()( k1.key, k2 );
-            }
-            bool operator ()( size_t k1, key_value_pair const& k2 ) const
-            {
-                return operator()( k1, k2.key );
-            }
-
-            typedef key_equal   equal_to;
-        };
-
-        // Deletes odd keys from [0..N)
-        template <class Set>
-        class DeleteThread: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual DeleteThread *    clone()
-            {
-                return new DeleteThread( *this );
-            }
-        public:
-            size_t  m_nDeleteSuccess;
-            size_t  m_nDeleteFailed;
-
-        public:
-            DeleteThread( CppUnitMini::ThreadPool& pool, Set& rMap )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rMap )
-            {}
-            DeleteThread( DeleteThread& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_DelOdd&  getTest()
-            {
-                return reinterpret_cast<Set_DelOdd&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            template <typename SetType, bool>
-            struct eraser {
-                static bool erase( SetType& s, size_t key, size_t /*thread*/)
-                {
-                    return s.erase_with( key, key_less() );
-                }
-            };
-
-            template <typename SetType>
-            struct eraser<SetType, true> {
-                static bool erase(SetType& s, size_t key, size_t thread)
-                {
-                    return s.erase( key_type(key, thread));
-                }
-            };
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nDeleteSuccess =
-                    m_nDeleteFailed = 0;
-
-                size_t const nInsThreadCount = getTest().c_nInsThreadCount;
-                std::vector<size_t>& arrData = getTest().m_arrData;
-
-                if ( m_nThreadNo & 1 ) {
-                    for (size_t i = 0; i < arrData.size(); ++i) {
-                        if (arrData[i] & 1) {
-                            for ( size_t k = 0; k < nInsThreadCount; ++k ) {
-                                if ( eraser<Set, Set::c_bEraseExactKey>::erase( rSet, arrData[i], k ))
-                                    ++m_nDeleteSuccess;
-                                else
-                                    ++m_nDeleteFailed;
-                            }
-                        }
-                        if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
-                            break;
-                    }
-                }
-                else {
-                    for (size_t i = arrData.size() - 1; i > 0; --i) {
-                        if (arrData[i] & 1) {
-                            for ( size_t k = 0; k < nInsThreadCount; ++k ) {
-                                if (eraser<Set, Set::c_bEraseExactKey>::erase(rSet, arrData[i], k))
-                                    ++m_nDeleteSuccess;
-                                else
-                                    ++m_nDeleteFailed;
-                            }
-                        }
-                        if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
-                            break;
-                    }
-                }
-            }
-        };
-
-        // Extracts odd keys from [0..N)
-        template <typename GC, class Set>
-        class ExtractThread: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual ExtractThread *    clone()
-            {
-                return new ExtractThread( *this );
-            }
-        public:
-            size_t  m_nExtractSuccess;
-            size_t  m_nExtractFailed;
-
-        public:
-            ExtractThread( CppUnitMini::ThreadPool& pool, Set& rMap )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rMap )
-            {}
-            ExtractThread( ExtractThread& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_DelOdd&  getTest()
-            {
-                return reinterpret_cast<Set_DelOdd&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            template <typename SetType, bool>
-            struct extractor {
-                static typename SetType::guarded_ptr extract(SetType& s, size_t key, size_t /*thread*/)
-                {
-                    return s.extract_with( key, key_less());
-                }
-            };
-
-            template <typename SetType>
-            struct extractor<SetType, true> {
-                static typename SetType::guarded_ptr extract(SetType& s, size_t key, size_t thread)
-                {
-                    return s.extract( key_type(key, thread));
-                }
-            };
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nExtractSuccess =
-                    m_nExtractFailed = 0;
-
-                typename Set::guarded_ptr gp;
-
-                std::vector<size_t>& arrData = getTest().m_arrData;
-                size_t const nInsThreadCount = getTest().c_nInsThreadCount;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t i = 0; i < arrData.size(); ++i ) {
-                        if (arrData[i] & 1) {
-                            for ( size_t k = 0; k < nInsThreadCount; ++k ) {
-                                gp = extractor<Set, Set::c_bEraseExactKey>::extract( rSet, arrData[i], k );
-                                if ( gp )
-                                    ++m_nExtractSuccess;
-                                else
-                                    ++m_nExtractFailed;
-                                gp.release();
-                            }
-                        }
-                        if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
-                            break;
-                    }
-                }
-                else {
-                    for (size_t i = arrData.size() - 1; i > 0; --i) {
-                        if (arrData[i] & 1) {
-                            for ( size_t k = 0; k < nInsThreadCount; ++k ) {
-                                gp = extractor<Set, Set::c_bEraseExactKey>::extract( rSet, arrData[i], k);
-                                if ( gp )
-                                    ++m_nExtractSuccess;
-                                else
-                                    ++m_nExtractFailed;
-                                gp.release();
-                            }
-                        }
-                        if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
-                            break;
-                    }
-                }
-            }
-        };
-
-        template <typename RCU, class Set>
-        class ExtractThread< cds::urcu::gc<RCU>, Set >: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual ExtractThread *    clone()
-            {
-                return new ExtractThread( *this );
-            }
-        public:
-            size_t  m_nExtractSuccess;
-            size_t  m_nExtractFailed;
-
-        public:
-            ExtractThread( CppUnitMini::ThreadPool& pool, Set& rMap )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rMap )
-            {}
-            ExtractThread( ExtractThread& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_DelOdd&  getTest()
-            {
-                return reinterpret_cast<Set_DelOdd&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            template <typename SetType, bool>
-            struct extractor {
-                static typename SetType::exempt_ptr extract(SetType& s, size_t key, size_t /*thread*/)
-                {
-                    return s.extract_with(key, key_less());
-                }
-            };
-
-            template <typename SetType>
-            struct extractor<SetType, true> {
-                static typename SetType::exempt_ptr extract(SetType& s, size_t key, size_t thread)
-                {
-                    return s.extract(key_type(key, thread));
-                }
-            };
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nExtractSuccess =
-                    m_nExtractFailed = 0;
-
-                typename Set::exempt_ptr xp;
-
-                std::vector<size_t>& arrData = getTest().m_arrData;
-                size_t const nInsThreadCount = getTest().c_nInsThreadCount;
-
-                if ( m_nThreadNo & 1 ) {
-                    for (size_t i = 0; i < arrData.size(); ++i) {
-                        if (arrData[i] & 1) {
-                            for ( size_t k = 0; k < nInsThreadCount; ++k ) {
-                                if ( Set::c_bExtractLockExternal ) {
-                                    typename Set::rcu_lock l;
-                                    xp = extractor<Set, Set::c_bEraseExactKey>::extract( rSet, arrData[i], k);
-                                    if ( xp )
-                                        ++m_nExtractSuccess;
-                                    else
-                                        ++m_nExtractFailed;
-                                }
-                                else {
-                                    xp = extractor<Set, Set::c_bEraseExactKey>::extract(rSet, arrData[i], k);
-                                    if ( xp )
-                                        ++m_nExtractSuccess;
-                                    else
-                                        ++m_nExtractFailed;
-                                }
-                                xp.release();
-                            }
-                        }
-                        if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
-                            break;
-                    }
-                }
-                else {
-                    for (size_t i = arrData.size() - 1; i > 0; --i) {
-                        if (arrData[i] & 1) {
-                            for ( size_t k = 0; k < nInsThreadCount; ++k ) {
-                                if ( Set::c_bExtractLockExternal ) {
-                                    typename Set::rcu_lock l;
-                                    xp = extractor<Set, Set::c_bEraseExactKey>::extract(rSet, arrData[i], k);
-                                    if ( xp )
-                                        ++m_nExtractSuccess;
-                                    else
-                                        ++m_nExtractFailed;
-                                }
-                                else {
-                                    xp = extractor<Set, Set::c_bEraseExactKey>::extract(rSet, arrData[i], k);
-                                    if ( xp )
-                                        ++m_nExtractSuccess;
-                                    else
-                                        ++m_nExtractFailed;
-                                }
-                                xp.release();
-                            }
-                        }
-                        if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
-                            break;
-                    }
-                }
-            }
-        };
-
-    protected:
-        template <class Set>
-        void do_test( size_t nLoadFactor )
-        {
-            Set  testSet( c_nSetSize, nLoadFactor );
-            do_test_with( testSet );
-            analyze( testSet );
-        }
-
-        template <class Set>
-        void do_test_extract( size_t nLoadFactor )
-        {
-            Set  testSet( c_nSetSize, nLoadFactor );
-            do_test_extract_with( testSet );
-            analyze( testSet );
-        }
-
-        template <class Set>
-        void do_test_with( Set& testSet )
-        {
-            typedef InsertThread<Set> insert_thread;
-            typedef DeleteThread<Set> delete_thread;
-
-            m_nInsThreadCount.store( c_nInsThreadCount, atomics::memory_order_release );
-
-            CppUnitMini::ThreadPool pool( *this );
-            pool.add( new insert_thread( pool, testSet ), c_nInsThreadCount );
-            pool.add( new delete_thread( pool, testSet ), c_nDelThreadCount ? c_nDelThreadCount : cds::OS::topology::processor_count());
-            pool.run();
-            CPPUNIT_MSG( "   Duration=" << pool.avgDuration() );
-
-            size_t nInsertSuccess = 0;
-            size_t nInsertFailed = 0;
-            size_t nDeleteSuccess = 0;
-            size_t nDeleteFailed = 0;
-            for ( CppUnitMini::ThreadPool::iterator it = pool.begin(); it != pool.end(); ++it ) {
-                insert_thread * pThread = dynamic_cast<insert_thread *>( *it );
-                if ( pThread ) {
-                    nInsertSuccess += pThread->m_nInsertSuccess;
-                    nInsertFailed += pThread->m_nInsertFailed;
-                }
-                else {
-                    delete_thread * p = static_cast<delete_thread *>( *it );
-                    nDeleteSuccess += p->m_nDeleteSuccess;
-                    nDeleteFailed += p->m_nDeleteFailed;
-                }
-            }
-
-            CPPUNIT_CHECK( nInsertSuccess == c_nSetSize * c_nInsThreadCount );
-            CPPUNIT_CHECK( nInsertFailed == 0 );
-
-            CPPUNIT_MSG( "  Totals (success/failed): \n\t"
-                      << "      Insert=" << nInsertSuccess << '/' << nInsertFailed << "\n\t"
-                      << "      Delete=" << nDeleteSuccess << '/' << nDeleteFailed << "\n\t"
-            );
-        }
-
-        template <class Set>
-        void do_test_extract_with( Set& testSet )
-        {
-            typedef InsertThread<Set> insert_thread;
-            typedef DeleteThread<Set> delete_thread;
-            typedef ExtractThread< typename Set::gc, Set > extract_thread;
-
-            m_nInsThreadCount.store( c_nInsThreadCount, atomics::memory_order_release );
-
-            CppUnitMini::ThreadPool pool( *this );
-            pool.add( new insert_thread( pool, testSet ), c_nInsThreadCount );
-            if ( c_nDelThreadCount )
-                pool.add( new delete_thread( pool, testSet ), c_nDelThreadCount );
-            if ( c_nExtractThreadCount )
-                pool.add( new extract_thread( pool, testSet ), c_nExtractThreadCount );
-            pool.run();
-            CPPUNIT_MSG( "   Duration=" << pool.avgDuration() );
-
-            size_t nInsertSuccess = 0;
-            size_t nInsertFailed = 0;
-            size_t nDeleteSuccess = 0;
-            size_t nDeleteFailed = 0;
-            size_t nExtractSuccess = 0;
-            size_t nExtractFailed = 0;
-            for ( CppUnitMini::ThreadPool::iterator it = pool.begin(); it != pool.end(); ++it ) {
-                insert_thread * pThread = dynamic_cast<insert_thread *>( *it );
-                if ( pThread ) {
-                    nInsertSuccess += pThread->m_nInsertSuccess;
-                    nInsertFailed += pThread->m_nInsertFailed;
-                }
-                else {
-                    delete_thread * p = dynamic_cast<delete_thread *>( *it );
-                    if ( p ) {
-                        nDeleteSuccess += p->m_nDeleteSuccess;
-                        nDeleteFailed += p->m_nDeleteFailed;
-                    }
-                    else {
-                        extract_thread * pExt = dynamic_cast<extract_thread *>( *it );
-                        assert( pExt );
-                        nExtractSuccess += pExt->m_nExtractSuccess;
-                        nExtractFailed += pExt->m_nExtractFailed;
-                    }
-                }
-            }
-
-            CPPUNIT_CHECK( nInsertSuccess == c_nSetSize * c_nInsThreadCount );
-            CPPUNIT_CHECK( nInsertFailed == 0 );
-
-            CPPUNIT_MSG( "  Totals (success/failed): \n\t"
-                << "      Insert=" << nInsertSuccess << '/' << nInsertFailed << "\n\t"
-                << "      Delete=" << nDeleteSuccess << '/' << nDeleteFailed << "\n\t"
-                << "      Extract=" << nExtractSuccess << '/' << nExtractFailed << "\n\t"
-                );
-        }
-
-        template <typename Set>
-        void analyze( Set& testSet )
-        {
-            // All even keys must be in the set
-            {
-                CPPUNIT_MSG( "  Check even keys..." );
-                size_t nErrorCount = 0;
-                for ( size_t n = 0; n < c_nSetSize; n +=2 ) {
-                    for ( size_t i = 0; i < c_nInsThreadCount; ++i ) {
-                        if ( !testSet.contains( key_type(n, i) ) ) {
-                            if ( ++nErrorCount < 10 ) {
-                                CPPUNIT_MSG( "key " << n << "-" << i << " is not found!");
-                            }
-                        }
-                    }
-                }
-                CPPUNIT_CHECK_EX( nErrorCount == 0, "Totals: " << nErrorCount << " keys is not found");
-            }
-
-            check_before_clear( testSet );
-
-            CPPUNIT_MSG( "  Clear map (single-threaded)..." );
-            cds::OS::Timer    timer;
-            testSet.clear();
-            CPPUNIT_MSG( "   Duration=" << timer.duration() );
-            CPPUNIT_CHECK_EX( testSet.empty(), ((long long) testSet.size()) );
-
-            additional_check( testSet );
-            print_stat( testSet );
-            additional_cleanup( testSet );
-        }
-
-        template <class Set>
-        void run_test()
-        {
-            static_assert( !Set::c_bExtractSupported, "Set class must not support extract() method" );
-
-            CPPUNIT_MSG( "Insert thread count=" << c_nInsThreadCount
-                << " delete thread count=" << c_nDelThreadCount
-                << " set size=" << c_nSetSize
-                );
-
-            if ( Set::c_bLoadFactorDepended ) {
-                for ( c_nLoadFactor = 1; c_nLoadFactor <= c_nMaxLoadFactor; c_nLoadFactor *= 2 ) {
-                    CPPUNIT_MSG( "Load factor=" << c_nLoadFactor );
-
-                    Set  testSet( *this );
-                    do_test_with( testSet );
-                    analyze( testSet );
-
-                    if ( c_bPrintGCState )
-                        print_gc_state();
-                }
-            }
-            else {
-                Set  testSet( *this );
-                do_test_with( testSet );
-                analyze( testSet );
-
-                if ( c_bPrintGCState )
-                    print_gc_state();
-            }
-        }
-
-        template <class Set>
-        void run_test_extract()
-        {
-            static_assert( Set::c_bExtractSupported, "Set class must support extract() method" );
-
-            CPPUNIT_MSG( "Insert thread count=" << c_nInsThreadCount
-                << " delete thread count=" << c_nDelThreadCount
-                << " extract thread count=" << c_nExtractThreadCount
-                << " set size=" << c_nSetSize
-                );
-
-            if ( Set::c_bLoadFactorDepended ) {
-                for ( c_nLoadFactor = 1; c_nLoadFactor <= c_nMaxLoadFactor; c_nLoadFactor *= 2 ) {
-                    CPPUNIT_MSG( "Load factor=" << c_nLoadFactor );
-
-                    Set  testSet( *this );
-                    do_test_extract_with( testSet );
-                    analyze( testSet );
-
-                    if ( c_bPrintGCState )
-                        print_gc_state();
-                }
-            }
-            else {
-                Set  testSet( *this );
-                do_test_extract_with( testSet );
-                analyze( testSet );
-
-                if ( c_bPrintGCState )
-                    print_gc_state();
-            }
-        }
-
-        void setUpParams( const CppUnitMini::TestCfg& cfg );
-        virtual void endTestCase();
-
-#   include "set2/set_defs.h"
-        CDSUNIT_DECLARE_MichaelSet
-        CDSUNIT_DECLARE_SplitList
-        CDSUNIT_DECLARE_SkipListSet
-        CDSUNIT_DECLARE_EllenBinTreeSet
-        CDSUNIT_DECLARE_CuckooSet
-        CDSUNIT_DECLARE_FeldmanHashSet_fixed
-        CDSUNIT_DECLARE_FeldmanHashSet_city
-
-        CPPUNIT_TEST_SUITE_(Set_DelOdd, "Map_DelOdd")
-            CDSUNIT_TEST_MichaelSet
-            CDSUNIT_TEST_SplitList
-            CDSUNIT_TEST_SkipListSet
-            CDSUNIT_TEST_EllenBinTreeSet
-            CDSUNIT_TEST_FeldmanHashSet_fixed
-            CDSUNIT_TEST_FeldmanHashSet_city
-            CDSUNIT_TEST_CuckooSet
-        CPPUNIT_TEST_SUITE_END();
-    };
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd_cuckoo.cpp b/tests/unit/set2/set_delodd_cuckoo.cpp
deleted file mode 100644 (file)
index b46c4b2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-#include "set2/set_type_cuckoo.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_DelOdd::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_CuckooSet
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd_ellentree.cpp b/tests/unit/set2/set_delodd_ellentree.cpp
deleted file mode 100644 (file)
index b9affde..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-#include "set2/set_type_ellen_bintree.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_DelOdd::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_EllenBinTreeSet
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd_feldmanhashset.cpp b/tests/unit/set2/set_delodd_feldmanhashset.cpp
deleted file mode 100644 (file)
index 6cfa9e9..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-#include "set2/set_type_feldman_hashset.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_DelOdd::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_FeldmanHashSet_fixed
-    CDSUNIT_DECLARE_FeldmanHashSet_city
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd_michael.cpp b/tests/unit/set2/set_delodd_michael.cpp
deleted file mode 100644 (file)
index 85e09ba..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-#include "set2/set_type_michael.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_DelOdd::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_MichaelSet
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd_skip.cpp b/tests/unit/set2/set_delodd_skip.cpp
deleted file mode 100644 (file)
index 3a21fd7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-#include "set2/set_type_skip_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_DelOdd::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SkipListSet
-} // namespace set2
diff --git a/tests/unit/set2/set_delodd_split.cpp b/tests/unit/set2/set_delodd_split.cpp
deleted file mode 100644 (file)
index c3ef2b4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_delodd.h"
-#include "set2/set_type_split_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_DelOdd::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SplitList
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func.cpp b/tests/unit/set2/set_insdel_func.cpp
deleted file mode 100644 (file)
index ffd5d17..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-
-namespace set2 {
-    CPPUNIT_TEST_SUITE_REGISTRATION( Set_InsDel_func );
-
-    void Set_InsDel_func::setUpParams( const CppUnitMini::TestCfg& cfg )
-    {
-        c_nSetSize = cfg.getSizeT("MapSize", c_nSetSize );
-        c_nInsertThreadCount = cfg.getSizeT("InsertThreadCount", c_nInsertThreadCount );
-        c_nDeleteThreadCount = cfg.getSizeT("DeleteThreadCount", c_nDeleteThreadCount );
-        c_nUpdateThreadCount = cfg.getSizeT("UpdateThreadCount", c_nUpdateThreadCount );
-        c_nThreadPassCount = cfg.getSizeT("ThreadPassCount", c_nThreadPassCount );
-        c_nMaxLoadFactor = cfg.getSizeT("MaxLoadFactor", c_nMaxLoadFactor );
-        c_bPrintGCState = cfg.getBool("PrintGCStateFlag", c_bPrintGCState );
-
-        c_nCuckooInitialSize = cfg.getSizeT("CuckooInitialSize", c_nCuckooInitialSize );
-        c_nCuckooProbesetSize = cfg.getSizeT("CuckooProbesetSize", c_nCuckooProbesetSize );
-        c_nCuckooProbesetThreshold = cfg.getSizeT("CuckooProbesetThreshold", c_nCuckooProbesetThreshold );
-
-        c_nFeldmanSet_HeadBits = cfg.getSizeT("FeldmanMapHeadBits", c_nFeldmanSet_HeadBits);
-        c_nFeldmanSet_ArrayBits = cfg.getSizeT("FeldmanMapArrayBits", c_nFeldmanSet_ArrayBits);
-
-        if ( c_nInsertThreadCount == 0 )
-            c_nInsertThreadCount = std::thread::hardware_concurrency();
-        if ( c_nDeleteThreadCount == 0 )
-            c_nDeleteThreadCount = std::thread::hardware_concurrency();
-        if ( c_nUpdateThreadCount == 0 )
-            c_nUpdateThreadCount = std::thread::hardware_concurrency();
-    }
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func.h b/tests/unit/set2/set_insdel_func.h
deleted file mode 100644 (file)
index ed492ce..0000000
+++ /dev/null
@@ -1,596 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 <functional>
-#include <vector>
-#include <mutex>    //unique_lock
-
-#include "set2/set_type.h"
-#include "cppunit/thread.h"
-#include <cds/sync/spinlock.h>
-
-namespace set2 {
-
-#define TEST_CASE(TAG, X)  void X();
-
-    class Set_InsDel_func: public CppUnitMini::TestCase
-    {
-    public:
-        size_t  c_nSetSize = 1000000;      // set size
-        size_t  c_nInsertThreadCount = 4;  // count of insertion thread
-        size_t  c_nDeleteThreadCount = 4;  // count of deletion thread
-        size_t  c_nUpdateThreadCount = 4;  // count of ensure thread
-        size_t  c_nThreadPassCount = 4;    // pass count for each thread
-        size_t  c_nMaxLoadFactor = 8;      // maximum load factor
-        bool    c_bPrintGCState;
-
-        size_t  c_nCuckooInitialSize = 1024;// initial size for CuckooSet
-        size_t  c_nCuckooProbesetSize = 16; // CuckooSet probeset size (only for list-based probeset)
-        size_t  c_nCuckooProbesetThreshold = 0; // CUckooSet probeset threshold (0 - use default)
-
-        size_t c_nFeldmanSet_HeadBits = 10;
-        size_t c_nFeldmanSet_ArrayBits = 4;
-
-        size_t c_nLoadFactor = 2;
-
-    private:
-        typedef size_t  key_type;
-        struct value_type {
-            size_t      nKey;
-            size_t      nData;
-            atomics::atomic<size_t> nUpdateCall;
-            bool volatile   bInitialized;
-            cds::OS::ThreadId          threadId     ;   // insert thread id
-
-            typedef cds::sync::spin_lock< cds::backoff::pause > lock_type;
-            mutable lock_type   m_access;
-
-            value_type()
-                : nKey(0)
-                , nData(0)
-                , nUpdateCall(0)
-                , bInitialized( false )
-                , threadId( cds::OS::get_current_thread_id() )
-            {}
-
-            value_type( value_type const& s )
-                : nKey(s.nKey)
-                , nData(s.nData)
-                , nUpdateCall(s.nUpdateCall.load(atomics::memory_order_relaxed))
-                , bInitialized( s.bInitialized )
-                , threadId( cds::OS::get_current_thread_id() )
-            {}
-
-            // boost::container::flat_map requires operator =
-            value_type& operator=( value_type const& v )
-            {
-                nKey = v.nKey;
-                nData = v.nData;
-                nUpdateCall.store( v.nUpdateCall.load(atomics::memory_order_relaxed), atomics::memory_order_relaxed );
-                bInitialized = v.bInitialized;
-
-                return *this;
-            }
-
-        };
-
-
-        size_t *    m_pKeyFirst;
-        size_t *    m_pKeyLast;
-        size_t *    m_pKeyArr;
-
-        template <class Set>
-        class Inserter: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-            typedef typename Set::value_type keyval_type;
-
-            virtual Inserter *    clone()
-            {
-                return new Inserter( *this );
-            }
-
-            struct insert_functor {
-                size_t nTestFunctorRef;
-
-                insert_functor()
-                    : nTestFunctorRef(0)
-                {}
-
-                void operator()( keyval_type& val )
-                {
-                    std::unique_lock< typename value_type::lock_type>    ac( val.val.m_access );
-
-                    val.val.nKey  = val.key;
-                    val.val.nData = val.key * 8;
-
-                    ++nTestFunctorRef;
-                    val.val.bInitialized = true;
-                }
-            };
-
-        public:
-            size_t  m_nInsertSuccess;
-            size_t  m_nInsertFailed;
-
-            size_t  m_nTestFunctorRef;
-
-        public:
-            Inserter( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Inserter( Inserter& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_func&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_func&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nInsertSuccess =
-                    m_nInsertFailed =
-                    m_nTestFunctorRef = 0;
-
-                size_t * pKeyFirst = getTest().m_pKeyFirst;
-                size_t * pKeyLast = getTest().m_pKeyLast;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                // func is passed by reference
-                insert_functor  func;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t * p = pKeyFirst; p < pKeyLast; ++p ) {
-                            if ( rSet.insert( *p, std::ref(func) ) )
-                                ++m_nInsertSuccess;
-                            else
-                                ++m_nInsertFailed;
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t * p = pKeyLast - 1; p >= pKeyFirst; --p ) {
-                            if ( rSet.insert( *p, std::ref(func) ) )
-                                ++m_nInsertSuccess;
-                            else
-                                ++m_nInsertFailed;
-                        }
-                    }
-                }
-
-                m_nTestFunctorRef = func.nTestFunctorRef;
-            }
-        };
-
-        template <class Set>
-        class Updater: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-            typedef typename Set::value_type keyval_type;
-
-            virtual Updater *    clone()
-            {
-                return new Updater( *this );
-            }
-
-            struct update_functor {
-                size_t  nCreated;
-                size_t  nModified;
-
-                update_functor()
-                    : nCreated(0)
-                    , nModified(0)
-                {}
-
-                void operator()( bool bNew, keyval_type& val, size_t /*nKey*/ )
-                {
-                    std::unique_lock<typename value_type::lock_type> ac( val.val.m_access );
-                    if ( !val.val.bInitialized )
-                    {
-                        val.val.nKey = val.key;
-                        val.val.nData = val.key * 8;
-                        val.val.bInitialized = true;
-                    }
-
-                    if ( bNew ) {
-                        ++nCreated;
-                    }
-                    else {
-                        val.val.nUpdateCall.fetch_add( 1, atomics::memory_order_relaxed );
-                        ++nModified;
-                    }
-                }
-
-                void operator()( keyval_type& cur, keyval_type * old )
-                {
-                    operator()( old == nullptr, cur, 0 );
-                }
-
-            private:
-                update_functor(const update_functor& );
-            };
-
-        public:
-            size_t  m_nUpdateFailed;
-            size_t  m_nUpdateCreated;
-            size_t  m_nUpdateExisted;
-            size_t  m_nFunctorCreated;
-            size_t  m_nFunctorModified;
-
-        public:
-            Updater( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Updater( Updater& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_func&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_func&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nUpdateCreated =
-                    m_nUpdateExisted =
-                    m_nUpdateFailed = 0;
-
-                size_t * pKeyFirst = getTest().m_pKeyFirst;
-                size_t * pKeyLast = getTest().m_pKeyLast;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                update_functor func;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t * p = pKeyFirst; p < pKeyLast; ++p ) {
-                            std::pair<bool, bool> ret = rSet.update( *p, std::ref( func ), true );
-                            if ( ret.first  ) {
-                                if ( ret.second )
-                                    ++m_nUpdateCreated;
-                                else
-                                    ++m_nUpdateExisted;
-                            }
-                            else
-                                ++m_nUpdateFailed;
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t * p = pKeyLast - 1 ; p >= pKeyFirst; --p ) {
-                            std::pair<bool, bool> ret = rSet.update( *p, std::ref( func ), true );
-                            if ( ret.first  ) {
-                                if ( ret.second )
-                                    ++m_nUpdateCreated;
-                                else
-                                    ++m_nUpdateExisted;
-                            }
-                            else
-                                ++m_nUpdateFailed;
-                        }
-                    }
-                }
-
-                m_nFunctorCreated = func.nCreated;
-                m_nFunctorModified = func.nModified;
-            }
-        };
-
-        template <class Set>
-        class Deleter: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-            typedef typename Set::value_type keyval_type;
-
-            virtual Deleter *    clone()
-            {
-                return new Deleter( *this );
-            }
-
-            struct value_container
-            {
-                size_t      nKeyExpected;
-
-                size_t      nSuccessItem;
-                size_t      nFailedItem;
-
-                value_container()
-                    : nSuccessItem(0)
-                    , nFailedItem(0)
-                {}
-            };
-
-            struct erase_functor {
-                value_container     m_cnt;
-
-                void operator ()( keyval_type const& itm )
-                {
-                    keyval_type& item = const_cast<keyval_type&>(itm);
-                    while ( true ) {
-                        bool bBkoff = false;
-                        {
-                            std::unique_lock< typename value_type::lock_type> ac( item.val.m_access );
-                            if ( item.val.bInitialized ) {
-                                if ( m_cnt.nKeyExpected == item.val.nKey && m_cnt.nKeyExpected * 8 == item.val.nData )
-                                    ++m_cnt.nSuccessItem;
-                                else
-                                    ++m_cnt.nFailedItem;
-                                item.val.nData++;
-                                item.val.nKey = 0;
-                                break;
-                            }
-                            else
-                                bBkoff = true;
-                        }
-                        if ( bBkoff )
-                            cds::backoff::yield()();
-                    }
-                }
-            };
-
-        public:
-            size_t  m_nDeleteSuccess;
-            size_t  m_nDeleteFailed;
-
-            size_t  m_nValueSuccess;
-            size_t  m_nValueFailed;
-
-        public:
-            Deleter( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Deleter( Deleter& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_func&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_func&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nDeleteSuccess =
-                    m_nDeleteFailed = 0;
-
-                size_t * pKeyFirst = getTest().m_pKeyFirst;
-                size_t * pKeyLast = getTest().m_pKeyLast;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                erase_functor   func;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t * p = pKeyFirst; p < pKeyLast; ++p ) {
-                            func.m_cnt.nKeyExpected = *p;
-                            if ( rSet.erase( *p, std::ref(func) ))
-                                ++m_nDeleteSuccess;
-                            else
-                                ++m_nDeleteFailed;
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t * p = pKeyLast - 1; p >= pKeyFirst; --p ) {
-                            func.m_cnt.nKeyExpected = *p;
-                            if ( rSet.erase( *p, std::ref(func) ))
-                                ++m_nDeleteSuccess;
-                            else
-                                ++m_nDeleteFailed;
-                        }
-                    }
-                }
-
-                m_nValueSuccess = func.m_cnt.nSuccessItem;
-                m_nValueFailed = func.m_cnt.nFailedItem;
-            }
-        };
-
-    protected:
-
-        template <class Set>
-        void do_test( Set& testSet )
-        {
-            typedef Inserter<Set>       InserterThread;
-            typedef Deleter<Set>        DeleterThread;
-            typedef Updater<Set>        UpdaterThread;
-
-            m_pKeyArr = new size_t[ c_nSetSize ];
-            m_pKeyFirst = m_pKeyArr;
-            m_pKeyLast = m_pKeyFirst + c_nSetSize;
-            for ( size_t i = 0; i < c_nSetSize; ++i )
-                m_pKeyArr[i] = i;
-            shuffle( m_pKeyFirst, m_pKeyLast );
-
-            cds::OS::Timer    timer;
-
-            CppUnitMini::ThreadPool pool( *this );
-            pool.add( new InserterThread( pool, testSet ), c_nInsertThreadCount );
-            pool.add( new DeleterThread( pool, testSet ), c_nDeleteThreadCount );
-            pool.add( new UpdaterThread( pool, testSet ), c_nUpdateThreadCount );
-            pool.run();
-            CPPUNIT_MSG( "   Duration=" << pool.avgDuration() );
-
-            delete [] m_pKeyArr;
-
-            size_t nInsertSuccess = 0;
-            size_t nInsertFailed = 0;
-            size_t nDeleteSuccess = 0;
-            size_t nDeleteFailed = 0;
-            size_t nDelValueSuccess = 0;
-            size_t nDelValueFailed = 0;
-            size_t nUpdateFailed = 0;
-            size_t nUpdateCreated = 0;
-            size_t nUpdateModified = 0;
-            size_t nEnsFuncCreated = 0;
-            size_t nEnsFuncModified = 0;
-            size_t nTestFunctorRef = 0;
-
-            for ( CppUnitMini::ThreadPool::iterator it = pool.begin(); it != pool.end(); ++it ) {
-                InserterThread * pThread = dynamic_cast<InserterThread *>( *it );
-                if ( pThread ) {
-                    nInsertSuccess += pThread->m_nInsertSuccess;
-                    nInsertFailed += pThread->m_nInsertFailed;
-                    nTestFunctorRef += pThread->m_nTestFunctorRef;
-                }
-                else {
-                    DeleterThread * p = dynamic_cast<DeleterThread *>( *it );
-                    if ( p ) {
-                        nDeleteSuccess += p->m_nDeleteSuccess;
-                        nDeleteFailed += p->m_nDeleteFailed;
-                        nDelValueSuccess += p->m_nValueSuccess;
-                        nDelValueFailed += p->m_nValueFailed;
-                    }
-                    else {
-                        UpdaterThread * pEns = static_cast<UpdaterThread *>( *it );
-                        nUpdateCreated += pEns->m_nUpdateCreated;
-                        nUpdateModified += pEns->m_nUpdateExisted;
-                        nUpdateFailed += pEns->m_nUpdateFailed;
-                        nEnsFuncCreated += pEns->m_nFunctorCreated;
-                        nEnsFuncModified += pEns->m_nFunctorModified;
-                    }
-                }
-            }
-
-            CPPUNIT_MSG(
-                   "    Totals: Ins succ=" << nInsertSuccess
-                << " Del succ=" << nDeleteSuccess << "\n"
-                << "          : Ins fail=" << nInsertFailed
-                << " Del fail=" << nDeleteFailed << "\n"
-                << "          : Update succ=" << (nUpdateCreated + nUpdateModified) << " fail=" << nUpdateFailed
-                << " create=" << nUpdateCreated << " modify=" << nUpdateModified << "\n"
-                << "          Set size=" << testSet.size()
-                );
-
-            CPPUNIT_CHECK_EX( nDelValueFailed == 0, "Functor del failed=" << nDelValueFailed );
-            CPPUNIT_CHECK_EX( nDelValueSuccess == nDeleteSuccess,  "Delete success=" << nDeleteSuccess << " functor=" << nDelValueSuccess );
-
-            CPPUNIT_CHECK( nUpdateFailed == 0 );
-
-            CPPUNIT_CHECK_EX( nUpdateCreated == nEnsFuncCreated, "Update created=" << nUpdateCreated << " functor=" << nEnsFuncCreated );
-            CPPUNIT_CHECK_EX( nUpdateModified == nEnsFuncModified, "Update modified=" << nUpdateModified << " functor=" << nEnsFuncModified );
-
-            // nTestFunctorRef is call count of insert functor
-            CPPUNIT_CHECK_EX( nTestFunctorRef == nInsertSuccess, "nInsertSuccess=" << nInsertSuccess << " functor nTestFunctorRef=" << nTestFunctorRef );
-
-            CPPUNIT_MSG( "  Clear set (single-threaded)..." );
-            timer.reset();
-            testSet.clear();
-            CPPUNIT_MSG( "   Duration=" << timer.duration() );
-            CPPUNIT_CHECK( testSet.empty() );
-
-            additional_check( testSet );
-            print_stat(  testSet  );
-
-            additional_cleanup( testSet );
-        }
-
-        template <class Set>
-        void run_test()
-        {
-            CPPUNIT_MSG( "Thread count: insert=" << c_nInsertThreadCount
-                << " delete=" << c_nDeleteThreadCount
-                << " ensure=" << c_nUpdateThreadCount
-                << " pass count=" << c_nThreadPassCount
-                << " set size=" << c_nSetSize
-                );
-
-            if ( Set::c_bLoadFactorDepended ) {
-                for ( c_nLoadFactor = 1; c_nLoadFactor <= c_nMaxLoadFactor; c_nLoadFactor *= 2 ) {
-                    CPPUNIT_MSG("  LoadFactor = " << c_nLoadFactor );
-                    Set s( *this );
-                    do_test( s );
-                    if ( c_bPrintGCState )
-                        print_gc_state();
-                }
-            }
-            else {
-                Set s( *this );
-                do_test( s );
-                if ( c_bPrintGCState )
-                    print_gc_state();
-            }
-        }
-
-        void setUpParams( const CppUnitMini::TestCfg& cfg );
-
-#   include "set2/set_defs.h"
-    CDSUNIT_DECLARE_MichaelSet
-    CDSUNIT_DECLARE_SkipListSet
-    CDSUNIT_DECLARE_SplitList
-    CDSUNIT_DECLARE_StripedSet
-    CDSUNIT_DECLARE_RefinableSet
-    CDSUNIT_DECLARE_CuckooSet
-    CDSUNIT_DECLARE_EllenBinTreeSet
-    CDSUNIT_DECLARE_FeldmanHashSet_fixed
-    CDSUNIT_DECLARE_FeldmanHashSet_city
-
-    CPPUNIT_TEST_SUITE_(Set_InsDel_func, "Map_InsDel_func")
-        CDSUNIT_TEST_MichaelSet
-        CDSUNIT_TEST_SplitList
-        CDSUNIT_TEST_SkipListSet
-        CDSUNIT_TEST_FeldmanHashSet_fixed
-        CDSUNIT_TEST_FeldmanHashSet_city
-        CDSUNIT_TEST_EllenBinTreeSet
-        CDSUNIT_TEST_StripedSet
-        CDSUNIT_TEST_RefinableSet
-        CDSUNIT_TEST_CuckooSet
-    CPPUNIT_TEST_SUITE_END();
-
-    };
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_cuckoo.cpp b/tests/unit/set2/set_insdel_func_cuckoo.cpp
deleted file mode 100644 (file)
index 69525f1..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_cuckoo.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_CuckooSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_ellentree.cpp b/tests/unit/set2/set_insdel_func_ellentree.cpp
deleted file mode 100644 (file)
index 3b07226..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_ellen_bintree.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_EllenBinTreeSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_feldmanhashset.cpp b/tests/unit/set2/set_insdel_func_feldmanhashset.cpp
deleted file mode 100644 (file)
index 651d938..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_feldman_hashset.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_FeldmanHashSet_fixed
-    CDSUNIT_DECLARE_FeldmanHashSet_city
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_michael.cpp b/tests/unit/set2/set_insdel_func_michael.cpp
deleted file mode 100644 (file)
index 24d6ac0..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_michael.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_MichaelSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_skip.cpp b/tests/unit/set2/set_insdel_func_skip.cpp
deleted file mode 100644 (file)
index 91ad183..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_skip_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SkipListSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_split.cpp b/tests/unit/set2/set_insdel_func_split.cpp
deleted file mode 100644 (file)
index d7d50f9..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_split_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SplitList
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_func_striped.cpp b/tests/unit/set2/set_insdel_func_striped.cpp
deleted file mode 100644 (file)
index 374441b..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_func.h"
-#include "set2/set_type_striped.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_func::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_StripedSet
-    CDSUNIT_DECLARE_RefinableSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string.cpp b/tests/unit/set2/set_insdel_string.cpp
deleted file mode 100644 (file)
index 0e9af0b..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-
-namespace set2 {
-    CPPUNIT_TEST_SUITE_REGISTRATION( Set_InsDel_string );
-
-    void Set_InsDel_string::setUpParams( const CppUnitMini::TestCfg& cfg )
-    {
-        c_nSetSize = cfg.getSizeT("MapSize", c_nSetSize );
-        c_nInsertThreadCount = cfg.getSizeT("InsertThreadCount", c_nInsertThreadCount );
-        c_nDeleteThreadCount = cfg.getSizeT("DeleteThreadCount", c_nDeleteThreadCount );
-        c_nThreadPassCount = cfg.getSizeT("ThreadPassCount", c_nThreadPassCount );
-        c_nMaxLoadFactor = cfg.getSizeT("MaxLoadFactor", c_nMaxLoadFactor );
-        c_bPrintGCState = cfg.getBool("PrintGCStateFlag", c_bPrintGCState );
-
-        c_nCuckooInitialSize = cfg.getSizeT("CuckooInitialSize", c_nCuckooInitialSize );
-        c_nCuckooProbesetSize = cfg.getSizeT("CuckooProbesetSize", c_nCuckooProbesetSize );
-        c_nCuckooProbesetThreshold = cfg.getSizeT("CuckooProbesetThreshold", c_nCuckooProbesetThreshold );
-
-        c_nFeldmanSet_HeadBits = cfg.getSizeT("FeldmanMapHeadBits", c_nFeldmanSet_HeadBits);
-        c_nFeldmanSet_ArrayBits = cfg.getSizeT("FeldmanMapArrayBits", c_nFeldmanSet_ArrayBits);
-
-        if ( c_nInsertThreadCount == 0 )
-            c_nInsertThreadCount = std::thread::hardware_concurrency();
-        if ( c_nDeleteThreadCount == 0 )
-            c_nDeleteThreadCount = std::thread::hardware_concurrency();
-    }
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string.h b/tests/unit/set2/set_insdel_string.h
deleted file mode 100644 (file)
index 0025704..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_type.h"
-#include "cppunit/thread.h"
-
-#include <vector>
-
-namespace set2 {
-
-#define TEST_CASE(TAG, X)  void X();
-
-    class Set_InsDel_string: public CppUnitMini::TestCase
-    {
-    public:
-        size_t c_nSetSize = 1000000;            // set size
-        size_t c_nInsertThreadCount = 4;  // count of insertion thread
-        size_t c_nDeleteThreadCount = 4;  // count of deletion thread
-        size_t c_nThreadPassCount = 4;    // pass count for each thread
-        size_t c_nMaxLoadFactor = 8;      // maximum load factor
-        bool   c_bPrintGCState = true;
-
-        size_t  c_nCuckooInitialSize = 1024;// initial size for CuckooSet
-        size_t  c_nCuckooProbesetSize = 16; // CuckooSet probeset size (only for list-based probeset)
-        size_t  c_nCuckooProbesetThreshold = 0; // CUckooSet probeset threshold (0 - use default)
-
-        size_t c_nFeldmanSet_HeadBits = 10;
-        size_t c_nFeldmanSet_ArrayBits = 4;
-
-        size_t c_nLoadFactor = 2;
-
-    private:
-        typedef std::string key_type;
-        typedef size_t      value_type;
-
-        const std::vector<std::string> *  m_parrString;
-
-        template <class Set>
-        class Inserter: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-            typedef typename Set::value_type    keyval_type;
-
-            virtual Inserter *    clone()
-            {
-                return new Inserter( *this );
-            }
-        public:
-            size_t  m_nInsertSuccess;
-            size_t  m_nInsertFailed;
-
-        public:
-            Inserter( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Inserter( Inserter& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_string&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_string&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nInsertSuccess =
-                    m_nInsertFailed = 0;
-
-                const std::vector<std::string>& arrString = *getTest().m_parrString;
-                size_t nArrSize = arrString.size();
-                size_t const nSetSize = getTest().c_nSetSize;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
-                            if ( rSet.insert( keyval_type(arrString[nItem % nArrSize], nItem * 8) ) )
-                                ++m_nInsertSuccess;
-                            else
-                                ++m_nInsertFailed;
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
-                            if ( rSet.insert( keyval_type( arrString[nItem % nArrSize], nItem * 8) ) )
-                                ++m_nInsertSuccess;
-                            else
-                                ++m_nInsertFailed;
-                        }
-                    }
-                }
-            }
-        };
-
-        template <class Set>
-        class Deleter: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual Deleter *    clone()
-            {
-                return new Deleter( *this );
-            }
-        public:
-            size_t  m_nDeleteSuccess;
-            size_t  m_nDeleteFailed;
-
-        public:
-            Deleter( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Deleter( Deleter& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_string&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_string&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nDeleteSuccess =
-                    m_nDeleteFailed = 0;
-
-                const std::vector<std::string>& arrString = *getTest().m_parrString;
-                size_t nArrSize = arrString.size();
-                size_t const nSetSize = getTest().c_nSetSize;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
-                            if ( rSet.erase( arrString[nItem % nArrSize] ) )
-                                ++m_nDeleteSuccess;
-                            else
-                                ++m_nDeleteFailed;
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
-                            if ( rSet.erase( arrString[nItem % nArrSize] ) )
-                                ++m_nDeleteSuccess;
-                            else
-                                ++m_nDeleteFailed;
-                        }
-                    }
-                }
-            }
-        };
-
-        template <typename GC, class Set>
-        class Extractor: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual Extractor *    clone()
-            {
-                return new Extractor( *this );
-            }
-        public:
-            size_t  m_nDeleteSuccess;
-            size_t  m_nDeleteFailed;
-
-        public:
-            Extractor( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Extractor( Extractor& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_string&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_string&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nDeleteSuccess =
-                    m_nDeleteFailed = 0;
-
-                typename Set::guarded_ptr gp;
-
-                const std::vector<std::string>& arrString = *getTest().m_parrString;
-                size_t nArrSize = arrString.size();
-                size_t const nSetSize = getTest().c_nSetSize;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
-                            gp = rSet.extract( arrString[nItem % nArrSize]);
-                            if (  gp )
-                                ++m_nDeleteSuccess;
-                            else
-                                ++m_nDeleteFailed;
-                            gp.release();
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
-                            gp = rSet.extract( arrString[nItem % nArrSize]);
-                            if ( gp )
-                                ++m_nDeleteSuccess;
-                            else
-                                ++m_nDeleteFailed;
-                            gp.release();
-                        }
-                    }
-                }
-            }
-        };
-
-        template <typename RCU, class Set>
-        class Extractor<cds::urcu::gc<RCU>, Set >: public CppUnitMini::TestThread
-        {
-            Set&     m_Set;
-
-            virtual Extractor *    clone()
-            {
-                return new Extractor( *this );
-            }
-        public:
-            size_t  m_nDeleteSuccess;
-            size_t  m_nDeleteFailed;
-
-        public:
-            Extractor( CppUnitMini::ThreadPool& pool, Set& rSet )
-                : CppUnitMini::TestThread( pool )
-                , m_Set( rSet )
-            {}
-            Extractor( Extractor& src )
-                : CppUnitMini::TestThread( src )
-                , m_Set( src.m_Set )
-            {}
-
-            Set_InsDel_string&  getTest()
-            {
-                return reinterpret_cast<Set_InsDel_string&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rSet = m_Set;
-
-                m_nDeleteSuccess =
-                    m_nDeleteFailed = 0;
-
-                typename Set::exempt_ptr xp;
-
-                const std::vector<std::string>& arrString = *getTest().m_parrString;
-                size_t nArrSize = arrString.size();
-                size_t const nSetSize = getTest().c_nSetSize;
-                size_t const nPassCount = getTest().c_nThreadPassCount;
-
-                if ( m_nThreadNo & 1 ) {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = 0; nItem < nSetSize; ++nItem ) {
-                            if ( Set::c_bExtractLockExternal ) {
-                                {
-                                    typename Set::rcu_lock l;
-                                    xp = rSet.extract( arrString[nItem % nArrSize] );
-                                    if ( xp )
-                                        ++m_nDeleteSuccess;
-                                    else
-                                        ++m_nDeleteFailed;
-                                }
-                            }
-                            else {
-                                xp = rSet.extract( arrString[nItem % nArrSize] );
-                                if ( xp )
-                                    ++m_nDeleteSuccess;
-                                else
-                                    ++m_nDeleteFailed;
-                            }
-                            xp.release();
-                        }
-                    }
-                }
-                else {
-                    for ( size_t nPass = 0; nPass < nPassCount; ++nPass ) {
-                        for ( size_t nItem = nSetSize; nItem > 0; --nItem ) {
-                            if ( Set::c_bExtractLockExternal ) {
-                                {
-                                    typename Set::rcu_lock l;
-                                    xp = rSet.extract( arrString[nItem % nArrSize] );
-                                    if ( xp )
-                                        ++m_nDeleteSuccess;
-                                    else
-                                        ++m_nDeleteFailed;
-                                }
-                            }
-                            else {
-                                xp = rSet.extract( arrString[nItem % nArrSize] );
-                                if ( xp )
-                                    ++m_nDeleteSuccess;
-                                else
-                                    ++m_nDeleteFailed;
-                            }
-                            xp.release();
-                        }
-                    }
-                }
-            }
-        };
-
-    protected:
-        template <class Set>
-        void do_test( Set& testSet )
-        {
-            typedef Inserter<Set>       InserterThread;
-            typedef Deleter<Set>        DeleterThread;
-            cds::OS::Timer    timer;
-
-            CppUnitMini::ThreadPool pool( *this );
-            pool.add( new InserterThread( pool, testSet ), c_nInsertThreadCount );
-            pool.add( new DeleterThread( pool, testSet ), c_nDeleteThreadCount );
-            pool.run();
-            CPPUNIT_MSG( "   Duration=" << pool.avgDuration() );
-
-            size_t nInsertSuccess = 0;
-            size_t nInsertFailed = 0;
-            size_t nDeleteSuccess = 0;
-            size_t nDeleteFailed = 0;
-            for ( CppUnitMini::ThreadPool::iterator it = pool.begin(); it != pool.end(); ++it ) {
-                InserterThread * pThread = dynamic_cast<InserterThread *>( *it );
-                if ( pThread ) {
-                    nInsertSuccess += pThread->m_nInsertSuccess;
-                    nInsertFailed += pThread->m_nInsertFailed;
-                }
-                else {
-                    DeleterThread * p = static_cast<DeleterThread *>( *it );
-                    nDeleteSuccess += p->m_nDeleteSuccess;
-                    nDeleteFailed += p->m_nDeleteFailed;
-                }
-            }
-
-            CPPUNIT_MSG( "    Totals: Ins succ=" << nInsertSuccess
-                << " Del succ=" << nDeleteSuccess << "\n"
-                      << "          : Ins fail=" << nInsertFailed
-                << " Del fail=" << nDeleteFailed
-                << " Set size=" << testSet.size()
-                );
-
-
-            CPPUNIT_MSG( "  Clear set (single-threaded)..." );
-            timer.reset();
-            for ( size_t i = 0; i < m_parrString->size(); ++i )
-                testSet.erase( (*m_parrString)[i] );
-            CPPUNIT_MSG( "   Duration=" << timer.duration() );
-            CPPUNIT_ASSERT( testSet.empty() );
-
-            additional_check( testSet );
-            print_stat(  testSet  );
-            additional_cleanup( testSet );
-        }
-
-        template <class Set>
-        void do_test_extract( Set& testSet )
-        {
-            typedef Inserter<Set>       InserterThread;
-            typedef Deleter<Set>        DeleterThread;
-            typedef Extractor<typename Set::gc, Set> ExtractThread;
-
-            size_t nDelThreadCount = c_nDeleteThreadCount / 2;
-
-            CppUnitMini::ThreadPool pool( *this );
-            pool.add( new InserterThread( pool, testSet ), c_nInsertThreadCount );
-            pool.add( new DeleterThread( pool, testSet ), nDelThreadCount );
-            pool.add( new ExtractThread( pool, testSet ), c_nDeleteThreadCount - nDelThreadCount );
-            pool.run();
-            CPPUNIT_MSG( "   Duration=" << pool.avgDuration() );
-
-            size_t nInsertSuccess = 0;
-            size_t nInsertFailed = 0;
-            size_t nDeleteSuccess = 0;
-            size_t nDeleteFailed = 0;
-            size_t nExtractSuccess = 0;
-            size_t nExtractFailed = 0;
-            for ( CppUnitMini::ThreadPool::iterator it = pool.begin(); it != pool.end(); ++it ) {
-                InserterThread * pThread = dynamic_cast<InserterThread *>( *it );
-                if ( pThread ) {
-                    nInsertSuccess += pThread->m_nInsertSuccess;
-                    nInsertFailed += pThread->m_nInsertFailed;
-                }
-                else {
-                    DeleterThread * p = dynamic_cast<DeleterThread *>( *it );
-                    if ( p ) {
-                        nDeleteSuccess += p->m_nDeleteSuccess;
-                        nDeleteFailed += p->m_nDeleteFailed;
-                    }
-                    else {
-                        ExtractThread * pExtract = dynamic_cast<ExtractThread *>( *it );
-                        assert( pExtract );
-                        nExtractSuccess += pExtract->m_nDeleteSuccess;
-                        nExtractFailed += pExtract->m_nDeleteFailed;
-                    }
-                }
-            }
-
-            CPPUNIT_MSG( "    Totals: Ins succ=" << nInsertSuccess
-                << " Del succ=" << nDeleteSuccess
-                << " Extract succ= " << nExtractSuccess << "\n"
-                << "          : Ins fail=" << nInsertFailed
-                << " Del fail=" << nDeleteFailed
-                << " Extract fail=" << nExtractFailed
-                << " Set size=" << testSet.size()
-                );
-
-
-            CPPUNIT_MSG( "  Clear set (single-threaded)..." );
-            cds::OS::Timer    timer;
-            for ( size_t i = 0; i < m_parrString->size(); ++i )
-                testSet.erase( (*m_parrString)[i] );
-            CPPUNIT_MSG( "   Duration=" << timer.duration() );
-            CPPUNIT_ASSERT( testSet.empty() );
-
-            additional_check( testSet );
-            print_stat(  testSet  );
-            additional_cleanup( testSet );
-        }
-
-        template <class Set>
-        void run_test()
-        {
-            m_parrString = &CppUnitMini::TestCase::getTestStrings();
-
-            CPPUNIT_MSG( "Thread count: insert=" << c_nInsertThreadCount
-                << " delete=" << c_nDeleteThreadCount
-                << " pass count=" << c_nThreadPassCount
-                << " set size=" << c_nSetSize
-                );
-
-            if ( Set::c_bLoadFactorDepended ) {
-                for ( c_nLoadFactor = 1; c_nLoadFactor <= c_nMaxLoadFactor; c_nLoadFactor *= 2 ) {
-                    CPPUNIT_MSG("  LoadFactor = " << c_nLoadFactor );
-                    Set s( *this );
-                    do_test( s );
-                    if ( c_bPrintGCState )
-                        print_gc_state();
-                }
-            }
-            else {
-                Set s( *this );
-                do_test( s );
-                if ( c_bPrintGCState )
-                    print_gc_state();
-            }
-        }
-
-        template <class Set>
-        void run_test_extract()
-        {
-            m_parrString = &CppUnitMini::TestCase::getTestStrings();
-
-            CPPUNIT_MSG( "Thread count: insert=" << c_nInsertThreadCount
-                << " delete=" << c_nDeleteThreadCount
-                << " pass count=" << c_nThreadPassCount
-                << " set size=" << c_nSetSize
-                );
-
-            if ( Set::c_bLoadFactorDepended ) {
-                for ( c_nLoadFactor = 1; c_nLoadFactor <= c_nMaxLoadFactor; c_nLoadFactor *= 2 ) {
-                    CPPUNIT_MSG("  LoadFactor = " << c_nLoadFactor );
-                    Set s( *this );
-                    do_test_extract( s );
-                    if ( c_bPrintGCState )
-                        print_gc_state();
-                }
-            }
-            else {
-                Set s( *this );
-                do_test_extract( s );
-                if ( c_bPrintGCState )
-                    print_gc_state();
-            }
-        }
-
-        void setUpParams( const CppUnitMini::TestCfg& cfg );
-
-#   include "set2/set_defs.h"
-        CDSUNIT_DECLARE_MichaelSet
-        CDSUNIT_DECLARE_SplitList
-        CDSUNIT_DECLARE_StripedSet
-        CDSUNIT_DECLARE_RefinableSet
-        CDSUNIT_DECLARE_CuckooSet
-        CDSUNIT_DECLARE_SkipListSet
-        CDSUNIT_DECLARE_EllenBinTreeSet
-        CDSUNIT_DECLARE_FeldmanHashSet_stdhash
-        CDSUNIT_DECLARE_FeldmanHashSet_city
-        CDSUNIT_DECLARE_StdSet
-
-        CPPUNIT_TEST_SUITE_(Set_InsDel_string, "Map_InsDel_func")
-            CDSUNIT_TEST_MichaelSet
-            CDSUNIT_TEST_SplitList
-            CDSUNIT_TEST_SkipListSet
-            CDSUNIT_TEST_FeldmanHashSet_stdhash
-            CDSUNIT_TEST_FeldmanHashSet_city
-            CDSUNIT_TEST_EllenBinTreeSet
-            CDSUNIT_TEST_StripedSet
-            CDSUNIT_TEST_RefinableSet
-            CDSUNIT_TEST_CuckooSet
-            CDSUNIT_TEST_StdSet
-        CPPUNIT_TEST_SUITE_END();
-    };
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_cuckoo.cpp b/tests/unit/set2/set_insdel_string_cuckoo.cpp
deleted file mode 100644 (file)
index 07557ae..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_cuckoo.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_CuckooSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_ellentree.cpp b/tests/unit/set2/set_insdel_string_ellentree.cpp
deleted file mode 100644 (file)
index 08fc39f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_ellen_bintree.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_EllenBinTreeSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_feldmanhashset.cpp b/tests/unit/set2/set_insdel_string_feldmanhashset.cpp
deleted file mode 100644 (file)
index 3072774..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_feldman_hashset.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_FeldmanHashSet_stdhash
-    CDSUNIT_DECLARE_FeldmanHashSet_city
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_michael.cpp b/tests/unit/set2/set_insdel_string_michael.cpp
deleted file mode 100644 (file)
index deefcd2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_michael.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_MichaelSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_skip.cpp b/tests/unit/set2/set_insdel_string_skip.cpp
deleted file mode 100644 (file)
index 9fbabf2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_skip_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SkipListSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_split.cpp b/tests/unit/set2/set_insdel_string_split.cpp
deleted file mode 100644 (file)
index 55ef8a0..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_split_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test_extract<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SplitList
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_std.cpp b/tests/unit/set2/set_insdel_string_std.cpp
deleted file mode 100644 (file)
index 04933be..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_std.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_StdSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdel_string_striped.cpp b/tests/unit/set2/set_insdel_string_striped.cpp
deleted file mode 100644 (file)
index 315d499..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdel_string.h"
-#include "set2/set_type_striped.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDel_string::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_StripedSet
-    CDSUNIT_DECLARE_RefinableSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind.cpp b/tests/unit/set2/set_insdelfind.cpp
deleted file mode 100644 (file)
index 77ca18a..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-
-namespace set2 {
-    CPPUNIT_TEST_SUITE_REGISTRATION( Set_InsDelFind );
-
-    void Set_InsDelFind::setUpParams( const CppUnitMini::TestCfg& cfg )
-    {
-        c_nSetSize = cfg.getSizeT("InitialMapSize", c_nSetSize );
-        c_nThreadCount = cfg.getSizeT("ThreadCount", c_nThreadCount );
-        c_nMaxLoadFactor = cfg.getSizeT("MaxLoadFactor", c_nMaxLoadFactor );
-        c_nInsertPercentage = cfg.getUInt("InsertPercentage", c_nInsertPercentage );
-        c_nDeletePercentage = cfg.getUInt("DeletePercentage", c_nDeletePercentage );
-        c_nDuration = cfg.getUInt("Duration", c_nDuration );
-        c_bPrintGCState = cfg.getBool("PrintGCStateFlag", c_bPrintGCState );
-
-        c_nCuckooInitialSize = cfg.getSizeT("CuckooInitialSize", c_nCuckooInitialSize );
-        c_nCuckooProbesetSize = cfg.getSizeT("CuckooProbesetSize", c_nCuckooProbesetSize );
-        c_nCuckooProbesetThreshold = cfg.getSizeT("CuckooProbesetThreshold", c_nCuckooProbesetThreshold );
-
-        c_nFeldmanSet_HeadBits = cfg.getSizeT("FeldmanMapHeadBits", c_nFeldmanSet_HeadBits);
-        c_nFeldmanSet_ArrayBits = cfg.getSizeT("FeldmanMapArrayBits", c_nFeldmanSet_ArrayBits);
-
-        if ( c_nThreadCount == 0 )
-            c_nThreadCount = std::thread::hardware_concurrency();
-
-        CPPUNIT_ASSERT( c_nInsertPercentage + c_nDeletePercentage <= 100 );
-
-        actions * pFirst = m_arrShuffle;
-        actions * pLast = m_arrShuffle + c_nInsertPercentage;
-        std::fill( pFirst, pLast, do_insert );
-        pFirst = pLast;
-        pLast += c_nDeletePercentage;
-        std::fill( pFirst, pLast, do_delete );
-        pFirst = pLast;
-        pLast = m_arrShuffle + sizeof(m_arrShuffle)/sizeof(m_arrShuffle[0]);
-        std::fill( pFirst, pLast, do_find );
-        shuffle( m_arrShuffle, pLast );
-    }
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind.h b/tests/unit/set2/set_insdelfind.h
deleted file mode 100644 (file)
index ad534bb..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_type.h"
-#include "cppunit/thread.h"
-
-namespace set2 {
-
-#define TEST_CASE(TAG, X)  void X();
-
-    class Set_InsDelFind: public CppUnitMini::TestCase
-    {
-    public:
-        size_t c_nSetSize = 500000;      // initial set size
-        size_t c_nThreadCount = 8;       // thread count
-        size_t c_nMaxLoadFactor = 8;     // maximum load factor
-        unsigned int c_nInsertPercentage = 5;
-        unsigned int c_nDeletePercentage = 5;
-        unsigned int c_nDuration = 30;   // test duration, seconds
-        bool c_bPrintGCState = true;
-
-        size_t  c_nCuckooInitialSize = 1024;// initial size for CuckooSet
-        size_t  c_nCuckooProbesetSize = 16; // CuckooSet probeset size (only for list-based probeset)
-        size_t  c_nCuckooProbesetThreshold = 0; // CUckooSet probeset threshold (0 - use default)
-
-        size_t c_nFeldmanSet_HeadBits = 10;
-        size_t c_nFeldmanSet_ArrayBits = 4;
-
-        size_t c_nLoadFactor = 2;
-
-    public:
-        enum actions
-        {
-            do_find,
-            do_insert,
-            do_delete
-        };
-        static const unsigned int c_nShuffleSize = 100;
-        actions m_arrShuffle[c_nShuffleSize];
-
-    protected:
-        typedef size_t  key_type;
-        typedef size_t  value_type;
-
-        template <class Set>
-        class WorkThread: public CppUnitMini::TestThread
-        {
-            Set&     m_Map;
-
-            virtual WorkThread *    clone()
-            {
-                return new WorkThread( *this );
-            }
-        public:
-            size_t  m_nInsertSuccess;
-            size_t  m_nInsertFailed;
-            size_t  m_nDeleteSuccess;
-            size_t  m_nDeleteFailed;
-            size_t  m_nFindSuccess;
-            size_t  m_nFindFailed;
-
-        public:
-            WorkThread( CppUnitMini::ThreadPool& pool, Set& rMap )
-                : CppUnitMini::TestThread( pool )
-                , m_Map( rMap )
-            {}
-            WorkThread( WorkThread& src )
-                : CppUnitMini::TestThread( src )
-                , m_Map( src.m_Map )
-            {}
-
-            Set_InsDelFind&  getTest()
-            {
-                return reinterpret_cast<Set_InsDelFind&>( m_Pool.m_Test );
-            }
-
-            virtual void init() { cds::threading::Manager::attachThread()   ; }
-            virtual void fini() { cds::threading::Manager::detachThread()   ; }
-
-            virtual void test()
-            {
-                Set& rMap = m_Map;
-
-                m_nInsertSuccess =
-                    m_nInsertFailed =
-                    m_nDeleteSuccess =
-                    m_nDeleteFailed =
-                    m_nFindSuccess =
-                    m_nFindFailed = 0;
-
-                actions * pAct = getTest().m_arrShuffle;
-                unsigned int i = 0;
-                size_t const nNormalize = size_t(-1) / ( getTest().c_nSetSize * 2);
-
-                size_t nRand = 0;
-                while ( !time_elapsed() ) {
-                    nRand = cds::bitop::RandXorShift(nRand);
-                    size_t n = nRand / nNormalize;
-                    switch ( pAct[i] ) {
-                    case do_find:
-                        if ( rMap.contains( n ))
-                            ++m_nFindSuccess;
-                        else
-                            ++m_nFindFailed;
-                        break;
-                    case do_insert:
-                        if ( rMap.insert( n ))
-                            ++m_nInsertSuccess;
-                        else
-                            ++m_nInsertFailed;
-                        break;
-                    case do_delete:
-                        if ( rMap.erase( n ))
-                            ++m_nDeleteSuccess;
-                        else
-                            ++m_nDeleteFailed;
-                        break;
-                    }
-
-                    if ( ++i >= c_nShuffleSize )
-                        i = 0;
-                }
-            }
-        };
-
-    protected:
-        template <class Set>
-        void do_test( Set& testSet )
-        {
-            typedef WorkThread<Set> work_thread;
-
-            // fill map - only odd number
-            {
-                size_t * pInitArr = new size_t[ c_nSetSize ];
-                size_t * pEnd = pInitArr + c_nSetSize;
-                for ( size_t i = 0; i < c_nSetSize; ++i )
-                    pInitArr[i] = i * 2 + 1;
-                shuffle( pInitArr, pEnd );
-                for ( size_t * p = pInitArr; p < pEnd; ++p )
-                    testSet.insert( typename Set::value_type( *p, *p ) );
-                delete [] pInitArr;
-            }
-
-            cds::OS::Timer    timer;
-
-            CppUnitMini::ThreadPool pool( *this );
-            pool.add( new work_thread( pool, testSet ), c_nThreadCount );
-            pool.run( c_nDuration );
-            CPPUNIT_MSG( "   Duration=" << pool.avgDuration() );
-
-            size_t nInsertSuccess = 0;
-            size_t nInsertFailed = 0;
-            size_t nDeleteSuccess = 0;
-            size_t nDeleteFailed = 0;
-            size_t nFindSuccess = 0;
-            size_t nFindFailed = 0;
-            for ( CppUnitMini::ThreadPool::iterator it = pool.begin(); it != pool.end(); ++it ) {
-                work_thread * pThread = static_cast<work_thread *>( *it );
-                assert( pThread != nullptr );
-                nInsertSuccess += pThread->m_nInsertSuccess;
-                nInsertFailed += pThread->m_nInsertFailed;
-                nDeleteSuccess += pThread->m_nDeleteSuccess;
-                nDeleteFailed += pThread->m_nDeleteFailed;
-                nFindSuccess += pThread->m_nFindSuccess;
-                nFindFailed += pThread->m_nFindFailed;
-            }
-
-            size_t nTotalOps = nInsertSuccess + nInsertFailed + nDeleteSuccess + nDeleteFailed + nFindSuccess + nFindFailed;
-
-            CPPUNIT_MSG( "  Totals (success/failed): \n\t"
-                      << "      Insert=" << nInsertSuccess << '/' << nInsertFailed << "\n\t"
-                      << "      Delete=" << nDeleteSuccess << '/' << nDeleteFailed << "\n\t"
-                      << "        Find=" << nFindSuccess   << '/' << nFindFailed   << "\n\t"
-                      << "       Speed=" << (nFindSuccess + nFindFailed) / c_nDuration << " find/sec\n\t"
-                      << "             " << (nInsertSuccess + nDeleteSuccess) / c_nDuration << " modify/sec\n\t"
-                      << "   Total ops=" << nTotalOps << "\n\t"
-                      << "       speed=" << nTotalOps / c_nDuration << " ops/sec\n\t"
-                      << "      Set size=" << testSet.size()
-                );
-
-
-            CPPUNIT_MSG( "  Clear map (single-threaded)..." );
-            timer.reset();
-            testSet.clear();
-            CPPUNIT_MSG( "   Duration=" << timer.duration() );
-            CPPUNIT_CHECK_EX( testSet.empty(), ((long long) testSet.size()) );
-
-            additional_check( testSet );
-            print_stat( testSet );
-            additional_cleanup( testSet );
-        }
-
-        template <class Set>
-        void run_test()
-        {
-            CPPUNIT_MSG( "Thread count=" << c_nThreadCount
-                << " initial map size=" << c_nSetSize
-                << " insert=" << c_nInsertPercentage << '%'
-                << " delete=" << c_nDeletePercentage << '%'
-                << " duration=" << c_nDuration << "s"
-                );
-
-            if ( Set::c_bLoadFactorDepended ) {
-                for ( c_nLoadFactor = 1; c_nLoadFactor <= c_nMaxLoadFactor; c_nLoadFactor *= 2 ) {
-                    CPPUNIT_MSG("  LoadFactor = " << c_nLoadFactor );
-                    Set s( *this );
-                    do_test( s );
-                    if ( c_bPrintGCState )
-                        print_gc_state();
-                }
-            }
-            else {
-                Set s( *this );
-                do_test( s );
-                if ( c_bPrintGCState )
-                    print_gc_state();
-            }
-        }
-
-        void setUpParams( const CppUnitMini::TestCfg& cfg );
-
-#   include "set2/set_defs.h"
-        CDSUNIT_DECLARE_MichaelSet
-        CDSUNIT_DECLARE_SplitList
-        CDSUNIT_DECLARE_StripedSet
-        CDSUNIT_DECLARE_RefinableSet
-        CDSUNIT_DECLARE_CuckooSet
-        CDSUNIT_DECLARE_SkipListSet
-        CDSUNIT_DECLARE_EllenBinTreeSet
-        CDSUNIT_DECLARE_FeldmanHashSet
-        CDSUNIT_DECLARE_StdSet
-
-        CPPUNIT_TEST_SUITE_(Set_InsDelFind, "Map_InsDelFind")
-            CDSUNIT_TEST_MichaelSet
-            CDSUNIT_TEST_SplitList
-            CDSUNIT_TEST_SkipListSet
-            CDSUNIT_TEST_FeldmanHashSet
-            CDSUNIT_TEST_EllenBinTreeSet
-            CDSUNIT_TEST_StripedSet
-            CDSUNIT_TEST_RefinableSet
-            CDSUNIT_TEST_CuckooSet
-            CDSUNIT_TEST_StdSet
-        CPPUNIT_TEST_SUITE_END();
-
-    };
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_cuckoo.cpp b/tests/unit/set2/set_insdelfind_cuckoo.cpp
deleted file mode 100644 (file)
index df5ff29..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_cuckoo.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_CuckooSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_ellentree.cpp b/tests/unit/set2/set_insdelfind_ellentree.cpp
deleted file mode 100644 (file)
index 670622f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_ellen_bintree.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_EllenBinTreeSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_feldmanhashset.cpp b/tests/unit/set2/set_insdelfind_feldmanhashset.cpp
deleted file mode 100644 (file)
index 115947e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_feldman_hashset.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_FeldmanHashSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_michael.cpp b/tests/unit/set2/set_insdelfind_michael.cpp
deleted file mode 100644 (file)
index 022acdb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_michael.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_MichaelSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_skip.cpp b/tests/unit/set2/set_insdelfind_skip.cpp
deleted file mode 100644 (file)
index 631081f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_skip_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SkipListSet
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_split.cpp b/tests/unit/set2/set_insdelfind_split.cpp
deleted file mode 100644 (file)
index 8719d8f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_split_list.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_SplitList
-} // namespace set2
diff --git a/tests/unit/set2/set_insdelfind_std.cpp b/tests/unit/set2/set_insdelfind_std.cpp
deleted file mode 100644 (file)
index 24b3f2c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    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 "set2/set_insdelfind.h"
-#include "set2/set_type_std.h"
-
-#undef TEST_CASE
-#define TEST_CASE(TAG, X)  void Set_InsDelFind::X() { run_test<typename set_type< TAG, key_type, value_type>::X>(); }
-#include "set2/set_defs.h"
-
-namespace set2 {
-    CDSUNIT_DECLARE_StdSet
-} // namespace set2