From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751379AbdKUSxm (ORCPT ); Tue, 21 Nov 2017 13:53:42 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:42318 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751145AbdKUSxj (ORCPT ); Tue, 21 Nov 2017 13:53:39 -0500 Subject: [PATCH 1/2][RFC]Ktest: Add email support References: <20171120173738.34823-2-tianyang.chen@oracle.com> To: rostedt@goodmis.org, linux-kernel@vger.kernel.org Cc: dhaval.giani@oracle.com From: Tim Tianyang Chen X-Forwarded-Message-Id: <20171120173738.34823-2-tianyang.chen@oracle.com> Message-ID: Date: Tue, 21 Nov 2017 10:53:32 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20171120173738.34823-2-tianyang.chen@oracle.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Source-IP: userv0021.oracle.com [156.151.31.71] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Users can define optional "MAILER" "USR_EMAIL" variables to get email notifications. Ktest will send emails when the script: * was started * was cancelled by Ctrl-C * failed with fatal errors and called dodie() * completed all testing Users have to setup the mailer provided in config prior to using this script. Supported mailers: mailx, mail, sendmail mailer specific routines are _sendmail_send(), _mailx_send() Suggested-by: Dhaval Giani Signed-off-by: Tim Tianyang Chen --- ktest.pl | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/ktest.pl b/ktest.pl index 0c8b61f..2e38647 100755 --- a/ktest.pl +++ b/ktest.pl @@ -22,6 +22,8 @@ my %evals; #default opts my %default = ( + "USR_EMAIL" => "", + "MAILER" => "mailx", # default mailer "NUM_TESTS" => 1, "TEST_TYPE" => "build", "BUILD_TYPE" => "randconfig", @@ -204,6 +206,8 @@ my $install_time; my $reboot_time; my $test_time; +my $script_start_time = localtime(); + # set when a test is something other that just building or install # which would require more options. my $buildonly = 1; @@ -1426,6 +1430,9 @@ sub dodie { print " See $opt{LOG_FILE} for more info.\n"; } + send_email("KTEST: critical failure for your [$opt{TEST_TYPE}] test", + "Your test started at $script_start_time has failed with:\n@_\n"); + if ($monitor_cnt) { # restore terminal settings system("stty $stty_orig"); @@ -4224,6 +4231,38 @@ sub set_test_option { return eval_option($name, $option, $i); } +sub _mailx_send { + my ($subject, $message) = @_; + system("$opt{MAILER} -s \'$subject\' $opt{USR_EMAIL} <<< \'$message\'"); +} + +sub _sendmail_send { + my ($subject, $message) = @_; + system("echo -e \"Subject: $subject\n\n$message\" | sendmail -t $opt{USR_EMAIL}"); +} + +sub send_email { + if ($opt{USR_EMAIL} ne "" && $opt{MAILER} ne "") + { + if ($opt{MAILER} eq "mail" || $opt{MAILER} eq "mailx"){ _mailx_send(@_);} + elsif ($opt{MAILER} eq "sendmail" ) { _sendmail_send(@_);} + else { doprint "\nYour mailer: $opt{MAILER} is not supported.\n" } + } + else + { + print "No email sent: email or mailer not specified in config.\n" + } +} + +$SIG{INT} = sub { + send_email("KTEST: Your [$opt{TEST_TYPE}] test was cancelled", + "Your test started at $script_start_time was cancelled: sig int"); + die "\nCaught Sig Int, test interrupted: $!\n" +}; + +send_email("KTEST: Your [$opt{TEST_TYPE}] test was started", + "Your test was started on $script_start_time"); + # First we need to do is the builds for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { @@ -4429,5 +4468,7 @@ if ($opt{"POWEROFF_ON_SUCCESS"}) { doprint "\n $successes of $opt{NUM_TESTS} tests were successful\n\n"; +send_email("KTEST: Your [$opt{TEST_TYPE}] test has finished!", + "$successes of $opt{NUM_TESTS} tests started at $script_start_time were successful!"); exit 0; -- 1.8.3.1