diff options
author | Tony Asleson <tasleson@redhat.com> | 2022-08-23 10:30:53 -0500 |
---|---|---|
committer | Tony Asleson <tasleson@redhat.com> | 2022-09-16 10:49:37 -0500 |
commit | d16c0a3e2bc1d36fc11ed763ac32184f09c6c67c (patch) | |
tree | 35d1962d110988f5eb0c9a309b8f9b24c08ca32a | |
parent | 52415b5708aa26fe322b13a9ffdb8cc16904ab45 (diff) | |
download | lvm2-d16c0a3e2bc1d36fc11ed763ac32184f09c6c67c.tar.gz |
lvmdbustest: Add test_sigint test
Get the daemon busy and send it SIGINT to ensure the daemon exits.
-rwxr-xr-x | test/dbus/lvmdbustest.py | 35 |
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): |