summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-08-17 21:55:31 +0200
committerGitHub <noreply@github.com>2026-08-17 21:55:31 +0200
commitde57cd205cfd846eb1689967af0dccc3f764b22c (patch)
tree0670fc6b3dab743b7486492d347e351d08bf2a9e /smoketest/scripts/cli
parent75ad6742296f2916b9c46c614a10700246663e19 (diff)
parent28e28c5cadf93424bfad36f3cda368c0d12c35cf (diff)
downloadvyos-1x-de57cd205cfd846eb1689967af0dccc3f764b22c.tar.gz
vyos-1x-de57cd205cfd846eb1689967af0dccc3f764b22c.zip
Merge pull request #5411 from c-po/smoketest-wait-for-commit-lock
smoketest: T9218: wait for commit lock before cli_set/cli_delete too
Diffstat (limited to 'smoketest/scripts/cli')
-rw-r--r--smoketest/scripts/cli/base_vyostest_shim.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/smoketest/scripts/cli/base_vyostest_shim.py b/smoketest/scripts/cli/base_vyostest_shim.py
index 71af8176d..0fc146b0a 100644
--- a/smoketest/scripts/cli/base_vyostest_shim.py
+++ b/smoketest/scripts/cli/base_vyostest_shim.py
@@ -25,11 +25,10 @@ from typing import Type
from vyos import ConfigError
from vyos.configsession import ConfigSession
from vyos.configsession import ConfigSessionError
-from vyos.defaults import commit_lock
from vyos.frrender import mgmt_daemon
+from vyos.utils.commit import commit_in_progress2
from vyos.utils.process import cmdl
from vyos.utils.process import process_named_running
-from vyos.utils.process import run
save_config = '/tmp/vyos-smoketest-save'
@@ -97,29 +96,37 @@ class VyOSUnitTestSHIM:
# check process health and continuity
self.assertEqual(self.mgmt_daemon_pid, process_named_running(mgmt_daemon))
+ @staticmethod
+ def _wait_for_commit_lock():
+ # A concurrent commit (e.g. a previous commit asynchronous cleanup
+ # still finishing) keeps the commit lock held for a moment after
+ # control already returned to the caller.
+ while commit_in_progress2():
+ sleep(0.250)
+
def cli_set(self, path, value=None):
if self.debug:
str = f'set {" ".join(path)} {value}' if value else f'set {" ".join(path)}'
print(str)
+ self._wait_for_commit_lock()
self._session.set(path, value)
def cli_delete(self, config):
if self.debug:
print('del ' + ' '.join(config))
+ self._wait_for_commit_lock()
self._session.delete(config)
def cli_discard(self):
if self.debug:
print('DISCARD')
+ self._wait_for_commit_lock()
self._session.discard()
def cli_commit(self):
if self.debug:
print('commit')
- # During a commit there is a process opening commit_lock, and run()
- # returns 0
- while run(f'sudo lsof -nP {commit_lock}') == 0:
- sleep(0.250)
+ self._wait_for_commit_lock()
# Return the output of commit
# Necessary for testing Warning cases
return self._session.commit()