SpiecsEngine
 
Loading...
Searching...
No Matches

◆ TEST_F() [49/72]

SpicesTest::TEST_F ( ThreadPoolCached_test ,
Submit2nThreadsPoolTask  )

Testing if submit 2 nThreads pool task successfully.

Definition at line 146 of file ThreadPoolCached_test.h.

146 {
147
149
150 auto func = [](int sec) -> bool
151 {
152 std::this_thread::sleep_for(std::chrono::seconds(sec));
153 return true;
154 };
155
156 std::vector<std::future<bool>> futures(2 * nThreads);
157 for (int i = 0; i < 2 * nThreads; i++)
158 {
159 futures[i] = m_ThreadPool.SubmitPoolTask(std::bind(func, 2));
160 }
161
162 func(1); /* @brief Wait for task execute. */
163
164 EXPECT_EQ(m_ThreadPool.GetInitThreadSize() ,nThreads );
165 EXPECT_EQ(m_ThreadPool.GetIdleThreadSize() ,0 );
166 EXPECT_EQ(m_ThreadPool.GetPoolMode() ,Spices::PoolMode::MODE_CACHED);
167 EXPECT_EQ(m_ThreadPool.GetTasks() ,0 );
168 EXPECT_EQ(m_ThreadPool.GetThreadsCount() ,2 * nThreads );
169 EXPECT_EQ(m_ThreadPool.GetThreadIdleTimeOut(),10 );
170 EXPECT_EQ(m_ThreadPool.IsPoolRunning() ,true );
171
172 /* @brief Wait for part tasks finish. */
173 for (int i = 0; i < 2 * nThreads; i++)
174 {
175 futures[i].get();
176 }
177
178 EXPECT_EQ(m_ThreadPool.GetInitThreadSize() ,nThreads );
179 EXPECT_EQ(m_ThreadPool.GetIdleThreadSize() ,2 * nThreads );
180 EXPECT_EQ(m_ThreadPool.GetPoolMode() ,Spices::PoolMode::MODE_CACHED);
181 EXPECT_EQ(m_ThreadPool.GetTasks() ,0 );
182 EXPECT_EQ(m_ThreadPool.GetThreadsCount() ,2 * nThreads );
183 EXPECT_EQ(m_ThreadPool.GetThreadIdleTimeOut(),10 );
184 EXPECT_EQ(m_ThreadPool.IsPoolRunning() ,true );
185
186 /* @brief Wait for threads recovery finish. */
187 func(25);
188
189 EXPECT_EQ(m_ThreadPool.GetInitThreadSize() ,nThreads );
190 EXPECT_EQ(m_ThreadPool.GetIdleThreadSize() ,nThreads );
191 EXPECT_EQ(m_ThreadPool.GetPoolMode() ,Spices::PoolMode::MODE_CACHED);
192 EXPECT_EQ(m_ThreadPool.GetTasks() ,0 );
193 EXPECT_EQ(m_ThreadPool.GetThreadsCount() ,nThreads );
194 EXPECT_EQ(m_ThreadPool.GetThreadIdleTimeOut(),10 );
195 EXPECT_EQ(m_ThreadPool.IsPoolRunning() ,true );
196 }
#define SPICESTEST_PROFILE_FUNCTION()