Fixed bug in BronsonAVLTreeMap::extract_min()/extract_max()/clear()
[libcds.git] / test / stress / main.cpp
index cd3da6de48599e21809ecc62dbbace061ce63be3..e4ad86cacc3c1761d7e6f3dd84c2d1934d4469f1 100644 (file)
 #   include <cds/urcu/signal_threaded.h>\r
 #endif\r
 \r
+#ifdef CDS_ENABLE_HPSTAT\r
+#   include <cds_test/stat_hp_out.h>\r
+#   include <cds_test/stat_dhp_out.h>\r
+#   include <iostream>\r
+#endif\r
+\r
 int main( int argc, char **argv )\r
 {\r
     int result;\r
@@ -58,13 +64,15 @@ int main( int argc, char **argv )
         cds_test::config const& general_cfg = cds_test::stress_fixture::get_config( "General" );\r
 \r
         // Init SMR\r
-        cds::gc::HP hzpGC( general_cfg.get_size_t( "hazard_pointer_count", 16 ));\r
-        hzpGC.setScanType( general_cfg.get( "HZP_scan_strategy", "inplace" ) == "inplace" ? cds::gc::HP::scan_type::inplace : cds::gc::HP::scan_type::classic );\r
+        cds::gc::HP hzpGC( \r
+            general_cfg.get_size_t( "hazard_pointer_count", 16 ),\r
+            general_cfg.get_size_t( "hp_max_thread_count", 0 ),\r
+            general_cfg.get_size_t( "hp_retired_ptr_count", 0 ),\r
+            general_cfg.get( "hp_scan_strategy", "inplace" ) == "inplace" ? cds::gc::HP::scan_type::inplace : cds::gc::HP::scan_type::classic\r
+        );\r
 \r
         cds::gc::DHP dhpGC(\r
-            general_cfg.get_size_t( "dhp_liberate_threshold", 1024 ),\r
-            general_cfg.get_size_t( "dhp_init_guard_count", 16 ),\r
-            general_cfg.get_size_t( "dhp_epoch_count", 16 )\r
+            general_cfg.get_size_t( "dhp_init_guard_count", 16 )\r
         );\r
 \r
 #ifdef CDSUNIT_USE_URCU\r
@@ -95,6 +103,23 @@ int main( int argc, char **argv )
 \r
         cds::threading::Manager::detachThread();\r
     }\r
+\r
+#ifdef CDS_ENABLE_HPSTAT\r
+    {\r
+        cds::gc::HP::stat const& st = cds::gc::HP::postmortem_statistics();\r
+        EXPECT_EQ( st.guard_allocated, st.guard_freed );\r
+        EXPECT_EQ( st.retired_count, st.free_count );\r
+        std::cout << st;\r
+    }\r
+    {\r
+        cds::gc::DHP::stat const& st = cds::gc::DHP::postmortem_statistics();\r
+        EXPECT_EQ( st.guard_allocated, st.guard_freed );\r
+        EXPECT_EQ( st.retired_count, st.free_count );\r
+        std::cout << st;\r
+    }\r
+#endif\r
+\r
     cds::Terminate();\r
+\r
     return result;\r
 }\r