Trims down unnecessary queue test casese
[libcds.git] / test / stress / queue / queue_type.h
index 12fd8cf85fb257446475c1d5dd237e7dc6b16d8d..bcb14b769621b9234a4a10bbea2d1a6202328764 100644 (file)
@@ -40,6 +40,7 @@
 #include <cds/container/fcqueue.h>
 #include <cds/container/fcdeque.h>
 #include <cds/container/segmented_queue.h>
+#include <cds/container/weak_ringbuffer.h>
 
 #include <cds/gc/hp.h>
 #include <cds/gc/dhp.h>
@@ -292,6 +293,92 @@ namespace fc_details{
             }
         };
 
+        // singlre-consumer version
+        struct traits_VyukovMPSCCycleQueue_dyn: public traits_VyukovMPMCCycleQueue_dyn
+        {
+            static const bool single_consumer = true;
+        };
+        class VyukovMPSCCycleQueue_dyn
+            : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn >
+        {
+            typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn > base_class;
+        public:
+            VyukovMPSCCycleQueue_dyn()
+                : base_class( 1024 * 64 )
+            {}
+            VyukovMPSCCycleQueue_dyn( size_t nCapacity )
+                : base_class( nCapacity )
+            {}
+
+            cds::opt::none statistics() const
+            {
+                return cds::opt::none();
+            }
+        };
+
+        struct traits_VyukovMPSCCycleQueue_dyn_ic: public traits_VyukovMPMCCycleQueue_dyn
+        {
+            static const bool single_consumer = true;
+        };
+        class VyukovMPSCCycleQueue_dyn_ic
+            : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn_ic >
+        {
+            typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn_ic > base_class;
+        public:
+            VyukovMPSCCycleQueue_dyn_ic()
+                : base_class( 1024 * 64 )
+            {}
+            VyukovMPSCCycleQueue_dyn_ic( size_t nCapacity )
+                : base_class( nCapacity )
+            {}
+
+            cds::opt::none statistics() const
+            {
+                return cds::opt::none();
+            }
+        };
+
+
+        // WeakRingBuffer
+        struct traits_WeakRingBuffer_dyn: public cds::container::weak_ringbuffer::traits
+        {
+            typedef cds::opt::v::uninitialized_dynamic_buffer< int > buffer;
+        };
+        class WeakRingBuffer_dyn
+            : public cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn >
+        {
+            typedef cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn > base_class;
+        public:
+            WeakRingBuffer_dyn()
+                : base_class( 1024 * 64 )
+            {}
+            WeakRingBuffer_dyn( size_t nCapacity )
+                : base_class( nCapacity )
+            {}
+
+            cds::opt::none statistics() const
+            {
+                return cds::opt::none();
+            }
+        };
+
+        class WeakRingBuffer_void_dyn
+            : public cds::container::WeakRingBuffer< void, traits_WeakRingBuffer_dyn >
+        {
+            typedef cds::container::WeakRingBuffer< void, traits_WeakRingBuffer_dyn > base_class;
+        public:
+            WeakRingBuffer_void_dyn()
+                : base_class( 1024 * 64 )
+            {}
+            WeakRingBuffer_void_dyn( size_t nCapacity )
+                : base_class( nCapacity )
+            {}
+
+            cds::opt::none statistics() const
+            {
+                return cds::opt::none();
+            }
+        };
 
         // BasketQueue
 
@@ -597,27 +684,19 @@ namespace cds_test {
 
 #if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 0
 #   define CDSSTRESS_MSQueue_1( test_fixture ) \
-        CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_seqcst  ) \
         CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic      ) \
-        CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_seqcst ) \
         CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic     ) \
 
 #   define CDSSTRESS_MoirQueue_1( test_fixture ) \
-        CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_seqcst    ) \
         CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic        ) \
-        CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_seqcst   ) \
         CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic       ) \
 
 #   define CDSSTRESS_OptimsticQueue_1( test_fixture ) \
-        CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_seqcst  ) \
         CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic      ) \
-        CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_seqcst ) \
         CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic     ) \
 
 #   define CDSSTRESS_BasketQueue_1( test_fixture ) \
-        CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_seqcst  ) \
         CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic      ) \
-        CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_seqcst ) \
         CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic     ) \
 
 #   define CDSSTRESS_FCQueue_1( test_fixture ) \
@@ -631,59 +710,39 @@ namespace cds_test {
         CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination   ) \
 
 #   define CDSSTRESS_FCDeque_1( test_fixture ) \
