summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Asleson <tasleson@redhat.com>2022-08-23 10:30:53 -0500
committerTony Asleson <tasleson@redhat.com>2022-09-16 10:49:37 -0500
commitd16c0a3e2bc1d36fc11ed763ac32184f09c6c67c (patch)
tree35d1962d110988f5eb0c9a309b8f9b24c08ca32a
parent52415b5708aa26fe322b13a9ffdb8cc16904ab45 (diff)
downloadlvm2-d16c0a3e2bc1d36fc11ed763ac32184f09c6c67c.tar.gz
lvmdbustest: Add test_sigint test
Get the daemon busy and send it SIGINT to ensure the daemon exits.
-rwxr-xr-xtest/dbus/lvmdbustest.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/dbus/lvmdbustest.py b/test/dbus/lvmdbustest.py
index 2f1aa98a6..7a03c46a2 100755
--- a/test/dbus/lvmdbustest.py
+++ b/test/dbus/lvmdbustest.py
@@ -2303,6 +2303,41 @@ class TestDbusService(unittest.TestCase):
self.assertTrue('Job is not complete!' in str(e))
raise e
+ def test_sigint(self):
+ # Issue SIGINT while daemon is processing work to ensure we shut down.
+ di = DaemonInfo.get()
+ self.assertTrue(di is not None)
+ if di:
+ # Find out how long it takes to create a VG and a number of LVs
+ # we will then issue the creation of the LVs async., wait, then issue a signal
+ # and repeat stepping through the entire time range.
+ start = time.time()
+ vg_proxy = self._create_num_lvs(20)
+ end = time.time()
+
+ self.handle_return(vg_proxy.Vg.Remove(dbus.Int32(g_tmo), EOD))
+ total = end - start
+
+ for i in range(5):
+ sleep_amt = i * (total/5.0)
+ self._create_num_lvs(20, True)
+ time.sleep(sleep_amt)
+
+ exited = False
+ try:
+ di.term_signal(signal.SIGINT)
+ exited = True
+ except Exception:
+ std_err_print("Failed to exit on SIGINT, sending SIGKILL...")
+ di.term_signal(signal.SIGKILL)
+ finally:
+ di.start()
+ self.clean_up()
+
+ self.assertTrue(exited,
+ "Failed to exit after sending signal %f seconds after "
+ "queuing up work for signal %d" % (sleep_amt, signal.SIGINT))
+
class AggregateResults(object):