Added Bronson AVL-tree header tests
authorkhizmax <libcds.dev@gmail.com>
Mon, 16 Feb 2015 18:04:14 +0000 (21:04 +0300)
committerkhizmax <libcds.dev@gmail.com>
Mon, 16 Feb 2015 18:04:14 +0000 (21:04 +0300)
12 files changed:
projects/Win/vc12/hdr-test-tree.vcxproj
projects/Win/vc12/hdr-test-tree.vcxproj.filters
projects/source.test-hdr.mk
tests/test-hdr/tree/hdr_bronson_avltree_map.h
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht.cpp [new file with mode: 0644]
tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp [new file with mode: 0644]

index 4c5817a1bcbccb2bec0ae9a395ae54b0665fb4ce..a6d325d3f4dd523256710ced698c2158927f59f6 100644 (file)
   <ItemGroup>\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpb.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpb_pool_monitor.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpi.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpt.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_shb.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_sht.cpp" />\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map_dhp.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map_hp.cpp" />\r
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_ellenbintree_map_rcu_gpb.cpp" />\r
index 1d5d60454c3f40e9676b7147d82618dba62b8d20..3a377d9bbed68d2a70af2787fd6cdf88d0448cf4 100644 (file)
     <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpb_pool_monitor.cpp">\r
       <Filter>container</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpi.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpt.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_shb.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_sht.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\..\..\tests\test-hdr\tree\hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp">\r
+      <Filter>container</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
index ac20800cd5db94302001e6b1e89731b968b4dd71..f515a7175e9babc14bb9c8694d5f74a88c563f30 100644 (file)
@@ -246,7 +246,18 @@ CDS_TESTHDR_TREE := \
     tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpi.cpp \
     tests/test-hdr/tree/hdr_ellenbintree_set_rcu_gpt.cpp \
     tests/test-hdr/tree/hdr_ellenbintree_set_rcu_shb.cpp \
-    tests/test-hdr/tree/hdr_ellenbintree_set_rcu_sht.cpp
+    tests/test-hdr/tree/hdr_ellenbintree_set_rcu_sht.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpb.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpb_pool_monitor.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht.cpp \
+    tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp \
+    
 
 CDS_TESTHDR_MISC := \
     tests/test-hdr/misc/cxx11_atomic_class.cpp \
index 97ed012ce94856a35fc77103bb180e4d8af238e6..6054555d0b92e1e0b3e33aea142cabab60527904 100644 (file)
@@ -505,6 +505,23 @@ namespace tree {
             PrintStat()(s);
         }
 
+        void BronsonAVLTree_rcu_gpi_less();
+        void BronsonAVLTree_rcu_gpi_less_stat();
+        void BronsonAVLTree_rcu_gpi_cmp();
+        void BronsonAVLTree_rcu_gpi_cmp_stat();
+        void BronsonAVLTree_rcu_gpi_cmpless();
+        void BronsonAVLTree_rcu_gpi_less_ic();
+        void BronsonAVLTree_rcu_gpi_cmp_ic();
+        void BronsonAVLTree_rcu_gpi_cmp_ic_stat();
+        void BronsonAVLTree_rcu_gpi_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_gpi_less_relaxed_insert();
+        void BronsonAVLTree_rcu_gpi_less_relaxed_insert_stat();
+        void BronsonAVLTree_rcu_gpi_pool_monitor_less();
+        void BronsonAVLTree_rcu_gpi_pool_monitor_less_stat();
+        void BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat();
+        void BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert();
+        void BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert_stat();
 
         void BronsonAVLTree_rcu_gpb_less();
         void BronsonAVLTree_rcu_gpb_less_stat();
