2020-03-25 16:02:51 +00:00
|
|
|
#include <gtest/gtest.h>
|
|
|
|
|
|
|
|
#include <Processors/Sources/SourceFromSingleChunk.h>
|
|
|
|
#include <Processors/NullSink.h>
|
|
|
|
#include <Processors/Executors/PipelineExecutor.h>
|
|
|
|
|
|
|
|
#include <Columns/ColumnsNumber.h>
|
|
|
|
#include <DataTypes/DataTypesNumber.h>
|
|
|
|
|
|
|
|
using namespace DB;
|
|
|
|
|
|
|
|
TEST(Processors, PortsConnected)
|
|
|
|
{
|
|
|
|
auto col = ColumnUInt8::create(1, 1);
|
|
|
|
Columns columns;
|
|
|
|
columns.emplace_back(std::move(col));
|
|
|
|
Chunk chunk(std::move(columns), 1);
|
|
|
|
|
|
|
|
Block header = {ColumnWithTypeAndName(ColumnUInt8::create(), std::make_shared<DataTypeUInt8>(), "x")};
|
|
|
|
|
|
|
|
auto source = std::make_shared<SourceFromSingleChunk>(std::move(header), std::move(chunk));
|
|
|
|
auto sink = std::make_shared<NullSink>(source->getPort().getHeader());
|
|
|
|
|
|
|
|
connect(source->getPort(), sink->getPort());
|
|
|
|
|
|
|
|
Processors processors;
|
|
|
|
processors.emplace_back(std::move(source));
|
|
|
|
processors.emplace_back(std::move(sink));
|
|
|
|
|
|
|
|
PipelineExecutor executor(processors);
|
|
|
|
executor.execute(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Processors, PortsNotConnected)
|
|
|
|
{
|
|
|
|
auto col = ColumnUInt8::create(1, 1);
|
|
|
|
Columns columns;
|
|
|
|
columns.emplace_back(std::move(col));
|
|
|
|
Chunk chunk(std::move(columns), 1);
|
|
|
|
|
|
|
|
Block header = {ColumnWithTypeAndName(ColumnUInt8::create(), std::make_shared<DataTypeUInt8>(), "x")};
|
|
|
|
|
|
|
|
auto source = std::make_shared<SourceFromSingleChunk>(std::move(header), std::move(chunk));
|
|
|
|
auto sink = std::make_shared<NullSink>(source->getPort().getHeader());
|
|
|
|
|
|
|
|
/// connect(source->getPort(), sink->getPort());
|
|
|
|
|
|
|
|
Processors processors;
|
|
|
|
processors.emplace_back(std::move(source));
|
|
|
|
processors.emplace_back(std::move(sink));
|
|
|
|
|
2020-03-25 16:34:46 +00:00
|
|
|
auto exec = [&]()
|
2020-03-25 16:02:51 +00:00
|
|
|
{
|
2020-03-25 16:55:05 +00:00
|
|
|
|
2020-03-25 16:34:46 +00:00
|
|
|
try
|
|
|
|
{
|
2020-03-25 16:55:05 +00:00
|
|
|
PipelineExecutor executor(processors);
|
2020-03-25 16:34:46 +00:00
|
|
|
executor.execute(1);
|
|
|
|
}
|
|
|
|
catch (DB::Exception & e)
|
|
|
|
{
|
|
|
|
std::cout << e.displayText() << std::endl;
|
2020-03-25 16:44:50 +00:00
|
|
|
ASSERT_TRUE(e.displayText().find("pipeline") != std::string::npos);
|
2020-03-25 16:55:05 +00:00
|
|
|
throw;
|
2020-03-25 16:34:46 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2020-03-25 16:55:05 +00:00
|
|
|
ASSERT_THROW(exec(), DB::Exception);
|
2020-03-25 16:02:51 +00:00
|
|
|
}
|