3 #include "tree/hdr_ellenbintree_map.h"
4 #include <cds/urcu/general_buffered.h>
5 #include <cds/container/ellen_bintree_map_rcu.h>
7 #include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
8 #include "unit/print_ellenbintree_stat.h"
11 namespace cc = cds::container;
12 namespace co = cds::opt;
14 typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_type;
16 typedef cc::ellen_bintree::map_node<rcu_type, EllenBinTreeMapHdrTest::key_type, EllenBinTreeMapHdrTest::value_type> tree_leaf_node;
17 typedef cc::ellen_bintree::internal_node< EllenBinTreeMapHdrTest::key_type, tree_leaf_node > tree_internal_node;
18 typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node> tree_update_desc;
21 template <typename Tree>
22 void operator()( Tree const& t)
24 std::cout << t.statistics();
30 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less()
32 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
33 cc::ellen_bintree::make_map_traits<
38 test_rcu<map_type, print_stat>();
41 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp()
43 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
44 cc::ellen_bintree::make_map_traits<
45 co::compare< compare >
49 test_rcu<map_type, print_stat>();
52 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmpless()
54 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
55 cc::ellen_bintree::make_map_traits<
56 co::compare< compare >
61 test_rcu<map_type, print_stat>();
64 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_ic()
66 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
67 cc::ellen_bintree::make_map_traits<
69 ,co::item_counter< cds::atomicity::item_counter >
73 test_rcu<map_type, print_stat>();
76 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp_ic()
78 struct map_traits : public cc::ellen_bintree::traits {
79 typedef cds::atomicity::item_counter item_counter;
80 typedef EllenBinTreeMapHdrTest::compare compare;
82 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type, map_traits > map_type;
84 test_rcu<map_type, print_stat>();
87 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_stat()
89 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
90 cc::ellen_bintree::make_map_traits<
92 ,co::stat< cc::ellen_bintree::stat<> >
96 test_rcu<map_type, print_stat>();
99 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat()
101 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
102 cc::ellen_bintree::make_map_traits<
103 co::item_counter< cds::atomicity::item_counter >
104 ,co::stat< cc::ellen_bintree::stat<> >
105 ,co::compare< compare >
109 test_rcu<map_type, print_stat>();
112 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_cmp_ic_stat_yield()
114 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
115 cc::ellen_bintree::make_map_traits<
116 co::item_counter< cds::atomicity::item_counter >
117 ,co::stat< cc::ellen_bintree::stat<> >
118 ,co::compare< compare >
119 , co::back_off< cds::backoff::yield >
123 test_rcu<map_type, print_stat>();
126 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_pool()
128 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
129 cc::ellen_bintree::make_map_traits<
131 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
132 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
136 test_rcu<map_type, print_stat>();
139 void EllenBinTreeMapHdrTest::EllenBinTree_rcu_gpb_less_pool_ic_stat()
141 typedef cc::EllenBinTreeMap< rcu_type, key_type, value_type,
142 cc::ellen_bintree::make_map_traits<
144 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
145 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
146 ,co::item_counter< cds::atomicity::item_counter >
147 ,co::stat< cc::ellen_bintree::stat<> >
151 test_rcu<map_type, print_stat>();