mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 01:00:48 +00:00
Merge pull request #5367 from yandex/apply-substitutions-for-create-prepare-drop-query
[WIP] Add ability to make substitutions in create, fill and drop query in performance tests.
This commit is contained in:
commit
37313d64ee
@ -159,17 +159,9 @@ UInt64 PerformanceTest::calculateMaxExecTime() const
|
||||
|
||||
void PerformanceTest::prepare() const
|
||||
{
|
||||
for (const auto & query : test_info.create_queries)
|
||||
for (const auto & query : test_info.create_and_fill_queries)
|
||||
{
|
||||
LOG_INFO(log, "Executing create query \"" << query << '\"');
|
||||
connection.sendQuery(query, "", QueryProcessingStage::Complete, &test_info.settings, nullptr, false);
|
||||
waitQuery(connection);
|
||||
LOG_INFO(log, "Query finished");
|
||||
}
|
||||
|
||||
for (const auto & query : test_info.fill_queries)
|
||||
{
|
||||
LOG_INFO(log, "Executing fill query \"" << query << '\"');
|
||||
LOG_INFO(log, "Executing create or fill query \"" << query << '\"');
|
||||
connection.sendQuery(query, "", QueryProcessingStage::Complete, &test_info.settings, nullptr, false);
|
||||
waitQuery(connection);
|
||||
LOG_INFO(log, "Query finished");
|
||||
|
@ -30,11 +30,6 @@ public:
|
||||
std::vector<TestStats> execute();
|
||||
void finish() const;
|
||||
|
||||
const PerformanceTestInfo & getTestInfo() const
|
||||
{
|
||||
return test_info;
|
||||
}
|
||||
|
||||
bool checkSIGINT() const
|
||||
{
|
||||
return got_SIGINT;
|
||||
|
@ -60,10 +60,10 @@ PerformanceTestInfo::PerformanceTestInfo(
|
||||
|
||||
applySettings(config);
|
||||
extractQueries(config);
|
||||
extractAuxiliaryQueries(config);
|
||||
processSubstitutions(config);
|
||||
getExecutionType(config);
|
||||
getStopConditions(config);
|
||||
extractAuxiliaryQueries(config);
|
||||
}
|
||||
|
||||
void PerformanceTestInfo::applySettings(XMLConfigurationPtr config)
|
||||
@ -153,13 +153,29 @@ void PerformanceTestInfo::processSubstitutions(XMLConfigurationPtr config)
|
||||
ConfigurationPtr substitutions_view(config->createView("substitutions"));
|
||||
constructSubstitutions(substitutions_view, substitutions);
|
||||
|
||||
auto queries_pre_format = queries;
|
||||
auto create_and_fill_queries_preformat = create_and_fill_queries;
|
||||
create_and_fill_queries.clear();
|
||||
for (const auto & query : create_and_fill_queries_preformat)
|
||||
{
|
||||
auto formatted = formatQueries(query, substitutions);
|
||||
create_and_fill_queries.insert(create_and_fill_queries.end(), formatted.begin(), formatted.end());
|
||||
}
|
||||
|
||||
auto queries_preformat = queries;
|
||||
queries.clear();
|
||||
for (const auto & query : queries_pre_format)
|
||||
for (const auto & query : queries_preformat)
|
||||
{
|
||||
auto formatted = formatQueries(query, substitutions);
|
||||
queries.insert(queries.end(), formatted.begin(), formatted.end());
|
||||
}
|
||||
|
||||
auto drop_queries_preformat = drop_queries;
|
||||
drop_queries.clear();
|
||||
for (const auto & query : drop_queries_preformat)
|
||||
{
|
||||
auto formatted = formatQueries(query, substitutions);
|
||||
drop_queries.insert(drop_queries.end(), formatted.begin(), formatted.end());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -203,13 +219,20 @@ void PerformanceTestInfo::getStopConditions(XMLConfigurationPtr config)
|
||||
void PerformanceTestInfo::extractAuxiliaryQueries(XMLConfigurationPtr config)
|
||||
{
|
||||
if (config->has("create_query"))
|
||||
create_queries = getMultipleValuesFromConfig(*config, "", "create_query");
|
||||
{
|
||||
create_and_fill_queries = getMultipleValuesFromConfig(*config, "", "create_query");
|
||||
}
|
||||
|
||||
if (config->has("fill_query"))
|
||||
fill_queries = getMultipleValuesFromConfig(*config, "", "fill_query");
|
||||
{
|
||||
auto fill_queries = getMultipleValuesFromConfig(*config, "", "fill_query");
|
||||
create_and_fill_queries.insert(create_and_fill_queries.end(), fill_queries.begin(), fill_queries.end());
|
||||
}
|
||||
|
||||
if (config->has("drop_query"))
|
||||
{
|
||||
drop_queries = getMultipleValuesFromConfig(*config, "", "drop_query");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -42,8 +42,7 @@ public:
|
||||
|
||||
std::vector<TestStopConditions> stop_conditions_by_run;
|
||||
|
||||
Strings create_queries;
|
||||
Strings fill_queries;
|
||||
Strings create_and_fill_queries;
|
||||
Strings drop_queries;
|
||||
|
||||
private:
|
||||
@ -52,7 +51,6 @@ private:
|
||||
void processSubstitutions(XMLConfigurationPtr config);
|
||||
void getExecutionType(XMLConfigurationPtr config);
|
||||
void getStopConditions(XMLConfigurationPtr config);
|
||||
void getMetrics(XMLConfigurationPtr config);
|
||||
void extractAuxiliaryQueries(XMLConfigurationPtr config);
|
||||
};
|
||||
|
||||
|
@ -202,8 +202,7 @@ private:
|
||||
LOG_INFO(log, "Preconditions for test '" << info.test_name << "' are fullfilled");
|
||||
LOG_INFO(
|
||||
log,
|
||||
"Preparing for run, have " << info.create_queries.size() << " create queries and " << info.fill_queries.size()
|
||||
<< " fill queries");
|
||||
"Preparing for run, have " << info.create_and_fill_queries.size() << " create and fill queries");
|
||||
current.prepare();
|
||||
LOG_INFO(log, "Prepared");
|
||||
LOG_INFO(log, "Running test '" << info.test_name << "'");
|
||||
|
48
dbms/tests/performance/parse_engine_file.xml
Normal file
48
dbms/tests/performance/parse_engine_file.xml
Normal file
@ -0,0 +1,48 @@
|
||||
<test>
|
||||
<name>test_read_formats</name>
|
||||
<type>loop</type>
|
||||
|
||||
<create_query>CREATE TABLE IF NOT EXISTS table_{format} ENGINE = File({format}) AS test.hits</create_query>
|
||||
|
||||
<fill_query>INSERT INTO table_{format} SELECT * FROM test.hits LIMIT 100000</fill_query>
|
||||
|
||||
<stop_conditions>
|
||||
<all_of>
|
||||
<iterations>5</iterations>
|
||||
<min_time_not_changing_for_ms>10000</min_time_not_changing_for_ms>
|
||||
</all_of>
|
||||
<any_of>
|
||||
<iterations>100</iterations>
|
||||
<total_time_ms>60000</total_time_ms>
|
||||
</any_of>
|
||||
</stop_conditions>
|
||||
|
||||
<main_metric>
|
||||
<min_time/>
|
||||
</main_metric>
|
||||
|
||||
|
||||
<substitutions>
|
||||
<substitution>
|
||||
<name>format</name>
|
||||
<values>
|
||||
<value>TabSeparated</value>
|
||||
<value>TabSeparatedWithNames</value>
|
||||
<value>TabSeparatedWithNamesAndTypes</value>
|
||||
<value>CSV</value>
|
||||
<value>CSVWithNames</value>
|
||||
<value>Values</value>
|
||||
<value>JSONEachRow</value>
|
||||
<value>TSKV</value>
|
||||
</values>
|
||||
</substitution>
|
||||
</substitutions>
|
||||
|
||||
<preconditions>
|
||||
<table_exists>test.hits</table_exists>
|
||||
</preconditions>
|
||||
|
||||
<query>SELECT * FROM table_{format}</query>
|
||||
|
||||
<drop_query>DROP TABLE IF EXISTS table_{format}</drop_query>
|
||||
</test>
|
53
dbms/tests/performance/select_format.xml
Normal file
53
dbms/tests/performance/select_format.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<test>
|
||||
<name>test_select_format</name>
|
||||
<type>loop</type>
|
||||
|
||||
<stop_conditions>
|
||||
<all_of>
|
||||
<iterations>5</iterations>
|
||||
<min_time_not_changing_for_ms>10000</min_time_not_changing_for_ms>
|
||||
</all_of>
|
||||
<any_of>
|
||||
<iterations>100</iterations>
|
||||
<total_time_ms>60000</total_time_ms>
|
||||
</any_of>
|
||||
</stop_conditions>
|
||||
|
||||
<main_metric>
|
||||
<min_time/>
|
||||
</main_metric>
|
||||
|
||||
|
||||
<substitutions>
|
||||
<substitution>
|
||||
<name>format</name>
|
||||
<values>
|
||||
<value>TabSeparated</value>
|
||||
<value>TabSeparatedRaw</value>
|
||||
<value>TabSeparatedWithNames</value>
|
||||
<value>TabSeparatedWithNamesAndTypes</value>
|
||||
<value>CSV</value>
|
||||
<value>CSVWithNames</value>
|
||||
<value>Values</value>
|
||||
<value>Vertical</value>
|
||||
<value>JSON</value>
|
||||
<value>JSONCompact</value>
|
||||
<value>JSONEachRow</value>
|
||||
<value>TSKV</value>
|
||||
<value>Pretty</value>
|
||||
<value>PrettyCompact</value>
|
||||
<value>PrettyCompactMonoBlock</value>
|
||||
<value>PrettyNoEscapes</value>
|
||||
<value>PrettySpace</value>
|
||||
<value>XML</value>
|
||||
</values>
|
||||
</substitution>
|
||||
</substitutions>
|
||||
|
||||
<preconditions>
|
||||
<table_exists>test.hits</table_exists>
|
||||
</preconditions>
|
||||
|
||||
<query>SELECT * FROM test.hits LIMIT 1000000 FORMAT {format}</query>
|
||||
|
||||
</test>
|
Loading…
Reference in New Issue
Block a user