mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-19 16:20:50 +00:00
Randomize integration tests settings
This commit is contained in:
parent
4c4a051d5e
commit
cf9200f1d0
@ -19,6 +19,7 @@ import urllib.parse
|
||||
import shlex
|
||||
import urllib3
|
||||
import requests
|
||||
from pathlib import Path
|
||||
|
||||
try:
|
||||
# Please, add modules that required for specific tests only here.
|
||||
@ -52,6 +53,7 @@ from helpers.client import QueryRuntimeException
|
||||
import docker
|
||||
|
||||
from .client import Client
|
||||
from .random_settings import write_random_settings_config
|
||||
from .retry_decorator import retry
|
||||
|
||||
from .config_cluster import *
|
||||
@ -4602,6 +4604,8 @@ class ClickHouseInstance:
|
||||
if len(self.custom_dictionaries_paths):
|
||||
write_embedded_config("0_common_enable_dictionaries.xml", self.config_d_dir)
|
||||
|
||||
write_random_settings_config(Path(users_d_dir) / "0_random_settings.xml")
|
||||
|
||||
version = None
|
||||
version_parts = self.tag.split(".")
|
||||
if version_parts[0].isdigit() and version_parts[1].isdigit():
|
||||
|
28
tests/integration/helpers/random_settings.py
Normal file
28
tests/integration/helpers/random_settings.py
Normal file
@ -0,0 +1,28 @@
|
||||
import random
|
||||
|
||||
|
||||
def randomize_settings():
|
||||
yield "max_joined_block_size_rows", random.randint(8000, 100000)
|
||||
if random.random() < 0.5:
|
||||
yield "max_block_size", random.randint(8000, 100000)
|
||||
|
||||
|
||||
def write_random_settings_config(destination):
|
||||
with open(destination, "w") as f:
|
||||
f.write(
|
||||
"""
|
||||
<clickhouse>
|
||||
<profiles>
|
||||
<default>
|
||||
"""
|
||||
)
|
||||
for setting, value in randomize_settings():
|
||||
f.write(f"<{setting}>{value}</{setting}>\n")
|
||||
|
||||
f.write(
|
||||
"""
|
||||
</default>
|
||||
</profiles>
|
||||
</clickhouse>
|
||||
"""
|
||||
)
|
@ -0,0 +1,7 @@
|
||||
<clickhouse>
|
||||
<profiles>
|
||||
<default>
|
||||
<max_block_size>59999</max_block_size>
|
||||
</default>
|
||||
</profiles>
|
||||
</clickhouse>
|
32
tests/integration/test_settings_randomization/test.py
Normal file
32
tests/integration/test_settings_randomization/test.py
Normal file
@ -0,0 +1,32 @@
|
||||
import pytest
|
||||
from helpers.cluster import ClickHouseCluster
|
||||
|
||||
cluster = ClickHouseCluster(__file__)
|
||||
node = cluster.add_instance("node1", user_configs=["config/users.xml"])
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def started_cluster():
|
||||
try:
|
||||
cluster.start()
|
||||
yield cluster
|
||||
|
||||
finally:
|
||||
cluster.shutdown()
|
||||
|
||||
|
||||
def test_settings_randomization(started_cluster):
|
||||
"""
|
||||
See tests/integration/helpers/random_settings.py
|
||||
"""
|
||||
|
||||
def q(field, name):
|
||||
return int(
|
||||
node.query(
|
||||
f"SELECT {field} FROM system.settings WHERE name = '{name}'"
|
||||
).strip()
|
||||
)
|
||||
|
||||
assert q("value", "max_block_size") == 59999
|
||||
assert q("changed", "max_joined_block_size_rows") == 1
|
||||
assert 8000 <= q("value", "max_joined_block_size_rows") <= 100000
|
Loading…
Reference in New Issue
Block a user