* main - lvmdbustest: Shutdown cleanly with "exit"
@ 2023-03-10 18:52 Tony Asleson
0 siblings, 0 replies; only message in thread
From: Tony Asleson @ 2023-03-10 18:52 UTC (permalink / raw)
To: lvm-devel
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9c3b91a513b70e74f21ca40e73f9ad7e3578ac48
Commit: 9c3b91a513b70e74f21ca40e73f9ad7e3578ac48
Parent: 9714f3ec4f3d4526a33781baf706c24930b6f26c
Author: Tony Asleson <tasleson@redhat.com>
AuthorDate: Thu Mar 9 11:27:19 2023 -0600
Committer: Tony Asleson <tasleson@redhat.com>
CommitterDate: Fri Mar 10 12:51:53 2023 -0600
lvmdbustest: Shutdown cleanly with "exit"
Make the error injection wrapper handle the exit case, so that we can
clean up gracefully when instructed to do so.
---
test/dbus/lvm_error_inject.py | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/test/dbus/lvm_error_inject.py b/test/dbus/lvm_error_inject.py
index 98520845c..d00b79b05 100755
--- a/test/dbus/lvm_error_inject.py
+++ b/test/dbus/lvm_error_inject.py
@@ -13,10 +13,12 @@
# systemctl restart lvm2-lvmdbusd
import copy
import json
+import multiprocessing
import os
import pty
import random
import select
+import signal
import string
import subprocess
import sys
@@ -29,6 +31,10 @@ from subprocess import Popen
CS = string.ascii_letters + "\n\t " + string.digits
+run = multiprocessing.Value('i', 1)
+
+SH = None
+
def rs(length, character_set=CS):
return ''.join(random.choice(character_set) for _ in range(length))
@@ -253,10 +259,16 @@ class LvmShellHandler:
self.report_text_in_progress = ""
def _handle_command(self):
+ global run
stdin_text = sys.stdin.readline()
self.last_request = stdin_text
debug("stdin: %s..." % stdin_text[:min(10, len(stdin_text) - 1)])
+
+ if "exit\n" in stdin_text:
+ debug("asking to exit ...")
+ run.value = 0
+
self.parent_stdin.writelines(stdin_text)
self.parent_stdin.flush()
@@ -267,8 +279,9 @@ class LvmShellHandler:
queue.extend(line)
def run(self):
+ global run
select_tmo = 0.2
- while True:
+ while run.value == 1:
try:
rd_fd = [sys.stdin.fileno(), self.parent_stdout_fd, self.parent_stderr_fd, self.child_report_fd]
ready = select.select(rd_fd, [], [], select_tmo)
@@ -305,9 +318,11 @@ class LvmShellHandler:
break
except IOError as ioe:
debug("run_cmd:" + str(ioe))
- pass
- debug("exiting %d " % self.process.returncode)
+ if self.process.poll() is not None:
+ debug("exiting %d " % self.process.returncode)
+ else:
+ debug("lvm process still running, be we are exiting ...")
return self.process.returncode
@@ -321,8 +336,8 @@ if __name__ == "__main__":
cmdline.extend(args)
ec = run_one(cmdline)
else:
- sh = LvmShellHandler(cmdline)
- ec = sh.run()
+ SH = LvmShellHandler(cmdline)
+ ec = SH.run()
sys.exit(ec)
except Exception:
traceback.print_exc(file=d_out)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2023-03-10 18:52 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-10 18:52 main - lvmdbustest: Shutdown cleanly with "exit" Tony Asleson
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.