@@ -524,7 +541,79 @@ namespace tree {
         void BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert();
         void BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert_stat();
 
+        void BronsonAVLTree_rcu_gpt_less();
+        void BronsonAVLTree_rcu_gpt_less_stat();
+        void BronsonAVLTree_rcu_gpt_cmp();
+        void BronsonAVLTree_rcu_gpt_cmp_stat();
+        void BronsonAVLTree_rcu_gpt_cmpless();
+        void BronsonAVLTree_rcu_gpt_less_ic();
+        void BronsonAVLTree_rcu_gpt_cmp_ic();
+        void BronsonAVLTree_rcu_gpt_cmp_ic_stat();
+        void BronsonAVLTree_rcu_gpt_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_gpt_less_relaxed_insert();
+        void BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat();
+        void BronsonAVLTree_rcu_gpt_pool_monitor_less();
+        void BronsonAVLTree_rcu_gpt_pool_monitor_less_stat();
+        void BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat();
+        void BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert();
+        void BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert_stat();
+
+        void BronsonAVLTree_rcu_shb_less();
+        void BronsonAVLTree_rcu_shb_less_stat();
+        void BronsonAVLTree_rcu_shb_cmp();
+        void BronsonAVLTree_rcu_shb_cmp_stat();
+        void BronsonAVLTree_rcu_shb_cmpless();
+        void BronsonAVLTree_rcu_shb_less_ic();
+        void BronsonAVLTree_rcu_shb_cmp_ic();
+        void BronsonAVLTree_rcu_shb_cmp_ic_stat();
+        void BronsonAVLTree_rcu_shb_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_shb_less_relaxed_insert();
+        void BronsonAVLTree_rcu_shb_less_relaxed_insert_stat();
+        void BronsonAVLTree_rcu_shb_pool_monitor_less();
+        void BronsonAVLTree_rcu_shb_pool_monitor_less_stat();
+        void BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat();
+        void BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert();
+        void BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert_stat();
+
+        void BronsonAVLTree_rcu_sht_less();
+        void BronsonAVLTree_rcu_sht_less_stat();
+        void BronsonAVLTree_rcu_sht_cmp();
+        void BronsonAVLTree_rcu_sht_cmp_stat();
+        void BronsonAVLTree_rcu_sht_cmpless();
+        void BronsonAVLTree_rcu_sht_less_ic();
+        void BronsonAVLTree_rcu_sht_cmp_ic();
+        void BronsonAVLTree_rcu_sht_cmp_ic_stat();
+        void BronsonAVLTree_rcu_sht_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_sht_less_relaxed_insert();
+        void BronsonAVLTree_rcu_sht_less_relaxed_insert_stat();
+        void BronsonAVLTree_rcu_sht_pool_monitor_less();
+        void BronsonAVLTree_rcu_sht_pool_monitor_less_stat();
+        void BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat();
+        void BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat_yield();
+        void BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert();
+        void BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert_stat();
+
         CPPUNIT_TEST_SUITE( BronsonAVLTreeHdrTest )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmpless )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_less_relaxed_insert_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert_stat )
+
             CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less )
             CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_less_stat )
             CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_cmp )
@@ -542,6 +631,61 @@ namespace tree {
             CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat_yield )
             CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert )
             CPPUNIT_TEST( BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert_stat )
+
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmpless )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert_stat )
+
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmpless )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_less_relaxed_insert_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert_stat )
+
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmpless )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_ic )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_less_relaxed_insert_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat_yield )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert )
+            CPPUNIT_TEST( BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert_stat )
+
         CPPUNIT_TEST_SUITE_END()
     };
 } // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi.cpp
