mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-14 03:25:15 +00:00
43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
import testflows.settings as settings
|
|
from testflows.core import *
|
|
|
|
@TestStep(Given)
|
|
def instrument_clickhouse_server_log(self, node=None, test=None,
|
|
clickhouse_server_log="/var/log/clickhouse-server/clickhouse-server.log"):
|
|
"""Instrument clickhouse-server.log for the current test (default)
|
|
by adding start and end messages that include test name to log
|
|
of the specified node. If we are in the debug mode and the test
|
|
fails then dump the messages from the log for this test.
|
|
"""
|
|
if test is None:
|
|
test = current()
|
|
|
|
if node is None:
|
|
node = self.context.node
|
|
|
|
with By("getting current log size"):
|
|
cmd = node.command(f"stat --format=%s {clickhouse_server_log}")
|
|
start_logsize = cmd.output.split(" ")[0].strip()
|
|
|
|
try:
|
|
with And("adding test name start message to the clickhouse-server.log"):
|
|
node.command(f"echo -e \"\\n-- start: {test.name} --\\n\" >> {clickhouse_server_log}")
|
|
yield
|
|
|
|
finally:
|
|
if test.terminating is True:
|
|
return
|
|
|
|
with Finally("adding test name end message to the clickhouse-server.log", flags=TE):
|
|
node.command(f"echo -e \"\\n-- end: {test.name} --\\n\" >> {clickhouse_server_log}")
|
|
|
|
with And("getting current log size at the end of the test"):
|
|
cmd = node.command(f"stat --format=%s {clickhouse_server_log}")
|
|
end_logsize = cmd.output.split(" ")[0].strip()
|
|
|
|
with And("checking if test has failing result"):
|
|
if settings.debug and not self.parent.result:
|
|
with Then("dumping clickhouse-server.log for this test"):
|
|
node.command(f"tail -c +{start_logsize} {clickhouse_server_log}"
|
|
f" | head -c {int(end_logsize) - int(start_logsize)}")
|