未验证 提交 f9d70e74 编写于 作者: A alesapin 提交者: GitHub

Merge pull request #9047 from ClickHouse/fix_unit_tests

Fix unit tests
#pragma once
#include <Interpreters/Context.h>
inline DB::Context createContext()
{
auto context = DB::Context::createGlobal();
context.makeGlobalContext();
context.setPath("./");
return context;
}
inline const DB::Context & getContext()
{
static DB::Context global_context = createContext();
return global_context;
}
......@@ -6,17 +6,28 @@
#include <port/unistd.h>
#include <IO/ReadBufferAIO.h>
#include <fstream>
#include <string>
namespace
{
std::string createTmpFileForEOFtest()
{
char pattern[] = "/tmp/fileXXXXXX";
char * dir = ::mkdtemp(pattern);
return std::string(dir) + "/foo";
if (char * dir = ::mkdtemp(pattern); dir)
{
return std::string(dir) + "/foo";
}
else
{
/// We have no tmp in docker
/// So we have to use root
std::string almost_rand_dir = std::string{"/"} + std::to_string(rand()) + "foo";
return almost_rand_dir;
}
}
void prepare_for_eof(std::string & filename, std::string & buf)
void prepareForEOF(std::string & filename, std::string & buf)
{
static const std::string symbols = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
......@@ -28,7 +39,7 @@ void prepare_for_eof(std::string & filename, std::string & buf)
for (size_t i = 0; i < n; ++i)
buf += symbols[i % symbols.length()];
std::ofstream out(filename.c_str());
std::ofstream out(filename);
out << buf;
}
......@@ -39,7 +50,7 @@ TEST(ReadBufferAIOTest, TestReadAfterAIO)
using namespace DB;
std::string data;
std::string file_path;
prepare_for_eof(file_path, data);
prepareForEOF(file_path, data);
ReadBufferAIO testbuf(file_path);
std::string newdata;
......
......@@ -12,6 +12,7 @@
#include <Interpreters/Context.h>
#include <Storages/StorageLog.h>
#include <Common/typeid_cast.h>
#include <Common/tests/gtest_global_context.h>
#include <memory>
......@@ -20,13 +21,6 @@
# pragma GCC diagnostic ignored "-Wsuggest-override"
#endif
DB::Context createContext()
{
auto context = DB::Context::createGlobal();
context.makeGlobalContext();
context.setPath("./");
return context;
}
DB::StoragePtr createStorage(DB::DiskPtr & disk)
{
......@@ -43,18 +37,10 @@ DB::StoragePtr createStorage(DB::DiskPtr & disk)
return table;
}
std::unique_ptr<DB::Context> context;
template <typename T>
class StorageLogTest : public testing::Test
{
public:
static void SetUpTestSuite()
{
// Create context only once.
if (!context)
context = std::make_unique<DB::Context>(createContext());
}
void SetUp() override
{
......@@ -109,7 +95,7 @@ std::string writeData(int rows, DB::StoragePtr & table)
block.insert(column);
}
BlockOutputStreamPtr out = table->write({}, *context);
BlockOutputStreamPtr out = table->write({}, getContext());
out->write(block);
return data;
......@@ -123,9 +109,9 @@ std::string readData(DB::StoragePtr & table)
Names column_names;
column_names.push_back("a");
QueryProcessingStage::Enum stage = table->getQueryProcessingStage(*context);
QueryProcessingStage::Enum stage = table->getQueryProcessingStage(getContext());
BlockInputStreamPtr in = table->read(column_names, {}, *context, stage, 8192, 1)[0];
BlockInputStreamPtr in = table->read(column_names, {}, getContext(), stage, 8192, 1)[0];
Block sample;
{
......@@ -136,7 +122,7 @@ std::string readData(DB::StoragePtr & table)
std::ostringstream ss;
WriteBufferFromOStream out_buf(ss);
BlockOutputStreamPtr output = FormatFactory::instance().getOutput("Values", out_buf, sample, *context);
BlockOutputStreamPtr output = FormatFactory::instance().getOutput("Values", out_buf, sample, getContext());
copyData(*in, *output);
......
......@@ -9,6 +9,7 @@
#include <Databases/DatabaseMemory.h>
#include <Storages/StorageMemory.h>
#include <Functions/registerFunctions.h>
#include <Common/tests/gtest_global_context.h>
using namespace DB;
......@@ -17,7 +18,7 @@ using namespace DB;
/// NOTE How to do better?
struct State
{
Context context{Context::createGlobal()};
Context context = getContext();
NamesAndTypesList columns{
{"column", std::make_shared<DataTypeUInt8>()},
{"apply_id", std::make_shared<DataTypeUInt64>()},
......@@ -31,7 +32,6 @@ struct State
registerFunctions();
DatabasePtr database = std::make_shared<DatabaseMemory>("test");
database->attachTable("table", StorageMemory::create(StorageID("test", "table"), ColumnsDescription{columns}, ConstraintsDescription{}));
context.makeGlobalContext();
context.addDatabase("test", database);
context.setCurrentDatabase("test");
}
......
......@@ -3,6 +3,7 @@ FROM yandex/clickhouse-stateless-test
ENV TZ=Europe/Moscow
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get install gdb
CMD ln -s /usr/lib/llvm-8/bin/llvm-symbolizer /usr/bin/llvm-symbolizer; \
echo "TSAN_OPTIONS='halt_on_error=1 history_size=7'" >> /etc/environment; \
......@@ -12,4 +13,4 @@ CMD ln -s /usr/lib/llvm-8/bin/llvm-symbolizer /usr/bin/llvm-symbolizer; \
echo "TSAN_SYMBOLIZER_PATH=/usr/lib/llvm-8/bin/llvm-symbolizer" >> /etc/environment; \
echo "LLVM_SYMBOLIZER_PATH=/usr/lib/llvm-6.0/bin/llvm-symbolizer" >> /etc/environment; \
service zookeeper start && sleep 7 && /usr/share/zookeeper/bin/zkCli.sh -server localhost:2181 -create create /clickhouse_test ''; \
/unit_tests_dbms | tee test_output/test_result.txt
gdb -q -ex 'set print inferior-events off' -ex 'set confirm off' -ex 'set print thread-events off' -ex run -ex bt -ex quit --args ./unit_tests_dbms | tee test_output/test_result.txt
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册