ClickHouse/dbms/src/Common/tests/gtest_thread_pool_schedule_exception.cpp

34 lines
580 B
C++
Raw Normal View History

2019-06-29 23:23:53 +00:00
#include <iostream>
#include <stdexcept>
#include <Common/ThreadPool.h>
#include <gtest/gtest.h>
2019-12-15 06:34:43 +00:00
static bool check()
2019-06-29 23:23:53 +00:00
{
ThreadPool pool(10);
pool.scheduleOrThrowOnError([] { throw std::runtime_error("Hello, world!"); });
2019-06-29 23:23:53 +00:00
try
{
for (size_t i = 0; i < 100; ++i)
pool.scheduleOrThrowOnError([] {}); /// An exception will be rethrown from this method.
2019-06-29 23:23:53 +00:00
}
catch (const std::runtime_error &)
{
return true;
}
pool.wait();
return false;
}
TEST(ThreadPool, ExceptionFromSchedule)
{
EXPECT_TRUE(check());
}