Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / set / hdr_intrusive_skiplist_rcu_gpb.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_skiplist_set_rcu.h"
4
5 #include <cds/urcu/general_buffered.h>
6 #include <cds/intrusive/skip_list_rcu.h>
7 #include "map/print_skiplist_stat.h"
8
9 namespace set {
10     namespace {
11         typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_type;
12     }
13
14     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmp()
15     {
16         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
17
18         typedef ci::SkipListSet< rcu_type, item,
19             ci::skip_list::make_traits<
20                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
21                 ,co::compare< cmp<item> >
22                 ,ci::opt::disposer< faked_disposer >
23                 ,co::item_counter< cds::atomicity::item_counter >
24             >::type
25         >   set_type;
26
27         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
28     }
29
30     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_less()
31     {
32         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
33
34         typedef ci::SkipListSet< rcu_type, item,
35             ci::skip_list::make_traits<
36                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
37                 ,co::less< less<item> >
38                 ,ci::opt::disposer< faked_disposer >
39                 ,co::item_counter< cds::atomicity::item_counter >
40             >::type
41         >   set_type;
42
43         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
44     }
45
46     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmpmix()
47     {
48         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
49
50         typedef ci::SkipListSet< rcu_type, item,
51             ci::skip_list::make_traits<
52                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
53                 ,co::less< less<item> >
54                 ,ci::opt::disposer< faked_disposer >
55                 ,co::item_counter< cds::atomicity::item_counter >
56                 ,co::compare< cmp<item> >
57             >::type
58         >   set_type;
59
60         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
61     }
62
63     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmp_stat()
64     {
65         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
66
67         typedef ci::SkipListSet< rcu_type, item,
68             ci::skip_list::make_traits<
69                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
70                 ,co::compare< cmp<item> >
71                 ,ci::opt::disposer< faked_disposer >
72                 ,co::stat< ci::skip_list::stat<> >
73                 ,co::item_counter< cds::atomicity::item_counter >
74             >::type
75         >   set_type;
76
77         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
78     }
79
80     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_less_stat()
81     {
82         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
83
84         typedef ci::SkipListSet< rcu_type, item,
85             ci::skip_list::make_traits<
86                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
87                 ,co::less< less<item> >
88                 ,co::item_counter< cds::atomicity::item_counter >
89                 ,ci::opt::disposer< faked_disposer >
90                 ,co::stat< ci::skip_list::stat<> >
91             >::type
92         >   set_type;
93
94         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
95     }
96
97     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmpmix_stat()
98     {
99         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
100
101         typedef ci::SkipListSet< rcu_type, item,
102             ci::skip_list::make_traits<
103                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
104                 ,co::less< less<item> >
105                 ,ci::opt::disposer< faked_disposer >
106                 ,co::compare< cmp<item> >
107                 ,co::stat< ci::skip_list::stat<> >
108                 ,co::item_counter< cds::atomicity::item_counter >
109             >::type
110         >   set_type;
111
112         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
113     }
114
115     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmp_xorshift()
116     {
117         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
118
119         typedef ci::SkipListSet< rcu_type, item,
120             ci::skip_list::make_traits<
121                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
122                 ,co::compare< cmp<item> >
123                 ,co::item_counter< cds::atomicity::item_counter >
124                 ,ci::opt::disposer< faked_disposer >
125                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
126             >::type
127         >   set_type;
128
129         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
130     }
131
132     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_less_xorshift()
133     {
134         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
135
136         typedef ci::SkipListSet< rcu_type, item,
137             ci::skip_list::make_traits<
138                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
139                 ,co::less< less<item> >
140                 ,ci::opt::disposer< faked_disposer >
141                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
142                 ,co::item_counter< cds::atomicity::item_counter >
143             >::type
144         >   set_type;
145
146         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
147     }
148
149     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmpmix_xorshift()
150     {
151         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
152
153         typedef ci::SkipListSet< rcu_type, item,
154             ci::skip_list::make_traits<
155                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
156                 ,co::less< less<item> >
157                 ,ci::opt::disposer< faked_disposer >
158                 ,co::compare< cmp<item> >
159                 ,co::item_counter< cds::atomicity::item_counter >
160                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
161             >::type
162         >   set_type;
163
164         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
165     }
166
167         void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmp_xorshift_stat()
168     {
169         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
170
171         typedef ci::SkipListSet< rcu_type, item,
172             ci::skip_list::make_traits<
173                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
174                 ,co::compare< cmp<item> >
175                 ,co::item_counter< cds::atomicity::item_counter >
176                 ,ci::opt::disposer< faked_disposer >
177                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
178                 ,co::stat< ci::skip_list::stat<> >
179             >::type
180         >   set_type;
181
182         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
183     }
184
185     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_less_xorshift_stat()
186     {
187         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
188
189         typedef ci::SkipListSet< rcu_type, item,
190             ci::skip_list::make_traits<
191                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
192                 ,co::less< less<item> >
193                 ,ci::opt::disposer< faked_disposer >
194                 ,co::item_counter< cds::atomicity::item_counter >
195                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
196                 ,co::stat< ci::skip_list::stat<> >
197             >::type
198         >   set_type;
199
200         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
201     }
202
203     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmpmix_xorshift_stat()
204     {
205         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
206
207         typedef ci::SkipListSet< rcu_type, item,
208             ci::skip_list::make_traits<
209                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
210                 ,co::less< less<item> >
211                 ,co::item_counter< cds::atomicity::item_counter >
212                 ,ci::opt::disposer< faked_disposer >
213                 ,co::compare< cmp<item> >
214                 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
215                 ,co::stat< ci::skip_list::stat<> >
216             >::type
217         >   set_type;
218
219         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
220     }
221
222
223     //*********
224     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmp_pascal()
225     {
226         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
227
228         typedef ci::SkipListSet< rcu_type, item,
229             ci::skip_list::make_traits<
230                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
231                 ,co::compare< cmp<item> >
232                 ,co::item_counter< cds::atomicity::item_counter >
233                 ,ci::opt::disposer< faked_disposer >
234                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
235             >::type
236         >   set_type;
237
238         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
239     }
240
241     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_less_pascal()
242     {
243         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
244
245         typedef ci::SkipListSet< rcu_type, item,
246             ci::skip_list::make_traits<
247                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
248                 ,co::less< less<item> >
249                 ,co::item_counter< cds::atomicity::item_counter >
250                 ,ci::opt::disposer< faked_disposer >
251                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
252             >::type
253         >   set_type;
254
255         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
256     }
257
258     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmpmix_pascal()
259     {
260         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
261
262         typedef ci::SkipListSet< rcu_type, item,
263             ci::skip_list::make_traits<
264                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
265                 ,co::less< less<item> >
266                 ,ci::opt::disposer< faked_disposer >
267                 ,co::compare< cmp<item> >
268                 ,co::item_counter< cds::atomicity::item_counter >
269                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
270             >::type
271         >   set_type;
272
273         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
274     }
275
276         void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmp_pascal_stat()
277     {
278         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
279
280         typedef ci::SkipListSet< rcu_type, item,
281             ci::skip_list::make_traits<
282                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
283                 ,co::compare< cmp<item> >
284                 ,ci::opt::disposer< faked_disposer >
285                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
286                 ,co::stat< ci::skip_list::stat<> >
287                 ,co::item_counter< cds::atomicity::item_counter >
288             >::type
289         >   set_type;
290
291         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
292     }
293
294     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_less_pascal_stat()
295     {
296         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
297
298         typedef ci::SkipListSet< rcu_type, item,
299             ci::skip_list::make_traits<
300                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
301                 ,co::less< less<item> >
302                 ,ci::opt::disposer< faked_disposer >
303                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
304                 ,co::stat< ci::skip_list::stat<> >
305                 ,co::item_counter< cds::atomicity::item_counter >
306             >::type
307         >   set_type;
308
309         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
310     }
311
312     void IntrusiveSkipListSetRCU::skiplist_rcu_gpb_base_cmpmix_pascal_stat()
313     {
314         typedef base_int_item< ci::skip_list::node< rcu_type> > item;
315
316         typedef ci::SkipListSet< rcu_type, item,
317             ci::skip_list::make_traits<
318                 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
319                 ,co::less< less<item> >
320                 ,ci::opt::disposer< faked_disposer >
321                 ,co::compare< cmp<item> >
322                 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
323                 ,co::stat< ci::skip_list::stat<> >
324                 ,co::item_counter< cds::atomicity::item_counter >
325             >::type
326         >   set_type;
327
328         test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
329     }
330
331 }   // namespace set
332
333 CPPUNIT_TEST_SUITE_REGISTRATION(set::IntrusiveSkipListSetRCU);