mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-18 14:30:49 +00:00
34 lines
543 B
C++
34 lines
543 B
C++
|
#include <iostream>
|
||
|
#include <stdexcept>
|
||
|
#include <Common/ThreadPool.h>
|
||
|
|
||
|
#include <gtest/gtest.h>
|
||
|
|
||
|
|
||
|
bool check()
|
||
|
{
|
||
|
ThreadPool pool(10);
|
||
|
|
||
|
pool.schedule([]{ throw std::runtime_error("Hello, world!"); });
|
||
|
|
||
|
try
|
||
|
{
|
||
|
for (size_t i = 0; i < 100; ++i)
|
||
|
pool.schedule([]{}); /// An exception will be rethrown from this method.
|
||
|
}
|
||
|
catch (const std::runtime_error &)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
pool.wait();
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
|
||
|
TEST(ThreadPool, ExceptionFromSchedule)
|
||
|
{
|
||
|
EXPECT_TRUE(check());
|
||
|
}
|