-        CDSSTRESS_Queue_F( test_fixture, FCDequeL_mutex             ) \
-        CDSSTRESS_Queue_F( test_fixture, FCDequeL_stat              ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss           )\
         CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm           ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm           ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination       ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost             ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination ) \
-        CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination_stat ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss           ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm           ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm           ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination       ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost             ) \
         CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination ) \
-        CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination_stat ) \
 
 #   define CDSSTRESS_FCDeque_HeavyValue_1( test_fixture ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss_stat     ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm_stat     ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm_stat     ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination      ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination_stat ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost            ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_stat       ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination_stat ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_default          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_mutex            ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_stat             ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss_stat     ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm_stat     ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm          ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm_stat     ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination      ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination_stat ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost            ) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_stat       ) \
         CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination) \
-        CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination_stat ) \
 
 #   define CDSSTRESS_RWQueue_1( test_fixture ) \
         CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin_ic ) \
 
 #   define CDSSTRESS_SegmentedQueue_1( test_fixture ) \
-        CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_padding    ) \
         CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_padding    ) \
-        CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_padding   ) \
 
 #   define CDSSTRESS_StdQueue_1( test_fixture ) \
         CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex   ) \
@@ -704,92 +763,63 @@ namespace cds_test {
 
 #define CDSSTRESS_MSQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, MSQueue_HP         ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_stat    ) \
     CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP        ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_stat   ) \
     CDSSTRESS_MSQueue_1( test_fixture )
 
 #define CDSSTRESS_MoirQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP       ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_stat  ) \
     CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP      ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_stat ) \
     CDSSTRESS_MoirQueue_1( test_fixture )
 
 #define CDSSTRESS_OptimsticQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP         ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_stat    ) \
     CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP        ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_stat   ) \
     CDSSTRESS_OptimsticQueue_1( test_fixture )
 
 #define CDSSTRESS_BasketQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP         ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_stat    ) \
     CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP        ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_stat   ) \
     CDSSTRESS_BasketQueue_1( test_fixture )
 
 #define CDSSTRESS_FCQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, FCQueue_deque              ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_stat         ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination_stat ) \
     CDSSTRESS_Queue_F( test_fixture, FCQueue_list               ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_stat          ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss_stat  ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm_stat  ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm_stat  ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination_stat ) \
     CDSSTRESS_FCQueue_1( test_fixture )
 
 
 #define CDSSTRESS_FCDeque( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, FCDequeL_default           ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss_stat      ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm_stat      ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm_stat      ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination_stat  ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_stat        ) \
     CDSSTRESS_Queue_F( test_fixture, FCDequeR_default           ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_mutex             ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_stat              ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss_stat      ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm_stat      ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm_stat      ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination_stat  ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_stat        ) \
     CDSSTRESS_FCDeque_1( test_fixture )
 
 #define CDSSTRESS_FCDeque_HeavyValue( test_fixture ) \
     CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_default  ) \
-    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_mutex    ) \
-    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_stat     ) \
     CDSSTRESS_FCDeque_HeavyValue_1( test_fixture )
 
 #define CDSSTRESS_RWQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin   ) \
-    CDSSTRESS_Queue_F( test_fixture, RWQueue_mutex  ) \
     CDSSTRESS_RWQueue_1( test_fixture )
 
 #define CDSSTRESS_SegmentedQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin         ) \
     CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_padding ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_stat    ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex        ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_stat   ) \
     CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin        ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_stat   ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex       ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_stat  ) \
     CDSSTRESS_SegmentedQueue_1( test_fixture )
 
 #define CDSSTRESS_VyukovQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn       ) \
     CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic    )
 
+#define CDSSTRESS_VyukovSingleConsumerQueue( test_fixture ) \
+    CDSSTRESS_Queue_F( test_fixture, VyukovMPSCCycleQueue_dyn       ) \
+    CDSSTRESS_Queue_F( test_fixture, VyukovMPSCCycleQueue_dyn_ic    )
+
+#define CDSSTRESS_WeakRingBuffer( test_fixture ) \
+    CDSSTRESS_Queue_F( test_fixture, WeakRingBuffer_dyn       )
+
+#define CDSSTRESS_WeakRingBuffer_void( test_fixture ) \
+    CDSSTRESS_Queue_F( test_fixture, WeakRingBuffer_void_dyn       )
+
 #define CDSSTRESS_StdQueue( test_fixture ) \
     CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock ) \
     CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock  ) \