X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2Fstress%2Fmain.cpp;h=e4ad86cacc3c1761d7e6f3dd84c2d1934d4469f1;hb=b7a65e0dcd4cf9b7a05ab43fe492318510fffc90;hp=cd3da6de48599e21809ecc62dbbace061ce63be3;hpb=40e34e6d0b104b6f5aff506ad67d43fd410e52bc;p=libcds.git diff --git a/test/stress/main.cpp b/test/stress/main.cpp index cd3da6de..e4ad86ca 100644 --- a/test/stress/main.cpp +++ b/test/stress/main.cpp @@ -41,6 +41,12 @@ # include #endif +#ifdef CDS_ENABLE_HPSTAT +# include +# include +# include +#endif + int main( int argc, char **argv ) { int result; @@ -58,13 +64,15 @@ int main( int argc, char **argv ) cds_test::config const& general_cfg = cds_test::stress_fixture::get_config( "General" ); // Init SMR - cds::gc::HP hzpGC( general_cfg.get_size_t( "hazard_pointer_count", 16 )); - hzpGC.setScanType( general_cfg.get( "HZP_scan_strategy", "inplace" ) == "inplace" ? cds::gc::HP::scan_type::inplace : cds::gc::HP::scan_type::classic ); + cds::gc::HP hzpGC( + general_cfg.get_size_t( "hazard_pointer_count", 16 ), + general_cfg.get_size_t( "hp_max_thread_count", 0 ), + general_cfg.get_size_t( "hp_retired_ptr_count", 0 ), + general_cfg.get( "hp_scan_strategy", "inplace" ) == "inplace" ? cds::gc::HP::scan_type::inplace : cds::gc::HP::scan_type::classic + ); cds::gc::DHP dhpGC( - general_cfg.get_size_t( "dhp_liberate_threshold", 1024 ), - general_cfg.get_size_t( "dhp_init_guard_count", 16 ), - general_cfg.get_size_t( "dhp_epoch_count", 16 ) + general_cfg.get_size_t( "dhp_init_guard_count", 16 ) ); #ifdef CDSUNIT_USE_URCU @@ -95,6 +103,23 @@ int main( int argc, char **argv ) cds::threading::Manager::detachThread(); } + +#ifdef CDS_ENABLE_HPSTAT + { + cds::gc::HP::stat const& st = cds::gc::HP::postmortem_statistics(); + EXPECT_EQ( st.guard_allocated, st.guard_freed ); + EXPECT_EQ( st.retired_count, st.free_count ); + std::cout << st; + } + { + cds::gc::DHP::stat const& st = cds::gc::DHP::postmortem_statistics(); + EXPECT_EQ( st.guard_allocated, st.guard_freed ); + EXPECT_EQ( st.retired_count, st.free_count ); + std::cout << st; + } +#endif + cds::Terminate(); + return result; }