Added copyright and license
[libcds.git] / tests / test-hdr / set / hdr_skiplist_set_rcu_sht.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/hdr_skiplist_set_rcu.h"
32
33 #include <cds/urcu/signal_threaded.h>
34 #include <cds/container/skip_list_set_rcu.h>
35
36 #include "unit/michael_alloc.h"
37 #include "map/print_skiplist_stat.h"
38
39 namespace set {
40 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
41     namespace {
42         typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_type;
43     }
44 #endif
45
46     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_less()
47     {
48 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
49         typedef cc::SkipListSet< rcu_type, item,
50             cc::skip_list::make_traits<
51                 co::less< less<item > >
52                 ,co::item_counter< simple_item_counter >
53             >::type
54         > set;
55         test< set, misc::print_skiplist_stat<set::stat> >();
56 #endif
57     }
58
59     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_cmp()
60     {
61 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
62         typedef cc::SkipListSet< rcu_type, item,
63             cc::skip_list::make_traits<
64             co::compare< cmp<item > >
65             ,co::item_counter< simple_item_counter >
66             >::type
67         > set;
68         test< set, misc::print_skiplist_stat<set::stat> >();
69 #endif
70     }
71
72     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_cmpless()
73     {
74 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
75         typedef cc::SkipListSet< rcu_type, item,
76             cc::skip_list::make_traits<
77             co::less< less<item > >
78             ,co::compare< cmp<item > >
79             ,co::item_counter< simple_item_counter >
80             >::type
81         > set;
82         test< set, misc::print_skiplist_stat<set::stat> >();
83 #endif
84     }
85
86     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_less_stat()
87     {
88 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
89         typedef cc::SkipListSet< rcu_type, item,
90             cc::skip_list::make_traits<
91                 co::less< less<item > >
92                 ,co::item_counter< simple_item_counter >
93                 ,co::stat< cc::skip_list::stat<> >
94             >::type
95         > set;
96         test< set, misc::print_skiplist_stat<set::stat> >();
97 #endif
98     }
99
100     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_cmp_stat()
101     {
102 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
103         typedef cc::SkipListSet< rcu_type, item,
104             cc::skip_list::make_traits<
105                 co::compare< cmp<item > >
106                 ,co::item_counter< simple_item_counter >
107                 ,co::stat< cc::skip_list::stat<> >
108             >::type
109         > set;
110         test< set, misc::print_skiplist_stat<set::stat> >();
111 #endif
112     }
113
114     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_cmpless_stat()
115     {
116 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
117         typedef cc::SkipListSet< rcu_type, item,
118             cc::skip_list::make_traits<
119                 co::less< less<item > >
120                 ,co::compare< cmp<item > >
121                 ,co::item_counter< simple_item_counter >
122                 ,co::stat< cc::skip_list::stat<> >
123             >::type
124         > set;
125         test< set, misc::print_skiplist_stat<set::stat> >();
126 #endif
127     }
128
129     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_xorshift_less()
130     {
131 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
132         typedef cc::SkipListSet< rcu_type, item,
133             cc::skip_list::make_traits<
134                 co::less< less<item > >
135                 ,co::item_counter< simple_item_counter >
136                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
137             >::type
138         > set;
139         test< set, misc::print_skiplist_stat<set::stat> >();
140 #endif
141     }
142
143     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_xorshift_cmp()
144     {
145 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
146         typedef cc::SkipListSet< rcu_type, item,
147             cc::skip_list::make_traits<
148                 co::compare< cmp<item > >
149                 ,co::item_counter< simple_item_counter >
150                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
151             >::type
152         > set;
153         test< set, misc::print_skiplist_stat<set::stat> >();
154 #endif
155     }
156
157     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_xorshift_cmpless()
158     {
159 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
160         typedef cc::SkipListSet< rcu_type, item,
161             cc::skip_list::make_traits<
162                 co::less< less<item > >
163                 ,co::compare< cmp<item > >
164                 ,co::item_counter< simple_item_counter >
165                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
166             >::type
167         > set;
168         test< set, misc::print_skiplist_stat<set::stat> >();
169 #endif
170     }
171
172     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_xorshift_less_stat()
173     {
174 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
175         typedef cc::SkipListSet< rcu_type, item,
176             cc::skip_list::make_traits<
177                 co::less< less<item > >
178                 ,co::item_counter< simple_item_counter >
179                 ,co::stat< cc::skip_list::stat<> >
180                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
181             >::type
182         > set;
183         test< set, misc::print_skiplist_stat<set::stat> >();
184 #endif
185     }
186
187     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_xorshift_cmp_stat()
188     {
189 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
190         typedef cc::SkipListSet< rcu_type, item,
191             cc::skip_list::make_traits<
192                 co::compare< cmp<item > >
193                 ,co::item_counter< simple_item_counter >
194                 ,co::stat< cc::skip_list::stat<> >
195                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
196             >::type
197         > set;
198         test< set, misc::print_skiplist_stat<set::stat> >();
199 #endif
200     }
201
202     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_xorshift_cmpless_stat()
203     {
204 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
205         typedef cc::SkipListSet< rcu_type, item,
206             cc::skip_list::make_traits<
207                 co::less< less<item > >
208                 ,co::compare< cmp<item > >
209                 ,co::item_counter< simple_item_counter >
210                 ,co::stat< cc::skip_list::stat<> >
211                 ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
212             >::type
213         > set;
214         test< set, misc::print_skiplist_stat<set::stat> >();
215 #endif
216     }
217
218     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_turbopas_less()
219     {
220 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
221         typedef cc::SkipListSet< rcu_type, item,
222             cc::skip_list::make_traits<
223                 co::less< less<item > >
224                 ,co::item_counter< simple_item_counter >
225                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
226             >::type
227         > set;
228         test< set, misc::print_skiplist_stat<set::stat> >();
229 #endif
230     }
231
232     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_turbopas_cmp()
233     {
234 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
235         typedef cc::SkipListSet< rcu_type, item,
236             cc::skip_list::make_traits<
237                 co::compare< cmp<item > >
238                 ,co::item_counter< simple_item_counter >
239                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
240             >::type
241         > set;
242         test< set, misc::print_skiplist_stat<set::stat> >();
243 #endif
244     }
245
246     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_turbopas_cmpless()
247     {
248 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
249         typedef cc::SkipListSet< rcu_type, item,
250             cc::skip_list::make_traits<
251                 co::less< less<item > >
252                 ,co::compare< cmp<item > >
253                 ,co::item_counter< simple_item_counter >
254                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
255             >::type
256         > set;
257         test< set, misc::print_skiplist_stat<set::stat> >();
258 #endif
259     }
260
261     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_turbopas_less_stat()
262     {
263 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
264         typedef cc::SkipListSet< rcu_type, item,
265             cc::skip_list::make_traits<
266                 co::less< less<item > >
267                 ,co::item_counter< simple_item_counter >
268                 ,co::stat< cc::skip_list::stat<> >
269                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
270             >::type
271         > set;
272         test< set, misc::print_skiplist_stat<set::stat> >();
273 #endif
274     }
275
276     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_turbopas_cmp_stat()
277     {
278 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
279         typedef cc::SkipListSet< rcu_type, item,
280             cc::skip_list::make_traits<
281                 co::compare< cmp<item > >
282                 ,co::item_counter< simple_item_counter >
283                 ,co::stat< cc::skip_list::stat<> >
284                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
285             >::type
286         > set;
287         test< set, misc::print_skiplist_stat<set::stat> >();
288 #endif
289     }
290
291     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_turbopas_cmpless_stat()
292     {
293 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
294         typedef cc::SkipListSet< rcu_type, item,
295             cc::skip_list::make_traits<
296                 co::less< less<item > >
297                 ,co::compare< cmp<item > >
298                 ,co::item_counter< simple_item_counter >
299                 ,co::stat< cc::skip_list::stat<> >
300                 ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
301             >::type
302         > set;
303         test< set, misc::print_skiplist_stat<set::stat> >();
304 #endif
305     }
306
307     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_michaelalloc_less()
308     {
309 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
310         typedef cc::SkipListSet< rcu_type, item,
311             cc::skip_list::make_traits<
312                 co::less< less<item > >
313                 ,co::item_counter< simple_item_counter >
314                 ,co::allocator< memory::MichaelAllocator<int> >
315             >::type
316         > set;
317         test< set, misc::print_skiplist_stat<set::stat> >();
318 #endif
319     }
320
321     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_michaelalloc_cmp()
322     {
323 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
324         typedef cc::SkipListSet< rcu_type, item,
325             cc::skip_list::make_traits<
326                 co::compare< cmp<item > >
327                 ,co::item_counter< simple_item_counter >
328                 ,co::allocator< memory::MichaelAllocator<int> >
329             >::type
330         > set;
331         test< set, misc::print_skiplist_stat<set::stat> >();
332 #endif
333     }
334
335     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_michaelalloc_cmpless()
336     {
337 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
338         typedef cc::SkipListSet< rcu_type, item,
339             cc::skip_list::make_traits<
340                 co::less< less<item > >
341                 ,co::compare< cmp<item > >
342                 ,co::item_counter< simple_item_counter >
343                 ,co::allocator< memory::MichaelAllocator<int> >
344             >::type
345         > set;
346         test< set, misc::print_skiplist_stat<set::stat> >();
347 #endif
348     }
349
350     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_michaelalloc_less_stat()
351     {
352 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
353         typedef cc::SkipListSet< rcu_type, item,
354             cc::skip_list::make_traits<
355                 co::less< less<item > >
356                 ,co::item_counter< simple_item_counter >
357                 ,co::stat< cc::skip_list::stat<> >
358                 ,co::allocator< memory::MichaelAllocator<int> >
359             >::type
360         > set;
361         test< set, misc::print_skiplist_stat<set::stat> >();
362 #endif
363     }
364
365     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_michaelalloc_cmp_stat()
366     {
367 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
368         typedef cc::SkipListSet< rcu_type, item,
369             cc::skip_list::make_traits<
370                 co::compare< cmp<item > >
371                 ,co::item_counter< simple_item_counter >
372                 ,co::stat< cc::skip_list::stat<> >
373                 ,co::allocator< memory::MichaelAllocator<int> >
374             >::type
375         > set;
376         test< set, misc::print_skiplist_stat<set::stat> >();
377 #endif
378     }
379
380     void SkipListSetRCUHdrTest::SkipList_RCU_SHT_michaelalloc_cmpless_stat()
381     {
382 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
383         typedef cc::SkipListSet< rcu_type, item,
384             cc::skip_list::make_traits<
385                 co::less< less<item > >
386                 ,co::compare< cmp<item > >
387                 ,co::item_counter< simple_item_counter >
388                 ,co::stat< cc::skip_list::stat<> >
389                 ,co::allocator< memory::MichaelAllocator<int> >
390             >::type
391         > set;
392         test< set, misc::print_skiplist_stat<set::stat> >();
393 #endif
394     }
395
396 } // namespace set