Showing the changes to test/common/WelsThreadPoolTest.cpp (1 of 10 files). Show all
Unified · Split
| @@ -10,7 +10,7 @@ · 9 unmodified lines | |||
| 10 | #include "WelsTask.h" | 10 | #include "WelsTask.h" |
| 11 | #include "WelsThreadPoolTest.h" | 11 | #include "WelsThreadPoolTest.h" |
| 12 | 12 | ||
| 13 | #define TEST_TASK_NUM 20 | 13 | #define TEST_TASK_NUM 30 |
| 14 | 14 | ||
| 15 | class CSimpleTask : public IWelsTask { | 15 | class CSimpleTask : public IWelsTask { |
| 16 | public: | 16 | public: |
| @@ -36,11 +36,10 @@ class CSimpleTask : public IWelsTask { · 19 unmodified lines | |||
| 36 | 36 | ||
| 37 | uint32_t CSimpleTask::id = 0; | 37 | uint32_t CSimpleTask::id = 0; |
| 38 | 38 | ||
| 39 | 39 | void* OneCallingFunc() { | |
| 40 | TEST (CThreadPoolTest, CThreadPoolTest) { | ||
| 41 | CThreadPoolTest cThreadPoolTest; | 40 | CThreadPoolTest cThreadPoolTest; |
| 42 | CSimpleTask* aTasks[TEST_TASK_NUM]; | 41 | CSimpleTask* aTasks[TEST_TASK_NUM]; |
| 43 | CWelsThreadPool cThreadPool (&cThreadPoolTest); | 42 | CWelsThreadPool* pThreadPool = & (CWelsThreadPool::AddReference (&cThreadPoolTest)); |
| 44 | 43 | ||
| 45 | int32_t i; | 44 | int32_t i; |
| 46 | for (i = 0; i < TEST_TASK_NUM; i++) { | 45 | for (i = 0; i < TEST_TASK_NUM; i++) { |
| @@ -48,7 +47,7 @@ TEST (CThreadPoolTest, CThreadPoolTest) { · 1 unmodified line | |||
| 48 | } | 47 | } |
| 49 | 48 | ||
| 50 | for (i = 0; i < TEST_TASK_NUM; i++) { | 49 | for (i = 0; i < TEST_TASK_NUM; i++) { |
| 51 | cThreadPool.QueueTask (aTasks[i]); | 50 | pThreadPool->QueueTask (aTasks[i]); |
| 52 | } | 51 | } |
| 53 | 52 | ||
| 54 | while (cThreadPoolTest.GetTaskCount() < TEST_TASK_NUM) { | 53 | while (cThreadPoolTest.GetTaskCount() < TEST_TASK_NUM) { |
| @@ -58,5 +57,66 @@ TEST (CThreadPoolTest, CThreadPoolTest) { · 3 unmodified lines | |||
| 58 | for (i = 0; i < TEST_TASK_NUM; i++) { | 57 | for (i = 0; i < TEST_TASK_NUM; i++) { |
| 59 | delete aTasks[i]; | 58 | delete aTasks[i]; |
| 60 | } | 59 | } |
| 60 | pThreadPool->RemoveInstance(); | ||
| 61 | |||
| 62 | return 0; | ||
| 63 | } | ||
| 64 | |||
| 65 | |||
| 66 | TEST (CThreadPoolTest, CThreadPoolTest) { | ||
| 67 | OneCallingFunc(); | ||
| 68 | |||
| 69 | int iRet = CWelsThreadPool::SetThreadNum (8); | ||
| 70 | EXPECT_EQ (0, iRet); | ||
| 71 | EXPECT_FALSE (CWelsThreadPool::IsReferenced()); | ||
| 72 | |||
| 73 | CWelsThreadPool* pThreadPool = & (CWelsThreadPool::AddReference (NULL)); | ||
| 74 | EXPECT_TRUE(pThreadPool->IsReferenced()); | ||
| 75 | EXPECT_EQ (8, pThreadPool->GetThreadNum()); | ||
| 76 | |||
| 77 | iRet = CWelsThreadPool::SetThreadNum (4); | ||
| 78 | EXPECT_TRUE (0 != iRet); | ||
| 79 | EXPECT_EQ (8, pThreadPool->GetThreadNum()); | ||
| 80 | |||
| 81 | pThreadPool->RemoveInstance(); | ||
| 82 | |||
| 83 | iRet = CWelsThreadPool::SetThreadNum (4); | ||
| 84 | EXPECT_EQ (0, iRet); | ||
| 85 | pThreadPool = & (CWelsThreadPool::AddReference (NULL)); | ||
| 86 | EXPECT_TRUE (pThreadPool->IsReferenced()); | ||
| 87 | EXPECT_EQ (4, pThreadPool->GetThreadNum()); | ||
| 88 | pThreadPool->RemoveInstance(); | ||
| 89 | |||
| 90 | EXPECT_FALSE (CWelsThreadPool::IsReferenced()); | ||
| 91 | } | ||
| 92 | |||
| 93 | |||
| 94 | TEST (CThreadPoolTest, CThreadPoolTestMulti) { | ||
| 95 | int iCallingNum = 10; | ||
| 96 | WELS_THREAD_HANDLE mThreadID[30]; | ||
| 97 | int i = 0; | ||
| 98 | |||
| 99 | for (i = 0; i < iCallingNum; i++) { | ||
| 100 | WelsThreadCreate (& (mThreadID[i]), (LPWELS_THREAD_ROUTINE)OneCallingFunc, NULL, 0); | ||
| 101 | WelsSleep (1); | ||
| 102 | } | ||
| 103 | |||
| 104 | for (i = iCallingNum; i < iCallingNum * 2; i++) { | ||
| 105 | WelsThreadCreate (& (mThreadID[i]), (LPWELS_THREAD_ROUTINE)OneCallingFunc, NULL, 0); | ||
| 106 | WelsSleep (1); | ||
| 107 | WelsThreadJoin (mThreadID[i]); | ||
| 108 | } | ||
| 109 | |||
| 110 | for (i = 0; i < iCallingNum; i++) { | ||
| 111 | WelsThreadJoin (mThreadID[i]); | ||
| 112 | } | ||
| 113 | |||
| 114 | for (i = iCallingNum * 2; i < iCallingNum * 3; i++) { | ||
| 115 | WelsThreadCreate (& (mThreadID[i]), (LPWELS_THREAD_ROUTINE)OneCallingFunc, NULL, 0); | ||
| 116 | WelsSleep (1); | ||
| 117 | WelsThreadJoin (mThreadID[i]); | ||
| 118 | } | ||
| 119 | |||
| 120 | EXPECT_FALSE (CWelsThreadPool::IsReferenced()); | ||
| 61 | } | 121 | } |
| 62 | 122 | ||