Trims down unnecessary test cases for Stacks
[libcds.git] / test / stress / stack / stack_type.h
index 43aee4428a2daf387573238d2bdcc77af99a9ced..8ae69cd3111f0156232a35cf2ac66346c59827a8 100644 (file)
@@ -1,11 +1,11 @@
 /*
     This file is a part of libcds - Concurrent Data Structures library
 
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
 
     Source code repo: http://github.com/khizmax/libcds/
     Download: http://sourceforge.net/projects/libcds/files/
-    
+
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions are met:
 
@@ -25,7 +25,7 @@
     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.     
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 #ifndef CDSSTRESS_STACK_TYPES_H
@@ -45,6 +45,7 @@
 #include <vector>
 
 #include <cds_test/stress_test.h>
+#include <cds_test/stat_flat_combining_out.h>
 
 namespace stack {
 
@@ -122,7 +123,7 @@ namespace stack {
             bool pop( T& v )
             {
                 unique_lock l( m_Lock );
-                if ( !m_Impl.empty() ) {
+                if ( !m_Impl.empty()) {
                     v = m_Impl.top();
                     m_Impl.pop();
                     return true;
@@ -186,10 +187,7 @@ namespace stack {
         struct traits_Treiber_exp: public
             cds::container::treiber_stack::make_traits<
                 cds::opt::back_off<
-                    cds::backoff::exponential<
-                        cds::backoff::pause,
-                        cds::backoff::yield
-                    >
+                    cds::backoff::make_exponential_t<cds::backoff::pause, cds::backoff::yield >
                 >
             >::type
         {};
@@ -275,7 +273,7 @@ namespace stack {
         struct traits_Elimination_dyn: public
             cds::container::treiber_stack::make_traits <
                 cds::opt::enable_elimination<true>
-                , cds::opt::buffer< cds::opt::v::dynamic_buffer<int> >
+                , cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer<int> >
             > ::type
         {};
         typedef cds::container::TreiberStack< cds::gc::HP,  T, traits_Elimination_dyn > Elimination_HP_dyn;
@@ -294,7 +292,7 @@ namespace stack {
             cds::container::treiber_stack::make_traits <
                 cds::opt::enable_elimination<true>
                 , cds::opt::stat<cds::intrusive::treiber_stack::stat<> >
-                , cds::opt::buffer< cds::opt::v::dynamic_buffer<int> >
+                , cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer<int> >
             > ::type
         {};
         typedef cds::container::TreiberStack< cds::gc::HP,  T, traits_Elimination_dyn_stat > Elimination_HP_dyn_stat;
@@ -323,10 +321,7 @@ namespace stack {
             cds::container::treiber_stack::make_traits <
                 cds::opt::enable_elimination<true>
                 ,cds::opt::back_off<
-                    cds::backoff::exponential<
-                        cds::backoff::pause,
-                        cds::backoff::yield
-                    >
+                    cds::backoff::make_exponential_t< cds::backoff::pause, cds::backoff::yield >
                 >
             > ::type
         {};
@@ -455,16 +450,7 @@ namespace cds_test {
             << CDSSTRESS_STAT_OUT( s, m_nPop )
             << CDSSTRESS_STAT_OUT( s, m_nFailedPop )
             << CDSSTRESS_STAT_OUT( s, m_nCollided )
-            << CDSSTRESS_STAT_OUT_( "combining_factor", s.combining_factor())
-            << CDSSTRESS_STAT_OUT( s, m_nOperationCount )
-            << CDSSTRESS_STAT_OUT( s, m_nCombiningCount )
-            << CDSSTRESS_STAT_OUT( s, m_nCompactPublicationList )
-            << CDSSTRESS_STAT_OUT( s, m_nDeactivatePubRecord )
-            << CDSSTRESS_STAT_OUT( s, m_nActivatePubRecord )
-            << CDSSTRESS_STAT_OUT( s, m_nPubRecordCreated )
-            << CDSSTRESS_STAT_OUT( s, m_nPubRecordDeteted )
-            << CDSSTRESS_STAT_OUT( s, m_nAcquirePubRecCount )
-            << CDSSTRESS_STAT_OUT( s, m_nReleasePubRecCount );
+            << static_cast<cds::algo::flat_combining::stat<> const&>( s );
     }
 
     static inline property_stream& operator <<( property_stream& o, cds::container::fcdeque::empty_stat const& /*s*/ )
