Просмотр исходного кода

CTS: add exit handler to test_agents

Reviewed-by: Steven Dake <sdake@redhat.com>
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
Angus Salkeld 15 лет назад
Родитель
Сommit
25842e3c53
2 измененных файлов с 14 добавлено и 1 удалено
  1. 13 0
      cts/agents/common_test_agent.c
  2. 1 1
      cts/corosync.py

+ 13 - 0
cts/agents/common_test_agent.c

@@ -236,6 +236,12 @@ static int create_server_sockect (int server_port)
 	return listener;
 }
 
+static int32_t sig_exit_handler (int num, void *data)
+{
+	qb_loop_stop(poll_handle);
+	return 0;
+}
+
 int test_agent_run(int server_port, ta_do_command_fn func)
 {
 	int listener;
@@ -243,6 +249,13 @@ int test_agent_run(int server_port, ta_do_command_fn func)
 	do_command = func;
 	poll_handle = qb_loop_create ();
 
+	qb_loop_signal_add(poll_handle, QB_LOOP_HIGH,
+		SIGINT, NULL, sig_exit_handler, NULL);
+	qb_loop_signal_add(poll_handle, QB_LOOP_HIGH,
+		SIGQUIT, NULL, sig_exit_handler, NULL);
+	qb_loop_signal_add(poll_handle, QB_LOOP_HIGH,
+		SIGTERM, NULL, sig_exit_handler, NULL);
+
 	listener = create_server_sockect (server_port);
 	qb_loop_poll_add (poll_handle,
 			  QB_LOOP_MED,

+ 1 - 1
cts/corosync.py

@@ -438,8 +438,8 @@ class TestAgent(object):
     def stop(self):
         '''Tear down (undo) the given ScenarioComponent'''
         self.env.debug('test agent: stopping %s on node %s' % (self.binary, self.node))
+        self.rsh(self.node, "killall " + self.binary + " 2>/dev/null")
         self.sock.close ()
-        self.rsh(self.node, "killall -9 " + self.binary + " 2>/dev/null")
         self.started = False
 
     def kill(self):