From: khizmax Date: Mon, 16 Feb 2015 18:04:14 +0000 (+0300) Subject: Added Bronson AVL-tree header tests X-Git-Tag: v2.1.0~305^2~55 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=434995b20ece8289da4812dc1eb9dd500caec7bb;p=libcds.git Added Bronson AVL-tree header tests --- diff --git a/projects/Win/vc12/hdr-test-tree.vcxproj b/projects/Win/vc12/hdr-test-tree.vcxproj index 4c5817a1..a6d325d3 100644 --- a/projects/Win/vc12/hdr-test-tree.vcxproj +++ b/projects/Win/vc12/hdr-test-tree.vcxproj @@ -546,6 +546,14 @@ + + + + + + + + diff --git a/projects/Win/vc12/hdr-test-tree.vcxproj.filters b/projects/Win/vc12/hdr-test-tree.vcxproj.filters index 1d5d6045..3a377d9b 100644 --- a/projects/Win/vc12/hdr-test-tree.vcxproj.filters +++ b/projects/Win/vc12/hdr-test-tree.vcxproj.filters @@ -123,5 +123,29 @@ container + + container + + + container + + + container + + + container + + + container + + + container + + + container + + + container + \ No newline at end of file diff --git a/projects/source.test-hdr.mk b/projects/source.test-hdr.mk index ac20800c..f515a717 100644 --- a/projects/source.test-hdr.mk +++ b/projects/source.test-hdr.mk @@ -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 \ diff --git a/tests/test-hdr/tree/hdr_bronson_avltree_map.h b/tests/test-hdr/tree/hdr_bronson_avltree_map.h index 97ed012c..6054555d 100644 --- a/tests/test-hdr/tree/hdr_bronson_avltree_map.h +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map.h @@ -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 index 00000000..f8be4e06 --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi.cpp @@ -0,0 +1,160 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include + +#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 + 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 > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,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(); + } + + 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(); + } + + 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(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_cmpless() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::compare< compare > + ,co::less< std::less > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_ic() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,co::item_counter< cds::atomicity::item_counter > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + 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(); + } + + 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(); + } + + 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(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_relaxed_insert() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,cc::bronson_avltree::relaxed_insert< true > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_less_relaxed_insert_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,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(); + } + +} // 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 index 00000000..fb505c23 --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpi_pool_monitor.cpp @@ -0,0 +1,112 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include +#include +#include + +#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 + 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 > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,co::stat< cc::bronson_avltree::stat<> > + ,co::sync_monitor< cds::sync::pool_monitor > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + 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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + 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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpi_pool_monitor_less_relaxed_insert_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,co::stat< cc::bronson_avltree::stat<> > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + +} // 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 index 00000000..c67649cc --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt.cpp @@ -0,0 +1,160 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include + +#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 + 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 > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,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(); + } + + 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(); + } + + 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(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmpless() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::compare< compare > + ,co::less< std::less > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_ic() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,co::item_counter< cds::atomicity::item_counter > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + 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(); + } + + 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(); + } + + 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(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_relaxed_insert() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,cc::bronson_avltree::relaxed_insert< true > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,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(); + } + +} // 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 index 00000000..9701349f --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_gpt_pool_monitor.cpp @@ -0,0 +1,112 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include +#include +#include + +#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 + 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 > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,co::stat< cc::bronson_avltree::stat<> > + ,co::sync_monitor< cds::sync::pool_monitor > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + 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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + 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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + + void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_pool_monitor_less_relaxed_insert_stat() + { + struct traits: public + cc::bronson_avltree::make_traits< + co::less< std::less > + ,co::stat< cc::bronson_avltree::stat<> > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); + } + +} // 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 index 00000000..f4cd4ad5 --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb.cpp @@ -0,0 +1,184 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include + +#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 + 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 > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,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(); +#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(); +#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(); +#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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,co::item_counter< cds::atomicity::item_counter > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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(); +#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(); +#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(); +#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 > + ,cc::bronson_avltree::relaxed_insert< true > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,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(); +#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 index 00000000..3e5d6d69 --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_shb_pool_monitor.cpp @@ -0,0 +1,125 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include +#include +#include + +#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 + 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 > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,co::stat< cc::bronson_avltree::stat<> > + ,co::sync_monitor< cds::sync::pool_monitor > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,co::stat< cc::bronson_avltree::stat<> > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 index 00000000..44fb3cfa --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht.cpp @@ -0,0 +1,184 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include + +#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 + 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 > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,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(); +#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(); +#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(); +#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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,co::item_counter< cds::atomicity::item_counter > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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(); +#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(); +#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(); +#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 > + ,cc::bronson_avltree::relaxed_insert< true > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,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(); +#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 index 00000000..d21d0ce0 --- /dev/null +++ b/tests/test-hdr/tree/hdr_bronson_avltree_map_rcu_sht_pool_monitor.cpp @@ -0,0 +1,125 @@ +//$$CDS-header$$ + +#include "tree/hdr_bronson_avltree_map.h" +#include +#include +#include +#include + +#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 + 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 > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,co::stat< cc::bronson_avltree::stat<> > + ,co::sync_monitor< cds::sync::pool_monitor > + ,cc::bronson_avltree::relaxed_insert< false > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#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 > + ,co::stat< cc::bronson_avltree::stat<> > + ,cc::bronson_avltree::relaxed_insert< true > + ,co::sync_monitor< cds::sync::pool_monitor > + >::type + {}; + typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type; + test(); +#endif + } +} // namespace tree