@@ -484,16 +470,7 @@ namespace cds_test {
             << CDSSTRESS_STAT_OUT( s, m_nPopBack )
             << CDSSTRESS_STAT_OUT( s, m_nFailedPopBack )
             << CDSSTRESS_STAT_OUT( s, m_nCollided )
-            << CDSSTRESS_STAT_OUT_( "combining_factor", s.combining_factor() )
-            << CDSSTRESS_STAT_OUT( s, m_nOperationCount )
-            << CDSSTRESS_STAT_OUT( s, m_nCombiningCount )
-            << CDSSTRESS_STAT_OUT( s, m_nCompactPublicationList )
-            << CDSSTRESS_STAT_OUT( s, m_nDeactivatePubRecord )
-            << CDSSTRESS_STAT_OUT( s, m_nActivatePubRecord )
-            << CDSSTRESS_STAT_OUT( s, m_nPubRecordCreated )
-            << CDSSTRESS_STAT_OUT( s, m_nPubRecordDeteted )
-            << CDSSTRESS_STAT_OUT( s, m_nAcquirePubRecCount )
-            << CDSSTRESS_STAT_OUT( s, m_nReleasePubRecCount );
+            << static_cast<cds::algo::flat_combining::stat<> const&>(s);
     }
 } // namespace cds_test
 
@@ -515,70 +492,46 @@ namespace cds_test {
 
 #define CDSSTRESS_TreiberStack( test_fixture ) \
     CDSSTRESS_Stack_F( test_fixture, Treiber_HP )        \
-    CDSSTRESS_Stack_F( test_fixture, Treiber_HP_seqcst ) \
     CDSSTRESS_Stack_F( test_fixture, Treiber_HP_pause )  \
     CDSSTRESS_Stack_F( test_fixture, Treiber_HP_exp )    \
-    CDSSTRESS_Stack_F( test_fixture, Treiber_HP_stat   ) \
     CDSSTRESS_Stack_F( test_fixture, Treiber_DHP       ) \
     CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_pause ) \
-    CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_exp   ) \
-    CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_stat  ) \
+    CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_exp   )
 
 #define CDSSTRESS_EliminationStack( test_fixture ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP        ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_2ms    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_2ms_stat) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_5ms    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_5ms_stat) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_10ms    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_10ms_stat) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_seqcst ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_pause  ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_exp    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_stat   ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_dyn    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_dyn_stat) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP       ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_2ms    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_2ms_stat) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_5ms    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_5ms_stat) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_10ms    ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_10ms_stat) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_pause ) \
     CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_exp   ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_stat  ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_dyn   ) \
-    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_dyn_stat)
+    CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_dyn   )
 
 #define CDSSTRESS_FCStack( test_fixture ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_deque ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_deque_mutex ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_deque_stat ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_deque_elimination ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_deque_elimination_stat ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_vector ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_vector_mutex ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_vector_stat ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_vector_elimination ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_vector_elimination_stat ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_list ) \
     CDSSTRESS_Stack_F( test_fixture, FCStack_list_mutex ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_list_stat ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_list_elimination ) \
-    CDSSTRESS_Stack_F( test_fixture, FCStack_list_elimination_stat )
+    CDSSTRESS_Stack_F( test_fixture, FCStack_list_elimination )
 
 #define CDSSTRESS_FCDeque( test_fixture ) \
     CDSSTRESS_Stack_F( test_fixture, FCDequeL_default ) \
     CDSSTRESS_Stack_F( test_fixture, FCDequeL_mutex ) \
-    CDSSTRESS_Stack_F( test_fixture, FCDequeL_stat ) \
     CDSSTRESS_Stack_F( test_fixture, FCDequeL_elimination ) \
-    CDSSTRESS_Stack_F( test_fixture, FCDequeL_elimination_stat ) \
     CDSSTRESS_Stack_F( test_fixture, FCDequeR_default ) \
     CDSSTRESS_Stack_F( test_fixture, FCDequeR_mutex ) \
-    CDSSTRESS_Stack_F( test_fixture, FCDequeR_stat ) \
-    CDSSTRESS_Stack_F( test_fixture, FCDequeR_elimination ) \
-    CDSSTRESS_Stack_F( test_fixture, FCDequeR_elimination_stat )
+    CDSSTRESS_Stack_F( test_fixture, FCDequeR_elimination )
 
 #define CDSSTRESS_StdStack( test_fixture ) \
     CDSSTRESS_Stack_F( test_fixture, StdStack_Deque_Mutex  ) \