X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=test%2Fstress%2Fstack%2Fpush_pop.cpp;h=a571e3efef94f87f741951da4d78dd8cb0d40c91;hp=ad3dd6762445ca5cffc80d25ec984a07a99459d0;hb=907e8f3e384f7161e35dc41ddc3a78c2bb86013b;hpb=025501fba2f37ec3e8dd0f187c49fc22c18ed951 diff --git a/test/stress/stack/push_pop.cpp b/test/stress/stack/push_pop.cpp index ad3dd676..a571e3ef 100644 --- a/test/stress/stack/push_pop.cpp +++ b/test/stress/stack/push_pop.cpp @@ -1,7 +1,7 @@ /* 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/ @@ -29,6 +29,7 @@ */ #include "stack_type.h" +#include "../misc/common.h" namespace { @@ -91,13 +92,13 @@ namespace { virtual void test() { - memset( m_arrPush, 0, sizeof( m_arrPush ) ); + memset( m_arrPush, 0, sizeof( m_arrPush )); value_type v; v.nThread = id(); for ( size_t i = 0; i < m_nItemCount; ++i ) { v.nNo = i % c_nValArraySize; - if ( m_stack.push( v ) ) + if ( m_stack.push( v )) ++m_arrPush[v.nNo]; else ++m_nPushError; @@ -142,13 +143,13 @@ namespace { virtual void test() { - memset( m_arrPop, 0, sizeof( m_arrPop ) ); + memset( m_arrPop, 0, sizeof( m_arrPop )); value_type v; - while ( !( s_nWorkingProducers.load( atomics::memory_order_acquire ) == 0 && m_stack.empty()) ) { - if ( m_stack.pop( v ) ) { + while ( !( s_nWorkingProducers.load( atomics::memory_order_acquire ) == 0 && m_stack.empty())) { + if ( m_stack.pop( v )) { ++m_nPopCount; - if ( v.nNo < sizeof( m_arrPop ) / sizeof( m_arrPop[0] ) ) + if ( v.nNo < sizeof( m_arrPop ) / sizeof( m_arrPop[0] )) ++m_arrPop[v.nNo]; else ++m_nDirtyPop; @@ -199,13 +200,13 @@ namespace { propout() << std::make_pair( "producer_thread_count", s_nPushThreadCount ) << std::make_pair( "consumer_thread_count", s_nPopThreadCount ) << std::make_pair( "push_count", s_nStackSize ) - ; +; std::chrono::milliseconds duration = pool.run(); propout() << std::make_pair( "duration", duration ); - analyze( stack ); + DEBUG(analyze( stack )); propout() << stack.statistics(); } @@ -214,7 +215,7 @@ namespace { void test_elimination( Stack& stack ) { test( stack ); - check_elimination_stat( stack.statistics() ); + check_elimination_stat( stack.statistics()); } void check_elimination_stat( cds::container::treiber_stack::empty_stat const& ) @@ -224,9 +225,9 @@ namespace { { EXPECT_EQ( s.m_PushCount.get() + s.m_ActivePushCollision.get() + s.m_PassivePushCollision.get(), s_nStackSize ); EXPECT_EQ( s.m_PopCount.get() + s.m_ActivePopCollision.get() + s.m_PassivePopCollision.get(), s_nStackSize ); - EXPECT_EQ( s.m_PushCount.get(), s.m_PopCount.get() ); - EXPECT_EQ( s.m_ActivePopCollision.get(), s.m_PassivePushCollision.get() ); - EXPECT_EQ( s.m_ActivePushCollision.get(), s.m_PassivePopCollision.get() ); + EXPECT_EQ( s.m_PushCount.get(), s.m_PopCount.get()); + EXPECT_EQ( s.m_ActivePopCollision.get(), s.m_PassivePushCollision.get()); + EXPECT_EQ( s.m_ActivePushCollision.get(), s.m_PassivePopCollision.get()); } template< class Stack> @@ -238,7 +239,7 @@ namespace { size_t nPopEmpty = 0; size_t nPopCount = 0; size_t arrVal[c_nValArraySize]; - memset( arrVal, 0, sizeof( arrVal ) ); + memset( arrVal, 0, sizeof( arrVal )); size_t nDirtyPop = 0; for ( size_t threadNo = 0; threadNo < pool.size(); ++threadNo ) { @@ -266,21 +267,20 @@ namespace { EXPECT_EQ( nDirtyPop, 0u ); for ( size_t i = 0; i < sizeof( arrVal ) / sizeof( arrVal[0] ); ++i ) { - EXPECT_EQ( arrVal[i], 0 ); + EXPECT_EQ( arrVal[i], 0u ); } propout() << std::make_pair( "push_count", s_nStackSize ) << std::make_pair( "push_error", nPushError ) << std::make_pair( "pop_empty", nPopEmpty ) << std::make_pair( "dirty_pop", nDirtyPop ) - ; +; } }; CDSSTRESS_TreiberStack( stack_push_pop ) CDSSTRESS_EliminationStack( stack_push_pop ) - CDSSTRESS_FCStack( stack_push_pop ) - CDSSTRESS_FCDeque( stack_push_pop ) - CDSSTRESS_StdStack( stack_push_pop ) + //CDSSTRESS_FCStack( stack_push_pop ) + //CDSSTRESS_FCDeque( stack_push_pop ) } // namespace