From 91cc6066ffa1fdd49f8abbed566ebc8352121091 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 14:48:51 +0300 Subject: [PATCH 1/8] IGNITE-13829: added rotate log --- .../ignitetest/services/utils/ignite_aware.py | 17 +++++++++++++++++ .../services/utils/ignite_persistence.py | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py index 43fca2fc6df47..5d31647620f7f 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py @@ -66,6 +66,9 @@ def start_async(self, clean=True): """ Starts in async way. """ + if not clean: + self.__rotate_log() + super().start(clean=clean) def start(self, clean=True): @@ -351,3 +354,17 @@ def __dump_netfilter_settings(node): Reads current netfilter settings on the node for debugging purposes. """ return str(node.account.ssh_client.exec_command("sudo iptables -L -n")[1].read(), sys.getdefaultencoding()) + + def __rotate_log(self): + """ + Rotate log file. + """ + new_log_file = self.STDOUT_STDERR_CAPTURE.replace('.log', '_$N.log') + + for node in self.nodes: + node.account.ssh(f'if [ -e {self.STDOUT_STDERR_CAPTURE} ];' + f'then ' + f'cd {self.LOGS_DIR};' + f'N=`ls | grep -E "^console_?[0-9]*.log$" | wc -l`;' + f'mv {self.STDOUT_STDERR_CAPTURE} {new_log_file};' + f'fi') diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py index 7cdc03c7d553f..9f6e4ca79a78b 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py @@ -28,12 +28,13 @@ class PersistenceAware: """ # Root directory for persistent output PERSISTENT_ROOT = "/mnt/service" - STDOUT_STDERR_CAPTURE = os.path.join(PERSISTENT_ROOT, "console.log") TEMP_DIR = os.path.join(PERSISTENT_ROOT, "tmp") + LOGS_DIR = os.path.join(PERSISTENT_ROOT, "logs") + STDOUT_STDERR_CAPTURE = os.path.join(LOGS_DIR, "console.log") logs = { "console_log": { - "path": STDOUT_STDERR_CAPTURE, + "path": LOGS_DIR, "collect_default": True } } @@ -43,8 +44,7 @@ def init_persistent(self, node): Init persistent directory. :param node: Service node. """ - node.account.mkdirs(self.PERSISTENT_ROOT) - node.account.mkdirs(self.TEMP_DIR) + node.account.mkdirs(f'{self.TEMP_DIR} {self.LOGS_DIR}') class IgnitePersistenceAware(PersistenceAware): From dd13af47ef8020ee080bcb3dfa6701df300a34a6 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 16:30:58 +0300 Subject: [PATCH 2/8] IGNITE-13829: fix rotate log --- .../ignitetest/services/utils/ignite_aware.py | 22 +++++++------------ .../ignitetest/services/utils/ignite_spec.py | 13 +++++------ 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py index 5d31647620f7f..b522744aaa8fa 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py @@ -66,9 +66,6 @@ def start_async(self, clean=True): """ Starts in async way. """ - if not clean: - self.__rotate_log() - super().start(clean=clean) def start(self, clean=True): @@ -191,7 +188,7 @@ def pids(self, node): # pylint: disable=W0613 def _worker(self, idx, node): - cmd = self.spec.command + cmd = self.spec.command(self.get_log_file(node)) self.logger.debug("Attempting to start Application Service on %s with command: %s" % (str(node.account), cmd)) @@ -355,16 +352,13 @@ def __dump_netfilter_settings(node): """ return str(node.account.ssh_client.exec_command("sudo iptables -L -n")[1].read(), sys.getdefaultencoding()) - def __rotate_log(self): + def get_log_file(self, node): """ - Rotate log file. + Get log file. """ - new_log_file = self.STDOUT_STDERR_CAPTURE.replace('.log', '_$N.log') + cnt = list(node.account.ssh_capture(f'ls {self.LOGS_DIR} | grep -E "^console_?[0-9]*.log$" | wc -l', callback=int))[0] - for node in self.nodes: - node.account.ssh(f'if [ -e {self.STDOUT_STDERR_CAPTURE} ];' - f'then ' - f'cd {self.LOGS_DIR};' - f'N=`ls | grep -E "^console_?[0-9]*.log$" | wc -l`;' - f'mv {self.STDOUT_STDERR_CAPTURE} {new_log_file};' - f'fi') + if cnt is not 0: + return self.STDOUT_STDERR_CAPTURE.replace('.log', f'_{cnt}.log') + else: + return self.STDOUT_STDERR_CAPTURE diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py index ac664f34e2922..7d90c50670912 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py @@ -74,9 +74,8 @@ def config_template(self): return IgniteClientConfigTemplate() return IgniteServerConfigTemplate() - @property @abstractmethod - def command(self): + def command(self, stdout_stderr): """ :return: string that represents command to run service on a node """ @@ -100,14 +99,13 @@ class IgniteNodeSpec(IgniteSpec, IgnitePersistenceAware): """ Spec to run ignite node """ - @property - def command(self): + def command(self, stdout_stderr): cmd = "%s %s %s %s 2>&1 | tee -a %s &" % \ (self._envs(), self.path.script("ignite.sh"), self._jvm_opts(), self.CONFIG_FILE, - self.STDOUT_STDERR_CAPTURE) + stdout_stderr) return cmd @@ -123,14 +121,13 @@ def __init__(self, **kwargs): def _app_args(self): return ",".join(self.args) - @property - def command(self): + def command(self, stdout_stderr): cmd = "%s %s %s %s 2>&1 | tee -a %s &" % \ (self._envs(), self.path.script("ignite.sh"), self._jvm_opts(), self._app_args(), - self.STDOUT_STDERR_CAPTURE) + stdout_stderr) return cmd From 57596fee12f28321f598a6b1119be116dc857da9 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 19:26:44 +0300 Subject: [PATCH 3/8] IGNITE-13829: fix rotate log with simbolic link --- .../ignitetest/services/utils/ignite_aware.py | 17 +++++++++-------- .../ignitetest/services/utils/ignite_spec.py | 13 ++++++++----- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py index b522744aaa8fa..980b61192c5e9 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py @@ -83,6 +83,8 @@ def await_started(self): def start_node(self, node): self.init_persistent(node) + self.__rotate_log(node) + super().start_node(node) wait_until(lambda: self.alive(node), timeout_sec=10) @@ -188,7 +190,7 @@ def pids(self, node): # pylint: disable=W0613 def _worker(self, idx, node): - cmd = self.spec.command(self.get_log_file(node)) + cmd = self.spec.command self.logger.debug("Attempting to start Application Service on %s with command: %s" % (str(node.account), cmd)) @@ -352,13 +354,12 @@ def __dump_netfilter_settings(node): """ return str(node.account.ssh_client.exec_command("sudo iptables -L -n")[1].read(), sys.getdefaultencoding()) - def get_log_file(self, node): + def __rotate_log(self, node): """ - Get log file. + Rotate log file. """ - cnt = list(node.account.ssh_capture(f'ls {self.LOGS_DIR} | grep -E "^console_?[0-9]*.log$" | wc -l', callback=int))[0] + new_log_file = self.STDOUT_STDERR_CAPTURE.replace('.log', '_$(($N+1)).log') - if cnt is not 0: - return self.STDOUT_STDERR_CAPTURE.replace('.log', f'_{cnt}.log') - else: - return self.STDOUT_STDERR_CAPTURE + node.account.ssh(f'cd {self.LOGS_DIR};' + f'N=`ls | grep -E "^console_[0-9]*.log$" | wc -l`;' + f'ln -sf {new_log_file} {self.STDOUT_STDERR_CAPTURE} ;') diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py index 7d90c50670912..ac664f34e2922 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py @@ -74,8 +74,9 @@ def config_template(self): return IgniteClientConfigTemplate() return IgniteServerConfigTemplate() + @property @abstractmethod - def command(self, stdout_stderr): + def command(self): """ :return: string that represents command to run service on a node """ @@ -99,13 +100,14 @@ class IgniteNodeSpec(IgniteSpec, IgnitePersistenceAware): """ Spec to run ignite node """ - def command(self, stdout_stderr): + @property + def command(self): cmd = "%s %s %s %s 2>&1 | tee -a %s &" % \ (self._envs(), self.path.script("ignite.sh"), self._jvm_opts(), self.CONFIG_FILE, - stdout_stderr) + self.STDOUT_STDERR_CAPTURE) return cmd @@ -121,13 +123,14 @@ def __init__(self, **kwargs): def _app_args(self): return ",".join(self.args) - def command(self, stdout_stderr): + @property + def command(self): cmd = "%s %s %s %s 2>&1 | tee -a %s &" % \ (self._envs(), self.path.script("ignite.sh"), self._jvm_opts(), self._app_args(), - stdout_stderr) + self.STDOUT_STDERR_CAPTURE) return cmd From ceddc686cc618062ccb9e575084792dd4ab0e686 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 20:48:22 +0300 Subject: [PATCH 4/8] IGNITE-13829: fix rotate log with node.log_file --- .../ignitetest/services/utils/ignite_aware.py | 52 ++++++++++--------- .../ignitetest/services/utils/ignite_spec.py | 13 +++-- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py index 980b61192c5e9..e177afbf1ec58 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py @@ -35,6 +35,22 @@ from ignitetest.services.utils.log_utils import monitor_log +def await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=False, backoff_sec=5): + """ + Await for specific event message in a node's log file. + :param evt_message: Event message. + :param node: Ignite service node. + :param timeout_sec: Number of seconds to check the condition for before failing. + :param from_the_beginning: If True, search for message from the beginning of log file. + :param backoff_sec: Number of seconds to back off between each failure to meet the condition + before checking again. + """ + with monitor_log(node, node.log_file, from_the_beginning) as monitor: + monitor.wait_until(evt_message, timeout_sec=timeout_sec, backoff_sec=backoff_sec, + err_msg="Event [%s] was not triggered on '%s' in %d seconds" % (evt_message, node.name, + timeout_sec)) + + class IgniteAwareService(BackgroundThreadService, IgnitePersistenceAware, metaclass=ABCMeta): """ The base class to build services aware of Ignite. @@ -83,7 +99,7 @@ def await_started(self): def start_node(self, node): self.init_persistent(node) - self.__rotate_log(node) + self.update_log_file_on_node(node) super().start_node(node) @@ -190,7 +206,7 @@ def pids(self, node): # pylint: disable=W0613 def _worker(self, idx, node): - cmd = self.spec.command + cmd = self.spec.command(node.log_file) self.logger.debug("Attempting to start Application Service on %s with command: %s" % (str(node.account), cmd)) @@ -203,21 +219,6 @@ def alive(self, node): """ return len(self.pids(node)) > 0 - def await_event_on_node(self, evt_message, node, timeout_sec, from_the_beginning=False, backoff_sec=5): - """ - Await for specific event message in a node's log file. - :param evt_message: Event message. - :param node: Ignite service node. - :param timeout_sec: Number of seconds to check the condition for before failing. - :param from_the_beginning: If True, search for message from the beginning of log file. - :param backoff_sec: Number of seconds to back off between each failure to meet the condition - before checking again. - """ - with monitor_log(node, self.STDOUT_STDERR_CAPTURE, from_the_beginning) as monitor: - monitor.wait_until(evt_message, timeout_sec=timeout_sec, backoff_sec=backoff_sec, - err_msg="Event [%s] was not triggered on '%s' in %d seconds" % (evt_message, node.name, - timeout_sec)) - def await_event(self, evt_message, timeout_sec, from_the_beginning=False, backoff_sec=5): """ Await for specific event messages on all nodes. @@ -228,8 +229,8 @@ def await_event(self, evt_message, timeout_sec, from_the_beginning=False, backof before checking again. """ for node in self.nodes: - self.await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=from_the_beginning, - backoff_sec=backoff_sec) + await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=from_the_beginning, + backoff_sec=backoff_sec) def exec_on_nodes_async(self, nodes, task, simultaneously=True, delay_ms=0, timeout_sec=20): """ @@ -354,12 +355,13 @@ def __dump_netfilter_settings(node): """ return str(node.account.ssh_client.exec_command("sudo iptables -L -n")[1].read(), sys.getdefaultencoding()) - def __rotate_log(self, node): + def update_log_file_on_node(self, node): """ - Rotate log file. + Get log file. """ - new_log_file = self.STDOUT_STDERR_CAPTURE.replace('.log', '_$(($N+1)).log') - node.account.ssh(f'cd {self.LOGS_DIR};' - f'N=`ls | grep -E "^console_[0-9]*.log$" | wc -l`;' - f'ln -sf {new_log_file} {self.STDOUT_STDERR_CAPTURE} ;') + cnt = list(node.account.ssh_capture(f'ls {self.LOGS_DIR} | ' + f'grep -E "^console_?[0-9]*.log$" | ' + f'wc -l', callback=int))[0] + + node.log_file = self.STDOUT_STDERR_CAPTURE.replace('.log', f'_{cnt + 1}.log') diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py index ac664f34e2922..6b9ba9f9ff3a3 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py @@ -74,7 +74,6 @@ def config_template(self): return IgniteClientConfigTemplate() return IgniteServerConfigTemplate() - @property @abstractmethod def command(self): """ @@ -100,14 +99,14 @@ class IgniteNodeSpec(IgniteSpec, IgnitePersistenceAware): """ Spec to run ignite node """ - @property - def command(self): + # pylint: disable=W0221 + def command(self, stdout_stderr): cmd = "%s %s %s %s 2>&1 | tee -a %s &" % \ (self._envs(), self.path.script("ignite.sh"), self._jvm_opts(), self.CONFIG_FILE, - self.STDOUT_STDERR_CAPTURE) + stdout_stderr) return cmd @@ -123,14 +122,14 @@ def __init__(self, **kwargs): def _app_args(self): return ",".join(self.args) - @property - def command(self): + # pylint: disable=W0221 + def command(self, stdout_stderr): cmd = "%s %s %s %s 2>&1 | tee -a %s &" % \ (self._envs(), self.path.script("ignite.sh"), self._jvm_opts(), self._app_args(), - self.STDOUT_STDERR_CAPTURE) + stdout_stderr) return cmd From d7c5a5ec28756dafa34271640b728ed77f1b3828 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 21:31:52 +0300 Subject: [PATCH 5/8] IGNITE-13829: set method IgniteAwareService.await_event_on_node @staticmethod --- .../ignitetest/services/utils/ignite_aware.py | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py index e177afbf1ec58..70f167a4aa902 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py @@ -35,22 +35,6 @@ from ignitetest.services.utils.log_utils import monitor_log -def await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=False, backoff_sec=5): - """ - Await for specific event message in a node's log file. - :param evt_message: Event message. - :param node: Ignite service node. - :param timeout_sec: Number of seconds to check the condition for before failing. - :param from_the_beginning: If True, search for message from the beginning of log file. - :param backoff_sec: Number of seconds to back off between each failure to meet the condition - before checking again. - """ - with monitor_log(node, node.log_file, from_the_beginning) as monitor: - monitor.wait_until(evt_message, timeout_sec=timeout_sec, backoff_sec=backoff_sec, - err_msg="Event [%s] was not triggered on '%s' in %d seconds" % (evt_message, node.name, - timeout_sec)) - - class IgniteAwareService(BackgroundThreadService, IgnitePersistenceAware, metaclass=ABCMeta): """ The base class to build services aware of Ignite. @@ -219,6 +203,22 @@ def alive(self, node): """ return len(self.pids(node)) > 0 + @staticmethod + def await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=False, backoff_sec=5): + """ + Await for specific event message in a node's log file. + :param evt_message: Event message. + :param node: Ignite service node. + :param timeout_sec: Number of seconds to check the condition for before failing. + :param from_the_beginning: If True, search for message from the beginning of log file. + :param backoff_sec: Number of seconds to back off between each failure to meet the condition + before checking again. + """ + with monitor_log(node, node.log_file, from_the_beginning) as monitor: + monitor.wait_until(evt_message, timeout_sec=timeout_sec, backoff_sec=backoff_sec, + err_msg="Event [%s] was not triggered on '%s' in %d seconds" % (evt_message, node.name, + timeout_sec)) + def await_event(self, evt_message, timeout_sec, from_the_beginning=False, backoff_sec=5): """ Await for specific event messages on all nodes. @@ -229,8 +229,8 @@ def await_event(self, evt_message, timeout_sec, from_the_beginning=False, backof before checking again. """ for node in self.nodes: - await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=from_the_beginning, - backoff_sec=backoff_sec) + self.await_event_on_node(evt_message, node, timeout_sec, from_the_beginning=from_the_beginning, + backoff_sec=backoff_sec) def exec_on_nodes_async(self, nodes, task, simultaneously=True, delay_ms=0, timeout_sec=20): """ From 19d5b42c4b4ba7ff9eb138f5d9fb16526d6e1380 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 22:02:44 +0300 Subject: [PATCH 6/8] IGNITE-13829: fix use node.log_file --- modules/ducktests/tests/ignitetest/services/ignite.py | 2 +- modules/ducktests/tests/ignitetest/services/ignite_app.py | 2 +- modules/ducktests/tests/ignitetest/tests/discovery_test.py | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/ignite.py b/modules/ducktests/tests/ignitetest/services/ignite.py index e5ec3fa9a3bd7..7923dc7c44a31 100644 --- a/modules/ducktests/tests/ignitetest/services/ignite.py +++ b/modules/ducktests/tests/ignitetest/services/ignite.py @@ -83,7 +83,7 @@ def get_event_time(service, log_node, log_pattern, from_the_beginning=True, time backoff_sec=0.3) _, stdout, _ = log_node.account.ssh_client.exec_command( - "grep '%s' %s" % (log_pattern, IgniteAwareService.STDOUT_STDERR_CAPTURE)) + "grep '%s' %s" % (log_pattern, log_node.log_file)) return datetime.strptime(re.match("^\\[[^\\[]+\\]", stdout.read().decode("utf-8")).group(), "[%Y-%m-%d %H:%M:%S,%f]") diff --git a/modules/ducktests/tests/ignitetest/services/ignite_app.py b/modules/ducktests/tests/ignitetest/services/ignite_app.py index bb93725bca59a..8833582d4d5e3 100644 --- a/modules/ducktests/tests/ignitetest/services/ignite_app.py +++ b/modules/ducktests/tests/ignitetest/services/ignite_app.py @@ -102,7 +102,7 @@ def extract_results(self, name): for node in self.nodes: output = node.account.ssh_capture( - "grep '%s' %s" % (name + "->", self.STDOUT_STDERR_CAPTURE), allow_fail=False) + "grep '%s' %s" % (name + "->", node.log_file), allow_fail=False) for line in output: res.append(re.search("%s(.*)%s" % (name + "->", "<-"), line).group(1)) diff --git a/modules/ducktests/tests/ignitetest/tests/discovery_test.py b/modules/ducktests/tests/ignitetest/tests/discovery_test.py index eb0d250110b25..658591e95ece5 100644 --- a/modules/ducktests/tests/ignitetest/tests/discovery_test.py +++ b/modules/ducktests/tests/ignitetest/tests/discovery_test.py @@ -244,13 +244,13 @@ def _simulate_and_detect_failure(self, servers, failed_nodes, timeout): def _check_failed_number(self, failed_nodes, survived_node): """Ensures number of failed nodes is correct.""" - cmd = "grep '%s' %s | wc -l" % (node_failed_event_pattern(), IgniteAwareService.STDOUT_STDERR_CAPTURE) + cmd = "grep '%s' %s | wc -l" % (node_failed_event_pattern(), survived_node.log_file) failed_cnt = int(str(survived_node.account.ssh_client.exec_command(cmd)[1].read(), sys.getdefaultencoding())) if failed_cnt != len(failed_nodes): failed = str(survived_node.account.ssh_client.exec_command( - "grep '%s' %s" % (node_failed_event_pattern(), IgniteAwareService.STDOUT_STDERR_CAPTURE))[1].read(), + "grep '%s' %s" % (node_failed_event_pattern(), survived_node.log_file))[1].read(), sys.getdefaultencoding()) self.logger.warn("Node '%s' (%s) has detected the following failures:%s%s" % ( @@ -263,7 +263,7 @@ def _check_not_segmented(self, failed_nodes): """Ensures only target nodes failed""" for service in [srv for srv in self.test_context.services if isinstance(srv, IgniteAwareService)]: for node in [srv_node for srv_node in service.nodes if srv_node not in failed_nodes]: - cmd = "grep -i '%s' %s | wc -l" % ("local node segmented", IgniteAwareService.STDOUT_STDERR_CAPTURE) + cmd = "grep -i '%s' %s | wc -l" % ("local node segmented", node.log_file) failed = str(node.account.ssh_client.exec_command(cmd)[1].read(), sys.getdefaultencoding()) From 7f406c4b465111f444837d0e9da7a4bb1e1bfa9b Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Wed, 16 Dec 2020 22:52:10 +0300 Subject: [PATCH 7/8] IGNITE-13829: little fix --- .../tests/ignitetest/services/utils/ignite_aware.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py index 70f167a4aa902..06fbe32932672 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py @@ -83,7 +83,7 @@ def await_started(self): def start_node(self, node): self.init_persistent(node) - self.update_log_file_on_node(node) + self.__update_node_log_file(node) super().start_node(node) @@ -355,13 +355,12 @@ def __dump_netfilter_settings(node): """ return str(node.account.ssh_client.exec_command("sudo iptables -L -n")[1].read(), sys.getdefaultencoding()) - def update_log_file_on_node(self, node): + def __update_node_log_file(self, node): """ - Get log file. + Update the node log file. """ - cnt = list(node.account.ssh_capture(f'ls {self.LOGS_DIR} | ' - f'grep -E "^console_?[0-9]*.log$" | ' + f'grep -E "^console_[0-9]*.log$" | ' f'wc -l', callback=int))[0] node.log_file = self.STDOUT_STDERR_CAPTURE.replace('.log', f'_{cnt + 1}.log') From 5b0ae678e9500e0b96d606f58c490ec49cbb6061 Mon Sep 17 00:00:00 2001 From: Ryzhov Sergei Date: Fri, 18 Dec 2020 12:25:17 +0300 Subject: [PATCH 8/8] IGNITE-13829: fix comment --- .../tests/ignitetest/services/utils/ignite_persistence.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py index 9f6e4ca79a78b..4e018ccf3220c 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_persistence.py @@ -44,7 +44,9 @@ def init_persistent(self, node): Init persistent directory. :param node: Service node. """ - node.account.mkdirs(f'{self.TEMP_DIR} {self.LOGS_DIR}') + node.account.mkdirs(self.PERSISTENT_ROOT) + node.account.mkdirs(self.TEMP_DIR) + node.account.mkdirs(self.LOGS_DIR) class IgnitePersistenceAware(PersistenceAware):