Migrated Set_DelOdd stress test to gtest framework
[libcds.git] / test / stress / set / delodd / set_delodd_split.cpp
1 /*
2     This file is a part of libcds - Concurrent Data Structures library
3
4     (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
5
6     Source code repo: http://github.com/khizmax/libcds/
7     Download: http://sourceforge.net/projects/libcds/files/
8     
9     Redistribution and use in source and binary forms, with or without
10     modification, are permitted provided that the following conditions are met:
11
12     * Redistributions of source code must retain the above copyright notice, this
13       list of conditions and the following disclaimer.
14
15     * Redistributions in binary form must reproduce the above copyright notice,
16       this list of conditions and the following disclaimer in the documentation
17       and/or other materials provided with the distribution.
18
19     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23     FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24     DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27     OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.     
29 */
30
31 #include "set_delodd.h"
32 #include "set_type_split_list.h"
33
34 #define CDSSTRESS_SplitListSet( splitlist_set_type ) \
35     TEST_P( Set_DelOdd_LF, splitlist_set_type ) \
36     { \
37         typedef set::set_type< tag_SplitListSet, key_thread, size_t >::splitlist_set_type set_type; \
38         run_test_extract<set_type>(); \
39     }
40
41 namespace set {
42
43     CDSSTRESS_SplitListSet( SplitList_Michael_HP_dyn_cmp )
44     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_dyn_cmp )
45     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_dyn_cmp )
46     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_dyn_cmp )
47     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_dyn_cmp )
48 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
49     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_dyn_cmp )
50     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_dyn_cmp )
51 #endif
52
53     CDSSTRESS_SplitListSet( SplitList_Michael_HP_dyn_cmp_stat )
54     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_dyn_cmp_stat )
55     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_dyn_cmp_stat )
56     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_dyn_cmp_stat )
57     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_dyn_cmp_stat )
58 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
59     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_dyn_cmp_stat )
60     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_dyn_cmp_stat )
61 #endif
62
63     CDSSTRESS_SplitListSet( SplitList_Michael_HP_dyn_cmp_seqcst )
64     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_dyn_cmp_seqcst )
65     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_dyn_cmp_seqcst )
66     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_dyn_cmp_seqcst )
67     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_dyn_cmp_seqcst )
68 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
69     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_dyn_cmp_seqcst )
70     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_dyn_cmp_seqcst )
71 #endif
72
73     CDSSTRESS_SplitListSet( SplitList_Michael_HP_st_cmp )
74     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_st_cmp )
75     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_st_cmp )
76     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_st_cmp )
77     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_st_cmp )
78 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
79     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_st_cmp )
80     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_st_cmp )
81 #endif
82
83     CDSSTRESS_SplitListSet( SplitList_Michael_HP_dyn_less )
84     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_dyn_less )
85     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_dyn_less )
86     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_dyn_less )
87     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_dyn_less )
88 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
89     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_dyn_less )
90     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_dyn_less )
91 #endif
92
93     CDSSTRESS_SplitListSet( SplitList_Michael_HP_st_less )
94     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_st_less )
95     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_st_less )
96     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_st_less )
97     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_st_less )
98 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
99     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_st_less )
100     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_st_less )
101 #endif
102
103     CDSSTRESS_SplitListSet( SplitList_Michael_HP_st_less_stat )
104     CDSSTRESS_SplitListSet( SplitList_Michael_DHP_st_less_stat )
105     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPI_st_less_stat )
106     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPB_st_less_stat )
107     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_GPT_st_less_stat )
108 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
109     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHB_st_less_stat )
110     CDSSTRESS_SplitListSet( SplitList_Michael_RCU_SHT_st_less_stat )
111 #endif
112
113     CDSSTRESS_SplitListSet( SplitList_Lazy_HP_dyn_cmp )
114     CDSSTRESS_SplitListSet( SplitList_Lazy_DHP_dyn_cmp )
115     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPI_dyn_cmp )
116     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPB_dyn_cmp )
117     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPT_dyn_cmp )
118 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
119     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHB_dyn_cmp )
120     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHT_dyn_cmp )
121 #endif
122
123     CDSSTRESS_SplitListSet( SplitList_Lazy_HP_dyn_cmp_stat )
124     CDSSTRESS_SplitListSet( SplitList_Lazy_DHP_dyn_cmp_stat )
125     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPI_dyn_cmp_stat )
126     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPB_dyn_cmp_stat )
127     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPT_dyn_cmp_stat )
128 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
129     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHB_dyn_cmp_stat )
130     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHT_dyn_cmp_stat )
131 #endif
132
133     CDSSTRESS_SplitListSet( SplitList_Lazy_HP_st_cmp )
134     CDSSTRESS_SplitListSet( SplitList_Lazy_DHP_st_cmp )
135     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPI_st_cmp )
136     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPB_st_cmp )
137     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPT_st_cmp )
138 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
139     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHB_st_cmp )
140     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHT_st_cmp )
141 #endif
142
143     CDSSTRESS_SplitListSet( SplitList_Lazy_HP_dyn_less )
144     CDSSTRESS_SplitListSet( SplitList_Lazy_DHP_dyn_less )
145     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPI_dyn_less )
146     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPB_dyn_less )
147     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPT_dyn_less )
148 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
149     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHB_dyn_less )
150     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHT_dyn_less )
151 #endif
152
153     CDSSTRESS_SplitListSet( SplitList_Lazy_HP_st_less )
154     CDSSTRESS_SplitListSet( SplitList_Lazy_DHP_st_less )
155     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPI_st_less )
156     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPB_st_less )
157     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPT_st_less )
158 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
159     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHB_st_less )
160     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHT_st_less )
161 #endif
162
163     CDSSTRESS_SplitListSet( SplitList_Lazy_HP_st_less_stat )
164     CDSSTRESS_SplitListSet( SplitList_Lazy_DHP_st_less_stat )
165     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPI_st_less_stat )
166     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPB_st_less_stat )
167     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_GPT_st_less_stat )
168 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
169     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHB_st_less_stat )
170     CDSSTRESS_SplitListSet( SplitList_Lazy_RCU_SHT_st_less_stat )
171 #endif
172 } // namespace set