Fennel: /home/pub/open/dev/fennel/test/ThreadedTestBase.h Source File (original) (raw)

00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 #ifndef Fennel_ThreadedTestBase_Included 00025 #define Fennel_ThreadedTestBase_Included 00026 00027 #include "fennel/test/TestBase.h" 00028 00029 #include 00030 00031 #include <boost/thread/barrier.hpp> 00032 #include <boost/scoped_ptr.hpp> 00033 00034 FENNEL_BEGIN_NAMESPACE 00035 00040 class FENNEL_TEST_EXPORT ThreadedTestBase 00041 : virtual public TestBase 00042 { 00043 friend class ThreadedTestBaseTask; 00044 private: 00048 boost::scoped_ptrboost::barrier pStartBarrier; 00049 00053 bool bDone; 00054 00059 bool defaultThreadCount; 00060 00061 protected: 00065 uint nSeconds; 00066 00070 std::vector threadCounts; 00071 00072 explicit ThreadedTestBase(); 00073 00074 virtual ~ThreadedTestBase(); 00075 00076 virtual void threadInit(); 00077 00078 virtual void threadTerminate(); 00079 00087 virtual bool testThreadedOp(int iOp) = 0; 00088 00092 void runThreadedTestCase(); 00093 }; 00094 00095 class FENNEL_TEST_EXPORT ThreadedTestBaseTask 00096 { 00097 ThreadedTestBase &test; 00098 int iOp; 00099 00100 public: 00101 explicit ThreadedTestBaseTask( 00102 ThreadedTestBase &testCaseInit, 00103 int iOpInit); 00104 00105 void execute(); 00106 }; 00107 00108 FENNEL_END_NAMESPACE 00109 00110 #endif 00111 00112