new file mode 100644 (file)
index 0000000..f8be4e0
--- /dev/null
@@ -0,0 +1,160 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/general_instant.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::general_instant<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+    } // namespace
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmp()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmp_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmpless()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::less< std::less<key_type> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_ic()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmp_ic()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmp_ic_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmp_ic_stat_yield()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_relaxed_insert()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_relaxed_insert_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp
new file mode 100644 (file)
index 0000000..fb505c2
--- /dev/null
@@ -0,0 +1,112 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/general_instant.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+#include <cds/sync/pool_monitor.h>
+#include <cds/memory/vyukov_queue_pool.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::general_instant<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+
+        typedef cds::memory::vyukov_queue_pool< std::mutex > simple_pool;
+        typedef cds::memory::lazy_vyukov_queue_pool< std::mutex > lazy_pool;
+        typedef cds::memory::bounded_vyukov_queue_pool< std::mutex > bounded_pool;
+    } // namespace
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+        void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<bounded_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_cmp_ic_stat_yield()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt.cpp
new file mode 100644 (file)
index 0000000..c67649c
--- /dev/null
@@ -0,0 +1,160 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/general_threaded.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+    } // namespace
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmpless()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::less< std::less<key_type> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_ic()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_ic()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_ic_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_ic_stat_yield()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_relaxed_insert()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp
new file mode 100644 (file)
index 0000000..9701349
--- /dev/null
@@ -0,0 +1,112 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/general_threaded.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+#include <cds/sync/pool_monitor.h>
+#include <cds/memory/vyukov_queue_pool.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+
+        typedef cds::memory::vyukov_queue_pool< std::mutex > simple_pool;
+        typedef cds::memory::lazy_vyukov_queue_pool< std::mutex > lazy_pool;
+        typedef cds::memory::bounded_vyukov_queue_pool< std::mutex > bounded_pool;
+    } // namespace
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+        void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<bounded_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_cmp_ic_stat_yield()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert_stat()
+    {
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+    }
+
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb.cpp
new file mode 100644 (file)
index 0000000..f4cd4ad
--- /dev/null
@@ -0,0 +1,184 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/signal_buffered.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+    } // namespace
+#endif
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_less()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_less_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_cmp()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_cmp_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_cmpless()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::less< std::less<key_type> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_less_ic()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_cmp_ic()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_cmp_ic_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_cmp_ic_stat_yield()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_less_relaxed_insert()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_less_relaxed_insert_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp
new file mode 100644 (file)
index 0000000..3e5d6d6
--- /dev/null
@@ -0,0 +1,125 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/signal_buffered.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+#include <cds/sync/pool_monitor.h>
+#include <cds/memory/vyukov_queue_pool.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+
+        typedef cds::memory::vyukov_queue_pool< std::mutex > simple_pool;
+        typedef cds::memory::lazy_vyukov_queue_pool< std::mutex > lazy_pool;
+        typedef cds::memory::bounded_vyukov_queue_pool< std::mutex > bounded_pool;
+    } // namespace
+#endif
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_pool_monitor_less()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_pool_monitor_less_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<bounded_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_pool_monitor_cmp_ic_stat_yield()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_shb_pool_monitor_less_relaxed_insert_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht.cpp
new file mode 100644 (file)
index 0000000..44fb3cf
--- /dev/null
@@ -0,0 +1,184 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/signal_threaded.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+    } // namespace
+#endif
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_less()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_less_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_cmp()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_cmp_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_cmpless()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::less< std::less<key_type> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_less_ic()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_cmp_ic()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_cmp_ic_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_cmp_ic_stat_yield()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_less_relaxed_insert()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_less_relaxed_insert_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+} // namespace tree
diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp
new file mode 100644 (file)
index 0000000..d21d0ce
--- /dev/null
@@ -0,0 +1,125 @@
+//$$CDS-header$$
+
+#include "tree/hdr_bronson_avltree_map.h"
+#include <cds/urcu/signal_threaded.h>
+#include <cds/container/bronson_avltree_map_rcu.h>
+#include <cds/sync/pool_monitor.h>
+#include <cds/memory/vyukov_queue_pool.h>
+
+#include "unit/print_bronsonavltree_stat.h"
+
+namespace tree {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+    namespace cc = cds::container;
+    namespace co = cds::opt;
+    namespace {
+        typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_type;
+
+        struct print_stat {
+            template <typename Tree>
+            void operator()( Tree const& t )
+            {
+                std::cout << t.statistics();
+            }
+        };
+
+        typedef cds::memory::vyukov_queue_pool< std::mutex > simple_pool;
+        typedef cds::memory::lazy_vyukov_queue_pool< std::mutex > lazy_pool;
+        typedef cds::memory::bounded_vyukov_queue_pool< std::mutex > bounded_pool;
+    } // namespace
+#endif
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_pool_monitor_less()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_pool_monitor_less_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+                ,cc::bronson_avltree::relaxed_insert< false >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::sync_monitor< cds::sync::pool_monitor<bounded_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_pool_monitor_cmp_ic_stat_yield()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::compare< compare >
+                ,co::item_counter< cds::atomicity::item_counter >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,co::back_off< cds::backoff::yield >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+
+    void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_sht_pool_monitor_less_relaxed_insert_stat()
+    {
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        struct traits: public 
+            cc::bronson_avltree::make_traits<
+                co::less< std::less<key_type> >
+                ,co::stat< cc::bronson_avltree::stat<> >
+                ,cc::bronson_avltree::relaxed_insert< true >
+                ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
+            >::type
+        {};
+        typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
+        test<map_type, print_stat>();
+#endif
+    }
+} // namespace tree