diff --git a/ydb/library/workload/tpc_base/tpc_base.cpp b/ydb/library/workload/tpc_base/tpc_base.cpp index dea0cbfcc89e..7d0aa1af24c6 100644 --- a/ydb/library/workload/tpc_base/tpc_base.cpp +++ b/ydb/library/workload/tpc_base/tpc_base.cpp @@ -96,6 +96,7 @@ void TTpcBaseWorkloadGenerator::PatchQuery(TString& query) const { } void TTpcBaseWorkloadGenerator::FilterHeader(IOutputStream& result, TStringBuf header, const TString& query) const { + const TString scaleFactor = "$scale_factor = " + ToString(Params.GetScale()) + ";"; for(TStringBuf line; header.ReadLine(line);) { const auto pos = line.find('='); if (pos == line.npos) { @@ -103,7 +104,7 @@ void TTpcBaseWorkloadGenerator::FilterHeader(IOutputStream& result, TStringBuf h } const auto name = StripString(line.SubString(0, pos)); if (name == "$scale_factor") { - line = "$scale_factor = " + ToString(Params.GetScale()) + ";"; + line = scaleFactor; } for(auto posInQ = query.find(name); posInQ != query.npos; posInQ = query.find(name, posInQ)) { posInQ += name.length(); diff --git a/ydb/library/workload/tpch/ut/queries_ut.cpp b/ydb/library/workload/tpch/ut/queries_ut.cpp new file mode 100644 index 000000000000..53c39aa379a8 --- /dev/null +++ b/ydb/library/workload/tpch/ut/queries_ut.cpp @@ -0,0 +1,26 @@ +#include +#include +#include + +using namespace NYdbWorkload; + +Y_UNIT_TEST_SUITE(TpchQueries) { + Y_UNIT_TEST(ScaleFactor) { + TTpchWorkloadParams params; + NLastGetopt::TOpts opts; + params.ConfigureOpts(opts, TWorkloadParams::ECommandType::Run, 0); + const char* args[] = {"ut", "--scale", "10"}; + for (auto parser = NLastGetopt::TOptsParser(&opts, sizeof(args)/sizeof(*args), args); parser.Next();) { + } + auto generator = params.CreateGenerator(); + ui32 query_num = 0; + for (const auto& query: generator->GetWorkload(0)) { + if (query_num == 11) { + UNIT_ASSERT_C(TRegExMatch("\\$scale_factor\\s*=\\s*10\\s*;").Match(query.Query.c_str()), + "Scale factor is wrong for q11:" << Endl << query.Query); + break; + } + ++query_num; + } + } +}; diff --git a/ydb/library/workload/tpch/ut/ya.make b/ydb/library/workload/tpch/ut/ya.make new file mode 100644 index 000000000000..8a5149e5746c --- /dev/null +++ b/ydb/library/workload/tpch/ut/ya.make @@ -0,0 +1,11 @@ +UNITTEST_FOR(ydb/library/workload/tpch) + +SIZE(SMALL) + +SRCS(queries_ut.cpp) + +PEERDIR( + library/cpp/regex/pcre +) + +END() diff --git a/ydb/library/workload/tpch/ya.make b/ydb/library/workload/tpch/ya.make index 6339b4ff7452..60d29efbdfeb 100644 --- a/ydb/library/workload/tpch/ya.make +++ b/ydb/library/workload/tpch/ya.make @@ -100,3 +100,5 @@ PEERDIR( ) END() + +RECURSE_FOR_TESTS(ut)