mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-15 19:02:04 +00:00
56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
import time
|
|
|
|
import pytest
|
|
|
|
from helpers.cluster import ClickHouseCluster
|
|
|
|
cluster = ClickHouseCluster(__file__)
|
|
|
|
node = cluster.add_instance(
|
|
"node",
|
|
user_configs=[
|
|
"configs/users.xml",
|
|
],
|
|
)
|
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True)
|
|
def start_cluster():
|
|
try:
|
|
cluster.start()
|
|
yield cluster
|
|
finally:
|
|
cluster.shutdown()
|
|
|
|
|
|
def test_memory_usage():
|
|
node.query("CREATE USER IF NOT EXISTS A")
|
|
node.query("GRANT ALL ON *.* TO A")
|
|
|
|
node.query(
|
|
"CREATE TABLE async_table(data Array(UInt64)) ENGINE=MergeTree() ORDER BY data"
|
|
)
|
|
|
|
node.get_query_request("SELECT count() FROM system.numbers", user="A")
|
|
|
|
INSERT_QUERY = "INSERT INTO async_table SETTINGS async_insert=1, wait_for_async_insert=1,async_insert_max_data_size=150000000 VALUES ({})"
|
|
for iter in range(10):
|
|
values = list(range(iter * 5000000, (iter + 1) * 5000000))
|
|
node.query(INSERT_QUERY.format(values), user="A")
|
|
|
|
# Wait until buffers are freed
|
|
time.sleep(5)
|
|
|
|
response = node.get_query_request(
|
|
"SELECT groupArray(number) FROM numbers(1000000) SETTINGS max_memory_usage_for_user={}".format(
|
|
30 * (2**23)
|
|
),
|
|
user="A",
|
|
)
|
|
|
|
_, err = response.get_answer_and_error()
|
|
assert err == "", "Query failed with error {}".format(err)
|
|
|
|
node.query("DROP TABLE async_table")
|
|
node.query("DROP USER IF EXISTS A")
|