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 <vector>
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_ptr<boost::barrier> pStartBarrier;
00049
00053 bool bDone;
00054
00059 bool defaultThreadCount;
00060
00061 protected:
00065 uint nSeconds;
00066
00070 std::vector<int> 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