Merged branch 'master' of https://github.com/Nemo1369/libcds
[libcds.git] / test / stress / queue / queue_type.h
index c4178fef20214b4fb0bcfe8d6a61b6d6593b54a7..3a8af179cd7f3428bf22dfeddfe630a5aff61647 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_QUEUE_TYPES_H
@@ -35,7 +35,6 @@
 #include <cds/container/moir_queue.h>
 #include <cds/container/rwqueue.h>
 #include <cds/container/optimistic_queue.h>
-#include <cds/container/tsigas_cycle_queue.h>
 #include <cds/container/vyukov_mpmc_cycle_queue.h>
 #include <cds/container/basket_queue.h>
 #include <cds/container/fcqueue.h>
 
 #include "std_queue.h"
 #include "lock/win32_lock.h"
-#include "framework/michael_alloc.h"
 
 #include <boost/container/deque.hpp>
 
 #include <cds_test/stress_test.h>
 #include <cds_test/stat_flat_combining_out.h>
+#include <cds_test/fc_hevy_value.h>
+
 #include "print_stat.h"
 
 namespace queue {
@@ -128,6 +128,56 @@ namespace queue {
 
     } // namespace details
 
+namespace fc_details{
+// FCDeque
+        struct traits_FCDeque_stat:
+            public cds::container::fcdeque::make_traits<
+                cds::opt::stat< cds::container::fcdeque::stat<> >
+            >::type
+        {};
+        struct traits_FCDeque_elimination:
+            public cds::container::fcdeque::make_traits<
+                cds::opt::enable_elimination< true >
+            >::type
+        {};
+        struct traits_FCDeque_elimination_stat:
+            public cds::container::fcdeque::make_traits<
+                cds::opt::stat< cds::container::fcdeque::stat<> >,
+                cds::opt::enable_elimination< true >
+            >::type
+        {};
+        struct traits_FCDeque_mutex:
+            public cds::container::fcdeque::make_traits<
+                cds::opt::lock_type< std::mutex >
+            >::type
+        {};
+
+        struct traits_FCDeque_wait_ss: cds::container::fcdeque::traits
+        {
+            typedef cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<> wait_strategy;
+        };
+        struct traits_FCDeque_wait_ss_stat: traits_FCDeque_wait_ss
+        {
+            typedef cds::container::fcdeque::stat<> stat;
+        };
+        struct traits_FCDeque_wait_sm: cds::container::fcdeque::traits
+        {
+            typedef cds::algo::flat_combining::wait_strategy::single_mutex_multi_condvar<> wait_strategy;
+        };
+        struct traits_FCDeque_wait_sm_stat: traits_FCDeque_wait_sm
+        {
+            typedef cds::container::fcdeque::stat<> stat;
+        };
+        struct traits_FCDeque_wait_mm: cds::container::fcdeque::traits
+        {
+            typedef cds::algo::flat_combining::wait_strategy::multi_mutex_multi_condvar<> wait_strategy;
+        };
+        struct traits_FCDeque_wait_mm_stat: traits_FCDeque_wait_mm
+        {
+            typedef cds::container::fcdeque::stat<> stat;
+        };
+
+}
     template <typename Value>
     struct Types {
 
@@ -137,15 +187,6 @@ namespace queue {
         typedef cds::container::MoirQueue<cds::gc::HP, Value > MoirQueue_HP;
         typedef cds::container::MoirQueue<cds::gc::DHP, Value > MoirQueue_DHP;
 
-        struct traits_MSQueue_michaelAlloc : public cds::container::msqueue::traits
-        {
-            typedef memory::MichaelAllocator<int>  allocator;
-        };
-        typedef cds::container::MSQueue<cds::gc::HP,  Value, traits_MSQueue_michaelAlloc > MSQueue_HP_michaelAlloc;
-        typedef cds::container::MSQueue<cds::gc::DHP, Value, traits_MSQueue_michaelAlloc > MSQueue_DHP_michaelAlloc;
-        typedef cds::container::MoirQueue<cds::gc::HP, Value, traits_MSQueue_michaelAlloc > MoirQueue_HP_michaelAlloc;
-        typedef cds::container::MoirQueue<cds::gc::DHP, Value, traits_MSQueue_michaelAlloc > MoirQueue_DHP_michaelAlloc;
-
         struct traits_MSQueue_seqcst : public
             cds::container::msqueue::make_traits <
                 cds::opt::memory_model < cds::opt::v::sequential_consistent >
@@ -183,13 +224,6 @@ namespace queue {
         typedef cds::container::OptimisticQueue< cds::gc::HP, Value > OptimisticQueue_HP;
         typedef cds::container::OptimisticQueue< cds::gc::DHP, Value > OptimisticQueue_DHP;
 
-        struct traits_OptimisticQueue_michaelAlloc : public cds::container::optimistic_queue::traits
-        {
-            typedef memory::MichaelAllocator<int> allocator;
-        };
-        typedef cds::container::OptimisticQueue< cds::gc::HP,  Value, traits_OptimisticQueue_michaelAlloc > OptimisticQueue_HP_michaelAlloc;
-        typedef cds::container::OptimisticQueue< cds::gc::DHP, Value, traits_OptimisticQueue_michaelAlloc > OptimisticQueue_DHP_michaelAlloc;
-
         struct traits_OptimisticQueue_seqcst : public cds::container::optimistic_queue::traits
         {
             typedef cds::opt::v::sequential_consistent memory_model;
@@ -213,92 +247,6 @@ namespace queue {
         typedef cds::container::OptimisticQueue< cds::gc::DHP, Value, traits_OptimisticQueue_stat > OptimisticQueue_DHP_stat;
 
 
-        // TsigasCycleQueue
-
-        class TsigasCycleQueue_dyn
-            : public cds::container::TsigasCycleQueue< Value,
-                typename cds::container::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > >
-                >::type
-            >
-        {
-            typedef cds::container::TsigasCycleQueue< Value,
-                typename cds::container::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > >
-                >::type
-            > base_class;
-        public:
-            TsigasCycleQueue_dyn()
-                : base_class( 1024 * 64 )
-            {}
-
-            TsigasCycleQueue_dyn( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
-        class TsigasCycleQueue_dyn_michaelAlloc
-            : public cds::container::TsigasCycleQueue< Value,
-                typename cds::container::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > >
-                    ,cds::opt::allocator< memory::MichaelAllocator<int> >
-                >::type
-            >
-        {
-            typedef cds::container::TsigasCycleQueue< Value,
-                typename cds::container::tsigas_queue::make_traits<
-                   cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > >
-                    , cds::opt::allocator< memory::MichaelAllocator<int> >
-                >::type
-            > base_class;
-        public:
-            TsigasCycleQueue_dyn_michaelAlloc()
-                : base_class( 1024 * 64 )
-            {}
-
-            TsigasCycleQueue_dyn_michaelAlloc( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
-        class TsigasCycleQueue_dyn_ic
-            : public cds::container::TsigasCycleQueue< Value,
-                typename cds::container::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > >
-                    ,cds::opt::item_counter< cds::atomicity::item_counter >
-                >::type
-            >
-        {
-            typedef cds::container::TsigasCycleQueue< Value,
-                typename cds::container::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > >
-                    ,cds::opt::item_counter< cds::atomicity::item_counter >
-                >::type
-            > base_class;
-        public:
-            TsigasCycleQueue_dyn_ic()
-                : base_class( 1024 * 64 )
-            {}
-            TsigasCycleQueue_dyn_ic( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
         // VyukovMPMCCycleQueue
         struct traits_VyukovMPMCCycleQueue_dyn : public cds::container::vyukov_queue::traits
         {
@@ -322,28 +270,6 @@ namespace queue {
             }
         };
 
-        struct traits_VyukovMPMCCycleQueue_dyn_michaelAlloc : public cds::container::vyukov_queue::traits
-        {
-            typedef cds::opt::v::uninitialized_dynamic_buffer< int, memory::MichaelAllocator<int> > buffer;
-        };
-        class VyukovMPMCCycleQueue_dyn_michaelAlloc
-            : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_michaelAlloc >
-        {
-            typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_michaelAlloc > base_class;
-        public:
-            VyukovMPMCCycleQueue_dyn_michaelAlloc()
-                : base_class( 1024 * 64 )
-            {}
-            VyukovMPMCCycleQueue_dyn_michaelAlloc( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
         struct traits_VyukovMPMCCycleQueue_dyn_ic : public traits_VyukovMPMCCycleQueue_dyn
         {
             typedef cds::atomicity::item_counter item_counter;
@@ -372,13 +298,6 @@ namespace queue {
         typedef cds::container::BasketQueue< cds::gc::HP , Value > BasketQueue_HP;
         typedef cds::container::BasketQueue< cds::gc::DHP, Value > BasketQueue_DHP;
 
-        struct traits_BasketQueue_michaelAlloc : public cds::container::basket_queue::traits
-        {
-            typedef memory::MichaelAllocator<int> allocator;
-        };
-        typedef cds::container::BasketQueue< cds::gc::HP,  Value, traits_BasketQueue_michaelAlloc > BasketQueue_HP_michaelAlloc;
-        typedef cds::container::BasketQueue< cds::gc::DHP, Value, traits_BasketQueue_michaelAlloc > BasketQueue_DHP_michaelAlloc;
-
         struct traits_BasketQueue_seqcst : public cds::container::basket_queue::traits
         {
             typedef cds::opt::v::sequential_consistent mamory_model;
@@ -418,6 +337,11 @@ namespace queue {
         typedef cds::container::RWQueue< Value, traits_RWQueue_mutex > RWQueue_mutex;
 
         // FCQueue
+        struct traits_FCQueue_stat:
+            public cds::container::fcqueue::make_traits<
+                cds::opt::stat< cds::container::fcqueue::stat<> >
+            >::type
+        {};
         struct traits_FCQueue_single_mutex_single_condvar:
             public cds::container::fcqueue::make_traits<
                 cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<>>
@@ -458,6 +382,7 @@ namespace queue {
         {};
 
         typedef cds::container::FCQueue< Value > FCQueue_deque;
+        typedef cds::container::FCQueue< Value, std::queue<Value>, traits_FCQueue_stat > FCQueue_deque_stat;
         typedef cds::container::FCQueue< Value, std::queue<Value>, traits_FCQueue_single_mutex_single_condvar> FCQueue_deque_wait_ss;
         typedef cds::container::FCQueue< Value, std::queue<Value>, traits_FCQueue_single_mutex_single_condvar_stat> FCQueue_deque_wait_ss_stat;
         typedef cds::container::FCQueue< Value, std::queue<Value>, traits_FCQueue_single_mutex_multi_condvar> FCQueue_deque_wait_sm;
@@ -468,7 +393,8 @@ namespace queue {
         typedef cds::container::FCQueue< Value, std::queue<Value>, traits_FCQueue_elimination > FCQueue_deque_elimination;
         typedef cds::container::FCQueue< Value, std::queue<Value>, traits_FCQueue_elimination_stat > FCQueue_deque_elimination_stat;
 
-        typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value> >> FCQueue_list;
+        typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value>>> FCQueue_list;
+        typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value>>, traits_FCQueue_stat> FCQueue_list_stat;
         typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value>>, traits_FCQueue_single_mutex_single_condvar> FCQueue_list_wait_ss;
         typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value>>, traits_FCQueue_single_mutex_single_condvar_stat> FCQueue_list_wait_ss_stat;
         typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value>>, traits_FCQueue_single_mutex_multi_condvar> FCQueue_list_wait_sm;
@@ -480,87 +406,40 @@ namespace queue {
         typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value> >, traits_FCQueue_elimination_stat > FCQueue_list_elimination_stat;
 
 
-   // FCDeque
-        struct traits_FCDeque_stat:
-            public cds::container::fcdeque::make_traits<
-                cds::opt::stat< cds::container::fcdeque::stat<> >
-            >::type
-        {};
-        struct traits_FCDeque_elimination:
-            public cds::container::fcdeque::make_traits<
-                cds::opt::enable_elimination< true >
-            >::type
-        {};
-        struct traits_FCDeque_elimination_stat:
-            public cds::container::fcdeque::make_traits<
-                cds::opt::stat< cds::container::fcdeque::stat<> >,
-                cds::opt::enable_elimination< true >
-            >::type
-        {};
-        struct traits_FCDeque_mutex:
-            public cds::container::fcdeque::make_traits<
-                cds::opt::lock_type< std::mutex >
-            >::type
-        {};
-
-        struct traits_FCDeque_wait_ss: cds::container::fcdeque::traits
-        {
-            typedef cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<> wait_strategy;
-        };
-        struct traits_FCDeque_wait_ss_stat: traits_FCDeque_wait_ss
-        {
-            typedef cds::container::fcdeque::stat<> stat;
-        };
-        struct traits_FCDeque_wait_sm: cds::container::fcdeque::traits
-        {
-            typedef cds::algo::flat_combining::wait_strategy::single_mutex_multi_condvar<> wait_strategy;
-        };
-        struct traits_FCDeque_wait_sm_stat: traits_FCDeque_wait_sm
-        {
-            typedef cds::container::fcdeque::stat<> stat;
-        };
-        struct traits_FCDeque_wait_mm: cds::container::fcdeque::traits
-        {
-            typedef cds::algo::flat_combining::wait_strategy::multi_mutex_multi_condvar<> wait_strategy;
-        };
-        struct traits_FCDeque_wait_mm_stat: traits_FCDeque_wait_mm
-        {
-            typedef cds::container::fcdeque::stat<> stat;
-        };
 
         typedef details::FCDequeL< Value > FCDequeL_default;
-        typedef details::FCDequeL< Value, traits_FCDeque_mutex > FCDequeL_mutex;
-        typedef details::FCDequeL< Value, traits_FCDeque_stat > FCDequeL_stat;
-        typedef details::FCDequeL< Value, traits_FCDeque_wait_ss > FCDequeL_wait_ss;
-        typedef details::FCDequeL< Value, traits_FCDeque_wait_ss_stat > FCDequeL_wait_ss_stat;
-        typedef details::FCDequeL< Value, traits_FCDeque_wait_sm > FCDequeL_wait_sm;
-        typedef details::FCDequeL< Value, traits_FCDeque_wait_sm_stat > FCDequeL_wait_sm_stat;
-        typedef details::FCDequeL< Value, traits_FCDeque_wait_mm > FCDequeL_wait_mm;
-        typedef details::FCDequeL< Value, traits_FCDeque_wait_mm_stat > FCDequeL_wait_mm_stat;
-        typedef details::FCDequeL< Value, traits_FCDeque_elimination > FCDequeL_elimination;
-        typedef details::FCDequeL< Value, traits_FCDeque_elimination_stat > FCDequeL_elimination_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_mutex > FCDequeL_mutex;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat > FCDequeL_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss > FCDequeL_wait_ss;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeL_wait_ss_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm > FCDequeL_wait_sm;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeL_wait_sm_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm > FCDequeL_wait_mm;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeL_wait_mm_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination > FCDequeL_elimination;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeL_elimination_stat;
 
         typedef details::FCDequeL< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeL_boost;
-        typedef details::FCDequeL< Value, traits_FCDeque_stat, boost::container::deque<Value> > FCDequeL_boost_stat;
-        typedef details::FCDequeL< Value, traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeL_boost_elimination;
-        typedef details::FCDequeL< Value, traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeL_boost_elimination_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeL_boost_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeL_boost_elimination;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeL_boost_elimination_stat;
 
         typedef details::FCDequeR< Value > FCDequeR_default;
-        typedef details::FCDequeR< Value, traits_FCDeque_mutex > FCDequeR_mutex;
-        typedef details::FCDequeR< Value, traits_FCDeque_stat > FCDequeR_stat;
-        typedef details::FCDequeR< Value, traits_FCDeque_wait_ss > FCDequeR_wait_ss;
-        typedef details::FCDequeR< Value, traits_FCDeque_wait_ss_stat > FCDequeR_wait_ss_stat;
-        typedef details::FCDequeR< Value, traits_FCDeque_wait_sm > FCDequeR_wait_sm;
-        typedef details::FCDequeR< Value, traits_FCDeque_wait_sm_stat > FCDequeR_wait_sm_stat;
-        typedef details::FCDequeR< Value, traits_FCDeque_wait_mm > FCDequeR_wait_mm;
-        typedef details::FCDequeR< Value, traits_FCDeque_wait_mm_stat > FCDequeR_wait_mm_stat;
-        typedef details::FCDequeR< Value, traits_FCDeque_elimination > FCDequeR_elimination;
-        typedef details::FCDequeR< Value, traits_FCDeque_elimination_stat > FCDequeR_elimination_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_mutex > FCDequeR_mutex;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat > FCDequeR_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss > FCDequeR_wait_ss;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeR_wait_ss_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm > FCDequeR_wait_sm;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeR_wait_sm_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm > FCDequeR_wait_mm;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeR_wait_mm_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination > FCDequeR_elimination;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeR_elimination_stat;
 
         typedef details::FCDequeR< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeR_boost;
-        typedef details::FCDequeR< Value, traits_FCDeque_stat, boost::container::deque<Value> > FCDequeR_boost_stat;
-        typedef details::FCDequeR< Value, traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeR_boost_elimination;
-        typedef details::FCDequeR< Value, traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeR_boost_elimination_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeR_boost_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeR_boost_elimination;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeR_boost_elimination_stat;
 
         // STL
         typedef StdQueue_deque<Value>               StdQueue_deque_Spinlock;
@@ -617,6 +496,43 @@ namespace queue {
         typedef cds::container::SegmentedQueue< cds::gc::DHP, Value, traits_SegmentedQueue_mutex_padding >  SegmentedQueue_DHP_mutex_padding;
         typedef cds::container::SegmentedQueue< cds::gc::DHP, Value, traits_SegmentedQueue_mutex_stat >  SegmentedQueue_DHP_mutex_stat;
     };
+
+    template <typename Value>
+    struct TypesFCHeavyValue {
+        typedef details::FCDequeL< Value > FCDequeL_HeavyValue_default;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_mutex > FCDequeL_HeavyValue_mutex;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat > FCDequeL_HeavyValue_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss > FCDequeL_HeavyValue_wait_ss;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeL_HeavyValue_wait_ss_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm > FCDequeL_HeavyValue_wait_sm;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeL_HeavyValue_wait_sm_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm > FCDequeL_HeavyValue_wait_mm;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeL_HeavyValue_wait_mm_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination > FCDequeL_HeavyValue_elimination;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeL_HeavyValue_elimination_stat;
+
+        typedef details::FCDequeL< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeL_HeavyValue_boost;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeL_HeavyValue_boost_stat;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeL_HeavyValue_boost_elimination;
+        typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeL_HeavyValue_boost_elimination_stat;
+
+        typedef details::FCDequeR< Value > FCDequeR_HeavyValue_default;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_mutex > FCDequeR_HeavyValue_mutex;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat > FCDequeR_HeavyValue_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss > FCDequeR_HeavyValue_wait_ss;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeR_HeavyValue_wait_ss_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm > FCDequeR_HeavyValue_wait_sm;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeR_HeavyValue_wait_sm_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm > FCDequeR_HeavyValue_wait_mm;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeR_HeavyValue_wait_mm_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination > FCDequeR_HeavyValue_elimination;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeR_HeavyValue_elimination_stat;
+
+        typedef details::FCDequeR< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeR_HeavyValue_boost;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeR_HeavyValue_boost_stat;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeR_HeavyValue_boost_elimination;
+        typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeR_HeavyValue_boost_elimination_stat;
+    };
 }
 
 
@@ -663,148 +579,179 @@ namespace cds_test {
 
 } // namespace cds_test
 
-#define CDSSTRESS_Queue_F( test_fixture, type_name ) \
+#define CDSSTRESS_Queue_F( test_fixture, type_name, level ) \
     TEST_F( test_fixture, type_name ) \
     { \
+        if ( !check_detail_level( level )) return; \
         typedef queue::Types< value_type >::type_name queue_type; \
         queue_type queue; \
         test( queue ); \
     }
 
+#define CDSSTRESS_FCQueue_F( test_fixture, type_name, level ) \
+    TEST_F( test_fixture, type_name ) \
+    { \
+        if ( !check_detail_level( level )) return; \
+        typedef queue::TypesFCHeavyValue< value_type >::type_name queue_type; \
+        queue_type queue; \
+        test( queue ); \
+    }
+
 #define CDSSTRESS_MSQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_stat )
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP,                0 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_seqcst,         2 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic,             1 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_stat,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP,               0 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_seqcst,        2 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic,            1 ) \
+    CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_stat,          0 )
 
 #define CDSSTRESS_MoirQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_stat )
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP,              0 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_seqcst,       2 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic,           1 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP,             0 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_seqcst,      2 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic,          1 ) \
+    CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_stat,        0 )
 
 #define CDSSTRESS_OptimsticQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_stat )
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP,                0 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_seqcst,         2 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic,             1 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_stat,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP,               0 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_seqcst,        2 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic,            1 ) \
+    CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_stat,          0 )
 
 #define CDSSTRESS_BasketQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_seqcst ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_stat )
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP,                0 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_seqcst,         2 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic,             1 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_stat,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP,               0 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_seqcst,        2 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic,            1 ) \
+    CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_stat,          0 )
 
 #define CDSSTRESS_FCQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination ) \
-    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination_stat )
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque,                 0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_stat,            0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss,         1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss_stat,    0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm,         1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm_stat,    0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm,         1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm_stat,    0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination,     1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination_stat,0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list,                  0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_stat,             0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss,          1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss_stat,     0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm,          1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm_stat,     0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm,          1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm_stat,     0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination,      1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination_stat, 0 )
+
 
 #define CDSSTRESS_FCDeque( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_default ) \
-    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_ss_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination_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 ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_stat ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination ) \
-    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination_stat )
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_default,              0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_mutex,                1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_stat,                 1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss,              1 )\
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm,              1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm,              1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination,          1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination_stat,     0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost,                1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_stat,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination,    1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination_stat, 1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_default,              0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_mutex,                0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_stat,                 0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss,              1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm,              1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm,              1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm_stat,         0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination,          1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination_stat,     0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost,                1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_stat,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination,    1 ) \
+    CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination_stat, 1 )
+
+#define CDSSTRESS_FCDeque_HeavyValue( test_fixture ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_default,              0 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_mutex,                0 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_stat,                 0 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss_stat,         1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm_stat,         1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm_stat,         1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination,          1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination_stat,     1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost,                1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_stat,           1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination,    1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination_stat, 1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_default,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_mutex,                1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_stat,                 1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss_stat,         1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm_stat,         1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm,              1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm_stat,         1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination,          1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination_stat,     1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost,                1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_stat,           1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination,    1 ) \
+    CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination_stat, 1 )
 
 #define CDSSTRESS_RWQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin ) \
-    CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin_ic ) \
-    CDSSTRESS_Queue_F( test_fixture, RWQueue_mutex )
+    CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin,      0 ) \
+    CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin_ic,   1 ) \
+    CDSSTRESS_Queue_F( test_fixture, RWQueue_mutex,     0 )
 
 #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_padding ) \
-    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_padding ) \
-    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_padding ) \
-    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_stat )
-
-
-#define CDSSTRESS_TsigasQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn ) \
-    CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn_ic )
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin,            0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_padding,    0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_stat,       0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_padding,   1 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_stat,      0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin,           0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_padding,   1 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_stat,      0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex,          0 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_padding,  1 ) \
+    CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_stat,     0 )
+
 
 #define CDSSTRESS_VyukovQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn ) \
-    CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_michaelAlloc ) \
-    CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic )
+    CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn,              0 ) \
+    CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic,           1 )
 
 #define CDSSTRESS_StdQueue( test_fixture ) \
-    CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock ) \
-    CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock ) \
-    CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex ) \
-    CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Mutex )
+    CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock,   0 ) \
+    CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock,    0 ) \
+    CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex,      1 ) \
+    CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Mutex,       1 )
 
 #endif // #ifndef CDSSTRESS_QUEUE_TYPES_H