3 #include "set/hdr_multilevel_hashset.h"
4 #include <cds/urcu/signal_threaded.h>
5 #include <cds/container/multilevel_hashset_rcu.h>
6 #include "unit/print_multilevel_hashset_stat.h"
9 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
11 typedef cds::urcu::gc<cds::urcu::signal_threaded<>> rcu_type;
15 void MultiLevelHashSetHdrTest::rcu_sht_stdhash()
17 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
18 typedef size_t hash_type;
20 struct traits: public cc::multilevel_hashset::traits
22 typedef get_hash<hash_type> hash_accessor;
24 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
25 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
26 test_rcu<set_type, std::hash<hash_type>>(4, 2);
28 typedef cc::MultiLevelHashSet<
31 typename cc::multilevel_hashset::make_traits<
32 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
35 test_rcu<set_type2, std::hash<hash_type>>(4, 2);
39 void MultiLevelHashSetHdrTest::rcu_sht_hash128()
41 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
42 typedef hash128 hash_type;
44 struct traits: public cc::multilevel_hashset::traits
46 typedef get_hash<hash_type> hash_accessor;
47 typedef hash128::less less;
49 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
50 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash128!!!" );
51 test_rcu<set_type, hash128::make>(4, 2);
53 typedef cc::MultiLevelHashSet<
56 typename cc::multilevel_hashset::make_traits<
57 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
58 , co::less< hash_type::less >
61 test_rcu<set_type2, hash128::make>(4, 2);
65 void MultiLevelHashSetHdrTest::rcu_sht_stdhash_stat()
67 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
68 typedef size_t hash_type;
70 struct traits: public cc::multilevel_hashset::traits
72 typedef get_hash<hash_type> hash_accessor;
73 typedef cc::multilevel_hashset::stat<> stat;
75 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
76 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
77 test_rcu<set_type, std::hash<hash_type>>(4, 2);
79 typedef cc::MultiLevelHashSet<
82 typename cc::multilevel_hashset::make_traits<
83 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
84 ,co::stat< cc::multilevel_hashset::stat<>>
87 test_rcu<set_type2, std::hash<hash_type>>(4, 2);
91 void MultiLevelHashSetHdrTest::rcu_sht_hash128_stat()
93 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
94 typedef hash128 hash_type;
96 struct traits: public cc::multilevel_hashset::traits
98 typedef get_hash<hash_type> hash_accessor;
99 typedef hash128::cmp compare;
100 typedef cc::multilevel_hashset::stat<> stat;
102 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
103 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash_type!!!" );
104 test_rcu<set_type, hash_type::make>(4, 2);
106 typedef cc::MultiLevelHashSet<
109 typename cc::multilevel_hashset::make_traits<
110 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
111 ,co::stat< cc::multilevel_hashset::stat<>>
112 ,co::compare< hash128::cmp >
115 test_rcu<set_type2, hash_type::make>(4, 2);
119 void MultiLevelHashSetHdrTest::rcu_sht_stdhash_5_3()
121 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
122 typedef size_t hash_type;
124 struct traits: public cc::multilevel_hashset::traits
126 typedef get_hash<hash_type> hash_accessor;
128 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
129 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
130 test_rcu<set_type, std::hash<hash_type>>(5, 3);
132 typedef cc::MultiLevelHashSet<
135 typename cc::multilevel_hashset::make_traits<
136 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
139 test_rcu<set_type2, std::hash<hash_type>>(5, 3);
143 void MultiLevelHashSetHdrTest::rcu_sht_hash128_4_3()
145 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
146 typedef hash128 hash_type;
148 struct traits: public cc::multilevel_hashset::traits
150 typedef get_hash<hash_type> hash_accessor;
151 typedef co::v::sequential_consistent memory_model;
153 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
154 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash_type!!!" );
155 test_rcu<set_type, hash128::make >(4, 3);
157 typedef cc::MultiLevelHashSet<
160 typename cc::multilevel_hashset::make_traits<
161 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
162 ,co::memory_model< co::v::sequential_consistent >
165 test_rcu<set_type2, hash128::make >(4, 3);
169 void MultiLevelHashSetHdrTest::rcu_sht_stdhash_5_3_stat()
171 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
172 typedef size_t hash_type;
174 struct traits: public cc::multilevel_hashset::traits
176 typedef get_hash<hash_type> hash_accessor;
177 typedef cc::multilevel_hashset::stat<> stat;
179 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
180 static_assert(std::is_same< typename set_type::hash_type, size_t>::value, "set::hash_type != size_t!!!" );
181 test_rcu<set_type, std::hash<hash_type>>(5, 3);
183 typedef cc::MultiLevelHashSet<
186 typename cc::multilevel_hashset::make_traits<
187 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
188 ,co::stat< cc::multilevel_hashset::stat<>>
191 test_rcu<set_type2, std::hash<hash_type>>(5, 3);
195 void MultiLevelHashSetHdrTest::rcu_sht_hash128_4_3_stat()
197 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
198 typedef hash128 hash_type;
200 struct traits: public cc::multilevel_hashset::traits
202 typedef get_hash<hash_type> hash_accessor;
203 typedef cc::multilevel_hashset::stat<> stat;
204 typedef hash128::less less;
205 typedef hash128::cmp compare;
207 typedef cc::MultiLevelHashSet< rcu_type, Item<hash_type>, traits > set_type;
208 static_assert(std::is_same< typename set_type::hash_type, hash_type>::value, "set::hash_type != hash_type!!!" );
209 test_rcu<set_type, hash_type::make>(4, 3);
211 typedef cc::MultiLevelHashSet<
214 typename cc::multilevel_hashset::make_traits<
215 cc::multilevel_hashset::hash_accessor< get_hash<hash_type>>
216 , co::stat< cc::multilevel_hashset::stat<>>
217 , co::less< hash_type::less >
218 , co::compare< hash128::cmp >
221 test_rcu<set_type2, hash_type::make>(4, 3);