ktest: Make the signal to terminate the console configurable
authorSatoru Takeuchi <satoru.takeuchi@gmail.com>
Sat, 30 Nov 2013 22:57:58 +0000 (07:57 +0900)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 3 Dec 2013 16:56:07 +0000 (11:56 -0500)
 Currently ktest sends SIGINT to terminate the console.
 However, there are consoles which do not exit by this signal, for example,
 in my case, "virsh console <guest OS>". In such case, ktest is blocked in
 close_console(). It prevents this automate test.

This patch adds new option CLOSE_CONSOLE_SIGNAL which mean the
signal to terminate the console. Since its default value is "INT",
the original behavior isn't changed.

Link: http://lkml.kernel.org/r/87zjol8pl5.wl%satoru.takeuchi@gmail.com
Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
tools/testing/ktest/ktest.pl

index 0d7fd8b..5dc5704 100755 (executable)
@@ -25,6 +25,7 @@ my %default = (
     "TEST_TYPE"                        => "build",
     "BUILD_TYPE"               => "randconfig",
     "MAKE_CMD"                 => "make",
+    "CLOSE_CONSOLE_SIGNAL"     => "INT",
     "TIMEOUT"                  => 120,
     "TMP_DIR"                  => "/tmp/ktest/\${MACHINE}",
     "SLEEP_TIME"               => 60,  # sleep time between tests
@@ -163,6 +164,7 @@ my $timeout;
 my $booted_timeout;
 my $detect_triplefault;
 my $console;
+my $close_console_signal;
 my $reboot_success_line;
 my $success_line;
 my $stop_after_success;
@@ -285,6 +287,7 @@ my %option_map = (
     "TIMEOUT"                  => \$timeout,
     "BOOTED_TIMEOUT"           => \$booted_timeout,
     "CONSOLE"                  => \$console,
+    "CLOSE_CONSOLE_SIGNAL"     => \$close_console_signal,
     "DETECT_TRIPLE_FAULT"      => \$detect_triplefault,
     "SUCCESS_LINE"             => \$success_line,
     "REBOOT_SUCCESS_LINE"      => \$reboot_success_line,
@@ -1296,7 +1299,7 @@ sub close_console {
     my ($fp, $pid) = @_;
 
     doprint "kill child process $pid\n";
-    kill 2, $pid;
+    kill $close_console_signal, $pid;
 
     print "closing!\n";
     close($fp);